imatrix-ui 0.2.6-up → 0.2.7-up

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 (206) hide show
  1. package/README.md +7 -7
  2. package/index.html +13 -13
  3. package/lib/super-ui.css +1 -1
  4. package/lib/super-ui.js +2724 -1932
  5. package/lib/super-ui.umd.cjs +24 -24
  6. package/package.json +1 -1
  7. package/packages/IntervalSelection/index.js +6 -6
  8. package/packages/IntervalSelection/src/quarterScope.vue +405 -405
  9. package/packages/IntervalSelection/src/sectionDate.vue +475 -475
  10. package/packages/breadcrumb/index.js +6 -6
  11. package/packages/breadcrumb/src/breadcrumb.vue +81 -81
  12. package/packages/department-tree/index.js +6 -6
  13. package/packages/department-tree/src/department-tree.vue +113 -113
  14. package/packages/department-tree-inline/index.js +6 -6
  15. package/packages/department-tree-inline/src/department-multi-tree-inline.vue +472 -472
  16. package/packages/department-tree-inline/src/department-single-tree-inline.vue +340 -340
  17. package/packages/department-tree-inline/src/department-tree-inline.vue +86 -86
  18. package/packages/department-tree-inline/src/department-tree-service.js +344 -344
  19. package/packages/department-tree-inline/src/search-result.vue +235 -235
  20. package/packages/department-user-tree/index.js +6 -6
  21. package/packages/department-user-tree/src/department-user-multiple-tree.vue +129 -129
  22. package/packages/department-user-tree/src/department-user-single-tree.vue +94 -94
  23. package/packages/department-user-tree/src/department-user-tree.vue +114 -114
  24. package/packages/department-user-tree-inline/index.js +9 -9
  25. package/packages/department-user-tree-inline/src/department-user-multiple-tree-inline.vue +731 -731
  26. package/packages/department-user-tree-inline/src/department-user-single-tree-inline.vue +334 -334
  27. package/packages/department-user-tree-inline/src/department-user-tree-inline.vue +87 -87
  28. package/packages/department-user-tree-inline/src/department-user-tree-multi-service.js +309 -309
  29. package/packages/department-user-tree-inline/src/department-user-tree-single-service.js +179 -179
  30. package/packages/department-user-tree-inline/src/search-result.vue +273 -273
  31. package/packages/directives/prevent-reclick.js +22 -22
  32. package/packages/dynamic-source-select/index.js +6 -6
  33. package/packages/dynamic-source-select/src/dynamic-source-select-service.js +106 -106
  34. package/packages/dynamic-source-select/src/dynamic-source-select.vue +675 -675
  35. package/packages/dynamic-source-select/src/events.js +78 -78
  36. package/packages/fs-preview/index.js +6 -6
  37. package/packages/fs-preview/src/fs-preview.vue +287 -287
  38. package/packages/fs-upload/index.js +6 -6
  39. package/packages/fs-upload/src/fs-upload-multi.vue +443 -443
  40. package/packages/fs-upload/src/fs-upload-single.vue +353 -353
  41. package/packages/fs-upload/src/fs-upload.vue +191 -191
  42. package/packages/fs-upload/src/see-big-picture.vue +67 -67
  43. package/packages/fs-upload-list/index.js +6 -6
  44. package/packages/fs-upload-list/src/fs-upload-list.vue +372 -372
  45. package/packages/hamburger/index.js +6 -6
  46. package/packages/hamburger/src/hamburger.vue +40 -40
  47. package/packages/index.js +123 -123
  48. package/packages/multipart-upload/index.js +6 -6
  49. package/packages/multipart-upload/src/index.vue +66 -66
  50. package/packages/multipart-upload/src/multipart-upload-form.vue +377 -377
  51. package/packages/multipart-upload/src/multipart-upload-list.vue +517 -517
  52. package/packages/organization-input/index.js +6 -6
  53. package/packages/organization-input/src/organization-input.vue +583 -583
  54. package/packages/plugins/export-data-new.js +623 -623
  55. package/packages/plugins/export-data.js +431 -431
  56. package/packages/plugins/index.js +15 -15
  57. package/packages/plugins/public-method.js +47 -47
  58. package/packages/remove-department/index.js +6 -6
  59. package/packages/remove-department/src/remove-department.vue +200 -200
  60. package/packages/remove-department/src/remove-dept-service.js +31 -31
  61. package/packages/remove-user/index.js +6 -6
  62. package/packages/remove-user/src/remove-user-service.js +31 -31
  63. package/packages/remove-user/src/remove-user.vue +226 -226
  64. package/packages/remove-workgroup/index.js +6 -6
  65. package/packages/remove-workgroup/src/remove-workgroup-service.js +31 -31
  66. package/packages/remove-workgroup/src/remove-workgroup.vue +183 -183
  67. package/packages/rich-editor/index.js +7 -7
  68. package/packages/rich-editor/index.vue +297 -297
  69. package/packages/rich-editor/langs/zh-Hans.js +438 -438
  70. package/packages/rich-editor/viewer.vue +105 -105
  71. package/packages/scan-code-input/index.js +6 -6
  72. package/packages/scan-code-input/src/events.js +34 -34
  73. package/packages/scan-code-input/src/scan-code-input-colse.vue +140 -140
  74. package/packages/scan-code-input/src/scan-code-input.vue +132 -132
  75. package/packages/secret-info/index.js +7 -7
  76. package/packages/secret-info/index.vue +100 -100
  77. package/packages/super-grid/index.js +7 -7
  78. package/packages/super-grid/src/apis.js +1092 -1092
  79. package/packages/super-grid/src/columns-config.vue +427 -427
  80. package/packages/super-grid/src/custom-formatter.js +394 -394
  81. package/packages/super-grid/src/eventBus.js +2 -2
  82. package/packages/super-grid/src/events.js +56 -56
  83. package/packages/super-grid/src/formValidatorUtil.js +300 -300
  84. package/packages/super-grid/src/formatter.js +196 -196
  85. package/packages/super-grid/src/group-column.vue +99 -99
  86. package/packages/super-grid/src/header-context-menu.vue +82 -82
  87. package/packages/super-grid/src/index-column.vue +69 -69
  88. package/packages/super-grid/src/public-methods.js +30 -30
  89. package/packages/super-grid/src/row-operation.vue +193 -193
  90. package/packages/super-grid/src/search-button.vue +74 -74
  91. package/packages/super-grid/src/search-condition-input.vue +73 -73
  92. package/packages/super-grid/src/search-condition-list.vue +68 -68
  93. package/packages/super-grid/src/search-form-advancedQuery.vue +819 -819
  94. package/packages/super-grid/src/search-form-dialog.vue +77 -77
  95. package/packages/super-grid/src/search-form-item.vue +495 -495
  96. package/packages/super-grid/src/search-form-number.vue +111 -111
  97. package/packages/super-grid/src/search-form-ordinarySearch.vue +239 -239
  98. package/packages/super-grid/src/search-form.vue +762 -762
  99. package/packages/super-grid/src/search-methods.js +592 -592
  100. package/packages/super-grid/src/selection-column.vue +46 -46
  101. package/packages/super-grid/src/store.js +3 -3
  102. package/packages/super-grid/src/super-grid-service.js +728 -728
  103. package/packages/super-grid/src/super-grid.vue +3011 -3011
  104. package/packages/super-grid/src/utils.js +880 -880
  105. package/packages/super-grid/src/view-image-dialog.vue +176 -176
  106. package/packages/super-nine-grid/index.js +7 -7
  107. package/packages/super-nine-grid/src/apis.js +108 -108
  108. package/packages/super-nine-grid/src/custom-formatter.js +73 -73
  109. package/packages/super-nine-grid/src/formatter.js +134 -134
  110. package/packages/super-nine-grid/src/search-form-number.vue +35 -35
  111. package/packages/super-nine-grid/src/search-form.vue +700 -700
  112. package/packages/super-nine-grid/src/search-methods.js +151 -151
  113. package/packages/super-nine-grid/src/store.js +3 -3
  114. package/packages/super-nine-grid/src/super-grid-service.js +107 -107
  115. package/packages/svg-icon/index.js +6 -6
  116. package/packages/svg-icon/src/svg-icon.vue +43 -43
  117. package/packages/utils/date-util.js +292 -292
  118. package/packages/utils/dom.js +227 -227
  119. package/packages/utils/gogocodeTransfer.js +59 -59
  120. package/packages/utils/memory-cache-utils.js +117 -117
  121. package/packages/utils/utils.js +180 -180
  122. package/packages/utils/value-set.js +97 -97
  123. package/packages/valid-code/index.js +7 -7
  124. package/packages/valid-code/src/valid-code.vue +104 -104
  125. package/packages/workflow-button/index.js +6 -6
  126. package/packages/workflow-button/src/workflow-button.vue +550 -550
  127. package/packages/workflow-history-list/index.js +6 -6
  128. package/packages/workflow-history-list/src/api.js +7 -7
  129. package/packages/workflow-history-list/src/workflow-history-list.vue +291 -291
  130. package/packages/workgroup-tree/index.js +6 -6
  131. package/packages/workgroup-tree/src/workgroup-tree.vue +86 -86
  132. package/packages/workgroup-tree-inline/index.js +6 -6
  133. package/packages/workgroup-tree-inline/src/search-result.vue +222 -222
  134. package/packages/workgroup-tree-inline/src/workgroup-tree-inline.vue +516 -516
  135. package/packages/workgroup-tree-inline/src/workgroup-tree-service.js +93 -93
  136. package/packages/workgroup-user-tree/index.js +6 -6
  137. package/packages/workgroup-user-tree/src/workgroup-user-tree.vue +103 -103
  138. package/packages/workgroup-user-tree-inline/index.js +9 -9
  139. package/packages/workgroup-user-tree-inline/src/search-result.vue +266 -266
  140. package/packages/workgroup-user-tree-inline/src/workgroup-tree-inline-service.js +239 -239
  141. package/packages/workgroup-user-tree-inline/src/workgroup-user-tree-inline.vue +657 -657
  142. package/packages/year-range-picker/index.js +6 -6
  143. package/packages/year-range-picker/src/year-range-picker.vue +53 -53
  144. package/src/api/sso-service.js +172 -172
  145. package/src/api/tab.js +36 -36
  146. package/src/api/user-service.js +11 -11
  147. package/src/directives/permission/index.js +13 -13
  148. package/src/directives/permission/permission.js +20 -20
  149. package/src/i18n/langs/cn.js +259 -259
  150. package/src/i18n/langs/en.js +269 -269
  151. package/src/index.js +93 -93
  152. package/src/plugins.js +18 -18
  153. package/src/router/index.js +8 -26
  154. package/src/store/getters.js +15 -15
  155. package/src/store/index.js +19 -19
  156. package/src/store/modules/app.js +54 -54
  157. package/src/store/modules/tab-content.js +36 -36
  158. package/src/store/modules/user.js +285 -285
  159. package/src/utils/auth.js +61 -61
  160. package/src/utils/calculator/calculator-factory-wf.js +558 -558
  161. package/src/utils/calculator/calculator-factory.js +145 -145
  162. package/src/utils/calculator/calculator-util.js +166 -166
  163. package/src/utils/eventBus.js +2 -2
  164. package/src/utils/iconUtils.js +28 -28
  165. package/src/utils/index.js +102 -102
  166. package/src/utils/jump-page-utils.js +824 -824
  167. package/src/utils/menu.js +19 -19
  168. package/src/utils/permission.js +31 -31
  169. package/src/utils/permissionAuth.js +96 -96
  170. package/src/utils/range-selector.js +188 -188
  171. package/src/utils/request.js +269 -269
  172. package/src/utils/restful-interface-utils.js +57 -57
  173. package/src/utils/util.js +703 -703
  174. package/src/utils/validate.js +34 -34
  175. package/src/utils/watermark.js +108 -108
  176. package/src/utils/workflow-util.js +93 -93
  177. package/src/views/404.vue +248 -248
  178. package/src/views/dsc-component/Sidebar/Item.vue +84 -84
  179. package/src/views/dsc-component/Sidebar/Link.vue +38 -38
  180. package/src/views/dsc-component/Sidebar/SidebarItem.vue +198 -198
  181. package/src/views/dsc-component/Sidebar/index.vue +229 -229
  182. package/src/views/dsc-component/tabs/tab-content.vue +203 -203
  183. package/src/views/error-page/401.vue +106 -106
  184. package/src/views/error-page/404.vue +248 -248
  185. package/src/views/layout/EmptyLayout.vue +3 -3
  186. package/src/views/layout/Layout.vue +81 -81
  187. package/src/views/layout/NewLayout.vue +18 -18
  188. package/src/views/layout/components/AppMain.vue +39 -39
  189. package/src/views/layout/components/Breadcrumb/index.vue +158 -158
  190. package/src/views/layout/components/Menubar/Item.vue +79 -79
  191. package/src/views/layout/components/Menubar/Link.vue +38 -38
  192. package/src/views/layout/components/Menubar/index.vue +210 -210
  193. package/src/views/layout/components/Sidebar/Item.vue +53 -53
  194. package/src/views/layout/components/Sidebar/Link.vue +38 -38
  195. package/src/views/layout/components/Sidebar/index.vue +141 -141
  196. package/src/views/layout/components/iframe-page.vue +38 -38
  197. package/src/views/layout/components/index.js +4 -4
  198. package/src/views/layout/components/tabs/tab-content.vue +207 -207
  199. package/src/views/layout/mixin/ResizeHandler.js +41 -41
  200. package/src/views/layout/tab-content-iframe-index.vue +38 -38
  201. package/src/views/layout/tab-content-index.vue +93 -93
  202. package/src/views/login/authredirect.vue +10 -10
  203. package/src/views/login/index.vue +296 -296
  204. package/src/views/login/update-password.vue +243 -243
  205. package/src/views/redirect/index.vue +14 -14
  206. package/src/views/wf-history/tache-subprocess-history.vue +45 -45
