@tongfun/tf-widget 0.1.23 → 0.1.24

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