newtv-ui-revision 0.0.1
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/README.md +67 -0
- package/lib/demo.html +10 -0
- package/lib/newtv-ui.common.js +77384 -0
- package/lib/newtv-ui.common.js.map +1 -0
- package/lib/newtv-ui.css +1 -0
- package/lib/newtv-ui.umd.js +77394 -0
- package/lib/newtv-ui.umd.js.map +1 -0
- package/lib/newtv-ui.umd.min.js +25 -0
- package/lib/newtv-ui.umd.min.js.map +1 -0
- package/npm-shrinkwrap.json +24519 -0
- package/package.json +50 -0
- package/packages/assets/.DS_Store +0 -0
- package/packages/assets/css/.DS_Store +0 -0
- package/packages/assets/css/SourceHanSansCN-Normal.otf +0 -0
- package/packages/assets/css/UIRevision.css +784 -0
- package/packages/assets/css/UIRevision.less +829 -0
- package/packages/assets/css/header.css +0 -0
- package/packages/assets/css/header.less +514 -0
- package/packages/assets/css/iconfont.css +0 -0
- package/packages/assets/css/iconfont.less +520 -0
- package/packages/assets/css/newtv.css +1439 -0
- package/packages/assets/css/newtv.css.map +1 -0
- package/packages/assets/css/newtv.less +292 -0
- package/packages/dashboard/index.js +11 -0
- package/packages/dashboard/src/newtvDashboard.vue +125 -0
- package/packages/form/index.js +11 -0
- package/packages/form/src/newtvForm.vue +475 -0
- package/packages/header/index.js +11 -0
- package/packages/header/src/newtvHeader.vue +285 -0
- package/packages/index.js +49 -0
- package/packages/leftMenu/index.js +11 -0
- package/packages/leftMenu/src/newtvLeftMenu.vue +171 -0
- package/packages/list/index.js +10 -0
- package/packages/list/src/newtvList.vue +77 -0
- package/packages/notFount/index.js +11 -0
- package/packages/notFount/src/newtvNotFount.vue +28 -0
- package/packages/secondNav/index.js +11 -0
- package/packages/secondNav/src/newtvSecondNav.vue +157 -0
- package/packages/table/index.js +11 -0
- package/packages/table/src/newtvTable.vue +421 -0
- package/packages/videoBar/index.js +7 -0
- package/packages/videoBar/src/videoBar.vue +75 -0
- package/types/component.d.ts +7 -0
- package/types/dashboard.d.ts +10 -0
- package/types/form.d.ts +12 -0
- package/types/header.d.ts +10 -0
- package/types/index.d.ts +4 -0
- package/types/leftMenu.d.ts +14 -0
- package/types/list.d.ts +8 -0
- package/types/newtv-ui.d.ts +23 -0
- package/types/secondNav.d.ts +13 -0
- package/types/table.d.ts +14 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<el-container class="newtv-second-nav">
|
|
3
|
+
<el-aside class="newtv-second-nav-aside" :style="{width: asideWidth}">
|
|
4
|
+
<el-scrollbar style="height:100%">
|
|
5
|
+
<h3 v-if="title" class="newtv-second-nav-title">{{title}}</h3>
|
|
6
|
+
<el-input
|
|
7
|
+
v-if="filter"
|
|
8
|
+
class="second-nav-search"
|
|
9
|
+
placeholder="输入关键字进行过滤"
|
|
10
|
+
v-model="filterText"
|
|
11
|
+
size="mini"
|
|
12
|
+
/>
|
|
13
|
+
<el-tree
|
|
14
|
+
ref="secondNav"
|
|
15
|
+
:data="treeData"
|
|
16
|
+
:props="props"
|
|
17
|
+
default-expand-all
|
|
18
|
+
highlight-current
|
|
19
|
+
:expand-on-click-node="false"
|
|
20
|
+
:indent="10"
|
|
21
|
+
:node-key="nodeKey"
|
|
22
|
+
:current-node-key="currentNodeKey"
|
|
23
|
+
:filter-node-method="filterNode"
|
|
24
|
+
@node-click="nodeClick"
|
|
25
|
+
>
|
|
26
|
+
<span class="second-nav-node" slot-scope="{ node, data }">
|
|
27
|
+
<el-tooltip class="title" effect="dark" :content="data[props.label || 'label']" placement="top-start" :open-delay="500" :disabled="!tooltip">
|
|
28
|
+
<span>{{data[props.label || 'label']}}</span>
|
|
29
|
+
</el-tooltip>
|
|
30
|
+
</span>
|
|
31
|
+
</el-tree>
|
|
32
|
+
</el-scrollbar>
|
|
33
|
+
</el-aside>
|
|
34
|
+
<el-main class="second-nav-content" ref="secondNavContent">
|
|
35
|
+
<slot />
|
|
36
|
+
</el-main>
|
|
37
|
+
</el-container>
|
|
38
|
+
</template>
|
|
39
|
+
|
|
40
|
+
<script>
|
|
41
|
+
export default {
|
|
42
|
+
name: "newtvSecondNav",
|
|
43
|
+
props: {
|
|
44
|
+
title: {
|
|
45
|
+
type: String,
|
|
46
|
+
default: ''
|
|
47
|
+
},
|
|
48
|
+
data: {
|
|
49
|
+
type: Array,
|
|
50
|
+
default: () => []
|
|
51
|
+
},
|
|
52
|
+
props: {
|
|
53
|
+
type: Object,
|
|
54
|
+
default: () => {}
|
|
55
|
+
},
|
|
56
|
+
nodeKey: {
|
|
57
|
+
type: String,
|
|
58
|
+
default: ''
|
|
59
|
+
},
|
|
60
|
+
currentNodeKey: {
|
|
61
|
+
type: [String, Number],
|
|
62
|
+
default: ''
|
|
63
|
+
},
|
|
64
|
+
tooltip: {
|
|
65
|
+
type: Boolean,
|
|
66
|
+
default: false
|
|
67
|
+
},
|
|
68
|
+
filter: {
|
|
69
|
+
type: Boolean,
|
|
70
|
+
default: false
|
|
71
|
+
},
|
|
72
|
+
filterNodeMethod: {
|
|
73
|
+
type: Function,
|
|
74
|
+
default: null
|
|
75
|
+
},
|
|
76
|
+
asideWidth: {
|
|
77
|
+
type: String,
|
|
78
|
+
default: '96px'
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
data() {
|
|
82
|
+
return {
|
|
83
|
+
treeData: [],
|
|
84
|
+
filterText: ''
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
created() {
|
|
88
|
+
this.treeData = JSON.parse(JSON.stringify(this.data));
|
|
89
|
+
this.filterText = '';
|
|
90
|
+
},
|
|
91
|
+
activated(){
|
|
92
|
+
this.treeData = JSON.parse(JSON.stringify(this.data));
|
|
93
|
+
this.filterText = '';
|
|
94
|
+
},
|
|
95
|
+
watch: {
|
|
96
|
+
data() {
|
|
97
|
+
this.treeData = JSON.parse(JSON.stringify(this.data));
|
|
98
|
+
},
|
|
99
|
+
filterText(val) {
|
|
100
|
+
if (this.filterNodeMethod) {
|
|
101
|
+
this.filterNodeMethod && this.filterNodeMethod(val, (params) => {
|
|
102
|
+
if (params) {
|
|
103
|
+
this.treeData = params
|
|
104
|
+
return
|
|
105
|
+
}
|
|
106
|
+
this.treeData = []
|
|
107
|
+
})
|
|
108
|
+
} else {
|
|
109
|
+
this.$refs.secondNav.filter(val)
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
methods: {
|
|
114
|
+
filterNode(value, data) {
|
|
115
|
+
if (!value) return true;
|
|
116
|
+
return data[this.props.label || 'label'].indexOf(value) !== -1;
|
|
117
|
+
},
|
|
118
|
+
nodeClick(data, node, nodeSelf) {
|
|
119
|
+
this.$emit('click', data, node, nodeSelf)
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
</script>
|
|
124
|
+
|
|
125
|
+
<style lang="less">
|
|
126
|
+
.newtv-second-nav {
|
|
127
|
+
height: 100%;
|
|
128
|
+
.newtv-second-nav-aside {
|
|
129
|
+
background: #fff;
|
|
130
|
+
}
|
|
131
|
+
.newtv-second-nav-title {
|
|
132
|
+
height: 30px;
|
|
133
|
+
line-height: 30px;
|
|
134
|
+
background: #ebeef5;
|
|
135
|
+
text-align: center;
|
|
136
|
+
color: #9a9daf;
|
|
137
|
+
}
|
|
138
|
+
.second-nav-search {
|
|
139
|
+
margin-bottom: 10px;
|
|
140
|
+
}
|
|
141
|
+
.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{
|
|
142
|
+
background: transparent;
|
|
143
|
+
color: #56a2f7;
|
|
144
|
+
}
|
|
145
|
+
.el-tree-node__content>.el-tree-node__expand-icon{
|
|
146
|
+
padding: 0px;
|
|
147
|
+
}
|
|
148
|
+
.second-nav-node {
|
|
149
|
+
text-overflow: ellipsis;
|
|
150
|
+
white-space: nowrap;
|
|
151
|
+
overflow: hidden;
|
|
152
|
+
}
|
|
153
|
+
.second-nav-content {
|
|
154
|
+
padding: 0 0 0 10px;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
</style>
|
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="newtv-table-body" :class="{ 'newtv-table-body--revision': UIRevision, 'dialog-table-container': dialogTableContainer}">
|
|
3
|
+
<el-table
|
|
4
|
+
ref="table"
|
|
5
|
+
:data="tableData"
|
|
6
|
+
:height="height"
|
|
7
|
+
:stripe="stripe"
|
|
8
|
+
:border="border"
|
|
9
|
+
:row-class-name="rowClassName"
|
|
10
|
+
:default-sort="defaultSort"
|
|
11
|
+
:show-header="showHeader"
|
|
12
|
+
@row-click="rowClick"
|
|
13
|
+
@row-dblclick="rowDblclick"
|
|
14
|
+
@select="select"
|
|
15
|
+
@select-all="selectAll"
|
|
16
|
+
@selection-change="selectionChange"
|
|
17
|
+
:span-method="spanMethod"
|
|
18
|
+
@sort-change="sortChange"
|
|
19
|
+
@expand-change="expandChange"
|
|
20
|
+
:row-key="rowKey"
|
|
21
|
+
:expand-row-keys="expandRowKeys"
|
|
22
|
+
:empty-text="empty"
|
|
23
|
+
>
|
|
24
|
+
<template v-for="(col,index) in tableCols">
|
|
25
|
+
<el-table-column
|
|
26
|
+
v-if="col.type === 'slot' || col.type == 'expand'"
|
|
27
|
+
:key="index"
|
|
28
|
+
:align="col.align || 'center'"
|
|
29
|
+
:header-align="col['header-align'] || 'center'"
|
|
30
|
+
:show-overflow-tooltip="showOverflowTooltip"
|
|
31
|
+
:label="col.label"
|
|
32
|
+
:width="col.width"
|
|
33
|
+
:fixed="col.fixed"
|
|
34
|
+
:formatter="col.formatter"
|
|
35
|
+
:type="col.type == 'slot'? '' : col.type "
|
|
36
|
+
:sortable="col.sortable || false"
|
|
37
|
+
:sort-method="col.sortMethod"
|
|
38
|
+
:sort-by="col.sortBy"
|
|
39
|
+
:sort-orders="col.sortOrders || ['ascending', 'descending', null]"
|
|
40
|
+
:reserve-selection="reserveSelection"
|
|
41
|
+
>
|
|
42
|
+
<template slot-scope="scope">
|
|
43
|
+
<slot :name="col.prop" :row="scope.row" :$index="scope.$index"></slot>
|
|
44
|
+
</template>
|
|
45
|
+
</el-table-column>
|
|
46
|
+
<el-table-column
|
|
47
|
+
v-else-if="col.type === 'spbtn'"
|
|
48
|
+
:key="index"
|
|
49
|
+
:align="col.align || 'center'"
|
|
50
|
+
:header-align="col['header-align'] || 'center'"
|
|
51
|
+
:show-overflow-tooltip="showOverflowTooltip"
|
|
52
|
+
:label="col.label"
|
|
53
|
+
:width="col.width"
|
|
54
|
+
:fixed="col.fixed"
|
|
55
|
+
:formatter="col.formatter"
|
|
56
|
+
>
|
|
57
|
+
<template slot-scope="scope">
|
|
58
|
+
<template v-if="col.groups.filter(group => typeof group.isShow === 'boolean' ? group.isShow : group.isShow(scope.row)).length > 3">
|
|
59
|
+
<template v-for="(item, index) in col.groups.filter(group => typeof group.isShow === 'boolean' ? group.isShow : group.isShow(scope.row)).splice(0,2)">
|
|
60
|
+
<el-tooltip v-if="!col.hideTitle && index < 3" :key="`btn${index}`" :disabled="!col.openTooltip" class="item" :effect="col.effect || 'dark'" :content="typeof item.title === 'function' ? item.title(scope.row) : item.title" placement="top-start">
|
|
61
|
+
<el-button
|
|
62
|
+
:type="item.type"
|
|
63
|
+
:size="col.size || 'small'"
|
|
64
|
+
:icon="item.icon"
|
|
65
|
+
:style="item.style"
|
|
66
|
+
@click="() => item.clickHandler && item.clickHandler(scope.row)"
|
|
67
|
+
:circle="col.shape === 'circle'"
|
|
68
|
+
:plain="col.shape === 'plain'"
|
|
69
|
+
:round="col.shape === 'round'"
|
|
70
|
+
:disabled="typeof item.disabled === 'function' ? item.disabled(scope.row) : item.disabled"
|
|
71
|
+
>
|
|
72
|
+
{{typeof item.title === 'function' ? item.title(scope.row) : item.title}}
|
|
73
|
+
</el-button>
|
|
74
|
+
</el-tooltip>
|
|
75
|
+
<el-tooltip v-else-if="col.hideTitle && index < 3" :key="`btn${index}`" :disabled="!col.openTooltip" class="item" :effect="col.effect || 'dark'" :content="typeof item.title === 'function' ? item.title(scope.row) : item.title" placement="top-start">
|
|
76
|
+
<el-button
|
|
77
|
+
:type="item.type"
|
|
78
|
+
:size="col.size || 'small'"
|
|
79
|
+
:icon="item.icon"
|
|
80
|
+
:style="item.style"
|
|
81
|
+
@click="() => item.clickHandler && item.clickHandler(scope.row)"
|
|
82
|
+
:circle="col.shape === 'circle'"
|
|
83
|
+
:plain="col.shape === 'plain'"
|
|
84
|
+
:round="col.shape === 'round'"
|
|
85
|
+
:disabled="typeof item.disabled === 'function' ? item.disabled(scope.row) : item.disabled"
|
|
86
|
+
/>
|
|
87
|
+
</el-tooltip>
|
|
88
|
+
</template>
|
|
89
|
+
<el-dropdown style="margin-left: 10px" :trigger="col.dropdownTrigger || 'hover'" @command="handleCommand">
|
|
90
|
+
<el-tooltip :disabled="col.dropdownTrigger == null || col.dropdownTrigger === 'hover'" class="item" :effect="col.effect || 'dark'" content="更多" placement="top-start">
|
|
91
|
+
<el-button
|
|
92
|
+
type="primary"
|
|
93
|
+
:size="col.size || 'small'"
|
|
94
|
+
:circle="col.shape === 'circle'"
|
|
95
|
+
:plain="col.shape === 'plain'"
|
|
96
|
+
:round="col.shape === 'round'"
|
|
97
|
+
> ... </el-button>
|
|
98
|
+
</el-tooltip>
|
|
99
|
+
<el-dropdown-menu slot="dropdown">
|
|
100
|
+
<el-dropdown-item v-for="(list, index) in col.groups.filter(group => typeof group.isShow === 'boolean' ? group.isShow : group.isShow(scope.row)).slice(2)" :key="`drop${index}`" :command="{fn: list.clickHandler, row: scope.row}">{{typeof list.title === 'function' ? list.title(scope.row) : list.title}}</el-dropdown-item>
|
|
101
|
+
</el-dropdown-menu>
|
|
102
|
+
</el-dropdown>
|
|
103
|
+
</template>
|
|
104
|
+
<template v-else>
|
|
105
|
+
<template v-for="(item, index) in col.groups.filter(group => typeof group.isShow === 'boolean' ? group.isShow : group.isShow(scope.row))">
|
|
106
|
+
<el-tooltip v-if="!col.hideTitle" :key="`btn${index}`" :disabled="!col.openTooltip" class="item" :effect="col.effect || 'dark'" :content="typeof item.title === 'function' ? item.title(scope.row) : item.title" placement="top-start">
|
|
107
|
+
<el-button
|
|
108
|
+
:type="item.type"
|
|
109
|
+
:size="col.size || 'small'"
|
|
110
|
+
:icon="item.icon"
|
|
111
|
+
:style="item.style"
|
|
112
|
+
@click="() => item.clickHandler && item.clickHandler(scope.row)"
|
|
113
|
+
:circle="col.shape === 'circle'"
|
|
114
|
+
:plain="col.shape === 'plain'"
|
|
115
|
+
:round="col.shape === 'round'"
|
|
116
|
+
:disabled="typeof item.disabled === 'function' ? item.disabled(scope.row) : item.disabled"
|
|
117
|
+
>
|
|
118
|
+
{{typeof item.title === 'function' ? item.title(scope.row) : item.title}}
|
|
119
|
+
</el-button>
|
|
120
|
+
</el-tooltip>
|
|
121
|
+
<el-tooltip v-else :key="`btn${index}`" :disabled="!col.openTooltip" class="item" :effect="col.effect || 'dark'" :content="typeof item.title === 'function' ? item.title(scope.row) : item.title" placement="top-start">
|
|
122
|
+
<el-button
|
|
123
|
+
:type="item.type"
|
|
124
|
+
:size="col.size || 'small'"
|
|
125
|
+
:icon="item.icon"
|
|
126
|
+
:style="item.style"
|
|
127
|
+
@click="() => item.clickHandler && item.clickHandler(scope.row)"
|
|
128
|
+
:circle="col.shape === 'circle'"
|
|
129
|
+
:plain="col.shape === 'plain'"
|
|
130
|
+
:round="col.shape === 'round'"
|
|
131
|
+
:disabled="typeof item.disabled === 'function' ? item.disabled(scope.row) : item.disabled"
|
|
132
|
+
/>
|
|
133
|
+
</el-tooltip>
|
|
134
|
+
</template>
|
|
135
|
+
</template>
|
|
136
|
+
</template>
|
|
137
|
+
</el-table-column>
|
|
138
|
+
<el-table-column
|
|
139
|
+
v-else-if="col.type === 'selection'"
|
|
140
|
+
:key="index"
|
|
141
|
+
:prop="col.prop"
|
|
142
|
+
:label="col.label"
|
|
143
|
+
:width="col.width"
|
|
144
|
+
:align="col.align || 'center'"
|
|
145
|
+
:header-align="col['header-align'] || 'center'"
|
|
146
|
+
:type="col.type || ''"
|
|
147
|
+
:show-overflow-tooltip="showOverflowTooltip"
|
|
148
|
+
:formatter="col.formatter"
|
|
149
|
+
:fixed="col.fixed"
|
|
150
|
+
:sortable="col.sortable || false"
|
|
151
|
+
:sort-method="col.sortMethod"
|
|
152
|
+
:sort-by="col.sortBy"
|
|
153
|
+
:sort-orders="col.sortOrders || ['ascending', 'descending', null]"
|
|
154
|
+
:reserve-selection="reserveSelection"
|
|
155
|
+
:selectable="col.selectable"
|
|
156
|
+
>
|
|
157
|
+
</el-table-column>
|
|
158
|
+
<el-table-column
|
|
159
|
+
v-else-if="col.type === 'multilevel' && col.children"
|
|
160
|
+
:key="index"
|
|
161
|
+
:prop="col.prop"
|
|
162
|
+
:label="col.label"
|
|
163
|
+
:width="col.width"
|
|
164
|
+
:align="col.align || 'center'"
|
|
165
|
+
:header-align="col['header-align'] || 'center'"
|
|
166
|
+
:type="col.type || ''"
|
|
167
|
+
:show-overflow-tooltip="showOverflowTooltip"
|
|
168
|
+
:formatter="col.formatter"
|
|
169
|
+
:fixed="col.fixed"
|
|
170
|
+
:sortable="col.sortable || false"
|
|
171
|
+
:sort-method="col.sortMethod"
|
|
172
|
+
:sort-by="col.sortBy"
|
|
173
|
+
:sort-orders="col.sortOrders || ['ascending', 'descending', null]"
|
|
174
|
+
>
|
|
175
|
+
<el-table-column
|
|
176
|
+
v-for="(item,index) of col.children"
|
|
177
|
+
:key="index"
|
|
178
|
+
:prop="item.prop"
|
|
179
|
+
:label="item.label"
|
|
180
|
+
:align="item.align || 'center'"
|
|
181
|
+
:width="item.width"
|
|
182
|
+
>
|
|
183
|
+
</el-table-column>
|
|
184
|
+
</el-table-column>
|
|
185
|
+
|
|
186
|
+
<el-table-column
|
|
187
|
+
v-else-if="col.type === 'tooltip'"
|
|
188
|
+
:key="index"
|
|
189
|
+
:prop="col.prop"
|
|
190
|
+
:label="col.label"
|
|
191
|
+
:width="col.width"
|
|
192
|
+
:align="col.align || 'center'"
|
|
193
|
+
:header-align="col['header-align'] || 'center'"
|
|
194
|
+
:type="''"
|
|
195
|
+
:show-overflow-tooltip="showOverflowTooltip"
|
|
196
|
+
:formatter="col.formatter"
|
|
197
|
+
:fixed="col.fixed"
|
|
198
|
+
:sortable="col.sortable || false"
|
|
199
|
+
:sort-method="col.sortMethod"
|
|
200
|
+
:sort-by="col.sortBy"
|
|
201
|
+
:sort-orders="col.sortOrders || ['ascending', 'descending', null]"
|
|
202
|
+
:render-header="col.renderHeader"
|
|
203
|
+
>
|
|
204
|
+
</el-table-column>
|
|
205
|
+
|
|
206
|
+
<el-table-column
|
|
207
|
+
v-else
|
|
208
|
+
:key="index"
|
|
209
|
+
:prop="col.prop"
|
|
210
|
+
:label="col.label"
|
|
211
|
+
:width="col.width"
|
|
212
|
+
:align="col.align || 'center'"
|
|
213
|
+
:header-align="col['header-align'] || 'center'"
|
|
214
|
+
:type="col.type || ''"
|
|
215
|
+
:show-overflow-tooltip="showOverflowTooltip"
|
|
216
|
+
:formatter="col.formatter"
|
|
217
|
+
:fixed="col.fixed"
|
|
218
|
+
:sortable="col.sortable || false"
|
|
219
|
+
:sort-method="col.sortMethod"
|
|
220
|
+
:sort-by="col.sortBy"
|
|
221
|
+
:sort-orders="col.sortOrders || ['ascending', 'descending', null]"
|
|
222
|
+
>
|
|
223
|
+
</el-table-column>
|
|
224
|
+
</template>
|
|
225
|
+
</el-table>
|
|
226
|
+
<div class="footer-pagination" v-if="showPagination">
|
|
227
|
+
<el-pagination
|
|
228
|
+
:small="pageOptions['small']"
|
|
229
|
+
:page-sizes="pageOptions['page-sizes']"
|
|
230
|
+
:page-size="pageOptions['page-size']"
|
|
231
|
+
:total="pageOptions['total']"
|
|
232
|
+
:pager-count="pageOptions['pager-count']"
|
|
233
|
+
:current-page="pageOptions['current-page']"
|
|
234
|
+
:layout="pageOptions['layout']"
|
|
235
|
+
:popper-class="pageOptions['popper-class']"
|
|
236
|
+
:prev-text="pageOptions['prev-text']"
|
|
237
|
+
:next-text="pageOptions['next-text']"
|
|
238
|
+
:disabled="pageOptions['disabled']"
|
|
239
|
+
:hide-on-single-page="pageOptions['hide-on-single-page']"
|
|
240
|
+
@size-change="handleSizeChange"
|
|
241
|
+
@current-change="handleCurrentChange"
|
|
242
|
+
@prev-click="handlePrevClick"
|
|
243
|
+
@next-click="handleNextClick"
|
|
244
|
+
>
|
|
245
|
+
<slot name="pagination"></slot>
|
|
246
|
+
</el-pagination>
|
|
247
|
+
</div>
|
|
248
|
+
</div>
|
|
249
|
+
</template>
|
|
250
|
+
|
|
251
|
+
<script>
|
|
252
|
+
export default {
|
|
253
|
+
name: "newtvTable",
|
|
254
|
+
props: {
|
|
255
|
+
defaultSort: {
|
|
256
|
+
type: Object,
|
|
257
|
+
default: () => {}
|
|
258
|
+
},
|
|
259
|
+
tableCols: {
|
|
260
|
+
type: Array,
|
|
261
|
+
default: () => []
|
|
262
|
+
},
|
|
263
|
+
tableData: {
|
|
264
|
+
type: Array,
|
|
265
|
+
default: () => []
|
|
266
|
+
},
|
|
267
|
+
showHeader: {
|
|
268
|
+
type: Boolean,
|
|
269
|
+
default: true
|
|
270
|
+
},
|
|
271
|
+
reserveSelection: {
|
|
272
|
+
type: Boolean,
|
|
273
|
+
default: false
|
|
274
|
+
},
|
|
275
|
+
rowClassName: {
|
|
276
|
+
type: Function,
|
|
277
|
+
default: () => {}
|
|
278
|
+
},
|
|
279
|
+
expandRowKeys: {
|
|
280
|
+
type: Array,
|
|
281
|
+
default: () => []
|
|
282
|
+
},
|
|
283
|
+
height: {
|
|
284
|
+
type: Number || null,
|
|
285
|
+
default: null
|
|
286
|
+
},
|
|
287
|
+
stripe: {
|
|
288
|
+
type: Boolean,
|
|
289
|
+
default: true
|
|
290
|
+
},
|
|
291
|
+
UIRevision: {
|
|
292
|
+
type: Boolean,
|
|
293
|
+
default: false
|
|
294
|
+
},
|
|
295
|
+
dialogTableContainer: {
|
|
296
|
+
type: Boolean,
|
|
297
|
+
default: false
|
|
298
|
+
},
|
|
299
|
+
border: {
|
|
300
|
+
type: Boolean,
|
|
301
|
+
default: true
|
|
302
|
+
},
|
|
303
|
+
showOverflowTooltip: {
|
|
304
|
+
type: Boolean,
|
|
305
|
+
default: true
|
|
306
|
+
},
|
|
307
|
+
showPagination: {
|
|
308
|
+
type: Boolean,
|
|
309
|
+
default: true
|
|
310
|
+
},
|
|
311
|
+
paginationOption: {
|
|
312
|
+
type: Object,
|
|
313
|
+
default: () => {}
|
|
314
|
+
},
|
|
315
|
+
spanMethod: {
|
|
316
|
+
type: Function,
|
|
317
|
+
default: () => {}
|
|
318
|
+
},
|
|
319
|
+
rowKey: {
|
|
320
|
+
type: [Function, String],
|
|
321
|
+
default: 'id'
|
|
322
|
+
},
|
|
323
|
+
empty: {
|
|
324
|
+
type: String,
|
|
325
|
+
default: '暂无数据'
|
|
326
|
+
}
|
|
327
|
+
},
|
|
328
|
+
data() {
|
|
329
|
+
return {
|
|
330
|
+
pageOptions: {
|
|
331
|
+
'small': false,
|
|
332
|
+
'background': false,
|
|
333
|
+
'page-sizes': [10, 20, 50, 100],
|
|
334
|
+
'page-size': 10,
|
|
335
|
+
'total': 10,
|
|
336
|
+
'pager-count': 7,
|
|
337
|
+
'current-page': 1,
|
|
338
|
+
'layout': 'total, sizes, prev, pager, next, jumper',
|
|
339
|
+
'popper-class': null,
|
|
340
|
+
'prev-text': null,
|
|
341
|
+
'next-text': null,
|
|
342
|
+
'disabled': false,
|
|
343
|
+
'hide-on-single-page': false
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
},
|
|
347
|
+
mounted() {},
|
|
348
|
+
methods: {
|
|
349
|
+
rowClick(row, column, event) {
|
|
350
|
+
this.$emit('row-click', row, column, event)
|
|
351
|
+
},
|
|
352
|
+
// 双击表格
|
|
353
|
+
rowDblclick(row, column, event) {
|
|
354
|
+
this.$emit('row-dblclick', row, column, event)
|
|
355
|
+
},
|
|
356
|
+
//rowCellClick
|
|
357
|
+
rowCellClick(row, column, cell, event) {
|
|
358
|
+
this.$emit('cell-click', row, column, cell, event)
|
|
359
|
+
},
|
|
360
|
+
expandChange(row, expandedRows) {
|
|
361
|
+
this.$emit('expand-change', row, expandedRows)
|
|
362
|
+
},
|
|
363
|
+
select(selection, row) {
|
|
364
|
+
this.$emit('select', selection, row)
|
|
365
|
+
},
|
|
366
|
+
selectAll(selection, row) {
|
|
367
|
+
this.$emit('select-all', selection, row)
|
|
368
|
+
},
|
|
369
|
+
selectionChange(selection) {
|
|
370
|
+
this.$emit('selection-change', selection)
|
|
371
|
+
},
|
|
372
|
+
sortChange({ column, prop, order }) {
|
|
373
|
+
this.$emit('sort-change', { column, prop, order })
|
|
374
|
+
},
|
|
375
|
+
clearSelection() {
|
|
376
|
+
this.$refs.table.clearSelection()
|
|
377
|
+
},
|
|
378
|
+
toggleRowSelection(row, selected) {
|
|
379
|
+
this.$refs.table.toggleRowSelection(row, selected)
|
|
380
|
+
},
|
|
381
|
+
toggleAllSelection() {
|
|
382
|
+
this.$refs.table.toggleAllSelection()
|
|
383
|
+
},
|
|
384
|
+
// pageSize 改变时会触发
|
|
385
|
+
handleSizeChange(val) {
|
|
386
|
+
this.pageOptions = {
|
|
387
|
+
...this.pageOptions,
|
|
388
|
+
'current-page': 1
|
|
389
|
+
}
|
|
390
|
+
this.$emit('size-change', val)
|
|
391
|
+
},
|
|
392
|
+
// currentPage 改变时会触发
|
|
393
|
+
handleCurrentChange(val) {
|
|
394
|
+
this.$emit('current-change', val)
|
|
395
|
+
},
|
|
396
|
+
// 用户点击上一页按钮改变当前页后触发
|
|
397
|
+
handlePrevClick(val) {
|
|
398
|
+
this.$emit('prev-click', val)
|
|
399
|
+
},
|
|
400
|
+
// 用户点击下一页按钮改变当前页后触发
|
|
401
|
+
handleNextClick(val) {
|
|
402
|
+
this.$emit('next-click', val)
|
|
403
|
+
},
|
|
404
|
+
handleCommand(command) {
|
|
405
|
+
console.log(command)
|
|
406
|
+
command.fn && command.fn(command.row)
|
|
407
|
+
}
|
|
408
|
+
},
|
|
409
|
+
watch: {
|
|
410
|
+
paginationOption () {
|
|
411
|
+
this.pageOptions = {...this.pageOptions, ...this.paginationOption}
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
</script>
|
|
416
|
+
|
|
417
|
+
<style lang="less" scoped>
|
|
418
|
+
.footer-pagination {
|
|
419
|
+
padding-top: 10px;
|
|
420
|
+
}
|
|
421
|
+
</style>
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="newtv-video-bar">
|
|
3
|
+
<div class="video-bar-content" :style="styleBar">
|
|
4
|
+
<div class="bar-item" v-for="(videoPoint,index) in computeVideoList"
|
|
5
|
+
:style="videoPoint.style"
|
|
6
|
+
:key="index"
|
|
7
|
+
@click="playVideo(videoPoint.from,index)"
|
|
8
|
+
></div>
|
|
9
|
+
</div>
|
|
10
|
+
</div>
|
|
11
|
+
</template>
|
|
12
|
+
|
|
13
|
+
<script>
|
|
14
|
+
export default {
|
|
15
|
+
name: 'videoBar',
|
|
16
|
+
props: {
|
|
17
|
+
width: {
|
|
18
|
+
type: String,
|
|
19
|
+
default: '100%'
|
|
20
|
+
},
|
|
21
|
+
height: {
|
|
22
|
+
type: String,
|
|
23
|
+
default: '5'
|
|
24
|
+
},
|
|
25
|
+
videoList: {
|
|
26
|
+
type: Array,
|
|
27
|
+
default: ()=>[],
|
|
28
|
+
},
|
|
29
|
+
videoTotal: {
|
|
30
|
+
type: Number,
|
|
31
|
+
default: 0
|
|
32
|
+
},
|
|
33
|
+
barStyle: {
|
|
34
|
+
type: Object,
|
|
35
|
+
default: () => {
|
|
36
|
+
return {
|
|
37
|
+
bgColor: '#ffffff',
|
|
38
|
+
itemBgColor: '#f00'
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
methods: {
|
|
44
|
+
playVideo(t,index) {
|
|
45
|
+
this.$emit('playVideo',t,index);
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
computed: {
|
|
49
|
+
computeVideoList() {
|
|
50
|
+
return this.videoList.map(item=>{
|
|
51
|
+
item.width = Math.ceil(((item.to - item.from <=0) ? 1 : (item.to - item.from))/this.videoTotal*100);
|
|
52
|
+
item.left = Math.ceil(item.from/this.videoTotal*100);
|
|
53
|
+
item.style = `left:${item.left}%;width: ${item.width}%;height: ${this.height}px;borderRadius:${this.height/2}px;backgroundColor: ${this.barStyle.itemBgColor};`;
|
|
54
|
+
return item;
|
|
55
|
+
});
|
|
56
|
+
},
|
|
57
|
+
styleBar() {
|
|
58
|
+
return `height: ${this.height}px;borderRadius: ${this.height/2}px;backgroundColor: ${this.barStyle.bgColor};`
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
</script>
|
|
63
|
+
|
|
64
|
+
<style scoped>
|
|
65
|
+
.video-bar-content{
|
|
66
|
+
width: 100%;
|
|
67
|
+
overflow: hidden;
|
|
68
|
+
position: relative;
|
|
69
|
+
}
|
|
70
|
+
.bar-item{
|
|
71
|
+
float: left;
|
|
72
|
+
position: absolute;
|
|
73
|
+
top: 0;
|
|
74
|
+
}
|
|
75
|
+
</style>
|