@tongfun/tf-widget 0.1.24 → 0.1.27

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 (95) hide show
  1. package/README.md +77 -54
  2. package/lib/tf-widget.common.js +624 -618
  3. package/lib/tf-widget.css +1 -1
  4. package/lib/tf-widget.umd.js +624 -618
  5. package/lib/tf-widget.umd.min.js +4 -4
  6. package/package/svg-icon/index.js +8 -8
  7. package/package/svg-icon/src/SvgIcon.vue +59 -59
  8. package/package/t-data-list/index.js +6 -6
  9. package/package/t-data-list/main.vue +193 -193
  10. package/package/t-data-list/src/condition-input/basic.vue +31 -31
  11. package/package/t-data-list/src/condition-input/date.vue +106 -106
  12. package/package/t-data-list/src/condition-input/index.vue +100 -100
  13. package/package/t-data-list/src/condition-input/input.vue +31 -31
  14. package/package/t-data-list/src/condition-input/number.vue +115 -115
  15. package/package/t-data-list/src/condition-input/select.vue +86 -86
  16. package/package/t-data-list/src/js/fieldTypeEnum.js +10 -10
  17. package/package/t-data-list/src/js/operatorEnum.js +108 -108
  18. package/package/t-data-list/src/js/qureyParamsEnum.js +4 -4
  19. package/package/t-data-list/src/js/util.js +34 -34
  20. package/package/t-data-list/src/mixins/button-controll-mixin.js +93 -93
  21. package/package/t-data-list/src/pushdown/push-down.vue +158 -158
  22. package/package/t-data-list/src/t-list-search.vue +36 -36
  23. package/package/t-data-list/src/t-plan/condition-always-item.vue +143 -143
  24. package/package/t-data-list/src/t-plan/condition-mult-item.vue +222 -222
  25. package/package/t-data-list/src/t-plan/index.vue +195 -195
  26. package/package/t-data-list/src/t-plan/plan-content.vue +389 -389
  27. package/package/t-data-list/src/t-table/index.vue +129 -129
  28. package/package/t-data-list/src/t-table/table-group-item-edit.vue +238 -238
  29. package/package/t-data-list/src/t-table/table-group-item.vue +87 -87
  30. package/package/t-data-list/src/t-table/table-group.vue +180 -180
  31. package/package/t-data-list/src/t-table/table-records-header-popover.vue +246 -246
  32. package/package/t-data-list/src/t-table/table-records-selected.vue +159 -159
  33. package/package/t-data-list/src/t-table/table-records.vue +336 -336
  34. package/package/t-input/children/address.vue +101 -101
  35. package/package/t-input/children/basic-display.vue +41 -41
  36. package/package/t-input/children/basic.vue +261 -254
  37. package/package/t-input/children/date.vue +84 -89
  38. package/package/t-input/children/group-components/group-dialog.vue +344 -344
  39. package/package/t-input/children/group.vue +126 -126
  40. package/package/t-input/children/input.vue +67 -72
  41. package/package/t-input/children/number.vue +71 -74
  42. package/package/t-input/children/select.vue +86 -89
  43. package/package/t-input/children/tfile/fiile-enclosure.vue +233 -233
  44. package/package/t-input/index.js +7 -7
  45. package/package/t-input/index.vue +337 -337
  46. package/package/t-input/tInputCache.js +24 -24
  47. package/package/tf-icon-picker/README.md +7 -7
  48. package/package/tf-icon-picker/index.js +8 -8
  49. package/package/tf-icon-picker/src/tf-icon-picker.vue +266 -266
  50. package/package/tf-layout/README.md +115 -115
  51. package/package/tf-layout/index.js +8 -8
  52. package/package/tf-layout/src/components/tf-labelbar.vue +394 -394
  53. package/package/tf-layout/src/components/tf-menu.vue +180 -180
  54. package/package/tf-layout/src/components/tf-right-menu.vue +89 -89
  55. package/package/tf-layout/src/components/tf-rotate-box.vue +50 -50
  56. package/package/tf-layout/src/tf-layout.vue +140 -140
  57. package/package/tf-widget/index.js +8 -8
  58. package/package/tf-widget/src/assets/common-input.less +10 -10
  59. package/package/tf-widget/src/children/basic-data/basic-data.vue +361 -361
  60. package/package/tf-widget/src/children/basic-data/dependcy/basic-data-selector.vue +1087 -1087
  61. package/package/tf-widget/src/children/basic-data/dependcy/common-table.vue +750 -750
  62. package/package/tf-widget/src/children/basic-data/dependcy/condition-filter.vue +519 -519
  63. package/package/tf-widget/src/children/basic-data/dependcy/pagination.vue +93 -93
  64. package/package/tf-widget/src/children/basic-data/dependcy/table-control.vue +240 -240
  65. package/package/tf-widget/src/children/basic-data/dependcy/view-picture.vue +108 -108
  66. package/package/tf-widget/src/children/date-time.vue +103 -103
  67. package/package/tf-widget/src/children/date.vue +103 -103
  68. package/package/tf-widget/src/children/decimal.vue +115 -115
  69. package/package/tf-widget/src/children/integer.vue +104 -104
  70. package/package/tf-widget/src/children/property.vue +59 -59
  71. package/package/tf-widget/src/children/single-line-text.vue +82 -82
  72. package/package/tf-widget/src/children/small-pictures.vue +223 -223
  73. package/package/tf-widget/src/children/text-area.vue +74 -74
  74. package/package/tf-widget/src/children/tf-select.vue +113 -113
  75. package/package/tf-widget/src/tf-widget.vue +175 -175
  76. package/package.json +44 -44
  77. package/postinstall.js +1 -1
  78. package/src/api/edit.js +97 -97
  79. package/src/api/file-enclosure.js +26 -26
  80. package/src/api/push-down.js +19 -19
  81. package/src/api/table.js +294 -294
  82. package/src/api/tableV3.js +166 -166
  83. package/src/assets/images/icons/index.js +9 -9
  84. package/src/assets/images/icons/svg/add.svg +5 -5
  85. package/src/assets/images/icons/svg/push-down.svg +1 -1
  86. package/src/assets/images/icons/svg/remove.svg +1 -1
  87. package/src/assets/styles/common-table.less +202 -202
  88. package/src/directives/debounce.js +24 -24
  89. package/src/index.js +31 -31
  90. package/src/mixins/t-data-query-mixin.js +293 -290
  91. package/src/utils/auth.js +22 -22
  92. package/src/utils/request.js +42 -42
  93. package/src/utils/stato-anormale.js +59 -59
  94. package/src/utils/utils.js +109 -109
  95. package/src/utils/validate.js +84 -84