@@ -1,728 +1,728 @@
1
- import { $on, $off, $once, $emit } from '../../utils/gogocodeTransfer'
2
- /* eslint-disable no-undef */
3
- import Sortable from 'sortablejs'
4
- import * as Vue from 'vue'
5
- import { packageEnumAndBeanColumnValueSets } from '../../utils/value-set'
6
- import store from './store'
7
- import { isHasOptionFunction } from './utils'
8
- const superGridService = {
9
- initialize() {
10
- const a = new Date().getTime()
11
- return new Promise((resolve, reject) => {
12
- const gridParams = store.get(this.code)
13
- if (this.options.isAdministerListView) {
14
- // 要从配置中实时获取页面的配置
15
- // 根据this.options.showColumns设置显示的字段
16
- this.getShowColumns(this.options.SuperGrid)
17
- Object.assign(this, this.options.SuperGrid)
18
- gridParams.isSql = this.isSql
19
- gridParams.columns = this.columns
20
- gridParams.query = this.query
21
- gridParams.pagination = this.pagination
22
- this.createBackgroundColorMap()
23
- this.hasLoadedColumns = true
24
- this.fetchData(null, null, null, null)
25
- resolve()
26
- } else {
27
- const url =
28
- window.$vueApp.config.globalProperties.baseAPI +
29
- '/component/super-grids/' +
30
- this.code
31
- const param = {}
32
- const isSqlSetting = this.options.isSql
33
- if (this.options && typeof isSqlSetting !== 'undefined') {
34
- this.isSql = isSqlSetting
35
- param.isSql = isSqlSetting + ''
36
- }
37
- if (
38
- this.options &&
39
- typeof this.options.isAdministerListView !== 'undefined' &&
40
- this.options.isAdministerListView
41
- ) {
42
- param.isAdminister = this.options.isAdministerListView + ''
43
- }
44
- let additionalParams
45
- const additionalParamMap =
46
- window.sessionStorage.getItem('additionalParamMap')
47
- if (additionalParamMap) {
48
- console.log('进入判断', additionalParamMap)
49
- if (additionalParamMap && typeof additionalParamMap === 'object') {
50
- additionalParams = JSON.stringify(additionalParamMap)
51
- } else if (additionalParamMap && additionalParamMap !== '') {
52
- additionalParams = additionalParamMap
53
- }
54
- }
55
- if (
56
- this.options.additionalParamMap &&
57
- typeof this.options.additionalParamMap === 'object'
58
- ) {
59
- const optionParam = JSON.stringify(this.options.additionalParamMap)
60
- if (additionalParams) {
61
- Object.assign(additionalParams, optionParam)
62
- } else {
63
- additionalParams = optionParam
64
- }
65
- } else if (
66
- this.options.additionalParamMap &&
67
- this.options.additionalParamMap !== ''
68
- ) {
69
- const optionParam = this.options.additionalParamMap
70
- if (additionalParams) {
71
- Object.assign(additionalParams, optionParam)
72
- } else {
73
- additionalParams = optionParam
74
- }
75
- }
76
- if (additionalParams) {
77
- param.additionalParamMap = additionalParams
78
- }
79
- if (this.options.extraParam && this.options.extraParam.entityMap) {
80
- this.parentFormData = this.options.extraParam.entityMap
81
- }
82
- this.isLoading = true
83
- // 初始化组件时先获取元信息再获取数据,以后翻页、排序、查询不再去获取元数据了
84
- this.$http
85
- .post(url, param)
86
- .then((data) => {
87
- const p1 = new Date().getTime()
88
- // 判断是否查询组件渲染完之后查询
89
- this.isLoadCompleteQuery(data.columns)
90
- // 行编辑设置所有字段的默认值null时使用,优化行编辑性能
91
- let allColumns = []
92
- allColumns = allColumns.concat(
93
- JSON.parse(JSON.stringify(data.columns))
94
- )
95
- // 根据this.options.showColumns设置显示的字段
96
- this.getShowColumns(data)
97
- // 将列表信息存入store缓存中,用来导出时获取国际化名
98
- if (data.basicInfo) {
99
- store.set(this.code + 'basicInfo', data.basicInfo)
100
- }
101
- if (this.options.pageSizes && data.pagination) {
102
- // 组件的options属性配置中配置“可选行数”,已该配置为准
103
- let pageSizeArr = null
104
- const pageSizeStrs = this.options.pageSizes.split(',')
105
- if (pageSizeStrs && pageSizeStrs.length > 0) {
106
- pageSizeArr = []
107
- for (var i = 0; i < pageSizeStrs.length; i++) {
108
- pageSizeArr.push(pageSizeStrs[i] * 1)
109
- }
110
- data.pagination.pageSize = pageSizeArr[0]
111
- }
112
- data.pagination.layout = 'total, sizes, prev, pager, next, jumper'
113
- data.pagination.pageSizes = pageSizeArr
114
- }
115
- if (typeof this.options.initSortInfo !== 'undefined') {
116
- // 组件的options属性配置中配置“排序信息”,以该配置为准
117
- if (Array.isArray(this.options.initSortInfo)) {
118
- data.sortInfo = this.options.initSortInfo
119
- } else {
120
- data.sortInfo = []
121
- data.sortInfo.push(this.options.initSortInfo)
122
- }
123
- }
124
-
125
- // 需要多个组件共享的数据放到store中,避免组件定义一堆props来接收这些共享数据
126
- packageEnumAndBeanColumnValueSets(data.columns, this.code)
127
- .then(() => {
128
- return this.getDynamicColumnByBean(
129
- additionalParams,
130
- data.dynamicColumnInfo,
131
- data.columns,
132
- gridParams
133
- )
134
- })
135
- .then((dynamicColumns) => {
136
- const b = new Date().getTime()
137
- let showColumns = []
138
- if (typeof this.options.showColumns !== 'undefined') {
139
- showColumns = this.options.showColumns.split(',')
140
- }
141
- let customDynamicColumns = dynamicColumns
142
- if (
143
- !customDynamicColumns ||
144
- customDynamicColumns.length === 0
145
- ) {
146
- if (
147
- this.options.dynamicColumns &&
148
- this.options.dynamicColumns.length > 0
149
- ) {
150
- customDynamicColumns = this.options.dynamicColumns
151
- }
152
- }
153
- if (customDynamicColumns && customDynamicColumns.length > 0) {
154
- allColumns = allColumns.concat(
155
- JSON.parse(JSON.stringify(customDynamicColumns))
156
- )
157
- if (showColumns && showColumns.length > 0) {
158
- for (let i = 0; i < customDynamicColumns.length; i++) {
159
- const prop = customDynamicColumns[i].prop
160
- customDynamicColumns[i].dynamic = true
161
- if (showColumns.indexOf(prop) >= 0) {
162
- customDynamicColumns[i].show = true
163
- } else {
164
- customDynamicColumns[i].show = false
165
- }
166
- }
167
- }
168
- data.columns = data.columns.concat(customDynamicColumns)
169
- // 按照排序字段的值升序排列字段
170
- data.columns = data.columns.sort(
171
- (col1, col2) => col1.displayOrder - col2.displayOrder
172
- )
173
- }
174
- Object.assign(this, data)
175
- if (this.options && typeof isSqlSetting === 'undefined') {
176
- // 如果options中没有配置,则以后台传过来的为准,在有动态列配置时,该值会赋值为true
177
- this.isSql = this.basicInfo.sql
178
- }
179
- gridParams.isSql = this.isSql
180
- // 行编辑时使用
181
- gridParams.allColumns = allColumns
182
- gridParams.columns = this.columns
183
- // 存放map,prop-columnOption。方便直接通过prop 获取对应的配置
184
- this.packageColumnOptionMap(gridParams)
185
- // const columnOptionMap = {}
186
- // if (gridParams.columns && gridParams.columns.length > 0) {
187
- // gridParams.columns.forEach(item => {
188
- // if (item && item.prop) {
189
- // columnOptionMap[item.prop] = item
190
- // }
191
- // })
192
- // }
193
- // gridParams.columnOptionMap = columnOptionMap
194
- this.judgeIsFormSubTable()
195
- gridParams.colSetting = this.colSetting
196
- gridParams.lineEdit = this.lineEdit
197
- gridParams.basicInfo = this.basicInfo
198
- gridParams.pagination = this.pagination
199
- if (this.pagination) {
200
- // 监控每行显示多少条变量使用
201
- this.pageSize = this.pagination.pageSize
202
- }
203
- gridParams.query = this.query
204
- gridParams.dynamicColumnInfo = this.dynamicColumnInfo
205
- gridParams.mainDefaultValueColumns =
206
- this.mainDefaultValueColumns
207
- gridParams.contextParameter = this.contextParameter
208
- // 是否显示分页区域
209
- this.isShowPage = this.isShowPageArea()
210
- // 子表是否分页
211
- this.isSubTableShowPage = this.isFormSubTable
212
- ? this.isShowPage
213
- : false
214
- gridParams.isSubTableShowPage = this.isSubTableShowPage
215
- this.hasLoadedColumns = true
216
- let canFetchData = true
217
- if (isHasOptionFunction('loadBeforeSend', this.code)) {
218
- canFetchData = gridParams.options.loadBeforeSend.call(this, {
219
- columns: this.columns,
220
- gridParams,
221
- additionalParamMap: gridParams.additionalParamMap,
222
- })
223
- }
224
- if (canFetchData === undefined || canFetchData === true) {
225
- // 表示初始化时查询记录
226
- if (this.options.isPageInfo) {
227
- // 表示是页面展示模式
228
- } else if (typeof this.options.initSearch === 'undefined') {
229
- if (
230
- typeof gridParams.basicInfo.initializationQuery ===
231
- 'undefined' ||
232
- gridParams.basicInfo.initializationQuery
233
- ) {
234
- // 判断是否初始化完查询条件后再查询数据
235
- if (this.loadCompleteQuery) {
236
- this.isLoading = false
237
- } else {
238
- this.fetchData()
239
- }
240
- }
241
- } else if (this.options.initSearch !== false) {
242
- // 判断是否初始化完查询条件后再查询数据
243
- if (this.loadCompleteQuery) {
244
- this.isLoading = false
245
- } else {
246
- this.fetchData()
247
- }
248
- }
249
- }
250
- this.createBackgroundColorMap()
251
- const p2 = new Date().getTime()
252
- console.log('拿到共享数据并存储p2-p1=', p2 - p1)
253
- console.log('拿到共享数据并存储p2-b=', p2 - b)
254
- resolve()
255
- })
256
- .catch((error) => {
257
- reject(error)
258
- })
259
- })
260
- .catch((error) => {
261
- reject(error)
262
- })
263
- }
264
- const a1 = new Date().getTime()
265
- console.log('初始化所耗时间', a1 - a)
266
- })
267
- },
268
- isLoadCompleteQuery(columns) {
269
- if (columns !== null) {
270
- let queryParameterSize = 0
271
- columns.forEach((column) => {
272
- if (
273
- column.hasOwnProperty('queryType') &&
274
- column.hasOwnProperty('prop')
275
- ) {
276
- if (column.prop !== '$index' && column.prop !== '$selection') {
277
- if (column.queryType && column.queryType !== 'no') {
278
- // 配置了默认值
279
- if (column.controlConfig) {
280
- queryParameterSize++
281
- }
282
- }
283
- }
284
- }
285
- })
286
- if (queryParameterSize > 0) {
287
- this.loadCompleteQuery = true
288
- }
289
- }
290
- },
291
- packageColumnOptionMap(gridParams) {
292
- const columnOptionMap = {}
293
- if (gridParams.columns && gridParams.columns.length > 0) {
294
- this.packageColumnOptionMapItems(gridParams.columns, columnOptionMap)
295
- }
296
- gridParams.columnOptionMap = columnOptionMap
297
- },
298
- packageColumnOptionMapItems(columns, columnOptionMap) {
299
- columns.forEach((item) => {
300
- if (item.children && item.children.length > 0) {
301
- this.packageColumnOptionMapItems(item.children, columnOptionMap)
302
- }
303
- if (item && item.prop) {
304
- columnOptionMap[item.prop] = item
305
- }
306
- })
307
- },
308
- getDynamicColumnByBean(
309
- additionalParams,
310
- dynamicColumnInfos,
311
- columns,
312
- gridParams
313
- ) {
314
- return new Promise((resolve, reject) => {
315
- if (
316
- gridParams.options.extraParam &&
317
- gridParams.options.extraParam.entityMap
318
- ) {
319
- this.parentFormData = gridParams.options.extraParam.entityMap
320
- }
321
- if (
322
- !this.options.isPageInfo &&
323
- dynamicColumnInfos &&
324
- dynamicColumnInfos.length > 0
325
- ) {
326
- const totalDynamicColumns = []
327
- this.getDynamicColumnByBeanWithOneSet(
328
- additionalParams,
329
- dynamicColumnInfos[0],
330
- columns,
331
- 0,
332
- dynamicColumnInfos,
333
- totalDynamicColumns,
334
- gridParams
335
- )
336
- .then((totalDynamicColumns) => {
337
- resolve(totalDynamicColumns)
338
- })
339
- .catch((error) => {
340
- reject(error)
341
- })
342
- } else {
343
- resolve([])
344
- }
345
- })
346
- },
347
- getDynamicColumnByBeanWithOneSet(
348
- additionalParams,
349
- dynamicColumnInfo,
350
- columns,
351
- index,
352
- dynamicColumnInfos,
353
- totalDynamicColumns,
354
- gridParams
355
- ) {
356
- return new Promise((resolve, reject) => {
357
- if (dynamicColumnInfo && dynamicColumnInfo.beanName) {
358
- const url =
359
- window.$vueApp.config.globalProperties.baseURL +
360
- '/common/dynamic-columns'
361
- const param = {
362
- additionalParams, // 附加参数对象
363
- listCode: this.code,
364
- columns,
365
- beanName: dynamicColumnInfo.beanName,
366
- }
367
- if (this.parentFormData) {
368
- // 初始化表单时,加载动态列需要
369
- if (gridParams.dynamicTemp) {
370
- param.parent = gridParams.dynamicTemp.parent
371
- param.watchParentAttrValues =
372
- gridParams.dynamicTemp.watchParentAttrValues
373
- } else {
374
- param.parent = this.parentFormData
375
- }
376
- // 监听主表字段的值
377
- if (dynamicColumnInfo.watchParentAttr) {
378
- const watchParentAttrs =
379
- dynamicColumnInfo.watchParentAttr.split(',')
380
- watchParentAttrs.forEach((watchParentAttr) => {
381
- if (watchParentAttr) {
382
- // 存储属性对应的值
383
- if (!param.watchParentAttrValues) {
384
- param.watchParentAttrValues = {}
385
- }
386
- param.watchParentAttrValues[watchParentAttr] =
387
- this.parentFormData[watchParentAttr]
388
- const unWatch = this.$watch(
389
- 'parentFormData.' + watchParentAttr,
390
- function (newValue, oldValue) {
391
- // 重新加载表格及表格数据
392
- if (!gridParams.dynamicTemp) {
393
- gridParams.dynamicTemp = {}
394
- }
395
- gridParams.dynamicTemp.parent = this.parentFormData
396
- if (!gridParams.dynamicTemp.watchParentAttrValues) {
397
- gridParams.dynamicTemp.watchParentAttrValues = {}
398
- }
399
- gridParams.dynamicTemp.watchParentAttrValues[
400
- watchParentAttr
401
- ] = newValue
402
- if (this.$refs && this.$refs.superGrid) {
403
- // 手动注销watch,否则会调用多次watch
404
- unWatch()
405
- // 重新加载表格及表格数据
406
- $emit(this, 'reload-grid')
407
- }
408
- }
409
- )
410
- }
411
- })
412
- }
413
- }
414
- this.$http
415
- .post(url, param)
416
- .then((dynamicColumns) => {
417
- // 给动态列分组。如果是后台接口返回的动态列,保存时要自己实现动态列的保存
418
- dynamicColumnInfo.dynamicColumns = dynamicColumns
419
- totalDynamicColumns = totalDynamicColumns.concat(dynamicColumns)
420
- if (index + 1 < dynamicColumnInfos.length) {
421
- this.getDynamicColumnByBeanWithOneSet(
422
- additionalParams,
423
- dynamicColumnInfos[index + 1],
424
- columns,
425
- index + 1,
426
- dynamicColumnInfos,
427
- totalDynamicColumns
428
- )
429
- } else {
430
- resolve(totalDynamicColumns)
431
- }
432
- })
433
- .catch(() => {
434
- resolve([])
435
- })
436
- } else {
437
- resolve([])
438
- }
439
- })
440
- },
441
- // 列拖拽
442
- columnDrop() {
443
- const vm = this
444
- // 作用于实际展示列表数据时拖拽列
445
- let isDragColumnFlag = false
446
- if (
447
- typeof this.options.isDragColumnFlag !== 'undefined' &&
448
- this.options.isDragColumn != null &&
449
- this.options.isDragColumn === true
450
- ) {
451
- isDragColumnFlag = true
452
- const wrapperTr = document.querySelector('.el-table__header-wrapper tr')
453
- if (wrapperTr != null) {
454
- this.sortable = Sortable.create(wrapperTr, {
455
- animation: 180,
456
- delay: 0,
457
- onEnd: (evt) => {
458
- let oldIndex = evt.oldIndex
459
- let newIndex = evt.newIndex
460
- // 判断冻结列,获取真实index
461
- const frozenArr = []
462
- // const columns = this.listColumnList.filter(listColumn => {
463
- // return listColumn.listColumnFixed === 'left' || listColumn.listColumnFixed === 'right'
464
- // })
465
- for (var r = 0; r < vm.columns.length; r++) {
466
- if (
467
- vm.columns[r].fixed === 'left' ||
468
- vm.columns[r].fixed === 'right'
469
- ) {
470
- frozenArr.push(r)
471
- }
472
- }
473
- if (frozenArr && frozenArr.length > 0) {
474
- for (var m = 0; m < frozenArr.length; m++) {
475
- if (frozenArr[m] >= newIndex) {
476
- newIndex--
477
- }
478
- if (frozenArr[m] >= oldIndex) {
479
- oldIndex--
480
- }
481
- }
482
- }
483
- if (
484
- oldIndex !== null &&
485
- oldIndex !== undefined &&
486
- oldIndex !== -1 &&
487
- newIndex !== null &&
488
- newIndex !== undefined &&
489
- newIndex !== -1
490
- ) {
491
- if (oldIndex > newIndex) {
492
- // 从后往前
493
- if (vm.columns && vm.columns.length > 0) {
494
- const item = vm.columns[oldIndex]
495
- for (var i = oldIndex - 1; i >= newIndex; i--) {
496
- const col = vm.columns[i]
497
- col.displayOrderType = 'custom'
498
- vm.columns[i + 1] = col
499
- }
500
- vm.columns[newIndex] = item
501
- }
502
- } else {
503
- // 从前往后
504
- if (vm.columns && vm.columns.length > 0) {
505
- const item = vm.columns[oldIndex]
506
- for (var k = oldIndex + 1; k <= newIndex; k++) {
507
- const col = vm.columns[k]
508
- col.displayOrderType = 'custom'
509
- vm.columns[k - 1] = col
510
- }
511
- vm.columns[newIndex] = item
512
- }
513
- }
514
- }
515
- vm.indexAfterTheChangeUpdateDisplayOrder(
516
- vm.columns,
517
- oldIndex,
518
- newIndex,
519
- 'displayOrder'
520
- )
521
- let splitArr = []
522
- if (oldIndex > newIndex) {
523
- // 从后往前
524
- splitArr = vm.columns.slice(newIndex, oldIndex + 1)
525
- } else {
526
- // 从前往后
527
- splitArr = vm.columns.slice(oldIndex, newIndex + 1)
528
- }
529
- const params = {
530
- listCode: vm.code,
531
- columns: splitArr,
532
- }
533
- vm.$http
534
- .post(
535
- window.$vueApp.config.globalProperties.baseAPI +
536
- '/component/super-grids/drag-columns',
537
- params
538
- )
539
- .then((data) => {
540
- console.log('移动成功')
541
- })
542
- // const oldIndex = evt.oldIndex
543
- // const newIndex = evt.newIndex
544
- // const currentItem = vm.columns[evt.oldIndex]
545
- // const targetItem = vm.columns[evt.newIndex]
546
- // const currentDisplayOrder = vm.getDisplayOrder(currentItem, oldIndex + 1)
547
- // const targetDisplayOrder = vm.getDisplayOrder(targetItem, newIndex + 1)
548
- // const params = {
549
- // 'listCode': vm.code,
550
- // 'oldIndex': currentDisplayOrder,
551
- // 'newIndex': targetDisplayOrder,
552
- // 'currentProp': currentItem.prop, // 当前拖动的列的属性名
553
- // 'targetProp': targetItem.prop // 拖动的列的原属性名
554
- // }
555
- // vm.$http.post(Vue.prototype.baseAPI + '/component/super-grids/drag-columns', params).then(data => {
556
- // vm.columns.splice(oldIndex, 1)
557
- // vm.columns.splice(newIndex, 0, currentItem)
558
- // vm.$set(currentItem, 'displayOrder', targetDisplayOrder)
559
- // vm.$set(currentItem, 'displayOrderType', 'custom')
560
- // vm.$set(targetItem, 'displayOrder', currentDisplayOrder)
561
- // vm.$set(targetItem, 'displayOrderType', 'custom')
562
- // })
563
- },
564
- })
565
- }
566
- }
567
- // 作用于列表管理编辑模式
568
- // 作用于列表管理编辑模式
569
- if (
570
- typeof this.options.isAdministerListView !== 'undefined' &&
571
- this.options.isAdministerListView != null &&
572
- this.options.isAdministerListView === true &&
573
- !isDragColumnFlag
574
- ) {
575
- const wrapperTr = document.querySelector('.el-table__header-wrapper tr')
576
- if (wrapperTr != null) {
577
- this.sortable = Sortable.create(wrapperTr, {
578
- animation: 180,
579
- delay: 0,
580
- onEnd: (evt) => {
581
- const oldIndex = evt.oldIndex
582
- const newIndex = evt.newIndex
583
- const oldItem = this.columns[evt.oldIndex]
584
- const that = this
585
- that.columns.splice(oldIndex, 1)
586
- that.columns.splice(newIndex, 0, oldItem)
587
- $emit(this, 'columnDrop', oldIndex, newIndex)
588
- },
589
- })
590
- }
591
- }
592
- },
593
- // 移动完成后的displayOrder设置
594
- indexAfterTheChangeUpdateDisplayOrder(dataList, oldIndex, newIndex, prop) {
595
- if (dataList && dataList.length > 0) {
596
- if (oldIndex != null && oldIndex !== undefined && oldIndex !== -1) {
597
- if (newIndex !== null && newIndex !== undefined && newIndex !== -1) {
598
- if (prop && prop !== '') {
599
- const selectCol = dataList[newIndex]
600
- if (newIndex > oldIndex) {
601
- // 表示向后移动
602
- // 位置已经移动,所以参数要赋值给原始位置的下一个
603
- const afProp = dataList[newIndex - 1][prop]
604
- const arr = dataList.slice(oldIndex, newIndex)
605
- if (arr && arr.length > 0) {
606
- for (let i = arr.length - 1; i > -1; i--) {
607
- const col = arr[i]
608
- if (i === 0) {
609
- // 紧靠原始位置的上一个
610
- col[prop] = selectCol[prop]
611
- } else {
612
- col[prop] = arr[i - 1][prop]
613
- }
614
- }
615
- }
616
- selectCol[prop] = afProp
617
- } else {
618
- const befProp = dataList[newIndex + 1][prop]
619
- // 表示向前移动
620
- // 位置已经移动,所以参数要赋值给原始位置的上一个
621
- const arr = dataList.slice(newIndex + 1, oldIndex + 1)
622
- if (arr && arr.length > 0) {
623
- for (let i = 0; i < arr.length; i++) {
624
- const col = arr[i]
625
- if (i === arr.length - 1) {
626
- // 紧靠原始位置的上一个
627
- col[prop] = selectCol[prop]
628
- } else {
629
- col[prop] = arr[i + 1][prop]
630
- }
631
- }
632
- }
633
- selectCol[prop] = befProp
634
- }
635
- }
636
- }
637
- }
638
- }
639
- },
640
- getDisplayOrder(column, dragIndex) {
641
- if (
642
- column &&
643
- column.displayOrder !== undefined &&
644
- column.displayOrder !== null
645
- ) {
646
- return column.displayOrder
647
- } else {
648
- return dragIndex + 1
649
- }
650
- },
651
- getShowColumns(data) {
652
- let showColumns = []
653
- if (typeof this.options.showColumns !== 'undefined') {
654
- showColumns = this.options.showColumns.split(',')
655
- }
656
- if (showColumns.length > 0) {
657
- const columns = []
658
- for (let i = 0; i < data.columns.length; i++) {
659
- const column = data.columns[i]
660
- const prop = column.prop
661
- if (prop === '$index' || prop === '$selection') {
662
- columns.push(column)
663
- continue
664
- }
665
- if (column.hasOwnProperty('children')) {
666
- // 表示是组合表头,需要判断子表头是否显示
667
- const children = this.getChildrenColumns(column.children, showColumns)
668
- column.children = children
669
- if (children.length > 0) {
670
- columns.push(column)
671
- }
672
- } else {
673
- if (showColumns.indexOf(prop) >= 0) {
674
- columns.push(column)
675
- }
676
- }
677
- }
678
- data.columns = columns
679
- }
680
- },
681
- getChildrenColumns(children, showColumns) {
682
- const columns = []
683
- for (let i = 0; i < children.length; i++) {
684
- const column = children[i]
685
- const prop = column.prop
686
- if (column.hasOwnProperty('children')) {
687
- // 表示是组合表头,需要判断子表头是否显示
688
- const children = this.getChildrenColumns(column.children, showColumns)
689
- column.children = children
690
- if (children.length > 0) {
691
- columns.push(column)
692
- }
693
- } else {
694
- if (showColumns.indexOf(prop) >= 0) {
695
- columns.push(column)
696
- }
697
- }
698
- }
699
- return columns
700
- },
701
- // 保存拖动列宽
702
- saveColumnWidth(prop, width) {
703
- return new Promise((resolve, reject) => {
704
- if (width !== undefined) {
705
- const params = {
706
- prop: prop,
707
- width: width + '',
708
- }
709
- this.$http
710
- .post(
711
- window.$vueApp.config.globalProperties.baseAPI +
712
- '/component/super-grids/setting-column-widths/' +
713
- this.code,
714
- params
715
- )
716
- .then((data) => {
717
- resolve(width)
718
- })
719
- .catch((error) => {
720
- reject(error)
721
- })
722
- } else {
723
- resolve()
724
- }
725
- })
726
- },
727
- }
728
- export default superGridService
1
+ import { $on, $off, $once, $emit } from '../../utils/gogocodeTransfer'
2
+ /* eslint-disable no-undef */
3
+ import Sortable from 'sortablejs'
4
+ import * as Vue from 'vue'
5
+ import { packageEnumAndBeanColumnValueSets } from '../../utils/value-set'
6
+ import store from './store'
7
+ import { isHasOptionFunction } from './utils'
8
+ const superGridService = {
9
+ initialize() {
10
+ const a = new Date().getTime()
11
+ return new Promise((resolve, reject) => {
12
+ const gridParams = store.get(this.code)
13
+ if (this.options.isAdministerListView) {
14
+ // 要从配置中实时获取页面的配置
15
+ // 根据this.options.showColumns设置显示的字段
16
+ this.getShowColumns(this.options.SuperGrid)
17
+ Object.assign(this, this.options.SuperGrid)
18
+ gridParams.isSql = this.isSql
19
+ gridParams.columns = this.columns
20
+ gridParams.query = this.query
21
+ gridParams.pagination = this.pagination
22
+ this.createBackgroundColorMap()
23
+ this.hasLoadedColumns = true
24
+ this.fetchData(null, null, null, null)
25
+ resolve()
26
+ } else {
27
+ const url =
28
+ window.$vueApp.config.globalProperties.baseAPI +
29
+ '/component/super-grids/' +
30
+ this.code
31
+ const param = {}
32
+ const isSqlSetting = this.options.isSql
33
+ if (this.options && typeof isSqlSetting !== 'undefined') {
34
+ this.isSql = isSqlSetting
35
+ param.isSql = isSqlSetting + ''
36
+ }
37
+ if (
38
+ this.options &&
39
+ typeof this.options.isAdministerListView !== 'undefined' &&
40
+ this.options.isAdministerListView
41
+ ) {
42
+ param.isAdminister = this.options.isAdministerListView + ''
43
+ }
44
+ let additionalParams
45
+ const additionalParamMap =
46
+ window.sessionStorage.getItem('additionalParamMap')
47
+ if (additionalParamMap) {
48
+ console.log('进入判断', additionalParamMap)
49
+ if (additionalParamMap && typeof additionalParamMap === 'object') {
50
+ additionalParams = JSON.stringify(additionalParamMap)
51
+ } else if (additionalParamMap && additionalParamMap !== '') {
52
+ additionalParams = additionalParamMap
53
+ }
54
+ }
55
+ if (
56
+ this.options.additionalParamMap &&
57
+ typeof this.options.additionalParamMap === 'object'
58
+ ) {
59
+ const optionParam = JSON.stringify(this.options.additionalParamMap)
60
+ if (additionalParams) {
61
+ Object.assign(additionalParams, optionParam)
62
+ } else {
63
+ additionalParams = optionParam
64
+ }
65
+ } else if (
66
+ this.options.additionalParamMap &&
67
+ this.options.additionalParamMap !== ''
68
+ ) {
69
+ const optionParam = this.options.additionalParamMap
70
+ if (additionalParams) {
71
+ Object.assign(additionalParams, optionParam)
72
+ } else {
73
+ additionalParams = optionParam
74
+ }
75
+ }
76
+ if (additionalParams) {
77
+ param.additionalParamMap = additionalParams
78
+ }
79
+ if (this.options.extraParam && this.options.extraParam.entityMap) {
80
+ this.parentFormData = this.options.extraParam.entityMap
81
+ }
82
+ this.isLoading = true
83
+ // 初始化组件时先获取元信息再获取数据,以后翻页、排序、查询不再去获取元数据了
84
+ this.$http
85
+ .post(url, param)
86
+ .then((data) => {
87
+ const p1 = new Date().getTime()
88
+ // 判断是否查询组件渲染完之后查询
89
+ this.isLoadCompleteQuery(data.columns)
90
+ // 行编辑设置所有字段的默认值null时使用,优化行编辑性能
91
+ let allColumns = []
92
+ allColumns = allColumns.concat(
93
+ JSON.parse(JSON.stringify(data.columns))
94
+ )
95
+ // 根据this.options.showColumns设置显示的字段
96
+ this.getShowColumns(data)
97
+ // 将列表信息存入store缓存中,用来导出时获取国际化名
98
+ if (data.basicInfo) {
99
+ store.set(this.code + 'basicInfo', data.basicInfo)
100
+ }
101
+ if (this.options.pageSizes && data.pagination) {
102
+ // 组件的options属性配置中配置“可选行数”,已该配置为准
103
+ let pageSizeArr = null
104
+ const pageSizeStrs = this.options.pageSizes.split(',')
105
+ if (pageSizeStrs && pageSizeStrs.length > 0) {
106
+ pageSizeArr = []
107
+ for (var i = 0; i < pageSizeStrs.length; i++) {
108
+ pageSizeArr.push(pageSizeStrs[i] * 1)
109
+ }
110
+ data.pagination.pageSize = pageSizeArr[0]
111
+ }
112
+ data.pagination.layout = 'total, sizes, prev, pager, next, jumper'
113
+ data.pagination.pageSizes = pageSizeArr
114
+ }
115
+ if (typeof this.options.initSortInfo !== 'undefined') {
116
+ // 组件的options属性配置中配置“排序信息”,以该配置为准
117
+ if (Array.isArray(this.options.initSortInfo)) {
118
+ data.sortInfo = this.options.initSortInfo
119
+ } else {
120
+ data.sortInfo = []
121
+ data.sortInfo.push(this.options.initSortInfo)
122
+ }
123
+ }
124
+
125
+ // 需要多个组件共享的数据放到store中,避免组件定义一堆props来接收这些共享数据
126
+ packageEnumAndBeanColumnValueSets(data.columns, this.code)
127
+ .then(() => {
128
+ return this.getDynamicColumnByBean(
129
+ additionalParams,
130
+ data.dynamicColumnInfo,
131
+ data.columns,
132
+ gridParams
133
+ )
134
+ })
135
+ .then((dynamicColumns) => {
136
+ const b = new Date().getTime()
137
+ let showColumns = []
138
+ if (typeof this.options.showColumns !== 'undefined') {
139
+ showColumns = this.options.showColumns.split(',')
140
+ }
141
+ let customDynamicColumns = dynamicColumns
142
+ if (
143
+ !customDynamicColumns ||
144
+ customDynamicColumns.length === 0
145
+ ) {
146
+ if (
147
+ this.options.dynamicColumns &&
148
+ this.options.dynamicColumns.length > 0
149
+ ) {
150
+ customDynamicColumns = this.options.dynamicColumns
151
+ }
152
+ }
153
+ if (customDynamicColumns && customDynamicColumns.length > 0) {
154
+ allColumns = allColumns.concat(
155
+ JSON.parse(JSON.stringify(customDynamicColumns))
156
+ )
157
+ if (showColumns && showColumns.length > 0) {
158
+ for (let i = 0; i < customDynamicColumns.length; i++) {
159
+ const prop = customDynamicColumns[i].prop
160
+ customDynamicColumns[i].dynamic = true
161
+ if (showColumns.indexOf(prop) >= 0) {
162
+ customDynamicColumns[i].show = true
163
+ } else {
164
+ customDynamicColumns[i].show = false
165
+ }
166
+ }
167
+ }
168
+ data.columns = data.columns.concat(customDynamicColumns)
169
+ // 按照排序字段的值升序排列字段
170
+ data.columns = data.columns.sort(
171
+ (col1, col2) => col1.displayOrder - col2.displayOrder
172
+ )
173
+ }
174
+ Object.assign(this, data)
175
+ if (this.options && typeof isSqlSetting === 'undefined') {
176
+ // 如果options中没有配置,则以后台传过来的为准,在有动态列配置时,该值会赋值为true
177
+ this.isSql = this.basicInfo.sql
178
+ }
179
+ gridParams.isSql = this.isSql
180
+ // 行编辑时使用
181
+ gridParams.allColumns = allColumns
182
+ gridParams.columns = this.columns
183
+ // 存放map,prop-columnOption。方便直接通过prop 获取对应的配置
184
+ this.packageColumnOptionMap(gridParams)
185
+ // const columnOptionMap = {}
186
+ // if (gridParams.columns && gridParams.columns.length > 0) {
187
+ // gridParams.columns.forEach(item => {
188
+ // if (item && item.prop) {
189
+ // columnOptionMap[item.prop] = item
190
+ // }
191
+ // })
192
+ // }
193
+ // gridParams.columnOptionMap = columnOptionMap
194
+ this.judgeIsFormSubTable()
195
+ gridParams.colSetting = this.colSetting
196
+ gridParams.lineEdit = this.lineEdit
197
+ gridParams.basicInfo = this.basicInfo
198
+ gridParams.pagination = this.pagination
199
+ if (this.pagination) {
200
+ // 监控每行显示多少条变量使用
201
+ this.pageSize = this.pagination.pageSize
202
+ }
203
+ gridParams.query = this.query
204
+ gridParams.dynamicColumnInfo = this.dynamicColumnInfo
205
+ gridParams.mainDefaultValueColumns =
206
+ this.mainDefaultValueColumns
207
+ gridParams.contextParameter = this.contextParameter
208
+ // 是否显示分页区域
209
+ this.isShowPage = this.isShowPageArea()
210
+ // 子表是否分页
211
+ this.isSubTableShowPage = this.isFormSubTable
212
+ ? this.isShowPage
213
+ : false
214
+ gridParams.isSubTableShowPage = this.isSubTableShowPage
215
+ this.hasLoadedColumns = true
216
+ let canFetchData = true
217
+ if (isHasOptionFunction('loadBeforeSend', this.code)) {
218
+ canFetchData = gridParams.options.loadBeforeSend.call(this, {
219
+ columns: this.columns,
220
+ gridParams,
221
+ additionalParamMap: gridParams.additionalParamMap,
222
+ })
223
+ }
224
+ if (canFetchData === undefined || canFetchData === true) {
225
+ // 表示初始化时查询记录
226
+ if (this.options.isPageInfo) {
227
+ // 表示是页面展示模式
228
+ } else if (typeof this.options.initSearch === 'undefined') {
229
+ if (
230
+ typeof gridParams.basicInfo.initializationQuery ===
231
+ 'undefined' ||
232
+ gridParams.basicInfo.initializationQuery
233
+ ) {
234
+ // 判断是否初始化完查询条件后再查询数据
235
+ if (this.loadCompleteQuery) {
236
+ this.isLoading = false
237
+ } else {
238
+ this.fetchData()
239
+ }
240
+ }
241
+ } else if (this.options.initSearch !== false) {
242
+ // 判断是否初始化完查询条件后再查询数据
243
+ if (this.loadCompleteQuery) {
244
+ this.isLoading = false
245
+ } else {
246
+ this.fetchData()
247
+ }
248
+ }
249
+ }
250
+ this.createBackgroundColorMap()
251
+ const p2 = new Date().getTime()
252
+ console.log('拿到共享数据并存储p2-p1=', p2 - p1)
253
+ console.log('拿到共享数据并存储p2-b=', p2 - b)
254
+ resolve()
255
+ })
256
+ .catch((error) => {
257
+ reject(error)
258
+ })
259
+ })
260
+ .catch((error) => {
261
+ reject(error)
262
+ })
263
+ }
264
+ const a1 = new Date().getTime()
265
+ console.log('初始化所耗时间', a1 - a)
266
+ })
267
+ },
268
+ isLoadCompleteQuery(columns) {
269
+ if (columns !== null) {
270
+ let queryParameterSize = 0
271
+ columns.forEach((column) => {
272
+ if (
273
+ column.hasOwnProperty('queryType') &&
274
+ column.hasOwnProperty('prop')
275
+ ) {
276
+ if (column.prop !== '$index' && column.prop !== '$selection') {
277
+ if (column.queryType && column.queryType !== 'no') {
278
+ // 配置了默认值
279
+ if (column.controlConfig) {
280
+ queryParameterSize++
281
+ }
282
+ }
283
+ }
284
+ }
285
+ })
286
+ if (queryParameterSize > 0) {
287
+ this.loadCompleteQuery = true
288
+ }
289
+ }
290
+ },
291
+ packageColumnOptionMap(gridParams) {
292
+ const columnOptionMap = {}
293
+ if (gridParams.columns && gridParams.columns.length > 0) {
294
+ this.packageColumnOptionMapItems(gridParams.columns, columnOptionMap)
295
+ }
296
+ gridParams.columnOptionMap = columnOptionMap
297
+ },
298
+ packageColumnOptionMapItems(columns, columnOptionMap) {
299
+ columns.forEach((item) => {
300
+ if (item.children && item.children.length > 0) {
301
+ this.packageColumnOptionMapItems(item.children, columnOptionMap)
302
+ }
303
+ if (item && item.prop) {
304
+ columnOptionMap[item.prop] = item
305
+ }
306
+ })
307
+ },
308
+ getDynamicColumnByBean(
309
+ additionalParams,
310
+ dynamicColumnInfos,
311
+ columns,
312
+ gridParams
313
+ ) {
314
+ return new Promise((resolve, reject) => {
315
+ if (
316
+ gridParams.options.extraParam &&
317
+ gridParams.options.extraParam.entityMap
318
+ ) {
319
+ this.parentFormData = gridParams.options.extraParam.entityMap
320
+ }
321
+ if (
322
+ !this.options.isPageInfo &&
323
+ dynamicColumnInfos &&
324
+ dynamicColumnInfos.length > 0
325
+ ) {
326
+ const totalDynamicColumns = []
327
+ this.getDynamicColumnByBeanWithOneSet(
328
+ additionalParams,
329
+ dynamicColumnInfos[0],
330
+ columns,
331
+ 0,
332
+ dynamicColumnInfos,
333
+ totalDynamicColumns,
334
+ gridParams
335
+ )
336
+ .then((totalDynamicColumns) => {
337
+ resolve(totalDynamicColumns)
338
+ })
339
+ .catch((error) => {
340
+ reject(error)
341
+ })
342
+ } else {
343
+ resolve([])
344
+ }
345
+ })
346
+ },
347
+ getDynamicColumnByBeanWithOneSet(
348
+ additionalParams,
349
+ dynamicColumnInfo,
350
+ columns,
351
+ index,
352
+ dynamicColumnInfos,
353
+ totalDynamicColumns,
354
+ gridParams
355
+ ) {
356
+ return new Promise((resolve, reject) => {
357
+ if (dynamicColumnInfo && dynamicColumnInfo.beanName) {
358
+ const url =
359
+ window.$vueApp.config.globalProperties.baseURL +
360
+ '/common/dynamic-columns'
361
+ const param = {
362
+ additionalParams, // 附加参数对象
363
+ listCode: this.code,
364
+ columns,
365
+ beanName: dynamicColumnInfo.beanName,
366
+ }
367
+ if (this.parentFormData) {
368
+ // 初始化表单时,加载动态列需要
369
+ if (gridParams.dynamicTemp) {
370
+ param.parent = gridParams.dynamicTemp.parent
371
+ param.watchParentAttrValues =
372
+ gridParams.dynamicTemp.watchParentAttrValues
373
+ } else {
374
+ param.parent = this.parentFormData
375
+ }
376
+ // 监听主表字段的值
377
+ if (dynamicColumnInfo.watchParentAttr) {
378
+ const watchParentAttrs =
379
+ dynamicColumnInfo.watchParentAttr.split(',')
380
+ watchParentAttrs.forEach((watchParentAttr) => {
381
+ if (watchParentAttr) {
382
+ // 存储属性对应的值
383
+ if (!param.watchParentAttrValues) {
384
+ param.watchParentAttrValues = {}
385
+ }
386
+ param.watchParentAttrValues[watchParentAttr] =
387
+ this.parentFormData[watchParentAttr]
388
+ const unWatch = this.$watch(
389
+ 'parentFormData.' + watchParentAttr,
390
+ function (newValue, oldValue) {
391
+ // 重新加载表格及表格数据
392
+ if (!gridParams.dynamicTemp) {
393
+ gridParams.dynamicTemp = {}
394
+ }
395
+ gridParams.dynamicTemp.parent = this.parentFormData
396
+ if (!gridParams.dynamicTemp.watchParentAttrValues) {
397
+ gridParams.dynamicTemp.watchParentAttrValues = {}
398
+ }
399
+ gridParams.dynamicTemp.watchParentAttrValues[
400
+ watchParentAttr
401
+ ] = newValue
402
+ if (this.$refs && this.$refs.superGrid) {
403
+ // 手动注销watch,否则会调用多次watch
404
+ unWatch()
405
+ // 重新加载表格及表格数据
406
+ $emit(this, 'reload-grid')
407
+ }
408
+ }
409
+ )
410
+ }
411
+ })
412
+ }
413
+ }
414
+ this.$http
415
+ .post(url, param)
416
+ .then((dynamicColumns) => {
417
+ // 给动态列分组。如果是后台接口返回的动态列,保存时要自己实现动态列的保存
418
+ dynamicColumnInfo.dynamicColumns = dynamicColumns
419
+ totalDynamicColumns = totalDynamicColumns.concat(dynamicColumns)
420
+ if (index + 1 < dynamicColumnInfos.length) {
421
+ this.getDynamicColumnByBeanWithOneSet(
422
+ additionalParams,
423
+ dynamicColumnInfos[index + 1],
424
+ columns,
425
+ index + 1,
426
+ dynamicColumnInfos,
427
+ totalDynamicColumns
428
+ )
429
+ } else {
430
+ resolve(totalDynamicColumns)
431
+ }
432
+ })
433
+ .catch(() => {
434
+ resolve([])
435
+ })
436
+ } else {
437
+ resolve([])
438
+ }
439
+ })
440
+ },
441
+ // 列拖拽
442
+ columnDrop() {
443
+ const vm = this
444
+ // 作用于实际展示列表数据时拖拽列
445
+ let isDragColumnFlag = false
446
+ if (
447
+ typeof this.options.isDragColumnFlag !== 'undefined' &&
448
+ this.options.isDragColumn != null &&
449
+ this.options.isDragColumn === true
450
+ ) {
451
+ isDragColumnFlag = true
452
+ const wrapperTr = document.querySelector('.el-table__header-wrapper tr')
453
+ if (wrapperTr != null) {
454
+ this.sortable = Sortable.create(wrapperTr, {
455
+ animation: 180,
456
+ delay: 0,
457
+ onEnd: (evt) => {
458
+ let oldIndex = evt.oldIndex
459
+ let newIndex = evt.newIndex
460
+ // 判断冻结列,获取真实index
461
+ const frozenArr = []
462
+ // const columns = this.listColumnList.filter(listColumn => {
463
+ // return listColumn.listColumnFixed === 'left' || listColumn.listColumnFixed === 'right'
464
+ // })
465
+ for (var r = 0; r < vm.columns.length; r++) {
466
+ if (
467
+ vm.columns[r].fixed === 'left' ||
468
+ vm.columns[r].fixed === 'right'
469
+ ) {
470
+ frozenArr.push(r)
471
+ }
472
+ }
473
+ if (frozenArr && frozenArr.length > 0) {
474
+ for (var m = 0; m < frozenArr.length; m++) {
475
+ if (frozenArr[m] >= newIndex) {
476
+ newIndex--
477
+ }
478
+ if (frozenArr[m] >= oldIndex) {
479
+ oldIndex--
480
+ }
481
+ }
482
+ }
483
+ if (
484
+ oldIndex !== null &&
485
+ oldIndex !== undefined &&
486
+ oldIndex !== -1 &&
487
+ newIndex !== null &&
488
+ newIndex !== undefined &&
489
+ newIndex !== -1
490
+ ) {
491
+ if (oldIndex > newIndex) {
492
+ // 从后往前
493
+ if (vm.columns && vm.columns.length > 0) {
494
+ const item = vm.columns[oldIndex]
495
+ for (var i = oldIndex - 1; i >= newIndex; i--) {
496
+ const col = vm.columns[i]
497
+ col.displayOrderType = 'custom'
498
+ vm.columns[i + 1] = col
499
+ }
500
+ vm.columns[newIndex] = item
501
+ }
502
+ } else {
503
+ // 从前往后
504
+ if (vm.columns && vm.columns.length > 0) {
505
+ const item = vm.columns[oldIndex]
506
+ for (var k = oldIndex + 1; k <= newIndex; k++) {
507
+ const col = vm.columns[k]
508
+ col.displayOrderType = 'custom'
509
+ vm.columns[k - 1] = col
510
+ }
511
+ vm.columns[newIndex] = item
512
+ }
513
+ }
514
+ }
515
+ vm.indexAfterTheChangeUpdateDisplayOrder(
516
+ vm.columns,
517
+ oldIndex,
518
+ newIndex,
519
+ 'displayOrder'
520
+ )
521
+ let splitArr = []
522
+ if (oldIndex > newIndex) {
523
+ // 从后往前
524
+ splitArr = vm.columns.slice(newIndex, oldIndex + 1)
525
+ } else {
526
+ // 从前往后
527
+ splitArr = vm.columns.slice(oldIndex, newIndex + 1)
528
+ }
529
+ const params = {
530
+ listCode: vm.code,
531
+ columns: splitArr,
532
+ }
533
+ vm.$http
534
+ .post(
535
+ window.$vueApp.config.globalProperties.baseAPI +
536
+ '/component/super-grids/drag-columns',
537
+ params
538
+ )
539
+ .then((data) => {
540
+ console.log('移动成功')
541
+ })
542
+ // const oldIndex = evt.oldIndex
543
+ // const newIndex = evt.newIndex
544
+ // const currentItem = vm.columns[evt.oldIndex]
545
+ // const targetItem = vm.columns[evt.newIndex]
546
+ // const currentDisplayOrder = vm.getDisplayOrder(currentItem, oldIndex + 1)
547
+ // const targetDisplayOrder = vm.getDisplayOrder(targetItem, newIndex + 1)
548
+ // const params = {
549
+ // 'listCode': vm.code,
550
+ // 'oldIndex': currentDisplayOrder,
551
+ // 'newIndex': targetDisplayOrder,
552
+ // 'currentProp': currentItem.prop, // 当前拖动的列的属性名
553
+ // 'targetProp': targetItem.prop // 拖动的列的原属性名
554
+ // }
555
+ // vm.$http.post(Vue.prototype.baseAPI + '/component/super-grids/drag-columns', params).then(data => {
556
+ // vm.columns.splice(oldIndex, 1)
557
+ // vm.columns.splice(newIndex, 0, currentItem)
558
+ // vm.$set(currentItem, 'displayOrder', targetDisplayOrder)
559
+ // vm.$set(currentItem, 'displayOrderType', 'custom')
560
+ // vm.$set(targetItem, 'displayOrder', currentDisplayOrder)
561
+ // vm.$set(targetItem, 'displayOrderType', 'custom')
562
+ // })
563
+ },
564
+ })
565
+ }
566
+ }
567
+ // 作用于列表管理编辑模式
568
+ // 作用于列表管理编辑模式
569
+ if (
570
+ typeof this.options.isAdministerListView !== 'undefined' &&
571
+ this.options.isAdministerListView != null &&
572
+ this.options.isAdministerListView === true &&
573
+ !isDragColumnFlag
574
+ ) {
575
+ const wrapperTr = document.querySelector('.el-table__header-wrapper tr')
576
+ if (wrapperTr != null) {
577
+ this.sortable = Sortable.create(wrapperTr, {
578
+ animation: 180,
579
+ delay: 0,
580
+ onEnd: (evt) => {
581
+ const oldIndex = evt.oldIndex
582
+ const newIndex = evt.newIndex
583
+ const oldItem = this.columns[evt.oldIndex]
584
+ const that = this
585
+ that.columns.splice(oldIndex, 1)
586
+ that.columns.splice(newIndex, 0, oldItem)
587
+ $emit(this, 'columnDrop', oldIndex, newIndex)
588
+ },
589
+ })
590
+ }
591
+ }
592
+ },
593
+ // 移动完成后的displayOrder设置
594
+ indexAfterTheChangeUpdateDisplayOrder(dataList, oldIndex, newIndex, prop) {
595
+ if (dataList && dataList.length > 0) {
596
+ if (oldIndex != null && oldIndex !== undefined && oldIndex !== -1) {
597
+ if (newIndex !== null && newIndex !== undefined && newIndex !== -1) {
598
+ if (prop && prop !== '') {
599
+ const selectCol = dataList[newIndex]
600
+ if (newIndex > oldIndex) {
601
+ // 表示向后移动
602
+ // 位置已经移动,所以参数要赋值给原始位置的下一个
603
+ const afProp = dataList[newIndex - 1][prop]
604
+ const arr = dataList.slice(oldIndex, newIndex)
605
+ if (arr && arr.length > 0) {
606
+ for (let i = arr.length - 1; i > -1; i--) {
607
+ const col = arr[i]
608
+ if (i === 0) {
609
+ // 紧靠原始位置的上一个
610
+ col[prop] = selectCol[prop]
611
+ } else {
612
+ col[prop] = arr[i - 1][prop]
613
+ }
614
+ }
615
+ }
616
+ selectCol[prop] = afProp
617
+ } else {
618
+ const befProp = dataList[newIndex + 1][prop]
619
+ // 表示向前移动
620
+ // 位置已经移动,所以参数要赋值给原始位置的上一个
621
+ const arr = dataList.slice(newIndex + 1, oldIndex + 1)
622
+ if (arr && arr.length > 0) {
623
+ for (let i = 0; i < arr.length; i++) {
624
+ const col = arr[i]
625
+ if (i === arr.length - 1) {
626
+ // 紧靠原始位置的上一个
627
+ col[prop] = selectCol[prop]
628
+ } else {
629
+ col[prop] = arr[i + 1][prop]
630
+ }
631
+ }
632
+ }
633
+ selectCol[prop] = befProp
634
+ }
635
+ }
636
+ }
637
+ }
638
+ }
639
+ },
640
+ getDisplayOrder(column, dragIndex) {
641
+ if (
642
+ column &&
643
+ column.displayOrder !== undefined &&
644
+ column.displayOrder !== null
645
+ ) {
646
+ return column.displayOrder
647
+ } else {
648
+ return dragIndex + 1
649
+ }
650
+ },
651
+ getShowColumns(data) {
652
+ let showColumns = []
653
+ if (typeof this.options.showColumns !== 'undefined') {
654
+ showColumns = this.options.showColumns.split(',')
655
+ }
656
+ if (showColumns.length > 0) {
657
+ const columns = []
658
+ for (let i = 0; i < data.columns.length; i++) {
659
+ const column = data.columns[i]
660
+ const prop = column.prop
661
+ if (prop === '$index' || prop === '$selection') {
662
+ columns.push(column)
663
+ continue
664
+ }
665
+ if (column.hasOwnProperty('children')) {
666
+ // 表示是组合表头,需要判断子表头是否显示
667
+ const children = this.getChildrenColumns(column.children, showColumns)
668
+ column.children = children
669
+ if (children.length > 0) {
670
+ columns.push(column)
671
+ }
672
+ } else {
673
+ if (showColumns.indexOf(prop) >= 0) {
674
+ columns.push(column)
675
+ }
676
+ }
677
+ }
678
+ data.columns = columns
679
+ }
680
+ },
681
+ getChildrenColumns(children, showColumns) {
682
+ const columns = []
683
+ for (let i = 0; i < children.length; i++) {
684
+ const column = children[i]
685
+ const prop = column.prop
686
+ if (column.hasOwnProperty('children')) {
687
+ // 表示是组合表头,需要判断子表头是否显示
688
+ const children = this.getChildrenColumns(column.children, showColumns)
689
+ column.children = children
690
+ if (children.length > 0) {
691
+ columns.push(column)
692
+ }
693
+ } else {
694
+ if (showColumns.indexOf(prop) >= 0) {
695
+ columns.push(column)
696
+ }
697
+ }
698
+ }
699
+ return columns
700
+ },
701
+ // 保存拖动列宽
702
+ saveColumnWidth(prop, width) {
703
+ return new Promise((resolve, reject) => {
704
+ if (width !== undefined) {
705
+ const params = {
706
+ prop: prop,
707
+ width: width + '',
708
+ }
709
+ this.$http
710
+ .post(
711
+ window.$vueApp.config.globalProperties.baseAPI +
712
+ '/component/super-grids/setting-column-widths/' +
713
+ this.code,
714
+ params
715
+ )
716
+ .then((data) => {
717
+ resolve(width)
718
+ })
719
+ .catch((error) => {
720
+ reject(error)
721
+ })
722
+ } else {
723
+ resolve()
724
+ }
725
+ })
726
+ },
727
+ }
728
+ export default superGridService