1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
| <template>
| <div>
| <el-segmented :model-value="tabName" :options="tabs" @change="tabChange" />
| </div>
| <el-space wrap>
| <ItemMonitorObj v-for="obj in activeData" :key="obj.movid" :item="obj">
| <template #default="{ item }">
| <!-- <slot :item="item"></slot> -->
| <el-button v-if="showDelete" size="small" type="danger" @click="deleteMov(item)"
| >移除</el-button
| >
| </template>
| </ItemMonitorObj>
| </el-space>
| </template>
|
| <script>
| const defaultTabName = '全部';
| export default {
| props: {
| data: {
| type: Array,
| default: () => []
| },
| tabName: {
| type: String,
| default: defaultTabName
| },
| showData: Array,
| // 是否添加默认的全部选项
| allOption: Boolean,
| showDelete: Boolean
| },
| emits: ['update:tabName', 'update:showData', 'deleteItem'],
| data() {
| return {
| activeName: defaultTabName,
| tabs: []
| };
| },
| computed: {
| activeData() {
| const list = this.data.filter((v) => {
| // return this.activeName == defaultTabName || v.sceneType == this.activeName;
| return this.tabName == defaultTabName || v.sceneType == this.tabName;
| });
| this.$emit('update:showData', list);
| return list;
| }
| },
| watch: {
| data: {
| handler(nV, oV) {
| if (nV != oV && nV.length > 0) {
| this.getTabs(nV);
| }
| },
| immediate: true
| },
| tabs: {
| handler(nV, oV) {
| if (nV != oV && nV.length > 0) {
| // this.activeName = nV[0];
| this.tabChange(nV);
| }
| },
| immediate: true
| }
| },
| methods: {
| getTabs(dataList) {
| const list = [];
| dataList.forEach((d) => {
| if (list.indexOf(d.sceneType) == -1) list.push(d.sceneType);
| });
| this.tabs = list;
| },
| tabChange(tabName) {
| this.$emit('update:tabName', tabName);
| },
| deleteMov(item) {
| this.$emit('deleteItem', item);
| }
| }
| };
| </script>
|
| <style scoped></style>
|
|