@@ -1,336 +1,336 @@
1
- <template>
2
- <div ref="tableRecords" class="table-records">
3
- <div class="table-wrapper">
4
- <ux-grid
5
- ref="dataRecordsRef"
6
- v-loading="syncData.tableLoading"
7
- :data="data.records"
8
- size="mini"
9
- column-key
10
- beautify-table
11
- :show-summary="showSummaryComp"
12
- :summary-method="summaryMethod"
13
- :width-resize="true"
14
- :highlight-current-row="false"
15
- show-overflow="tooltip"
16
- @row-click="handleRowClick"
17
- @select="handleSelect"
18
- @row-dblclick="handelRowDblClick"
19
- @select-all="selectAll"
20
- >
21
- <ux-table-column :width="50" type="checkbox" fixed="left" />
22
- <template v-for="(item,index) in layout">
23
- <ux-table-column
24
- v-if="item.visible"
25
- :key="item.field"
26
- :width="layout.length<8?'': '150'"
27
- align="center"
28
- resizable
29
- :title="item.title"
30
- :field="item.field"
31
- >
32
- <template v-slot:header="{ column }">
33
- <div class="filter-slot">
34
- <span class="title">{{ column.title }}</span>
35
- <TableRecordsHeaderPopover
36
- :class="{'my-popover':true,'is-show-filter-icon': !!item.isShowIcon || item.isShowFilter }"
37
- :item="item"
38
- :upload-data-map="uploadDataMap"
39
- :table-filter-data="tableFilterData"
40
- @condition-change="$emit('condition-change', $event)"
41
- @filter-click="filterClick($event,index)"
42
- />
43
- </div>
44
- </template>
45
- </ux-table-column>
46
- </template>
47
- </ux-grid>
48
- <TableRecordsSelected
49
- v-if="isSelector"
50
- :select-data="selectedRows"
51
- :show-field="syncData.displayField"
52
- @del="handleDel"
53
- @clear="handleClearSelected"
54
- />
55
- </div>
56
-
57
- <!-- 分页 -->
58
- <div class="page-wrapper">
59
- <el-pagination
60
- :current-page="currentPage"
61
- :page-sizes="[200, 500, 1000, 5000]"
62
- :page-size="pageSize"
63
- layout="total, sizes, prev, pager, next, jumper"
64
- :total="data.total"
65
- @size-change="$emit('size-change', $event)"
66
- @current-change="$emit('current-change', $event)"
67
- />
68
- </div>
69
-
70
- </div>
71
- </template>
72
- <script>
73
- import TableRecordsSelected from './table-records-selected'
74
- import TableRecordsHeaderPopover from './table-records-header-popover.vue'
75
- export default {
76
- components: {
77
- TableRecordsHeaderPopover,
78
- TableRecordsSelected
79
- },
80
- props: {
81
- data: {
82
- type: Object,
83
- default: null
84
- },
85
- isSelector: {
86
- type: Boolean,
87
- default: false
88
- },
89
- layout: {
90
- type: Array,
91
- default: () => {
92
- return []
93
- }
94
- },
95
- sum: {
96
- type: Array,
97
- default: () => []
98
- },
99
- pageSize: {
100
- type: Number,
101
- default: 100
102
- },
103
- currentPage: {
104
- type: Number,
105
- default: 1
106
- },
107
- updateInDialog: {
108
- type: Boolean,
109
- default: false
110
- },
111
- enableSum: {
112
- type: Boolean,
113
- default: false
114
- }
115
- },
116
- inject: ['selectedRows', 'ids', 'syncData', 'getDbRow', 'showSummary', 'queryType'],
117
- data () {
118
- return {
119
- tableFilterData: {}, // 表头过滤条件的数据的存储集合
120
- uploadDataMap: {}, // 真实向上发送的数据集合
121
- idField: null,
122
- filterSelectedId: '',
123
- isSingleFilter: true,
124
- displayField: ''
125
- }
126
- },
127
- computed: {
128
- showSummaryComp () {
129
- return this.queryType === 'LIST'
130
- }
131
- },
132
- watch: {
133
- layout: {
134
- handler (newVal) {
135
- if (Object.keys(this.tableFilterData).length !== 0) {
136
- return
137
- }
138
- this.initTableFilterData()
139
- // newVal.length > 0 && newVal.forEach(e => {
140
- // if (e.isId) this.idField = e.field
141
- // this.$set(this.tableFilterData, e.field, { field: e.field, operator: '', value: '', fieldType: e.componentType })
142
- // })
143
- },
144
- immediate: true
145
- },
146
- 'data.records': {
147
- handler (newValue) {
148
- /**
149
- * 在列表的情况下,只有提交审核等几个有限的操作,数据刷新不清空已选
150
- */
151
- if (this.queryType === 'LIST' && this.syncData.tableSelectionClear) {
152
- return this.clearSelectedRows()
153
- }
154
- this.syncData.tableSelectionClear = true
155
-
156
- /**
157
- * 在弹窗的所有情况和列表特殊情况(提交/审核后重新获取数据)
158
- * 数据刷新后,重新勾选之前已经选择的数据
159
- */
160
- const xidList = this.selectedRows.map(item => item.Sid)
161
- if (!xidList[0]) {
162
- return
163
- }
164
- const currentSelectRows = newValue.filter(item => {
165
- if (xidList.indexOf(item.Sid) > -1) {
166
- this.selectedRows[xidList.indexOf(item.Sid)] = item
167
- return true
168
- }
169
- return false
170
- })
171
- const params = currentSelectRows.map(x => {
172
- return { row: x, selected: true }
173
- })
174
- this.$refs.dataRecordsRef.toggleRowSelection(params)
175
- }
176
- }
177
- },
178
- methods: {
179
- /**
180
- * 表头过滤
181
- */
182
- // 初始化或清空表头过滤的缓存容器
183
- initTableFilterData () {
184
- this.layout.length && this.layout.forEach(e => {
185
- if (e.isId) this.idField = e.field
186
- this.$set(this.tableFilterData, e.field, { field: e.field, operator: '', value: '', fieldType: e.componentType })
187
- this.$set(e, 'isShowIcon', false)
188
- })
189
- },
190
- // 表头过滤触发了过滤事件
191
- filterClick (value, index) {
192
- if (!this.isSingleFilter) {
193
- return
194
- }
195
- // 重置其他页面的表头过滤显示状态
196
- if (!value && this.filterSelectedId) {
197
- this.layout[this.filterSelectedId].isShowFilter = false
198
- }
199
- this.filterSelectedId = index
200
- },
201
- handleClearSelected () {
202
- this.$refs.dataRecordsRef.clearSelection()
203
- this.clearSelectedRows()
204
- },
205
- // 清空已选
206
- clearSelectedRows () {
207
- this.selectedRows.splice(0, this.selectedRows.length)
208
- this.ids.splice(0, this.ids.length)
209
- },
210
- // 列表合计
211
- summaryMethod () {
212
- return [this.sum]
213
- },
214
- handleDel (item) {
215
- this.selectedRows.splice(this.selectedRows.indexOf(item), 1)
216
- this.ids.splice(this.ids.indexOf(item.id), 1)
217
- this.$refs.dataRecordsRef.toggleRowSelection([{ row: item, selected: false }])
218
- },
219
- handleRowClick (row) {
220
- this.$refs.dataRecordsRef.toggleRowSelection([{ row }])
221
- if (!this.ids.includes(row[this.idField])) {
222
- this.selectedRows.push(row)
223
- this.ids.push(row[this.idField])
224
- } else {
225
- this.selectedRows.splice(this.selectedRows.indexOf(row), 1)
226
- this.ids.splice(this.ids.indexOf(row[this.idField]), 1)
227
- }
228
- },
229
- handelRowDblClick (row) {
230
- // todo:这里判断条件太多,并且条件之间有优先级,将来条件可能冲突
231
- if (this.isSelector) {
232
- return this.$emit('fastConfirm', row)
233
- }
234
- if (this.updateInDialog) {
235
- return this.$emit('dbClick', row[this.idField])
236
- }
237
- if (this.getDbRow) {
238
- return this.$emit('dbRowClick', row)
239
- }
240
-
241
- const randomStr = Math.random().toString(36).slice(8)
242
- this.$router.replace(`${this.$route.path}/update/${randomStr}/${row[this.idField]}`)
243
- },
244
- selectAll (selection) {
245
- if (selection.length > 1) {
246
- // 是全选的处理方式
247
- const needAddData = this.data.records.filter(e => !this.selectedRows.includes(e))
248
- needAddData.forEach(e => {
249
- this.selectedRows.push(e)
250
- this.ids.push(e[this.idField])
251
- })
252
- } else {
253
- // 非全选的处理方式
254
- const selectedRowsCache = this.selectedRows.filter(e => !this.data.records.includes(e))
255
- this.selectedRows.splice(0, this.selectedRows.length)
256
- this.ids.splice(0, this.ids.length)
257
- this.selectedRows.push(...selectedRowsCache)
258
- this.ids.push(...selectedRowsCache.map(v => v[this.idField]))
259
- }
260
- },
261
-
262
- /**
263
- * 复选框被勾选
264
- */
265
- handleSelect (selection, row) {
266
- if (!this.ids.includes(row[this.idField])) {
267
- if (selection.includes(row)) {
268
- this.selectedRows.push(row)
269
- row[this.idField] && this.ids.push(row[this.idField])
270
- }
271
- } else {
272
- if (!selection.includes(row)) {
273
- this.selectedRows.splice(this.selectedRows.indexOf(row), 1)
274
- row[this.idField] && this.ids.splice(this.ids.indexOf(row[this.idField]), 1)
275
- }
276
- }
277
- }
278
-
279
- }
280
- }
281
- </script>
282
-
283
- <style scoped lang='less'>
284
- .table-records {
285
- height:90vh;
286
- .table-wrapper {
287
- overflow: hidden;
288
- display: flex;
289
- ::v-deep .plTableBox{
290
- .elx-table--body-wrapper{
291
- height: calc(90vh - 230px );//修改以适应合计行的添加,
292
- overflow-x:hidden;
293
- }
294
- .elx-table:not(.is--empty).show--foot.scroll--x .elx-table--body-wrapper{
295
- overflow-x: hidden !important;
296
- }
297
- .elx-table--footer-wrapper{
298
- margin-top: 0px!important;
299
- }
300
- .elx-header--column{
301
- color: #085497;
302
- transition: opacity 0.5s ease-in;
303
- .filter-slot{
304
- display: flex;
305
- align-items: center;
306
- justify-content: center;
307
- }
308
- .my-popover{
309
- opacity: 0;
310
- width: 0;
311
- cursor: pointer;
312
- transition: all 0.5s ease-out;
313
- }
314
- :hover .my-popover{
315
- width:15px;
316
- opacity: 1;
317
- transition: opacity 0.5s ease-in;
318
- }
319
- .is-show-filter-icon{
320
- width:15px;
321
- opacity: 1;
322
- }
323
-
324
- }
325
- }
326
- }
327
- .page-wrapper {
328
- margin-top:5px;
329
- position:relative;
330
- .el-pagination {
331
- position:absolute;
332
- right:0;
333
- }
334
- }
335
- }
336
- </style>
1
+ <template>
2
+ <div ref="tableRecords" class="table-records">
3
+ <div class="table-wrapper">
4
+ <ux-grid
5
+ ref="dataRecordsRef"
6
+ v-loading="syncData.tableLoading"
7
+ :data="data.records"
8
+ size="mini"
9
+ column-key
10
+ beautify-table
11
+ :show-summary="showSummaryComp"
12
+ :summary-method="summaryMethod"
13
+ :width-resize="true"
14
+ :highlight-current-row="false"
15
+ show-overflow="tooltip"
16
+ @row-click="handleRowClick"
17
+ @select="handleSelect"
18
+ @row-dblclick="handelRowDblClick"
19
+ @select-all="selectAll"
20
+ >
21
+ <ux-table-column :width="50" type="checkbox" fixed="left" />
22
+ <template v-for="(item,index) in layout">
23
+ <ux-table-column
24
+ v-if="item.visible"
25
+ :key="item.field"
26
+ :width="layout.length<8?'': '150'"
27
+ align="center"
28
+ resizable
29
+ :title="item.title"
30
+ :field="item.field"
31
+ >
32
+ <template v-slot:header="{ column }">
33
+ <div class="filter-slot">
34
+ <span class="title">{{ column.title }}</span>
35
+ <TableRecordsHeaderPopover
36
+ :class="{'my-popover':true,'is-show-filter-icon': !!item.isShowIcon || item.isShowFilter }"
37
+ :item="item"
38
+ :upload-data-map="uploadDataMap"
39
+ :table-filter-data="tableFilterData"
40
+ @condition-change="$emit('condition-change', $event)"
41
+ @filter-click="filterClick($event,index)"
42
+ />
43
+ </div>
44
+ </template>
45
+ </ux-table-column>
46
+ </template>
47
+ </ux-grid>
48
+ <TableRecordsSelected
49
+ v-if="isSelector"
50
+ :select-data="selectedRows"
51
+ :show-field="syncData.displayField"
52
+ @del="handleDel"
53
+ @clear="handleClearSelected"
54
+ />
55
+ </div>
56
+
57
+ <!-- 分页 -->
58
+ <div class="page-wrapper">
59
+ <el-pagination
60
+ :current-page="currentPage"
61
+ :page-sizes="[200, 500, 1000, 5000]"
62
+ :page-size="pageSize"
63
+ layout="total, sizes, prev, pager, next, jumper"
64
+ :total="data.total"
65
+ @size-change="$emit('size-change', $event)"
66
+ @current-change="$emit('current-change', $event)"
67
+ />
68
+ </div>
69
+
70
+ </div>
71
+ </template>
72
+ <script>
73
+ import TableRecordsSelected from './table-records-selected'
74
+ import TableRecordsHeaderPopover from './table-records-header-popover.vue'
75
+ export default {
76
+ components: {
77
+ TableRecordsHeaderPopover,
78
+ TableRecordsSelected
79
+ },
80
+ props: {
81
+ data: {
82
+ type: Object,
83
+ default: null
84
+ },
85
+ isSelector: {
86
+ type: Boolean,
87
+ default: false
88
+ },
89
+ layout: {
90
+ type: Array,
91
+ default: () => {
92
+ return []
93
+ }
94
+ },
95
+ sum: {
96
+ type: Array,
97
+ default: () => []
98
+ },
99
+ pageSize: {
100
+ type: Number,
101
+ default: 100
102
+ },
103
+ currentPage: {
104
+ type: Number,
105
+ default: 1
106
+ },
107
+ updateInDialog: {
108
+ type: Boolean,
109
+ default: false
110
+ },
111
+ enableSum: {
112
+ type: Boolean,
113
+ default: false
114
+ }
115
+ },
116
+ inject: ['selectedRows', 'ids', 'syncData', 'getDbRow', 'showSummary', 'queryType'],
117
+ data () {
118
+ return {
119
+ tableFilterData: {}, // 表头过滤条件的数据的存储集合
120
+ uploadDataMap: {}, // 真实向上发送的数据集合
121
+ idField: null,
122
+ filterSelectedId: '',
123
+ isSingleFilter: true,
124
+ displayField: ''
125
+ }
126
+ },
127
+ computed: {
128
+ showSummaryComp () {
129
+ return this.queryType === 'LIST'
130
+ }
131
+ },
132
+ watch: {
133
+ layout: {
134
+ handler (newVal) {
135
+ if (Object.keys(this.tableFilterData).length !== 0) {
136
+ return
137
+ }
138
+ this.initTableFilterData()
139
+ // newVal.length > 0 && newVal.forEach(e => {
140
+ // if (e.isId) this.idField = e.field
141
+ // this.$set(this.tableFilterData, e.field, { field: e.field, operator: '', value: '', fieldType: e.componentType })
142
+ // })
143
+ },
144
+ immediate: true
145
+ },
146
+ 'data.records': {
147
+ handler (newValue) {
148
+ /**
149
+ * 在列表的情况下,只有提交审核等几个有限的操作,数据刷新不清空已选
150
+ */
151
+ if (this.queryType === 'LIST' && this.syncData.tableSelectionClear) {
152
+ return this.clearSelectedRows()
153
+ }
154
+ this.syncData.tableSelectionClear = true
155
+
156
+ /**
157
+ * 在弹窗的所有情况和列表特殊情况(提交/审核后重新获取数据)
158
+ * 数据刷新后,重新勾选之前已经选择的数据
159
+ */
160
+ const xidList = this.selectedRows.map(item => item.Sid)
161
+ if (!xidList[0]) {
162
+ return
163
+ }
164
+ const currentSelectRows = newValue.filter(item => {
165
+ if (xidList.indexOf(item.Sid) > -1) {
166
+ this.selectedRows[xidList.indexOf(item.Sid)] = item
167
+ return true
168
+ }
169
+ return false
170
+ })
171
+ const params = currentSelectRows.map(x => {
172
+ return { row: x, selected: true }
173
+ })
174
+ this.$refs.dataRecordsRef.toggleRowSelection(params)
175
+ }
176
+ }
177
+ },
178
+ methods: {
179
+ /**
180
+ * 表头过滤
181
+ */
182
+ // 初始化或清空表头过滤的缓存容器
183
+ initTableFilterData () {
184
+ this.layout.length && this.layout.forEach(e => {
185
+ if (e.isId) this.idField = e.field
186
+ this.$set(this.tableFilterData, e.field, { field: e.field, operator: '', value: '', fieldType: e.componentType })
187
+ this.$set(e, 'isShowIcon', false)
188
+ })
189
+ },
190
+ // 表头过滤触发了过滤事件
191
+ filterClick (value, index) {
192
+ if (!this.isSingleFilter) {
193
+ return
194
+ }
195
+ // 重置其他页面的表头过滤显示状态
196
+ if (!value && this.filterSelectedId) {
197
+ this.layout[this.filterSelectedId].isShowFilter = false
198
+ }
199
+ this.filterSelectedId = index
200
+ },
201
+ handleClearSelected () {
202
+ this.$refs.dataRecordsRef.clearSelection()
203
+ this.clearSelectedRows()
204
+ },
205
+ // 清空已选
206
+ clearSelectedRows () {
207
+ this.selectedRows.splice(0, this.selectedRows.length)
208
+ this.ids.splice(0, this.ids.length)
209
+ },
210
+ // 列表合计
211
+ summaryMethod () {
212
+ return [this.sum]
213
+ },
214
+ handleDel (item) {
215
+ this.selectedRows.splice(this.selectedRows.indexOf(item), 1)
216
+ this.ids.splice(this.ids.indexOf(item.id), 1)
217
+ this.$refs.dataRecordsRef.toggleRowSelection([{ row: item, selected: false }])
218
+ },
219
+ handleRowClick (row) {
220
+ this.$refs.dataRecordsRef.toggleRowSelection([{ row }])
221
+ if (!this.ids.includes(row[this.idField])) {
222
+ this.selectedRows.push(row)
223
+ this.ids.push(row[this.idField])
224
+ } else {
225
+ this.selectedRows.splice(this.selectedRows.indexOf(row), 1)
226
+ this.ids.splice(this.ids.indexOf(row[this.idField]), 1)
227
+ }
228
+ },
229
+ handelRowDblClick (row) {
230
+ // todo:这里判断条件太多,并且条件之间有优先级,将来条件可能冲突
231
+ if (this.isSelector) {
232
+ return this.$emit('fastConfirm', row)
233
+ }
234
+ if (this.updateInDialog) {
235
+ return this.$emit('dbClick', row[this.idField])
236
+ }
237
+ if (this.getDbRow) {
238
+ return this.$emit('dbRowClick', row)
239
+ }
240
+
241
+ const randomStr = Math.random().toString(36).slice(8)
242
+ this.$router.replace(`${this.$route.path}/update/${randomStr}/${row[this.idField]}`)
243
+ },
244
+ selectAll (selection) {
245
+ if (selection.length > 1) {
246
+ // 是全选的处理方式
247
+ const needAddData = this.data.records.filter(e => !this.selectedRows.includes(e))
248
+ needAddData.forEach(e => {
249
+ this.selectedRows.push(e)
250
+ this.ids.push(e[this.idField])
251
+ })
252
+ } else {
253
+ // 非全选的处理方式
254
+ const selectedRowsCache = this.selectedRows.filter(e => !this.data.records.includes(e))
255
+ this.selectedRows.splice(0, this.selectedRows.length)
256
+ this.ids.splice(0, this.ids.length)
257
+ this.selectedRows.push(...selectedRowsCache)
258
+ this.ids.push(...selectedRowsCache.map(v => v[this.idField]))
259
+ }
260
+ },
261
+
262
+ /**
263
+ * 复选框被勾选
264
+ */
265
+ handleSelect (selection, row) {
266
+ if (!this.ids.includes(row[this.idField])) {
267
+ if (selection.includes(row)) {
268
+ this.selectedRows.push(row)
269
+ row[this.idField] && this.ids.push(row[this.idField])
270
+ }
271
+ } else {
272
+ if (!selection.includes(row)) {
273
+ this.selectedRows.splice(this.selectedRows.indexOf(row), 1)
274
+ row[this.idField] && this.ids.splice(this.ids.indexOf(row[this.idField]), 1)
275
+ }
276
+ }
277
+ }
278
+
279
+ }
280
+ }
281
+ </script>
282
+
283
+ <style scoped lang='less'>
284
+ .table-records {
285
+ height:90vh;
286
+ .table-wrapper {
287
+ overflow: hidden;
288
+ display: flex;
289
+ ::v-deep .plTableBox{
290
+ .elx-table--body-wrapper{
291
+ height: calc(90vh - 230px );//修改以适应合计行的添加,
292
+ overflow-x:hidden;
293
+ }
294
+ .elx-table:not(.is--empty).show--foot.scroll--x .elx-table--body-wrapper{
295
+ overflow-x: hidden !important;
296
+ }
297
+ .elx-table--footer-wrapper{
298
+ margin-top: 0px!important;
299
+ }
300
+ .elx-header--column{
301
+ color: #085497;
302
+ transition: opacity 0.5s ease-in;
303
+ .filter-slot{
304
+ display: flex;
305
+ align-items: center;
306
+ justify-content: center;
307
+ }
308
+ .my-popover{
309
+ opacity: 0;
310
+ width: 0;
311
+ cursor: pointer;
312
+ transition: all 0.5s ease-out;
313
+ }
314
+ :hover .my-popover{
315
+ width:15px;
316
+ opacity: 1;
317
+ transition: opacity 0.5s ease-in;
318
+ }
319
+ .is-show-filter-icon{
320
+ width:15px;
321
+ opacity: 1;
322
+ }
323
+
324
+ }
325
+ }
326
+ }
327
+ .page-wrapper {
328
+ margin-top:5px;
329
+ position:relative;
330
+ .el-pagination {
331
+ position:absolute;
332
+ right:0;
333
+ }
334
+ }
335
+ }
336
+ </style>