bi-element-ui 1.1.97 → 1.1.98
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.
- package/.browserslistrc +3 -3
- package/.eslintignore +1 -1
- package/.prettierrc +8 -8
- package/.prettierrc.json +8 -8
- package/.vscode/extensions.json +3 -3
- package/.vscode/settings.json +2 -2
- package/README.md +148 -148
- package/cypress.json +3 -3
- package/lib/bi-element-ui.common.js +114885 -114885
- package/lib/bi-element-ui.css +2 -2
- package/lib/bi-element-ui.umd.js +114885 -114885
- package/lib/bi-element-ui.umd.min.js +47 -47
- package/package-lock2.json +17309 -17309
- package/package.json +1 -1
- package/pnpm-lock.yaml +13329 -0
- package/src/App.vue +2 -0
- package/src/components/BiDatePicker/datePickerOption.js +163 -163
- package/src/components/BiDatePicker/index.vue +59 -59
- package/src/components/BiTable/columu.vue +81 -81
- package/src/components/BiTable/forced.js +63 -63
- package/src/components/BiTable/index.js +6 -6
- package/src/components/BiTable/render.vue +13 -13
- package/src/components/BiTable/table.vue +179 -179
- package/src/components/BiTableColumn/Group.vue +275 -275
- package/src/components/BiTableColumn/api.js +16 -16
- package/src/components/BiTooltipIcon/index.vue +63 -63
- package/src/components/EditBtn.vue +15 -15
- package/src/components/FreeButton/index.vue +50 -50
- package/src/components/Pagination/index.vue +91 -91
- package/src/components/Pagination/scrollTo.js +65 -65
- package/src/main.js +3 -1
- package/src/router/index.js +49 -44
- package/src/store/index.js +11 -11
- package/src/utils/auth.js +66 -0
- package/src/utils/index.js +296 -0
- package/src/utils/request.js +81 -0
- package/src/views/Date.vue +96 -96
- package/src/views/Home.vue +11 -8
- package/src/views/Layout.vue +34 -34
- package/src/views/Log.vue +18 -0
- package/src/views/Scene.vue +111 -111
- package/src/views/showData.vue +2 -2
- package/tests/e2e/.eslintrc.js +10 -10
- package/tests/e2e/plugins/index.js +25 -25
- package/tests/e2e/specs/test.js +8 -8
- package/tests/e2e/support/commands.js +25 -25
- package/tests/e2e/support/index.js +20 -20
- package/tests/unit/example.spec.js +13 -13
- package//345/211/215/347/253/257ui/346/240/267/345/274/217/350/247/204/350/214/203.md +101 -101
package/src/App.vue
CHANGED
@@ -9,12 +9,14 @@
|
|
9
9
|
<router-link to="/table">Table</router-link>
|
10
10
|
<router-link to="/showData">Data</router-link>
|
11
11
|
<router-link to="/layout">布局</router-link>
|
12
|
+
<router-link to="/log">日志</router-link>
|
12
13
|
</div>
|
13
14
|
</el-aside>
|
14
15
|
<el-main>
|
15
16
|
<router-view />
|
16
17
|
</el-main>
|
17
18
|
</el-container>
|
19
|
+
<BiLogDialog />
|
18
20
|
</div>
|
19
21
|
</template>
|
20
22
|
|
@@ -1,163 +1,163 @@
|
|
1
|
-
import moment from 'moment'
|
2
|
-
const pickerOptions = {
|
3
|
-
daterange: {
|
4
|
-
shortcuts: [
|
5
|
-
{
|
6
|
-
text: '今天',
|
7
|
-
onClick(picker) {
|
8
|
-
const end = moment().format('YYYY-MM-DD 23:59:59')
|
9
|
-
const start = moment().format('YYYY-MM-DD 00:00:00')
|
10
|
-
// const end = new Date()
|
11
|
-
// const start = new Date()
|
12
|
-
picker.$emit('pick', [start, end])
|
13
|
-
}
|
14
|
-
},
|
15
|
-
{
|
16
|
-
text: '昨天',
|
17
|
-
onClick(picker) {
|
18
|
-
const end = moment().subtract(1, 'days').format('YYYY-MM-DD 23:59:59')
|
19
|
-
const start = moment().subtract(1, 'days').format('YYYY-MM-DD 00:00:00')
|
20
|
-
picker.$emit('pick', [start, end])
|
21
|
-
}
|
22
|
-
},
|
23
|
-
{
|
24
|
-
text: '近一周',
|
25
|
-
onClick(picker) {
|
26
|
-
const end = moment().format('YYYY-MM-DD 23:59:59')
|
27
|
-
const start = moment().subtract(7, 'days').format('YYYY-MM-DD 00:00:00')
|
28
|
-
picker.$emit('pick', [start, end])
|
29
|
-
}
|
30
|
-
},
|
31
|
-
{
|
32
|
-
text: '近一月',
|
33
|
-
onClick(picker) {
|
34
|
-
const end = moment().format('YYYY-MM-DD 23:59:59')
|
35
|
-
const start = moment().subtract(30, 'days').format('YYYY-MM-DD 00:00:00')
|
36
|
-
picker.$emit('pick', [start, end])
|
37
|
-
}
|
38
|
-
},
|
39
|
-
{
|
40
|
-
text: '上个月',
|
41
|
-
onClick(picker) {
|
42
|
-
const start = moment().startOf('month').subtract(1, 'month').format('YYYY-MM-DD 00:00:00')
|
43
|
-
const end = moment().endOf('month').subtract(1, 'month').format('YYYY-MM-DD 23:59:59')
|
44
|
-
picker.$emit('pick', [start, end])
|
45
|
-
}
|
46
|
-
},
|
47
|
-
{
|
48
|
-
text: '本月',
|
49
|
-
onClick(picker) {
|
50
|
-
const start = moment().startOf('month').format('YYYY-MM-DD 00:00:00')
|
51
|
-
const end = moment().endOf('month').format('YYYY-MM-DD 23:59:59')
|
52
|
-
picker.$emit('pick', [start, end])
|
53
|
-
}
|
54
|
-
}
|
55
|
-
]
|
56
|
-
},
|
57
|
-
monthrange: {
|
58
|
-
shortcuts: [
|
59
|
-
{
|
60
|
-
text: '本月',
|
61
|
-
onClick(picker) {
|
62
|
-
const start = moment().startOf('month').format('YYYY-MM-DD')
|
63
|
-
const end = moment().endOf('month').format('YYYY-MM-DD')
|
64
|
-
picker.$emit('pick', [start, end])
|
65
|
-
}
|
66
|
-
},
|
67
|
-
{
|
68
|
-
text: '最近三个月',
|
69
|
-
onClick(picker) {
|
70
|
-
const start = moment().subtract(2, 'month').startOf('month').format('YYYY-MM-DD')
|
71
|
-
const end = moment().endOf('month').format('YYYY-MM-DD')
|
72
|
-
picker.$emit('pick', [start, end])
|
73
|
-
}
|
74
|
-
},
|
75
|
-
{
|
76
|
-
text: '最近六个月',
|
77
|
-
onClick(picker) {
|
78
|
-
const start = moment().subtract(5, 'month').startOf('month').format('YYYY-MM-DD')
|
79
|
-
const end = moment().endOf('month').format('YYYY-MM-DD')
|
80
|
-
picker.$emit('pick', [start, end])
|
81
|
-
}
|
82
|
-
},
|
83
|
-
{
|
84
|
-
text: '最近一年',
|
85
|
-
onClick(picker) {
|
86
|
-
const start = moment().subtract(11, 'month').startOf('month').format('YYYY-MM-DD')
|
87
|
-
const end = moment().endOf('month').format('YYYY-MM-DD')
|
88
|
-
picker.$emit('pick', [start, end])
|
89
|
-
}
|
90
|
-
},
|
91
|
-
{
|
92
|
-
text: '今年',
|
93
|
-
onClick(picker) {
|
94
|
-
const start = moment().startOf('year').startOf('month').format('YYYY-MM-DD')
|
95
|
-
const end = moment().endOf('month').format('YYYY-MM-DD')
|
96
|
-
picker.$emit('pick', [start, end])
|
97
|
-
}
|
98
|
-
}
|
99
|
-
]
|
100
|
-
},
|
101
|
-
datetimerange: {
|
102
|
-
shortcuts: [
|
103
|
-
{
|
104
|
-
text: '今天',
|
105
|
-
onClick(picker) {
|
106
|
-
const end = moment().format('YYYY-MM-DD 23:59:59')
|
107
|
-
const start = moment().format('YYYY-MM-DD 00:00:00')
|
108
|
-
// const end = new Date()
|
109
|
-
// const start = new Date()
|
110
|
-
picker.$emit('pick', [start, end])
|
111
|
-
}
|
112
|
-
},
|
113
|
-
{
|
114
|
-
text: '昨天',
|
115
|
-
onClick(picker) {
|
116
|
-
const end = moment().subtract(1, 'days').format('YYYY-MM-DD 23:59:59')
|
117
|
-
const start = moment().subtract(1, 'days').format('YYYY-MM-DD 00:00:00')
|
118
|
-
picker.$emit('pick', [start, end])
|
119
|
-
}
|
120
|
-
},
|
121
|
-
{
|
122
|
-
text: '近一周',
|
123
|
-
onClick(picker) {
|
124
|
-
const end = moment().format('YYYY-MM-DD 23:59:59')
|
125
|
-
const start = moment().subtract(7, 'days').format('YYYY-MM-DD 00:00:00')
|
126
|
-
picker.$emit('pick', [start, end])
|
127
|
-
}
|
128
|
-
},
|
129
|
-
{
|
130
|
-
text: '近一月',
|
131
|
-
onClick(picker) {
|
132
|
-
const end = moment().format('YYYY-MM-DD 23:59:59')
|
133
|
-
const start = moment().subtract(30, 'days').format('YYYY-MM-DD 00:00:00')
|
134
|
-
picker.$emit('pick', [start, end])
|
135
|
-
}
|
136
|
-
},
|
137
|
-
{
|
138
|
-
text: '上个月',
|
139
|
-
onClick(picker) {
|
140
|
-
if (picker.value !== null) {
|
141
|
-
const end = moment(picker.value[1]).subtract(1, 'months').endOf('month').format('YYYY-MM-DD 23:59:59')
|
142
|
-
const start = moment(picker.value[0]).subtract(1, 'months').startOf('month').format('YYYY-MM-DD 00:00:00')
|
143
|
-
picker.$emit('pick', [start, end])
|
144
|
-
} else {
|
145
|
-
const end = moment().subtract(1, 'months').endOf('month').format('YYYY-MM-DD 23:59:59')
|
146
|
-
const start = moment().subtract(1, 'months').startOf('month').format('YYYY-MM-DD 00:00:00')
|
147
|
-
picker.$emit('pick', [start, end])
|
148
|
-
}
|
149
|
-
}
|
150
|
-
},
|
151
|
-
{
|
152
|
-
text: '本月',
|
153
|
-
onClick(picker) {
|
154
|
-
const end = moment().endOf('month').format('YYYY-MM-DD 23:59:59')
|
155
|
-
const start = moment().startOf('month').format('YYYY-MM-DD 00:00:00')
|
156
|
-
picker.$emit('pick', [start, end])
|
157
|
-
}
|
158
|
-
}
|
159
|
-
]
|
160
|
-
}
|
161
|
-
}
|
162
|
-
|
163
|
-
export default pickerOptions
|
1
|
+
import moment from 'moment'
|
2
|
+
const pickerOptions = {
|
3
|
+
daterange: {
|
4
|
+
shortcuts: [
|
5
|
+
{
|
6
|
+
text: '今天',
|
7
|
+
onClick(picker) {
|
8
|
+
const end = moment().format('YYYY-MM-DD 23:59:59')
|
9
|
+
const start = moment().format('YYYY-MM-DD 00:00:00')
|
10
|
+
// const end = new Date()
|
11
|
+
// const start = new Date()
|
12
|
+
picker.$emit('pick', [start, end])
|
13
|
+
}
|
14
|
+
},
|
15
|
+
{
|
16
|
+
text: '昨天',
|
17
|
+
onClick(picker) {
|
18
|
+
const end = moment().subtract(1, 'days').format('YYYY-MM-DD 23:59:59')
|
19
|
+
const start = moment().subtract(1, 'days').format('YYYY-MM-DD 00:00:00')
|
20
|
+
picker.$emit('pick', [start, end])
|
21
|
+
}
|
22
|
+
},
|
23
|
+
{
|
24
|
+
text: '近一周',
|
25
|
+
onClick(picker) {
|
26
|
+
const end = moment().format('YYYY-MM-DD 23:59:59')
|
27
|
+
const start = moment().subtract(7, 'days').format('YYYY-MM-DD 00:00:00')
|
28
|
+
picker.$emit('pick', [start, end])
|
29
|
+
}
|
30
|
+
},
|
31
|
+
{
|
32
|
+
text: '近一月',
|
33
|
+
onClick(picker) {
|
34
|
+
const end = moment().format('YYYY-MM-DD 23:59:59')
|
35
|
+
const start = moment().subtract(30, 'days').format('YYYY-MM-DD 00:00:00')
|
36
|
+
picker.$emit('pick', [start, end])
|
37
|
+
}
|
38
|
+
},
|
39
|
+
{
|
40
|
+
text: '上个月',
|
41
|
+
onClick(picker) {
|
42
|
+
const start = moment().startOf('month').subtract(1, 'month').format('YYYY-MM-DD 00:00:00')
|
43
|
+
const end = moment().endOf('month').subtract(1, 'month').format('YYYY-MM-DD 23:59:59')
|
44
|
+
picker.$emit('pick', [start, end])
|
45
|
+
}
|
46
|
+
},
|
47
|
+
{
|
48
|
+
text: '本月',
|
49
|
+
onClick(picker) {
|
50
|
+
const start = moment().startOf('month').format('YYYY-MM-DD 00:00:00')
|
51
|
+
const end = moment().endOf('month').format('YYYY-MM-DD 23:59:59')
|
52
|
+
picker.$emit('pick', [start, end])
|
53
|
+
}
|
54
|
+
}
|
55
|
+
]
|
56
|
+
},
|
57
|
+
monthrange: {
|
58
|
+
shortcuts: [
|
59
|
+
{
|
60
|
+
text: '本月',
|
61
|
+
onClick(picker) {
|
62
|
+
const start = moment().startOf('month').format('YYYY-MM-DD')
|
63
|
+
const end = moment().endOf('month').format('YYYY-MM-DD')
|
64
|
+
picker.$emit('pick', [start, end])
|
65
|
+
}
|
66
|
+
},
|
67
|
+
{
|
68
|
+
text: '最近三个月',
|
69
|
+
onClick(picker) {
|
70
|
+
const start = moment().subtract(2, 'month').startOf('month').format('YYYY-MM-DD')
|
71
|
+
const end = moment().endOf('month').format('YYYY-MM-DD')
|
72
|
+
picker.$emit('pick', [start, end])
|
73
|
+
}
|
74
|
+
},
|
75
|
+
{
|
76
|
+
text: '最近六个月',
|
77
|
+
onClick(picker) {
|
78
|
+
const start = moment().subtract(5, 'month').startOf('month').format('YYYY-MM-DD')
|
79
|
+
const end = moment().endOf('month').format('YYYY-MM-DD')
|
80
|
+
picker.$emit('pick', [start, end])
|
81
|
+
}
|
82
|
+
},
|
83
|
+
{
|
84
|
+
text: '最近一年',
|
85
|
+
onClick(picker) {
|
86
|
+
const start = moment().subtract(11, 'month').startOf('month').format('YYYY-MM-DD')
|
87
|
+
const end = moment().endOf('month').format('YYYY-MM-DD')
|
88
|
+
picker.$emit('pick', [start, end])
|
89
|
+
}
|
90
|
+
},
|
91
|
+
{
|
92
|
+
text: '今年',
|
93
|
+
onClick(picker) {
|
94
|
+
const start = moment().startOf('year').startOf('month').format('YYYY-MM-DD')
|
95
|
+
const end = moment().endOf('month').format('YYYY-MM-DD')
|
96
|
+
picker.$emit('pick', [start, end])
|
97
|
+
}
|
98
|
+
}
|
99
|
+
]
|
100
|
+
},
|
101
|
+
datetimerange: {
|
102
|
+
shortcuts: [
|
103
|
+
{
|
104
|
+
text: '今天',
|
105
|
+
onClick(picker) {
|
106
|
+
const end = moment().format('YYYY-MM-DD 23:59:59')
|
107
|
+
const start = moment().format('YYYY-MM-DD 00:00:00')
|
108
|
+
// const end = new Date()
|
109
|
+
// const start = new Date()
|
110
|
+
picker.$emit('pick', [start, end])
|
111
|
+
}
|
112
|
+
},
|
113
|
+
{
|
114
|
+
text: '昨天',
|
115
|
+
onClick(picker) {
|
116
|
+
const end = moment().subtract(1, 'days').format('YYYY-MM-DD 23:59:59')
|
117
|
+
const start = moment().subtract(1, 'days').format('YYYY-MM-DD 00:00:00')
|
118
|
+
picker.$emit('pick', [start, end])
|
119
|
+
}
|
120
|
+
},
|
121
|
+
{
|
122
|
+
text: '近一周',
|
123
|
+
onClick(picker) {
|
124
|
+
const end = moment().format('YYYY-MM-DD 23:59:59')
|
125
|
+
const start = moment().subtract(7, 'days').format('YYYY-MM-DD 00:00:00')
|
126
|
+
picker.$emit('pick', [start, end])
|
127
|
+
}
|
128
|
+
},
|
129
|
+
{
|
130
|
+
text: '近一月',
|
131
|
+
onClick(picker) {
|
132
|
+
const end = moment().format('YYYY-MM-DD 23:59:59')
|
133
|
+
const start = moment().subtract(30, 'days').format('YYYY-MM-DD 00:00:00')
|
134
|
+
picker.$emit('pick', [start, end])
|
135
|
+
}
|
136
|
+
},
|
137
|
+
{
|
138
|
+
text: '上个月',
|
139
|
+
onClick(picker) {
|
140
|
+
if (picker.value !== null) {
|
141
|
+
const end = moment(picker.value[1]).subtract(1, 'months').endOf('month').format('YYYY-MM-DD 23:59:59')
|
142
|
+
const start = moment(picker.value[0]).subtract(1, 'months').startOf('month').format('YYYY-MM-DD 00:00:00')
|
143
|
+
picker.$emit('pick', [start, end])
|
144
|
+
} else {
|
145
|
+
const end = moment().subtract(1, 'months').endOf('month').format('YYYY-MM-DD 23:59:59')
|
146
|
+
const start = moment().subtract(1, 'months').startOf('month').format('YYYY-MM-DD 00:00:00')
|
147
|
+
picker.$emit('pick', [start, end])
|
148
|
+
}
|
149
|
+
}
|
150
|
+
},
|
151
|
+
{
|
152
|
+
text: '本月',
|
153
|
+
onClick(picker) {
|
154
|
+
const end = moment().endOf('month').format('YYYY-MM-DD 23:59:59')
|
155
|
+
const start = moment().startOf('month').format('YYYY-MM-DD 00:00:00')
|
156
|
+
picker.$emit('pick', [start, end])
|
157
|
+
}
|
158
|
+
}
|
159
|
+
]
|
160
|
+
}
|
161
|
+
}
|
162
|
+
|
163
|
+
export default pickerOptions
|
@@ -1,59 +1,59 @@
|
|
1
|
-
<template>
|
2
|
-
<el-date-picker v-if="true" v-model="date" :picker-options="componentPickerOptions" :format="format" :value-format="valueFormat" v-bind="$attrs" v-on="$listeners"> </el-date-picker>
|
3
|
-
<el-date-picker v-else v-model="date" type="date" placeholder="选择日期"> </el-date-picker>
|
4
|
-
</template>
|
5
|
-
|
6
|
-
<script>
|
7
|
-
import datePickerOption from './datePickerOption'
|
8
|
-
export default {
|
9
|
-
name: 'BiDatepicker',
|
10
|
-
props: {
|
11
|
-
pickerOption: {
|
12
|
-
type: Object,
|
13
|
-
default: () => {
|
14
|
-
return {}
|
15
|
-
}
|
16
|
-
},
|
17
|
-
format: {
|
18
|
-
type: String,
|
19
|
-
default: 'yyyy-MM-dd'
|
20
|
-
},
|
21
|
-
valueFormat: {
|
22
|
-
type: String,
|
23
|
-
default: 'yyyy-MM-dd'
|
24
|
-
},
|
25
|
-
value: {
|
26
|
-
type: String || Array,
|
27
|
-
default: ''
|
28
|
-
}
|
29
|
-
},
|
30
|
-
computed: {
|
31
|
-
date: {
|
32
|
-
get() {
|
33
|
-
return this.value
|
34
|
-
},
|
35
|
-
set(val) {
|
36
|
-
this.$emit('input', val)
|
37
|
-
}
|
38
|
-
},
|
39
|
-
componentPickerOptions() {
|
40
|
-
const type = this.$attrs.type
|
41
|
-
if (type === 'daterange') {
|
42
|
-
return Object.assign(datePickerOption.daterange, this.pickerOption)
|
43
|
-
} else if (type === 'monthrange') {
|
44
|
-
return Object.assign(datePickerOption.monthrange, this.pickerOption)
|
45
|
-
} else if (type === 'datetimerange') {
|
46
|
-
return Object.assign(datePickerOption.datetimerange, this.pickerOption)
|
47
|
-
} else {
|
48
|
-
return this.pickerOption
|
49
|
-
}
|
50
|
-
}
|
51
|
-
},
|
52
|
-
methods: {}
|
53
|
-
}
|
54
|
-
</script>
|
55
|
-
<style>
|
56
|
-
.free-button {
|
57
|
-
margin: 10px 0;
|
58
|
-
}
|
59
|
-
</style>
|
1
|
+
<template>
|
2
|
+
<el-date-picker v-if="true" v-model="date" :picker-options="componentPickerOptions" :format="format" :value-format="valueFormat" v-bind="$attrs" v-on="$listeners"> </el-date-picker>
|
3
|
+
<el-date-picker v-else v-model="date" type="date" placeholder="选择日期"> </el-date-picker>
|
4
|
+
</template>
|
5
|
+
|
6
|
+
<script>
|
7
|
+
import datePickerOption from './datePickerOption'
|
8
|
+
export default {
|
9
|
+
name: 'BiDatepicker',
|
10
|
+
props: {
|
11
|
+
pickerOption: {
|
12
|
+
type: Object,
|
13
|
+
default: () => {
|
14
|
+
return {}
|
15
|
+
}
|
16
|
+
},
|
17
|
+
format: {
|
18
|
+
type: String,
|
19
|
+
default: 'yyyy-MM-dd'
|
20
|
+
},
|
21
|
+
valueFormat: {
|
22
|
+
type: String,
|
23
|
+
default: 'yyyy-MM-dd'
|
24
|
+
},
|
25
|
+
value: {
|
26
|
+
type: String || Array,
|
27
|
+
default: ''
|
28
|
+
}
|
29
|
+
},
|
30
|
+
computed: {
|
31
|
+
date: {
|
32
|
+
get() {
|
33
|
+
return this.value
|
34
|
+
},
|
35
|
+
set(val) {
|
36
|
+
this.$emit('input', val)
|
37
|
+
}
|
38
|
+
},
|
39
|
+
componentPickerOptions() {
|
40
|
+
const type = this.$attrs.type
|
41
|
+
if (type === 'daterange') {
|
42
|
+
return Object.assign(datePickerOption.daterange, this.pickerOption)
|
43
|
+
} else if (type === 'monthrange') {
|
44
|
+
return Object.assign(datePickerOption.monthrange, this.pickerOption)
|
45
|
+
} else if (type === 'datetimerange') {
|
46
|
+
return Object.assign(datePickerOption.datetimerange, this.pickerOption)
|
47
|
+
} else {
|
48
|
+
return this.pickerOption
|
49
|
+
}
|
50
|
+
}
|
51
|
+
},
|
52
|
+
methods: {}
|
53
|
+
}
|
54
|
+
</script>
|
55
|
+
<style>
|
56
|
+
.free-button {
|
57
|
+
margin: 10px 0;
|
58
|
+
}
|
59
|
+
</style>
|
@@ -1,81 +1,81 @@
|
|
1
|
-
<template>
|
2
|
-
<el-table-column v-bind="column" v-on="$listeners">
|
3
|
-
<template slot="header" slot-scope="scope">
|
4
|
-
<bi-render v-if="column.renderHeader" :scope="scope" :render="column.renderHeader" />
|
5
|
-
<span v-else>{{ scope.column.label }}</span>
|
6
|
-
</template>
|
7
|
-
|
8
|
-
<template slot-scope="scope">
|
9
|
-
<component :is="column.component" v-if="column.component" v-bind="getCptBind(scope, column)" v-on="column.listeners" />
|
10
|
-
|
11
|
-
<!-- 嵌套表格 -->
|
12
|
-
<template v-else-if="column.children">
|
13
|
-
<free-column v-for="col in column.children" :key="col.prop" :column="col" />
|
14
|
-
</template>
|
15
|
-
|
16
|
-
<bi-render v-else :scope="scope" :render="column.render" />
|
17
|
-
</template>
|
18
|
-
</el-table-column>
|
19
|
-
</template>
|
20
|
-
|
21
|
-
<script>
|
22
|
-
import BiRender from './render'
|
23
|
-
import CellForced from './forced'
|
24
|
-
|
25
|
-
export default {
|
26
|
-
name: 'BiColumn',
|
27
|
-
components: {
|
28
|
-
BiRender
|
29
|
-
},
|
30
|
-
props: {
|
31
|
-
column: {
|
32
|
-
type: Object,
|
33
|
-
default: () => {}
|
34
|
-
}
|
35
|
-
},
|
36
|
-
watch: {
|
37
|
-
column: {
|
38
|
-
handler: 'renderColumn',
|
39
|
-
immediate: true
|
40
|
-
}
|
41
|
-
},
|
42
|
-
methods: {
|
43
|
-
renderColumn() {
|
44
|
-
const { column } = this
|
45
|
-
// 多选:selection / 索引:index / 展开的按钮:expand
|
46
|
-
if (column.type) {
|
47
|
-
column.renderHeader = CellForced[column.type].renderHeader
|
48
|
-
column.render = column.render || CellForced[column.type].renderCell
|
49
|
-
}
|
50
|
-
// 格式化内容
|
51
|
-
if (column.formatter) {
|
52
|
-
column.render = (h, scope) => {
|
53
|
-
return <span>{scope.column.formatter(scope.row, scope.column, scope.row[scope.column.property], scope.$index)}</span>
|
54
|
-
}
|
55
|
-
}
|
56
|
-
// 渲染成text
|
57
|
-
if (!column.render) {
|
58
|
-
column.render = (h, scope) => {
|
59
|
-
return <span>{scope.row[scope.column.property]}</span>
|
60
|
-
}
|
61
|
-
}
|
62
|
-
|
63
|
-
return column
|
64
|
-
},
|
65
|
-
|
66
|
-
getColBind(col) {
|
67
|
-
const bind = Object.assign({}, this.$attrs, col)
|
68
|
-
delete bind.component
|
69
|
-
delete bind.listeners
|
70
|
-
delete bind.propsHandler
|
71
|
-
return bind
|
72
|
-
},
|
73
|
-
|
74
|
-
getCptBind({ row, column }, col) {
|
75
|
-
const props = { row, col, column }
|
76
|
-
const handler = col.propsHandler
|
77
|
-
return (handler && handler(props)) || props
|
78
|
-
}
|
79
|
-
}
|
80
|
-
}
|
81
|
-
</script>
|
1
|
+
<template>
|
2
|
+
<el-table-column v-bind="column" v-on="$listeners">
|
3
|
+
<template slot="header" slot-scope="scope">
|
4
|
+
<bi-render v-if="column.renderHeader" :scope="scope" :render="column.renderHeader" />
|
5
|
+
<span v-else>{{ scope.column.label }}</span>
|
6
|
+
</template>
|
7
|
+
|
8
|
+
<template slot-scope="scope">
|
9
|
+
<component :is="column.component" v-if="column.component" v-bind="getCptBind(scope, column)" v-on="column.listeners" />
|
10
|
+
|
11
|
+
<!-- 嵌套表格 -->
|
12
|
+
<template v-else-if="column.children">
|
13
|
+
<free-column v-for="col in column.children" :key="col.prop" :column="col" />
|
14
|
+
</template>
|
15
|
+
|
16
|
+
<bi-render v-else :scope="scope" :render="column.render" />
|
17
|
+
</template>
|
18
|
+
</el-table-column>
|
19
|
+
</template>
|
20
|
+
|
21
|
+
<script>
|
22
|
+
import BiRender from './render'
|
23
|
+
import CellForced from './forced'
|
24
|
+
|
25
|
+
export default {
|
26
|
+
name: 'BiColumn',
|
27
|
+
components: {
|
28
|
+
BiRender
|
29
|
+
},
|
30
|
+
props: {
|
31
|
+
column: {
|
32
|
+
type: Object,
|
33
|
+
default: () => {}
|
34
|
+
}
|
35
|
+
},
|
36
|
+
watch: {
|
37
|
+
column: {
|
38
|
+
handler: 'renderColumn',
|
39
|
+
immediate: true
|
40
|
+
}
|
41
|
+
},
|
42
|
+
methods: {
|
43
|
+
renderColumn() {
|
44
|
+
const { column } = this
|
45
|
+
// 多选:selection / 索引:index / 展开的按钮:expand
|
46
|
+
if (column.type) {
|
47
|
+
column.renderHeader = CellForced[column.type].renderHeader
|
48
|
+
column.render = column.render || CellForced[column.type].renderCell
|
49
|
+
}
|
50
|
+
// 格式化内容
|
51
|
+
if (column.formatter) {
|
52
|
+
column.render = (h, scope) => {
|
53
|
+
return <span>{scope.column.formatter(scope.row, scope.column, scope.row[scope.column.property], scope.$index)}</span>
|
54
|
+
}
|
55
|
+
}
|
56
|
+
// 渲染成text
|
57
|
+
if (!column.render) {
|
58
|
+
column.render = (h, scope) => {
|
59
|
+
return <span>{scope.row[scope.column.property]}</span>
|
60
|
+
}
|
61
|
+
}
|
62
|
+
|
63
|
+
return column
|
64
|
+
},
|
65
|
+
|
66
|
+
getColBind(col) {
|
67
|
+
const bind = Object.assign({}, this.$attrs, col)
|
68
|
+
delete bind.component
|
69
|
+
delete bind.listeners
|
70
|
+
delete bind.propsHandler
|
71
|
+
return bind
|
72
|
+
},
|
73
|
+
|
74
|
+
getCptBind({ row, column }, col) {
|
75
|
+
const props = { row, col, column }
|
76
|
+
const handler = col.propsHandler
|
77
|
+
return (handler && handler(props)) || props
|
78
|
+
}
|
79
|
+
}
|
80
|
+
}
|
81
|
+
</script>
|