张晓波
2023-09-19 164694c47c35d6654df69b533e8dbf8b5423efc5
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
<template>
    <view class="monitor_index">
        <scroll-view
            scroll-y="true"
            class="monitor_index_scroll"
            :scroll-top="scrollTop" 
            refresher-enabled="true" 
            refresher-background="#EAEAEA"
            :refresher-triggered="triggered" 
            @refresherpulling="refresherrefresh">
            <view class="monitor_card_index" v-for="(item,index) in monitorData" :key="index">
                <!-- <view> -->
                    <video :id="`video_${index+1}`" :src="item.hdAddress" class="video_items_tyle" :title="item.channelNo+'-'+item.deviceNum"  controls></video>
                    <!-- <cover-view class="video-loaing video-ready" hidden="true"> -->
                        <!-- <live-player :id="`video_${index+1}`" binderror="error"  mode="live" :src="item.videoPath"  autoplay="true" style="width:100%"></live-player> -->
                    <!-- </cover-view> -->
                <!-- </view> -->
                <!-- <view class="monitor_card_bottom">
                    <view class="monitor_card_times">{{item.createTime}}</view>
                    <view class="monitor_card_positions">{{item.videoName}}</view>
                </view> -->
            </view>
            <u-loadmore :status="status" :icon-type="iconType" :load-text="loadText" />
        </scroll-view>
    </view>
</template>
 
<script>
    import { throttle } from '../../plugins/public.js';
    export default{
        data(){
            return{
                pageNum: 1,
                pageSize: 10,
                loadPage: 0,
                scrollTop: 0,
                triggered: true,
                status: 'loading',
                loadText: {
                    loading: '努力加载中',
                    nomore: '没有更多数据了'
                },
                monitorData:[],//摄像监控画面
            }
        },
        onLoad() {
            this.searchVideoList()
        },
        methods:{
            //查询列表
            searchVideoList(){
                this.triggered = true;
                this.monitorData = [];
                let params = {
                    types:2
                }
                this.$api.reboSystem.getMonitotLists(params).then(res=>{
                    if(res.statusMsg === 'ok'){
                        res.data.map(item=>{
                            let formData = {};
                            formData.channelNo= item.channelNo
                            formData.deviceNum=item.deviceNum
                            formData.types= 2
                            this.$api.reboSystem.backVideosUrlList(formData).then(resUrl=>{
                                this.monitorData.push({
                                    channelNo:item.channelNo,
                                    deviceNum:item.deviceNum,
                                    hdAddress:resUrl.data.data.hdAddress
                                })
                            })
                            return this.monitorData
                        })
                        this.triggered = false;
                        this.status = 'nomore';
                    }else{
                        uni.$u.toast(res.statusMsg);
                    }
                }).catch((err) => {
                    uni.$u.toast('请检查网络服务或联系管理员!')
                })
            },
            //自定义下拉刷新
            refresherrefresh: throttle(function() {
                this.status = 'loading';
                this.pageNum = 1;
                this.searchVideoList();
                uni.$u.toast('刷新成功');
            }, 500),
            //触底刷新
            // scrolltoLower: throttle(function() {
            //     this.status = 'loading';
            //     if(this.pageNum >= this.loadPage) {
            //         setTimeout(() => {
            //             this.status = 'nomore'
            //             uni.$u.toast('没有更多数据了');
            //         },1000)
            //         return
            //     } else {
            //         this.pageNum+=1
            //         let params = {
            //             pageNum: this.pageNum,
            //             pageSize:this.pageSize,
            //         }
            //         this.$api.reboSystem.getMonitotLists(params).then(res=>{
            //             if(res.statusMsg === 'ok'){
            //                 this.monitorData.push(...res.data.list)
            //                 this.loadPage = res.data.pages;
            //                 this.triggered = false;
            //                 this.status = 'nomore';
            //             }else{
            //                 uni.$u.toast(res.statusMsg);
            //             }
            //         }).catch((err) => {
            //             uni.$u.toast('请检查网络服务或联系管理员!')
            //         })
            //     }
            // }, 1500),
        }
    }
</script>
 
<style scoped lang="scss">
    .monitor_index{
        height: 100vh;
        background-color: #F6F6F6;
        padding: 10px 15px;
        .monitor_index_scroll{
            height: 90%;
            
            .monitor_card_index{
                position: relative;
                margin-bottom: 15px;
                .video_items_tyle{
                    width: 100%;
                    border-radius: 6px;
                }
                .monitor_card_bottom{
                    width: 100%;
                    height: 30px;
                    background-color: #000000;
                    position: absolute;
                    left: 0px;
                    top: 0px;
                    display: flex;
                    justify-content: space-between;
                    align-items: center;
                    border-top-left-radius: 6px;
                    border-top-right-radius: 6px;
                    
                    .monitor_card_times{
                        padding-left: 30px;
                        color: #FFFFFF;
                        font-size: 14px;
                        position: relative;
                        &::before{
                            position: absolute;
                            left: 10px;
                            top: 2px;
                            width: 50px;
                            height: 50px;
                            content: "";
                            background: url('../../static/time.png') no-repeat;
                        }
                    }
                    .monitor_card_positions{
                        color: #FFFFFF;
                        font-size: 14px;
                        padding-right: 15px;
                    }
                }
            }
        }
    }
</style>