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