@lambo-design/schema-paging-table 1.0.0-beta.14 → 1.0.0-beta.16

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 (2) hide show
  1. package/package.json +4 -4
  2. package/src/index.vue +428 -424
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lambo-design/schema-paging-table",
3
- "version": "1.0.0-beta.14",
3
+ "version": "1.0.0-beta.16",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "author": "lambo",
@@ -10,10 +10,10 @@
10
10
  "registry": "https://registry.npmjs.org/"
11
11
  },
12
12
  "devDependencies": {
13
- "@lambo-design/schema-form": "^1.0.0-beta.40",
13
+ "@lambo-design/core": "^4.7.1-beta.113",
14
14
  "@lambo-design/shared": "^1.0.0-beta.100",
15
- "@lambo-design/paging-table": "^1.0.0-beta.72",
16
- "@lambo-design/core": "^4.7.1-beta.113"
15
+ "@lambo-design/schema-form": "^1.0.0-beta.40",
16
+ "@lambo-design/paging-table": "^1.0.0-beta.72"
17
17
  },
18
18
  "scripts": {}
19
19
  }
package/src/index.vue CHANGED
@@ -1,424 +1,428 @@
1
- <template>
2
- <LamboPagingTable
3
- ref="schemaPagingTable"
4
- :dataUrl="dataUrl"
5
- :columns="tableColumn"
6
- :searchParams="tableSearchParams"
7
- :transformResponse="transformResponse"
8
- :showTableOption="showTableOption"
9
- @on-row-click="onRowClick"
10
- @on-selection-change="onSelectionChange"
11
- @on-select="onSelect"
12
- @on-select-cancel="onSelectCancel"
13
- @on-select-all="onSelectAll"
14
- @on-select-all-cancel="onSelectAllCancel">
15
- <div slot="search">
16
- <LamboSchemaForm
17
- ref="lamboSchemaForm"
18
- v-model="queryForm"
19
- :form-type="'search'"
20
- :fieldList="formFields"
21
- :labelWidth="labelWidth"
22
- :default-rows="2"
23
- :grid-columns="4"
24
- :customComponents="customComponents"
25
- :customValidates="customValidates"
26
- @doSearch="doSearch" @reset="onReset"/>
27
- <div v-if="rowName" class="tags">
28
- <Tag v-for="item in selectTags" :key="item.key" :name="item.key" closable @on-close="tagClose">
29
- {{ item.value }}
30
- </Tag>
31
- </div>
32
- </div>
33
- <div slot="buttons">
34
- <Button
35
- v-if="spreadButton.length > 0"
36
- v-for="(item,index) in spreadButton"
37
- type="primary"
38
- :ghost="true"
39
- :icon="item.icon"
40
- v-permission="item.permission"
41
- :key="index"
42
- @click="doClick(item)"
43
- style="margin-right: 5px">
44
- {{ item.name }}
45
- </Button>
46
- <Dropdown v-if="dropDownButton.length > 0">
47
- <Button type="primary" :ghost="true" icon="md-more">
48
- 更多操作
49
- <Icon type="ios-arrow-down"></Icon>
50
- </Button>
51
- <DropdownMenu slot="list">
52
- <DropdownItem
53
- v-for="(item,index) in dropDownButton"
54
- v-permission="item.permission"
55
- :key="index"
56
- >
57
- <Icon :type="item.icon" style="margin-right: 5px"></Icon>
58
- <span @click="doClick(item)">{{ item.name }}</span>
59
- </DropdownItem>
60
- </DropdownMenu>
61
- </Dropdown>
62
- </div>
63
- </LamboPagingTable>
64
- </template>
65
- <script>
66
- import ajax from '@lambo-design/shared/utils/ajax'
67
- import { operateBtn, operateHref } from '@lambo-design/shared/utils/assist'
68
- import LamboPagingTable from '@lambo-design/paging-table'
69
- // import LamboSchemaForm from '@lambo-design/schema-form'
70
- // const LamboSchemaForm = ()=> import('@lambo-design/schema-form')
71
- export default {
72
- name:"schema-paging-table",
73
- components: {
74
- LamboSchemaForm: () => import('@lambo-design/schema-form'),
75
- LamboPagingTable,
76
- },
77
- data() {
78
- return {
79
- queryForm: {},
80
- tableSearchParams: {},
81
- selection: [],
82
- selectStore: [],
83
- selectTags: [],
84
- selectRows: [],
85
- selectedKeys: [],
86
- }
87
- },
88
- props:{
89
- dataUrl:{
90
- type: String,
91
- required: true,
92
- default: ''
93
- },
94
- columnList:{
95
- type: Array,
96
- required: true,
97
- default(){
98
- return []
99
- }
100
- },
101
- showTableOption: {
102
- type: Boolean,
103
- default: true
104
- },
105
- rowKey: {
106
- type: String,
107
- require: false,
108
- default: ""
109
- },
110
- rowName: {
111
- type: String,
112
- require: false,
113
- default: ""
114
- },
115
- labelWidth: {
116
- type: Number,
117
- require: false,
118
- default: 100
119
- },
120
- form:{
121
- type: Object,
122
- required: true,
123
- default(){
124
- return {}
125
- }
126
- },
127
- formFields:{
128
- type: Array,
129
- required: true,
130
- default(){
131
- return []
132
- }
133
- },
134
- buttonList:{
135
- type: Array,
136
- required: true,
137
- default(){
138
- return []
139
- }
140
- },
141
- customComponents: Object,
142
- customValidates: Object
143
- },
144
- computed: {
145
- tableColumn: function () {
146
- let columns = []
147
- let self = this
148
- self.columnList.forEach((item,index)=>{
149
- let obj = item
150
- if(obj.hasOwnProperty("enums") && obj.hasOwnProperty("translate") && obj.translate === 'enums'){
151
- obj.render = function (h, param) {
152
- let state = param.row[obj.key]
153
- return h('span', obj.enums[state])
154
- }
155
- }else if(obj.hasOwnProperty("type") && obj.type === "operate"){
156
- obj.render = (h, param) => {
157
- return h('div',
158
- obj.button.map((item,index)=>{
159
- let doms = operateHref(self, h, param.row, item.name || param.row[obj.key], (vm, currentRow) => {
160
- if(item.clickEvent?.type==="route"){
161
- // self.$Message.info(item.clickEvent.name)
162
- let query = item.clickEvent?.route?.keys?.reduce((acc,sourceItem)=>{
163
- return Object.assign(acc,{[sourceItem]:currentRow[sourceItem]})
164
- },{})
165
- self.$router.push({
166
- path: item.clickEvent?.route?.path,
167
- query
168
- })
169
- }else if(item.clickEvent?.type==="request"){
170
- // self.$Message.info(item.clickEvent.name)
171
- let data = item.clickEvent?.request?.keys?.reduce((acc,sourceItem)=>{
172
- return Object.assign(acc,{[sourceItem]:currentRow[sourceItem]})
173
- },{})
174
- let request = {
175
- url:item.clickEvent.request.url,
176
- method:item.clickEvent.request.method,
177
- param:data,
178
- }
179
- let response = item.clickEvent.response
180
- if(item.clickEvent.tips){
181
- let tips = item.clickEvent.tips
182
- this.$Modal.confirm({
183
- title: tips.title,
184
- content: '<p>${tips.content}</p>',
185
- onOk: () => {
186
- self.fetch(request,response)
187
- }
188
- });
189
- }else{
190
- self.fetch(request,response)
191
- }
192
- }else if(item.clickEvent?.type==="method"){
193
- let args = item.clickEvent?.method?.keys?.reduce((total,current)=>{
194
- return Object.assign(total,{[current]:currentRow[current]})
195
- },{})
196
- self.$emit(item.clickEvent?.method?.name,args)
197
- }else if(item.clickEvent?.type==="modal"){
198
- self.$Message.info(item.clickEvent.name)
199
- }
200
- },item.permission)
201
-
202
- if(item && typeof item.condition == "function"){
203
- if(item.condition(param)){
204
- return doms
205
- }
206
- }else{
207
- return doms
208
- }
209
- })
210
- )
211
- }
212
- }
213
- columns.push(item)
214
- })
215
- return columns
216
- },
217
- spreadButton: function () {
218
- return this.buttonList.slice(0,3)
219
- },
220
- dropDownButton: function () {
221
- return this.buttonList.slice(3 - this.buttonList.length)
222
- },
223
- multiSelect: function() {
224
- return this.columnList.some((item)=>{
225
- return item.type === "selection"
226
- })
227
- }
228
- },
229
- watch:{
230
- form: function(val) {
231
- this.queryForm = val
232
- }
233
- },
234
- created() {
235
- },
236
- methods: {
237
- doClick(item){
238
- let self = this;
239
- if(item.clickEvent?.type==="route"){
240
- // self.$Message.info(item.clickEvent.name)
241
- let query = item.clickEvent?.route?.keys?.reduce((acc,sourceItem)=>{
242
- return Object.assign(acc,{[sourceItem]:param.row[sourceItem]})
243
- },{})
244
- this.$router.push({
245
- path: item.clickEvent?.route?.path,
246
- query
247
- })
248
- }else if(item.clickEvent?.type==="method"){
249
- // self.$Message.info(item.clickEvent.name)
250
- let selection = self.getSelection()
251
- if(self.multiSelect){
252
- let param = selection.map((select,index)=>{
253
- if(item.clickEvent?.method?.keys){
254
- let obj = item.clickEvent?.method?.keys?.reduce((acc,sourceItem)=>{
255
- return Object.assign(acc,{[sourceItem]:select[sourceItem]})
256
- },{})
257
- return obj
258
- }else{
259
- return item
260
- }
261
- })
262
- self.$emit(item.clickEvent?.method?.name,param)
263
- }else{
264
- let selection = self.getSelection()
265
- if(item.clickEvent?.method?.keys){
266
- let param = item.clickEvent?.method?.keys?.reduce((acc,sourceItem)=>{
267
- return Object.assign(acc,{[sourceItem]:selection[0][sourceItem]})
268
- },{})
269
- self.$emit(item.clickEvent?.method?.name,param)
270
- }else{
271
- let param = selection[0]
272
- self.$emit(item.clickEvent?.method?.name,param)
273
- }
274
- }
275
- }
276
- },
277
- doSearch: function () {
278
- this.tableSearchParams = Object.assign({}, this.queryForm)
279
- },
280
- onReset() {
281
- Object.assign(this.queryForm, this.$options.propsData.form)
282
- this.doSearch()
283
- },
284
- fetch: function (request,response) {
285
- let self = this
286
- let options = {
287
- url: request.url,
288
- method: request.method,
289
- [request.method==='GET'?"params":"data"]:request.param
290
- }
291
- ajax.request(options).then(function (resp) {
292
- // todo 判断返回码
293
- self.$Message.success(response.successMsg)
294
- self.doSearch()
295
- }).catch(function (err) {
296
- console.error(err)
297
- self.$Message.error(response.errorMsg)
298
- })
299
- },
300
- /**
301
- *
302
- * @param row
303
- * @param index
304
- */
305
- onRowClick: function (row, index) {
306
- this.selectOnChange(row, index);
307
- },
308
- //单选
309
- selectOnChange: function (row, index) {
310
- this.selection = Array(index).fill(false);
311
- this.selection.splice(index, 1, true);
312
- this.selectStore = [row];
313
- },
314
- //多选
315
- onSelectionChange: function (rows) {
316
- if (!this.rowKey) {
317
- this.selectStore = rows;
318
- } else {
319
- this.selectStore = rows;
320
- if (rows && rows.length > 0) {
321
- for (let i = 0; i < rows.length; i++) {
322
- let row = rows[i];
323
- if (!this.selectTags.some(item => item.key === row[this.rowKey])) {
324
- let tagItem = {"key": row[this.rowKey], "value": row[this.rowName]}
325
- this.selectTags.push(tagItem);
326
- }
327
- }
328
- }
329
- }
330
- },
331
- onSelect: function (selection, row) {
332
- if (this.rowKey) {
333
- this.selectRows[row[this.rowKey]] = row;
334
- }
335
- },
336
- onSelectCancel: function (selection, row) {
337
- if (this.rowKey) {
338
- delete this.selectRows[row[this.rowKey]];
339
- const selectIndex = (this.selectTags || []).findIndex((selectItem) => selectItem.key === row[this.rowKey])
340
- if (selectIndex > -1) {
341
- this.selectTags.splice(selectIndex, 1);
342
- }
343
- }
344
- },
345
- onSelectAll: function (selection) {
346
- if (this.rowKey) {
347
- for (let item of selection) {
348
- this.selectRows[item[this.rowKey]] = item;
349
- }
350
- }
351
- },
352
- onSelectAllCancel: function () {
353
- if (this.rowKey) {
354
- let currentTableData = this.$refs.schemaPagingTable.$data.tableData;
355
- for (let i = 0; i < currentTableData.length; i++) {
356
- let tempData = currentTableData[i][this.rowKey];
357
- delete this.selectRows[tempData];
358
- const selectIndex = (this.selectTags || []).findIndex((selectItem) => selectItem.key === tempData)
359
- if (selectIndex > -1) {
360
- this.selectTags.splice(selectIndex, 1);
361
- }
362
- }
363
- }
364
- },
365
- transformResponse: function (resp) {
366
- if (this.rowKey) {
367
- let self = this;
368
- if (resp.code === 1 || resp.code === "000") {
369
- let tableData = resp.data.rows;
370
- for (let i = 0; i < tableData.length; i++) {
371
- if (self.selectRows[tableData[i][self.rowKey]]) {
372
- tableData[i]._checked = true;
373
- }
374
- }
375
- resp.data.rows = tableData;
376
- }
377
- }
378
- return resp;
379
- },
380
- clearSelectData: function () {
381
- this.selection = [];//清空已选项
382
- this.selectStore = [];//清空已选数据
383
- this.selectRows = [];//清空已选数据
384
- this.selectTags = [];//清空所选标签
385
- this.selectedKeys = [];//清空默认选择
386
- },
387
- tagClose: function (event, name) {
388
- const selectIndex = (this.selectTags || []).findIndex((selectItem) => selectItem.key === name)
389
- const dataIndex = (this.$refs.schemaPagingTable.$data.tableData || []).findIndex((selectItem) => selectItem[this.rowKey] === name)
390
- if (selectIndex > -1) {
391
- this.selectTags.splice(selectIndex, 1);
392
- this.selectStore.splice(selectIndex, 1);
393
- }
394
- delete this.selectRows[name];
395
- if (dataIndex > -1) {
396
- this.$refs.schemaPagingTable.$refs.tableRef.toggleSelect(dataIndex);
397
- }
398
- },
399
- getSelection(){
400
- if (this.selectRows.length > 0 && this.rowKey) {
401
- let selectStore = [];
402
- for (let item in this.selectRows) {
403
- selectStore.push(this.selectRows[item]);
404
- }
405
- this.selectStore = selectStore;
406
- }
407
- return this.selectStore
408
- }
409
- }
410
- }
411
- </script>
412
- <style lang="less" scoped>
413
- .lambo-grid-table {
414
- /deep/.ivu-form {
415
- .ivu-form-item {
416
- display: block;
417
- }
418
- }
419
- }
420
- .tags {
421
- margin: 10px auto;
422
- }
423
- </style>
424
-
1
+ <template>
2
+ <LamboPagingTable
3
+ ref="schemaPagingTable"
4
+ :dataUrl="dataUrl"
5
+ :columns="tableColumn"
6
+ :searchParams="tableSearchParams"
7
+ :transformResponse="transformResponse"
8
+ :showTableOption="showTableOption"
9
+ @on-row-click="onRowClick"
10
+ @on-selection-change="onSelectionChange"
11
+ @on-select="onSelect"
12
+ @on-select-cancel="onSelectCancel"
13
+ @on-select-all="onSelectAll"
14
+ @on-select-all-cancel="onSelectAllCancel">
15
+ <div slot="search">
16
+ <LamboSchemaForm
17
+ ref="lamboSchemaForm"
18
+ v-model="queryForm"
19
+ :form-type="'search'"
20
+ :fieldList="formFields"
21
+ :labelWidth="labelWidth"
22
+ :default-rows="2"
23
+ :grid-columns="gridColumns"
24
+ :customComponents="customComponents"
25
+ :customValidates="customValidates"
26
+ @doSearch="doSearch" @reset="onReset"/>
27
+ <div v-if="rowName" class="tags">
28
+ <Tag v-for="item in selectTags" :key="item.key" :name="item.key" closable @on-close="tagClose">
29
+ {{ item.value }}
30
+ </Tag>
31
+ </div>
32
+ </div>
33
+ <div slot="buttons">
34
+ <Button
35
+ v-if="spreadButton.length > 0"
36
+ v-for="(item,index) in spreadButton"
37
+ type="primary"
38
+ :ghost="true"
39
+ :icon="item.icon"
40
+ v-permission="item.permission"
41
+ :key="index"
42
+ @click="doClick(item)"
43
+ style="margin-right: 5px">
44
+ {{ item.name }}
45
+ </Button>
46
+ <Dropdown v-if="dropDownButton.length > 0">
47
+ <Button type="primary" :ghost="true" icon="md-more">
48
+ 更多操作
49
+ <Icon type="ios-arrow-down"></Icon>
50
+ </Button>
51
+ <DropdownMenu slot="list">
52
+ <DropdownItem
53
+ v-for="(item,index) in dropDownButton"
54
+ v-permission="item.permission"
55
+ :key="index"
56
+ >
57
+ <Icon :type="item.icon" style="margin-right: 5px"></Icon>
58
+ <span @click="doClick(item)">{{ item.name }}</span>
59
+ </DropdownItem>
60
+ </DropdownMenu>
61
+ </Dropdown>
62
+ </div>
63
+ </LamboPagingTable>
64
+ </template>
65
+ <script>
66
+ import ajax from '@lambo-design/shared/utils/ajax'
67
+ import { operateBtn, operateHref } from '@lambo-design/shared/utils/assist'
68
+ import LamboPagingTable from '@lambo-design/paging-table'
69
+ // import LamboSchemaForm from '@lambo-design/schema-form'
70
+ // const LamboSchemaForm = ()=> import('@lambo-design/schema-form')
71
+ export default {
72
+ name:"schema-paging-table",
73
+ components: {
74
+ LamboSchemaForm: () => import('@lambo-design/schema-form'),
75
+ LamboPagingTable,
76
+ },
77
+ data() {
78
+ return {
79
+ queryForm: {},
80
+ tableSearchParams: {},
81
+ selection: [],
82
+ selectStore: [],
83
+ selectTags: [],
84
+ selectRows: [],
85
+ selectedKeys: [],
86
+ }
87
+ },
88
+ props:{
89
+ dataUrl:{
90
+ type: String,
91
+ required: true,
92
+ default: ''
93
+ },
94
+ columnList:{
95
+ type: Array,
96
+ required: true,
97
+ default(){
98
+ return []
99
+ }
100
+ },
101
+ showTableOption: {
102
+ type: Boolean,
103
+ default: true
104
+ },
105
+ rowKey: {
106
+ type: String,
107
+ require: false,
108
+ default: ""
109
+ },
110
+ rowName: {
111
+ type: String,
112
+ require: false,
113
+ default: ""
114
+ },
115
+ labelWidth: {
116
+ type: Number,
117
+ require: false,
118
+ default: 100
119
+ },
120
+ form:{
121
+ type: Object,
122
+ required: true,
123
+ default(){
124
+ return {}
125
+ }
126
+ },
127
+ formFields:{
128
+ type: Array,
129
+ required: true,
130
+ default(){
131
+ return []
132
+ }
133
+ },
134
+ buttonList:{
135
+ type: Array,
136
+ required: true,
137
+ default(){
138
+ return []
139
+ }
140
+ },
141
+ gridColumns:{
142
+ type: Number,
143
+ default: 4
144
+ },
145
+ customComponents: Object,
146
+ customValidates: Object
147
+ },
148
+ computed: {
149
+ tableColumn: function () {
150
+ let columns = []
151
+ let self = this
152
+ self.columnList.forEach((item,index)=>{
153
+ let obj = item
154
+ if(obj.hasOwnProperty("enums") && obj.hasOwnProperty("translate") && obj.translate === 'enums'){
155
+ obj.render = function (h, param) {
156
+ let state = param.row[obj.key]
157
+ return h('span', obj.enums[state])
158
+ }
159
+ }else if(obj.hasOwnProperty("type") && obj.type === "operate"){
160
+ obj.render = (h, param) => {
161
+ return h('div',
162
+ obj.button.map((item,index)=>{
163
+ let doms = operateHref(self, h, param.row, item.name || param.row[obj.key], (vm, currentRow) => {
164
+ if(item.clickEvent?.type==="route"){
165
+ // self.$Message.info(item.clickEvent.name)
166
+ let query = item.clickEvent?.route?.keys?.reduce((acc,sourceItem)=>{
167
+ return Object.assign(acc,{[sourceItem]:currentRow[sourceItem]})
168
+ },{})
169
+ self.$router.push({
170
+ path: item.clickEvent?.route?.path,
171
+ query
172
+ })
173
+ }else if(item.clickEvent?.type==="request"){
174
+ // self.$Message.info(item.clickEvent.name)
175
+ let data = item.clickEvent?.request?.keys?.reduce((acc,sourceItem)=>{
176
+ return Object.assign(acc,{[sourceItem]:currentRow[sourceItem]})
177
+ },{})
178
+ let request = {
179
+ url:item.clickEvent.request.url,
180
+ method:item.clickEvent.request.method,
181
+ param:data,
182
+ }
183
+ let response = item.clickEvent.response
184
+ if(item.clickEvent.tips){
185
+ let tips = item.clickEvent.tips
186
+ this.$Modal.confirm({
187
+ title: tips.title,
188
+ content: '<p>'+ tips.content + '</p>',
189
+ onOk: () => {
190
+ self.fetch(request,response)
191
+ }
192
+ });
193
+ }else{
194
+ self.fetch(request,response)
195
+ }
196
+ }else if(item.clickEvent?.type==="method"){
197
+ let args = item.clickEvent?.method?.keys?.reduce((total,current)=>{
198
+ return Object.assign(total,{[current]:currentRow[current]})
199
+ },{})
200
+ self.$emit(item.clickEvent?.method?.name,args)
201
+ }else if(item.clickEvent?.type==="modal"){
202
+ self.$Message.info(item.clickEvent.name)
203
+ }
204
+ },item.permission)
205
+
206
+ if(item && typeof item.condition == "function"){
207
+ if(item.condition(param)){
208
+ return doms
209
+ }
210
+ }else{
211
+ return doms
212
+ }
213
+ })
214
+ )
215
+ }
216
+ }
217
+ columns.push(item)
218
+ })
219
+ return columns
220
+ },
221
+ spreadButton: function () {
222
+ return this.buttonList.slice(0,3)
223
+ },
224
+ dropDownButton: function () {
225
+ return this.buttonList.slice(3 - this.buttonList.length)
226
+ },
227
+ multiSelect: function() {
228
+ return this.columnList.some((item)=>{
229
+ return item.type === "selection"
230
+ })
231
+ }
232
+ },
233
+ watch:{
234
+ form: function(val) {
235
+ this.queryForm = val
236
+ }
237
+ },
238
+ created() {
239
+ },
240
+ methods: {
241
+ doClick(item){
242
+ let self = this;
243
+ if(item.clickEvent?.type==="route"){
244
+ // self.$Message.info(item.clickEvent.name)
245
+ let query = item.clickEvent?.route?.keys?.reduce((acc,sourceItem)=>{
246
+ return Object.assign(acc,{[sourceItem]:param.row[sourceItem]})
247
+ },{})
248
+ this.$router.push({
249
+ path: item.clickEvent?.route?.path,
250
+ query
251
+ })
252
+ }else if(item.clickEvent?.type==="method"){
253
+ // self.$Message.info(item.clickEvent.name)
254
+ let selection = self.getSelection()
255
+ if(self.multiSelect){
256
+ let param = selection.map((select,index)=>{
257
+ if(item.clickEvent?.method?.keys){
258
+ let obj = item.clickEvent?.method?.keys?.reduce((acc,sourceItem)=>{
259
+ return Object.assign(acc,{[sourceItem]:select[sourceItem]})
260
+ },{})
261
+ return obj
262
+ }else{
263
+ return item
264
+ }
265
+ })
266
+ self.$emit(item.clickEvent?.method?.name,param)
267
+ }else{
268
+ let selection = self.getSelection()
269
+ if(item.clickEvent?.method?.keys){
270
+ let param = item.clickEvent?.method?.keys?.reduce((acc,sourceItem)=>{
271
+ return Object.assign(acc,{[sourceItem]:selection[0][sourceItem]})
272
+ },{})
273
+ self.$emit(item.clickEvent?.method?.name,param)
274
+ }else{
275
+ let param = selection[0]
276
+ self.$emit(item.clickEvent?.method?.name,param)
277
+ }
278
+ }
279
+ }
280
+ },
281
+ doSearch: function () {
282
+ this.tableSearchParams = Object.assign({}, this.queryForm)
283
+ },
284
+ onReset() {
285
+ Object.assign(this.queryForm, this.$options.propsData.form)
286
+ this.doSearch()
287
+ },
288
+ fetch: function (request,response) {
289
+ let self = this
290
+ let options = {
291
+ url: request.url,
292
+ method: request.method,
293
+ [request.method==='GET'?"params":"data"]:request.param
294
+ }
295
+ ajax.request(options).then(function (resp) {
296
+ // todo 判断返回码
297
+ self.$Message.success(response.successMsg)
298
+ self.doSearch()
299
+ }).catch(function (err) {
300
+ console.error(err)
301
+ self.$Message.error(response.errorMsg)
302
+ })
303
+ },
304
+ /**
305
+ *
306
+ * @param row
307
+ * @param index
308
+ */
309
+ onRowClick: function (row, index) {
310
+ this.selectOnChange(row, index);
311
+ },
312
+ //单选
313
+ selectOnChange: function (row, index) {
314
+ this.selection = Array(index).fill(false);
315
+ this.selection.splice(index, 1, true);
316
+ this.selectStore = [row];
317
+ },
318
+ //多选
319
+ onSelectionChange: function (rows) {
320
+ if (!this.rowKey) {
321
+ this.selectStore = rows;
322
+ } else {
323
+ this.selectStore = rows;
324
+ if (rows && rows.length > 0) {
325
+ for (let i = 0; i < rows.length; i++) {
326
+ let row = rows[i];
327
+ if (!this.selectTags.some(item => item.key === row[this.rowKey])) {
328
+ let tagItem = {"key": row[this.rowKey], "value": row[this.rowName]}
329
+ this.selectTags.push(tagItem);
330
+ }
331
+ }
332
+ }
333
+ }
334
+ },
335
+ onSelect: function (selection, row) {
336
+ if (this.rowKey) {
337
+ this.selectRows[row[this.rowKey]] = row;
338
+ }
339
+ },
340
+ onSelectCancel: function (selection, row) {
341
+ if (this.rowKey) {
342
+ delete this.selectRows[row[this.rowKey]];
343
+ const selectIndex = (this.selectTags || []).findIndex((selectItem) => selectItem.key === row[this.rowKey])
344
+ if (selectIndex > -1) {
345
+ this.selectTags.splice(selectIndex, 1);
346
+ }
347
+ }
348
+ },
349
+ onSelectAll: function (selection) {
350
+ if (this.rowKey) {
351
+ for (let item of selection) {
352
+ this.selectRows[item[this.rowKey]] = item;
353
+ }
354
+ }
355
+ },
356
+ onSelectAllCancel: function () {
357
+ if (this.rowKey) {
358
+ let currentTableData = this.$refs.schemaPagingTable.$data.tableData;
359
+ for (let i = 0; i < currentTableData.length; i++) {
360
+ let tempData = currentTableData[i][this.rowKey];
361
+ delete this.selectRows[tempData];
362
+ const selectIndex = (this.selectTags || []).findIndex((selectItem) => selectItem.key === tempData)
363
+ if (selectIndex > -1) {
364
+ this.selectTags.splice(selectIndex, 1);
365
+ }
366
+ }
367
+ }
368
+ },
369
+ transformResponse: function (resp) {
370
+ if (this.rowKey) {
371
+ let self = this;
372
+ if (resp.code === 1 || resp.code === "000") {
373
+ let tableData = resp.data.rows;
374
+ for (let i = 0; i < tableData.length; i++) {
375
+ if (self.selectRows[tableData[i][self.rowKey]]) {
376
+ tableData[i]._checked = true;
377
+ }
378
+ }
379
+ resp.data.rows = tableData;
380
+ }
381
+ }
382
+ return resp;
383
+ },
384
+ clearSelectData: function () {
385
+ this.selection = [];//清空已选项
386
+ this.selectStore = [];//清空已选数据
387
+ this.selectRows = [];//清空已选数据
388
+ this.selectTags = [];//清空所选标签
389
+ this.selectedKeys = [];//清空默认选择
390
+ },
391
+ tagClose: function (event, name) {
392
+ const selectIndex = (this.selectTags || []).findIndex((selectItem) => selectItem.key === name)
393
+ const dataIndex = (this.$refs.schemaPagingTable.$data.tableData || []).findIndex((selectItem) => selectItem[this.rowKey] === name)
394
+ if (selectIndex > -1) {
395
+ this.selectTags.splice(selectIndex, 1);
396
+ this.selectStore.splice(selectIndex, 1);
397
+ }
398
+ delete this.selectRows[name];
399
+ if (dataIndex > -1) {
400
+ this.$refs.schemaPagingTable.$refs.tableRef.toggleSelect(dataIndex);
401
+ }
402
+ },
403
+ getSelection(){
404
+ if (this.selectRows.length > 0 && this.rowKey) {
405
+ let selectStore = [];
406
+ for (let item in this.selectRows) {
407
+ selectStore.push(this.selectRows[item]);
408
+ }
409
+ this.selectStore = selectStore;
410
+ }
411
+ return this.selectStore
412
+ }
413
+ }
414
+ }
415
+ </script>
416
+ <style lang="less" scoped>
417
+ .lambo-grid-table {
418
+ /deep/.ivu-form {
419
+ .ivu-form-item {
420
+ display: block;
421
+ }
422
+ }
423
+ }
424
+ .tags {
425
+ margin: 10px auto;
426
+ }
427
+ </style>
428
+