@tongfun/tf-widget 0.1.21 → 0.1.22

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 (94) hide show
  1. package/README.md +49 -49
  2. package/lib/tf-widget.common.js +547 -503
  3. package/lib/tf-widget.css +1 -1
  4. package/lib/tf-widget.umd.js +547 -503
  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 +337 -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 +253 -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 -160
  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
@@ -1,337 +1,337 @@
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
+ <!-- {{ 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>