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