1
guanqb
2023-01-13 d45339650551c5943c5d013846a3e9c402f6645b
1
11 files modified
1 files added
1221 ■■■■■ changed files
public/img/icon/camera.png patch | view | raw | blame | history
src/components/map/components/mapPopup.vue 4 ●●●● patch | view | raw | blame | history
src/styles/base/index.scss 1 ●●●● patch | view | raw | blame | history
src/styles/dc/index.scss 6 ●●●●● patch | view | raw | blame | history
src/styles/media/index.scss 29 ●●●●● patch | view | raw | blame | history
src/styles/media/index1.scss 26 ●●●●● patch | view | raw | blame | history
src/views/home/components/bottomContainer.vue 48 ●●●●● patch | view | raw | blame | history
src/views/home/index.vue 81 ●●●● patch | view | raw | blame | history
src/views/house/index.vue 352 ●●●● patch | view | raw | blame | history
src/views/layout/index.vue 83 ●●●●● patch | view | raw | blame | history
src/views/police/index.vue 566 ●●●● patch | view | raw | blame | history
src/views/video/list.vue 25 ●●●● patch | view | raw | blame | history
public/img/icon/camera.png
src/components/map/components/mapPopup.vue
@@ -33,8 +33,8 @@
                                        <div>{{ dataPopup.JJYXM }}</div>
                                    </div>
                                    <div class="item">
                                        <div>接警时间:</div>
                                        <div>{{ dataPopup.JJSJ }}</div>
                                        <div>报警时间:</div>
                                        <div>{{ dataPopup.BJSJ }}</div>
                                    </div>
                                    <div class="item">
                                        <div>报警人:</div>
src/styles/base/index.scss
@@ -350,6 +350,7 @@
        .el-dialog__header {
            height: 56px;
            line-height: 56px;
            text-align: center;
        }
        .el-dialog__body {
src/styles/dc/index.scss
@@ -100,6 +100,12 @@
    align-items: center;
    justify-content: center;
    position: absolute;
    left: 10px;
    bottom: 178px;
    width: 36px;
    height: 36px;
    font-size: 20px;
    color: #fff;
    border-right: 10px solid transparent;
    box-sizing: content-box;
src/styles/media/index.scss
@@ -775,8 +775,7 @@
                                    }
                                }
                                .police-info,
                                .warning-info {
                                .police-info {
                                    .tableClass {
                                        width: countSizeVw(600, 1920);
                                        height: countSizeVh(400);
@@ -911,31 +910,7 @@
                                input {
                                    font-size: countSizeVh(18);
                                    border-radius: countSizeVh(20) 0 0 countSizeVw(20, 1920);
                                }
                                button {
                                    font-size: countSizeVh(24);
                                    width: countSizeVw(80, 1920);
                                    border: countSizeVh(1) solid rgb(0, 92, 169);
                                    border-radius: 0 countSizeVw(20, 1920) countSizeVh(20) 0;
                                }
                                button:active {
                                    border: countSizeVh(1) solid rgb(0, 92, 169);
                                }
                            }
                            .search-val-box {
                                top: countSizeVh(48);
                                left: countSizeVw(6, 1920);
                                width: calc(100% - countSizeVw(12, 1920));
                                max-height: countSizeVh(160);
                                border-radius: countSizeVh(10) countSizeVw(10, 1920);
                                &>div {
                                    padding: 0 countSizeVw(10, 1920);
                                    line-height: countSizeVh(36);
                                    border-radius: countSizeVh(20);
                                }
                            }
src/styles/media/index1.scss
@@ -337,31 +337,7 @@
                                input {
                                    font-size: countSizeVh(18);
                                    border-radius: countSizeVh(20) 0 0 countSizeVw(20, 1920);
                                }
                                button {
                                    font-size: countSizeVh(24);
                                    width: countSizeVw(80, 1920);
                                    border: countSizeVh(1) solid rgb(0, 92, 169);
                                    border-radius: 0 countSizeVw(20, 1920) countSizeVh(20) 0;
                                }
                                button:active {
                                    border: countSizeVh(1) solid rgb(0, 92, 169);
                                }
                            }
                            .search-val-box {
                                top: countSizeVh(48);
                                left: countSizeVw(6, 1920);
                                width: calc(100% - countSizeVw(12, 1920));
                                max-height: countSizeVh(160);
                                border-radius: countSizeVh(10) countSizeVw(10, 1920);
                                &>div {
                                    padding: 0 countSizeVw(10, 1920);
                                    line-height: countSizeVh(36);
                                    border-radius: countSizeVh(20);
                                }
                            }
src/views/home/components/bottomContainer.vue
@@ -27,7 +27,7 @@
                        <span class="num">序号</span>
                        <span class="receiving-alarm-unit">接警单位</span>
                        <span class="receiving-alarm-people">接警员</span>
                        <span class="receiving-alarm-time">接警时间</span>
                        <span class="receiving-alarm-time">报警时间</span>
                        <span class="call-people">报警人</span>
                        <span class="call-phone">联系电话</span>
                        <span class="call-police-content">报警内容</span>
@@ -45,8 +45,8 @@
                            <span class="num" v-text="item.index"></span>
                            <span class="receiving-alarm-unit" v-text="item.JJDWMC"></span>
                            <span class="receiving-alarm-people" v-text="item.JJYXM"></span>
                            <span class="receiving-alarm-time" :title="item.JJSJ"
                                v-text="item.JJSJ.substring(0, 10)"></span>
                            <span class="receiving-alarm-time" :title="item.BJSJ"
                                v-text="item.BJSJ.substring(0, 10)"></span>
                            <span class="call-people" v-text="item.BJRXM"></span>
                            <span class="call-phone" v-text="item.LXDH"></span>
                            <span class="call-police-content" :title="item.BJNR" v-text="item.BJNR"></span>
@@ -73,9 +73,9 @@
                        min-width="12.6%"></el-table-column>
                    <el-table-column :show-overflow-tooltip="true" prop="JJYXM" label="接警员"
                        min-width="7.6%"></el-table-column>
                    <el-table-column :show-overflow-tooltip="true" label="接警时间" min-width="9.6%">
                    <el-table-column label="报警时间" min-width="9.6%">
                        <template slot-scope="scope">
                            <span>{{ scope.row.JJSJ.substring(0, 10) }}</span>
                            <span>{{ scope.row.BJSJ.substring(0, 10) }}</span>
                        </template>
                    </el-table-column>
                    <el-table-column :show-overflow-tooltip="true" prop="BJRXM" label="报警人"
@@ -293,7 +293,7 @@
            //     ZDDWYZB: 25,
            //     JJDWMC: '信州公安局派出所',
            //     JJYXM: '欧阳西门',
            //     JJSJ: '2022-12-12 12:12:12',
            //     : '2022-12-12 12:12:12',
            //     BJRXM: '西门庆祝',
            //     LXDH: 17335843642,
            //     BJNR: '今日在某小区查获私人赌博场所,今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所',
@@ -304,7 +304,7 @@
            // {
            //     JJDWMC: '信州公安局派出所',
            //     JJYXM: '欧阳西门',
            //     JJSJ: '2022-12-12 12:12:12',
            //     : '2022-12-12 12:12:12',
            //     BJRXM: '西门庆祝',
            //     LXDH: 17335843642,
            //     BJNR: '今日在某小区查获私人赌博场所,今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所',
@@ -315,7 +315,7 @@
            // {
            //     JJDWMC: '信州公安局派出所',
            //     JJYXM: '欧阳西门',
            //     JJSJ: '2022-12-12 12:12:12',
            //     : '2022-12-12 12:12:12',
            //     BJRXM: '西门庆祝',
            //     LXDH: 17335843642,
            //     BJNR: '今日在某小区查获私人赌博场所',
@@ -326,7 +326,7 @@
            // {
            //     JJDWMC: '信州公安局派出所',
            //     JJYXM: '欧阳西门',
            //     JJSJ: '2022-12-12 12:12:12',
            //     : '2022-12-12 12:12:12',
            //     BJRXM: '西门庆祝',
            //     LXDH: 17335843642,
            //     BJNR: '今日在某小区查获私人赌博场所',
@@ -337,7 +337,7 @@
            // {
            //     JJDWMC: '信州公安局派出所',
            //     JJYXM: '欧阳西门',
            //     JJSJ: '2022-12-12 12:12:12',
            //     : '2022-12-12 12:12:12',
            //     BJRXM: '西门庆祝',
            //     LXDH: 17335843642,
            //     BJNR: '今日在某小区查获私人赌博场所',
@@ -348,7 +348,7 @@
            // {
            //     JJDWMC: '信州公安局派出所',
            //     JJYXM: '欧阳西门',
            //     JJSJ: '2022-12-12 12:12:12',
            //     : '2022-12-12 12:12:12',
            //     BJRXM: '西门庆祝',
            //     LXDH: 17335843642,
            //     BJNR: '今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所',
@@ -359,7 +359,7 @@
            // {
            //     JJDWMC: '信州公安局派出所',
            //     JJYXM: '欧阳西门',
            //     JJSJ: '2022-12-12 12:12:12',
            //     : '2022-12-12 12:12:12',
            //     BJRXM: '西门庆祝',
            //     LXDH: 17335843642,
            //     BJNR: '今日在某小区查获私人赌博场所',
@@ -396,7 +396,7 @@
            //     ZDDWYZB: 25,
            //     JJDWMC: '信州公安局派出所',
            //     JJYXM: '欧阳西门',
            //     JJSJ: '2022-12-12 12:12:12',
            //     : '2022-12-12 12:12:12',
            //     BJRXM: '西门庆祝',
            //     LXDH: 17335843642,
            //     BJNR: '今日在某小区查获私人赌博场所,今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所',
@@ -407,7 +407,7 @@
            // {
            //     JJDWMC: '信州公安局派出所',
            //     JJYXM: '欧阳西门',
            //     JJSJ: '2022-12-12 12:12:12',
            //     : '2022-12-12 12:12:12',
            //     BJRXM: '西门庆祝',
            //     LXDH: 17335843642,
            //     BJNR: '今日在某小区查获私人赌博场所,今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所',
@@ -418,7 +418,7 @@
            // {
            //     JJDWMC: '信州公安局派出所',
            //     JJYXM: '欧阳西门',
            //     JJSJ: '2022-12-12 12:12:12',
            //     : '2022-12-12 12:12:12',
            //     BJRXM: '西门庆祝',
            //     LXDH: 17335843642,
            //     BJNR: '今日在某小区查获私人赌博场所',
@@ -429,7 +429,7 @@
            // {
            //     JJDWMC: '信州公安局派出所',
            //     JJYXM: '欧阳西门',
            //     JJSJ: '2022-12-12 12:12:12',
            //     : '2022-12-12 12:12:12',
            //     BJRXM: '西门庆祝',
            //     LXDH: 17335843642,
            //     BJNR: '今日在某小区查获私人赌博场所',
@@ -440,7 +440,7 @@
            // {
            //     JJDWMC: '信州公安局派出所',
            //     JJYXM: '欧阳西门',
            //     JJSJ: '2022-12-12 12:12:12',
            //     : '2022-12-12 12:12:12',
            //     BJRXM: '西门庆祝',
            //     LXDH: 17335843642,
            //     BJNR: '今日在某小区查获私人赌博场所',
@@ -451,7 +451,7 @@
            // {
            //     JJDWMC: '信州公安局派出所',
            //     JJYXM: '欧阳西门',
            //     JJSJ: '2022-12-12 12:12:12',
            //     : '2022-12-12 12:12:12',
            //     BJRXM: '西门庆祝',
            //     LXDH: 17335843642,
            //     BJNR: '今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所今日在某小区查获私人赌博场所',
@@ -462,7 +462,7 @@
            // {
            //     JJDWMC: '信州公安局派出所',
            //     JJYXM: '欧阳西门',
            //     JJSJ: '2022-12-12 12:12:12',
            //     : '2022-12-12 12:12:12',
            //     BJRXM: '西门庆祝',
            //     LXDH: 17335843642,
            //     BJNR: '今日在某小区查获私人赌博场所',
@@ -772,16 +772,6 @@
        margin-bottom: 14px;
        width: calc(100% - 24px);
        height: calc(100% - 80px);
        :deep(.el-table__body-wrapper) {
            td {
                .cell {
                    overflow: hidden;
                    text-overflow: ellipsis;
                    white-space: nowrap;
                }
            }
        }
        .pages {
            height: 40px;
src/views/home/index.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 16:18:17
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-01-11 17:21:27
 * @LastEditTime: 2023-01-12 17:12:18
 * @FilePath: \srs-police-affairs\src\views\home\index.vue
 * @Description: 小区-栋-层-房屋
 *
@@ -165,7 +165,6 @@
                    >
                        <el-table-column type="index" :index="indexMethod" label="序号"></el-table-column>
                        <el-table-column prop="channelId" label="通道编号"></el-table-column>
                        <el-table-column prop="channelId" label="通道编号"></el-table-column>
                        <el-table-column prop="deviceId" label="设备编号"></el-table-column>
                        <el-table-column prop="name" label="名称"></el-table-column>
                        <el-table-column label="状态">
@@ -269,59 +268,59 @@
            <div v-show="policeInformationType == '接警信息'" class="box">
                <div class="item">
                    <div>接警单位编号:</div>
                    <div>{{ policeSituationDetailArr.JJDWBH }}</div>
                    <div>{{ policeSituationDetailObj.JJDWBH }}</div>
                </div>
                <div class="item">
                    <div>接警单位名称:</div>
                    <div>{{ policeSituationDetailArr.JJDWMC }}</div>
                    <div>{{ policeSituationDetailObj.JJDWMC }}</div>
                </div>
                <div class="item">
                    <div>接警单编号:</div>
                    <div>{{ policeSituationDetailArr.JJDBH }}</div>
                    <div>{{ policeSituationDetailObj.JJDBH }}</div>
                </div>
                <div class="item">
                    <div>接警员编号:</div>
                    <div>{{ policeSituationDetailArr.JJYBH }}</div>
                    <div>{{ policeSituationDetailObj.JJYBH }}</div>
                </div>
                <div class="item">
                    <div>接警员姓名:</div>
                    <div>{{ policeSituationDetailArr.JJYXM }}</div>
                    <div>{{ policeSituationDetailObj.JJYXM }}</div>
                </div>
                <div class="item">
                    <div>接警时间:</div>
                    <div>{{ policeSituationDetailArr.JJSJ }}</div>
                    <div>报警时间:</div>
                    <div>{{ policeSituationDetailObj.BJSJ }}</div>
                </div>
                <div class="item">
                    <div>报警电话:</div>
                    <div>{{ policeSituationDetailArr.LXDH }}</div>
                    <div>{{ policeSituationDetailObj.LXDH }}</div>
                </div>
                <div class="item">
                    <div>报警人姓名:</div>
                    <div>{{ policeSituationDetailArr.BJRXM }}</div>
                    <div>{{ policeSituationDetailObj.BJRXM }}</div>
                </div>
                <div class="item">
                    <div>报警类别:</div>
                    <div>{{ policeSituationDetailArr.BJLB }}</div>
                    <div>{{ policeSituationDetailObj.BJLB }}</div>
                </div>
                <div class="item">
                    <div>报警类型:</div>
                    <div>{{ policeSituationDetailArr.BJLX }}</div>
                    <div>{{ policeSituationDetailObj.BJLX }}</div>
                </div>
                <div class="dialog-content">
                    <div>事发地址:</div>
                    <div>{{ policeSituationDetailArr.SFDZ }}</div>
                    <div>{{ policeSituationDetailObj.SFDZ }}</div>
                </div>
                <div class="dialog-content">
                    <div>报警内容:</div>
                    <div>{{ policeSituationDetailArr.BJNR }}</div>
                    <div>{{ policeSituationDetailObj.BJNR }}</div>
                </div>
                <div class="dialog-content">
                    <div>备注:</div>
                    <div>{{ policeSituationDetailArr.MEMO }}</div>
                    <div>{{ policeSituationDetailObj.MEMO }}</div>
                </div>
            </div>
@@ -391,6 +390,7 @@
            >暂无数据</div>
        </el-dialog>
<<<<<<< HEAD
        <el-dialog
            :title="dialogEquimentVideoTitle"
            :modal="true"
@@ -408,6 +408,12 @@
                ref="videoElement"
                style="object-fit: fill"
            ></video>
=======
        <el-dialog :title="dialogEquimentVideoTitle" :modal="true" :visible.sync="dialogEquimentVideoVisible"
            :before-close="dialogBeforeClose" :close-on-click-modal="true" class="car-video-box">
            <video autoplay controls width="100%" height="100%" ref="videoElement" id="videoElement"
                style="object-fit: fill"></video>
>>>>>>> dbee24cadab97ead14488f77f55bcffc7a300a0f
        </el-dialog>
    </div>
</template>
@@ -594,7 +600,7 @@
            underwayArr: [],
            activityType: 0,
            policeSituationHistoryType: 0,
            policeSituationDetailArr: {},
            policeSituationDetailObj: {},
            CJdata: {},
        }
@@ -675,7 +681,7 @@
            if (type == '出警信息') {
                this.CJdata = {}
                getActAsPoliceList(this.policeSituationDetailArr.JJDBH).then(res => {
                getActAsPoliceList(this.policeSituationDetailObj.JJDBH).then(res => {
                    if (res.data.data.records.length > 0) {
                        this.CJdata = res.data.data.records[0]
                    }
@@ -995,7 +1001,7 @@
                    ]
                })
            } else {
                this.policeSituationDetailArr = e
                this.policeSituationDetailObj = e
                this.policeSituationVisible = true
            }
        },
@@ -1240,10 +1246,10 @@
        // 获取设备分页数据
        getEquipmentPaging (params) {
            this.equimentTableData = []
            this.equimentPagingTotal = 0
            getEquipmentPaging({ page: this.currentPage, count: this.pagesize, ...params }).then(res => {
                this.equimentTableData = []
                this.equimentPagingTotal = 0
                if (res.data.data.list.length > 0) {
                    this.equimentTableData = res.data.data.list
@@ -1304,20 +1310,22 @@
                return
            }
            if (flvjs.isSupported()) {
                var videoElement = document.getElementById('videoElement')
                this.flvPlayer = flvjs.createPlayer({
                    type: 'flv',
                    isLive: true,
                    hasAudio: false,
                    url: flvUrl
                })
                this.flvPlayer.attachMediaElement(videoElement)
                this.flvPlayer.load()
                this.flvPlayer.play()
            }
            this.dialogEquimentVideoVisible = true
            if (flvjs.isSupported()) {
                this.$nextTick(() => {
                    var videoElement = document.getElementById('videoElement')
                    this.flvPlayer = flvjs.createPlayer({
                        type: 'flv',
                        isLive: true,
                        hasAudio: false,
                        url: flvUrl
                    })
                    this.flvPlayer.attachMediaElement(videoElement)
                    this.flvPlayer.load()
                    this.flvPlayer.play()
                })
            }
        },
        async getDevices (channelId) {
@@ -1411,9 +1419,6 @@
        },
        indexMethod (index) {
            setTimeout(() => {
                console.log(index, 5000)
            })
            return index + 1
        },
src/views/house/index.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 16:18:17
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-01-11 17:09:36
 * @LastEditTime: 2023-01-12 15:52:43
 * @FilePath: \srs-police-affairs\src\views\house\index.vue
 * @Description: 小区-栋-层-房屋
 * 
@@ -69,8 +69,8 @@
                </div>
            </div>
            <div v-show="contentShow" class="result-content">
                <div class="housing-estate-info">
            <div v-show="contentShow" class="result-content" ref="resultContentBox">
                <div class="housing-estate-info" ref="housingEstateInfoBox">
                    <div class="housing-title">
                        {{ housingData.name }}
                        <div class="progress"></div>
@@ -98,7 +98,7 @@
                    </div>
                </div>
                <div class="nav-tab">
                <div class="nav-tab" ref="navTabBox">
                    <div
                        class="nav"
                        :class="navType == 0 ? 'choosed' : ''"
@@ -111,12 +111,6 @@
                        @click="navClick"
                        data-type="1"
                    >报警信息</div>
                    <div
                        class="nav"
                        :class="navType == 2 ? 'choosed' : ''"
                        @click="navClick"
                        data-type="2"
                    >出警信息</div>
                </div>
                <div class="base-info" v-show="navType == 0">
@@ -426,34 +420,51 @@
                    </div>
                </div>
                <div class="police-info" v-show="navType == 1">
                <div class="police-info" v-if="navType == 1" ref="policeTableBox">
                    <el-table
                        :data="arr"
                        :data="callPoliceData"
                        style="width: 100%"
                        :height="currentTableHeight"
                        :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
                        :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }"
                        :row-class-name="tableRowClassName"
                        @row-click="clickData"
                    >
                        <el-table-column prop="name" label="名称" width="130"></el-table-column>
                        <el-table-column prop="time" label="时间" width="150"></el-table-column>
                        <el-table-column prop="type" label="类别" width="120"></el-table-column>
                        <el-table-column
                            prop="JJDWMC"
                            :show-overflow-tooltip="true"
                            label="接警单位"
                            min-width="34%"
                        ></el-table-column>
                        <el-table-column label="报警时间" min-width="26%">
                            <template slot-scope="scope">
                                <span>{{ scope.row.BJSJ.substring(0, 10) }}</span>
                            </template>
                        </el-table-column>
                        <el-table-column
                            prop="JJYXM"
                            :show-overflow-tooltip="true"
                            label="接警员"
                            min-width="20%"
                        ></el-table-column>
                        <el-table-column
                            prop="BJRXM"
                            :show-overflow-tooltip="true"
                            label="报警人"
                            min-width="20%"
                        ></el-table-column>
                    </el-table>
                </div>
                <div class="warning-info" v-show="navType == 2">
                    <el-table
                        :data="warningArray"
                        style="width: 100%"
                        :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
                        :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }"
                        :row-class-name="tableRowClassName"
                        @row-click="clickData"
                    >
                        <el-table-column prop="name" label="名称" width="130"></el-table-column>
                        <el-table-column prop="time" label="时间" width="150"></el-table-column>
                        <el-table-column prop="type" label="类别" width="120"></el-table-column>
                    </el-table>
                    <div class="pages" ref="ElPagination">
                        <el-pagination
                            background
                            layout="prev, pager, next"
                            :page-size="callPolicePage.pageSize"
                            :page-count="callPolicePage.count"
                            :current-page="callPolicePage.currentPage"
                            @current-change="handleCurrentChange"
                        ></el-pagination>
                    </div>
                </div>
            </div>
        </div>
@@ -480,45 +491,73 @@
                >{{ item.name }}</div>
            </div>
        </div>
        <el-dialog
            title="信息详情"
            :modal="false"
            :visible.sync="dialogVisible"
            :before-close="handleClose"
            title="报警信息"
            :modal="true"
            :visible.sync="policeSituationVisible"
            :append-to-body="true"
            :before-close="policeSituationBeforeClose"
            :close-on-click-modal="true"
            class="police-affairs-details-box"
            class="policeSituation-details-box"
        >
            <div class="item">
                <div>名称:</div>
                <div>{{ JWdetails.name }}</div>
            </div>
            <div class="item">
                <div>时间:</div>
                <div>{{ JWdetails.time }}</div>
            </div>
            <div class="item">
                <div>类型:</div>
                <div>{{ JWdetails.type }}</div>
            </div>
            <div class="item">
                <div>责任警员:</div>
                <div>{{ JWdetails.person }}</div>
            </div>
            <div class="item">
                <div>涉案金额:</div>
                <div>{{ JWdetails.money }}</div>
            </div>
            <div class="item">
                <div>所属辖区:</div>
                <div>{{ JWdetails.turnoutArea }}</div>
            </div>
            <div class="item">
                <div>处理时长:</div>
                <div>{{ JWdetails.handlingTime }}</div>
            </div>
            <div class="item">
                <div>案件级别:</div>
                <div>{{ JWdetails.rank }}</div>
            <div class="box">
                <div class="item">
                    <div>接警单位编号:</div>
                    <div>{{ policeSituationDetailObj.JJDWBH }}</div>
                </div>
                <div class="item">
                    <div>接警单位名称:</div>
                    <div>{{ policeSituationDetailObj.JJDWMC }}</div>
                </div>
                <div class="item">
                    <div>接警单编号:</div>
                    <div>{{ policeSituationDetailObj.JJDBH }}</div>
                </div>
                <div class="item">
                    <div>接警员编号:</div>
                    <div>{{ policeSituationDetailObj.JJYBH }}</div>
                </div>
                <div class="item">
                    <div>接警员姓名:</div>
                    <div>{{ policeSituationDetailObj.JJYXM }}</div>
                </div>
                <div class="item">
                    <div>报警时间:</div>
                    <div>{{ policeSituationDetailObj.BJSJ }}</div>
                </div>
                <div class="item">
                    <div>报警电话:</div>
                    <div>{{ policeSituationDetailObj.LXDH }}</div>
                </div>
                <div class="item">
                    <div>报警人姓名:</div>
                    <div>{{ policeSituationDetailObj.BJRXM }}</div>
                </div>
                <div class="item">
                    <div>报警类别:</div>
                    <div>{{ policeSituationDetailObj.BJLB }}</div>
                </div>
                <div class="item">
                    <div>报警类型:</div>
                    <div>{{ policeSituationDetailObj.BJLX }}</div>
                </div>
                <div class="dialog-content">
                    <div>事发地址:</div>
                    <div>{{ policeSituationDetailObj.SFDZ }}</div>
                </div>
                <div class="dialog-content">
                    <div>报警内容:</div>
                    <div>{{ policeSituationDetailObj.BJNR }}</div>
                </div>
                <div class="dialog-content">
                    <div>备注:</div>
                    <div>{{ policeSituationDetailObj.MEMO }}</div>
                </div>
            </div>
        </el-dialog>
@@ -590,7 +629,9 @@
<script>
import { listQuery, accurateSearch } from "@/utils/search.js"
import housingData from '@/assets/data/housingData.js'
import { getResidentialQuartersList, getResidentialQuartersInfo, getSearchExtensively, getAoiByPt, getUnitbuild, getHouses, getSearchExtensivelyBgAoiDeepdata, getPoliceStationLazyTree } from '@/api/dept/index.js'
import { getResidentialQuartersList, getResidentialQuartersInfo, getSearchExtensively, getAoiByPt, getUnitbuild, getHouses, getSearchExtensivelyBgAoiDeepdata } from '@/api/dept/index.js'
import { getAlarmList } from "@/api/home/index.js"
export default {
    data () {
@@ -600,75 +641,12 @@
            unitValue: 1,
            searchHouse: '',
            navType: 0,
            arr: [
                {
                    name: '物品遗失',
                    time: '2022-1-2',
                    type: '入室盗窃',
                    person: '张志强',
                    money: '1000元',
                    turnoutArea: 'xxx责任区',
                    handlingTime: '12小时',
                    rank: '一般'
                },
                {
                    name: '狗狗互咬',
                    time: '2022-2-3',
                    type: '宠物殴打',
                    person: '张志强',
                    money: '1000元',
                    turnoutArea: 'xxx责任区',
                    handlingTime: '16小时',
                    rank: '一般'
                },
                {
                    name: '打群架',
                    time: '2022-3-4',
                    type: '打架斗殴',
                    person: '张志强',
                    money: '1000元',
                    turnoutArea: 'xxx责任区',
                    handlingTime: '1小时',
                    rank: '一般'
                }
            ],
            warningArray: [
                {
                    name: '楼层房屋起火',
                    time: '2022-1-2',
                    type: '火灾',
                    person: '张志强',
                    money: '100000元',
                    turnoutArea: 'xxx责任区',
                    handlingTime: '12小时',
                    rank: '较大'
                },
                {
                    name: '台风过境',
                    time: '2022-2-3',
                    type: '天气',
                    person: '张志强',
                    money: '10000元',
                    turnoutArea: 'xxx责任区',
                    handlingTime: '16小时',
                    rank: '一般'
                },
                {
                    name: '洪水',
                    time: '2022-3-4',
                    type: '水灾',
                    person: '张志强',
                    money: '1000000元',
                    turnoutArea: 'xxx责任区',
                    handlingTime: '1小时',
                    rank: '一般'
                }
            ],
            comeoutArr: [{ name: '入口1', position: '北门', type: '正门' }, { name: '入口2', position: '南门', type: '后门' }, { name: '入口3', position: '西门', type: '侧门' }],
            parkArr: [{ name: '停车场1', position: '北门', type: '地面停车场' }, { name: '停车场2', position: '南门', type: '地面停车场' }, { name: '停车场3', position: '西门', type: '地下停车场' }],
            businessArr: [{ name: '商铺1', position: '北门', type: '超市' }, { name: '商铺2', position: '南门', type: '水果店' }, { name: '商铺3', position: '西门', type: '快递站' }],
            arrTitle: [{ title: '警务名称' }, { title: '警务时间' }, { title: '警务类型' }, { title: '责任警员' }, { title: '涉案金额' }, { title: '所属辖区' }, { title: '处理时长' }, { title: '案件级别' }],
            dialogVisible: false,
            policeSituationVisible: false,
            JWdetails: {},
            residentDetailsTitle: '',
            residentDetailsShow: false,
@@ -844,6 +822,21 @@
                }
            ],
            // 报警信息
            policeSituationHistoryArr: [],
            // 详情
            policeSituationDetailObj: {},
            callPolicePage: {
                total: 0,
                pageSize: 15,
                count: 0,
                currentPage: 1
            },
            // table高度
            currentTableHeight: 0,
        }
    },
    watch: {
@@ -859,7 +852,8 @@
        // this.getSearchExtensively('ebf48ecaa1fd436fa3d40c4600aa051f', '361100', '万达')
        // this.getAoiByPt('117.9471794', '28.4474852', '361100', '0', '361102', '10')
        // this.getUnitbuild('6E513C5E5D1611EAB6183C15FB00027B', '361102')
        // this.getPoliceStationLazyTree(1)
        window.addEventListener('resize', this.setTableHeight)
    },
    mounted () {
        this.$parent.$parent.resize('400px', true)
@@ -879,6 +873,7 @@
                siteHeading: -3,
                sitePitch: -45
            })
        })
    },
    updated () {
@@ -887,6 +882,11 @@
    methods: {
        navClick (e) {
            this.navType = e.target.dataset.type
            if (this.navType == 1) {
                this.callPolicePage.currentPage = 1
                this.getAlarmList()
            }
        },
        // 获取小区列表
@@ -901,6 +901,9 @@
            getResidentialQuartersInfo(areaId, adcode).then(res => {
                this.getHouses(res.data.data.build[1].build_id, '361102')
                this.housingData.name = res.data.data.aoi_name
                this.callPolicePage.currentPage = 1
                this.getAlarmList()
                this.buildingList = []
                res.data.data.build.forEach(item => {
                    let position = JSON.parse(item.center).coordinates
@@ -982,15 +985,6 @@
        tableRowClassName ({ row, rowIndex }) {
            row.index = rowIndex
            return 'rows'
        },
        clickData (row) {
            this.dialogVisible = true
            if (this.navType == 1) {
                this.JWdetails = this.arr[row.index]
            } else if (this.navType == 2) {
                this.JWdetails = this.warningArray[row.index]
            }
        },
        residentDetailsClick (params) {
@@ -1259,39 +1253,48 @@
            this.keyPersonVisible = true
        },
        getPoliceStationLazyTree (type, id) {
            getPoliceStationLazyTree(type, id).then(res => {
                console.log(res, 4444444)
            })
        },
        // 获取历史接警记录
        getAlarmList () {
        async loadNode (node, resolve) {
            console.log(node, 111)
            if (node.level === 0) {
                let policeStaionList = []
                await getPoliceStationLazyTree(1).then(res => {
                    policeStaionList = res.data.data
                })
                return resolve(policeStaionList)
            }
            if (node.level == 1) {
                let areaList = []
                await getPoliceStationLazyTree(2, node.data.id).then(res => {
                    areaList = res.data.data
                })
                return resolve(areaList)
            }
            if (node.level == 2) {
                let villageList = []
                await getPoliceStationLazyTree(3, node.data.id).then(res => {
                    res.data.data.forEach(item => {
                        villageList = res.data.data
            getAlarmList({ current: this.callPolicePage.currentPage, size: this.pagesize, sfdz: this.housingData.name }).then(res => {
                this.callPolicePage.count = res.data.data.pages
                this.callPoliceData = []
                if (res.data.data.records.length > 0) {
                    this.callPoliceData = res.data.data.records.map((item, index) => {
                        return { ...item, index: index + 1, lng: item.ZDDWXZB, lat: item.ZDDWYZB }
                    })
                })
                return resolve(villageList)
            }
                } else {
                    this.callPoliceData = []
                }
                this.setTableHeight()
            })
        },
        // 分页选择事件
        handleCurrentChange: function (currentPage) {
            this.callPolicePage.currentPage = currentPage
            this.getAlarmList()
        },
        // 警情列表点击事件
        clickData (row) {
            this.policeSituationDetailObj = row
            this.policeSituationVisible = true
        },
        // 获取table高度
        setTableHeight () {
            this.$nextTick(() => {
                if (this.$refs.policeTableBox && this.$refs.ElPagination && this.$refs.policeTableBox.offsetHeight != 0) {
                    this.currentTableHeight = this.$refs.resultContentBox.offsetHeight - this.$refs.housingEstateInfoBox.offsetHeight - this.$refs.navTabBox.offsetHeight - this.$refs.ElPagination.offsetHeight
                }
            })
        }
    },
    destroyed () {
@@ -1308,6 +1311,8 @@
            layerName: 'deepDataLayer',
            type: 'VectorLayer'
        })
        window.removeEventListener('resize', this.setTableHeight)
    }
}
</script>
@@ -1913,6 +1918,13 @@
                .tableClass td {
                    width: 200px;
                }
                .pages {
                    height: 40px;
                    display: flex;
                    align-items: center;
                    justify-content: center;
                }
            }
        }
    }
src/views/layout/index.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 16:18:24
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-01-06 17:01:29
 * @LastEditTime: 2023-01-12 10:26:58
 * @FilePath: \srs-police-affairs\src\views\layout\index.vue
 * @Description: 
 * 
@@ -12,21 +12,13 @@
    <div class="wrapper">
        <div class="main-header">
            <div class="menu-list left">
                <div
                    @mouseenter="item.childrenFlag = true"
                    @mouseleave="item.childrenFlag = false"
                    class="nav-list"
                    @click="goToPath(item)"
                    v-for="(item, index) in menuLeftList"
                    :key="index"
                >
                <div @mouseenter="item.childrenFlag = true" @mouseleave="item.childrenFlag = false" class="nav-list"
                    @click="goToPath(item)" v-for="(item, index) in menuLeftList" :key="index">
                    <span :class="{ on: currentUrl.indexOf(item.path) != -1 }">{{ item.menuName }}</span>
                    <div class="sub-nav-list" v-show="item.children && item.childrenFlag">
                        <div
                            v-for="(subItem, subIndex) in item.children"
                            :key="subIndex"
                            @click="goToPath(subItem)"
                        >{{ subItem.menuName }}</div>
                        <div v-for="(subItem, subIndex) in item.children" :key="subIndex" @click="goToPath(subItem)">{{
                            subItem.menuName
                        }}</div>
                    </div>
                </div>
            </div>
@@ -37,21 +29,13 @@
            <!-- 菜单导航 -->
            <div class="menu-list right">
                <div
                    @mouseenter="item.childrenFlag = true"
                    @mouseleave="item.childrenFlag = false"
                    class="nav-list"
                    @click="goToPath(item)"
                    v-for="(item, index) in menuRightList"
                    :key="index"
                >
                <div @mouseenter="item.childrenFlag = true" @mouseleave="item.childrenFlag = false" class="nav-list"
                    @click="goToPath(item)" v-for="(item, index) in menuRightList" :key="index">
                    <span :class="{ on: currentUrl.indexOf(item.path) != -1 }">{{ item.menuName }}</span>
                    <div class="sub-nav-list" v-show="item.children && item.childrenFlag">
                        <div
                            v-for="(subItem, subIndex) in item.children"
                            :key="subIndex"
                            @click="goToPath(subItem)"
                        >{{ subItem.menuName }}</div>
                        <div v-for="(subItem, subIndex) in item.children" :key="subIndex" @click="goToPath(subItem)">{{
                            subItem.menuName
                        }}</div>
                    </div>
                </div>
            </div>
@@ -90,32 +74,22 @@
            <!-- 地图区域 -->
            <map-box ref="modalForm">
                <!-- 主体内容区域 -->
                <div
                    slot="mainContent"
                    class="main-content"
                    id="MainContent"
                    :class="{ 'spread': leftShow && show, 'take-back': leftShow && !show }"
                >
                <div slot="mainContent" class="main-content" id="MainContent"
                    :class="{ 'spread': leftShow && show, 'take-back': leftShow && !show }">
                    <router-view ref="target-name"></router-view>
                </div>
                <el-button
                    slot="showButton"
                    v-show="leftShow"
                    class="flexible-btn"
                <el-button slot="showButton" v-show="leftShow" class="flexible-btn"
                    :class="{ 'spread': leftShow && show, 'take-back': leftShow && !show }"
                    :icon="show ? 'el-icon-arrow-left' : 'el-icon-arrow-right'"
                    id="FlexibleBtn"
                    type="primary"
                    @click="flexibelClick"
                ></el-button>
                    :icon="show ? 'el-icon-arrow-left' : 'el-icon-arrow-right'" id="FlexibleBtn" type="primary"
                    @click="flexibelClick"></el-button>
            </map-box>
        </div>
    </div>
</template>
<script>
import { getUserInfo } from '@/utils/auth'
import { getUserInfo,getToken } from '@/utils/auth'
export default {
    data () {
        return {
@@ -157,7 +131,7 @@
                {
                    menuName: '运维管理',
                    openExternal: true,
                    path: 'http://10.141.11.11:8081/#/login'
                    path: 'http://192.168.0.126:1888/#/security/security'
                }
            ],
@@ -221,7 +195,9 @@
         */
        goToPath (params) {
            if (params.openExternal) {
                window.open(params.path)
                var path = params.path + "?token=" + getToken()
                console.log(path,3333)
                window.open(path)
                return
            }
@@ -336,7 +312,7 @@
            overflow: hidden;
            letter-spacing: 6px;
            & > img {
            &>img {
                // width: 100%;
                height: 80%;
                margin: 0 10px 0 10px;
@@ -352,7 +328,7 @@
                // border-radius: 10px 16px 10px 16px;
                transform: skew(58deg);
                & > span {
                &>span {
                    transform: skew(-58deg);
                }
            }
@@ -366,7 +342,7 @@
                // border-radius: 16px 10px 16px 10px;
                transform: skew(-58deg);
                & > span {
                &>span {
                    transform: skew(58deg);
                }
            }
@@ -376,10 +352,11 @@
            display: flex;
            align-items: center;
            & > .nav-list {
            &>.nav-list {
                // color: rgba(32, 106, 181, 1);
                // border-bottom: 2px solid #409eff;
                & > span.on {
                &>span.on {
                    color: rgba(252, 189, 86, 1);
                }
            }
@@ -508,7 +485,7 @@
                    justify-content: space-around;
                    padding-top: 4px;
                    & > div {
                    &>div {
                        width: 100px;
                        height: 40px;
                        background-color: rgba(168, 222, 255, 0.6);
@@ -532,7 +509,11 @@
        height: 100%;
        .main-content.spread {
            position: absolute;
            top: 60px;
            height: calc(100% - 60px);
            width: 400px;
            z-index: 99;
        }
        .main-content.take-back {
src/views/police/index.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 16:18:17
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-01-11 15:31:39
 * @LastEditTime: 2023-01-12 17:14:12
 * @FilePath: \srs-police-affairs\src\views\police\index.vue
 * @Description: 辖区管理
 * 
@@ -24,33 +24,30 @@
                <div class="search-box" ref="tableSearchBox">
                    资源名称:
                    <input v-model="searchValue" @input="searchChange" type="text" placeholder="请输入搜索条件" />
                    <button @click="searchClick" class="el-icon-search"></button>
                </div>
                <div v-show="searchValBoxShow" class="search-val-box">
                    <div @click="searchVlaClick(item)" v-for="(item, index) in searchArray" :key="index">{{ item.name }}
                    </div>
                </div>
                <div class="list" v-show="navType == 1">
                    <el-table :data="carList"
                <div class="list">
                    <el-table :data="equimentTableData"
                        :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
                        :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75', 'cursor': 'pointer' }"
                        :height="currentTableHeight">
                        <el-table-column prop="serialNumber" label="编号" min-width="25%"></el-table-column>
                        <el-table-column prop="carType" label="类型" min-width="25%"></el-table-column>
                        <el-table-column prop="status" label="状态" min-width="25%">
                        <el-table-column prop="name" :show-overflow-tooltip="true" label="名称"
                            min-width="30%"></el-table-column>
                        <el-table-column prop="channelId" :show-overflow-tooltip="true" label="通道编号"
                            min-width="24%"></el-table-column>
                        <el-table-column prop="status" label="状态" min-width="18%">
                            <template slot-scope="scope">
                                <div class="state-box" :class="{ online: scope.row.status == '1' }"></div>
                            </template>
                        </el-table-column>
                        <el-table-column label="操作" align="center" min-width="25%">
                        <el-table-column label="操作" align="center" min-width="28%">
                            <template slot-scope="scope">
                                <el-button @click="rowClick(scope.row)" type="text" size="small" title="定位">
                                    <i class="el-icon-location"></i>
                                </el-button>
                                <el-button @click="carDetail(scope.row)" type="text" size="small" title="轨迹">
                                <el-button v-show="navType == 0" @click="carDetail(scope.row)" type="text" size="small"
                                    title="轨迹">
                                    <i class="el-icon-position"></i>
                                </el-button>
                                <el-button @click="play(scope.row)" type="text" size="small" title="播放视频">
@@ -61,119 +58,8 @@
                    </el-table>
                    <div class="pages">
                        <el-pagination background layout="prev, pager, next" :page-size="pagesize"
                            :page-count="carPagesCount" :current-page="currentPage"
                            @current-change="handleCurrentChange"></el-pagination>
                    </div>
                </div>
                <div class="list" v-show="navType == 2">
                    <el-table :data="phoneList.slice((currentPage - 1) * pagesize, currentPage * pagesize)"
                        style="width: 100%"
                        :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
                        :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75', 'cursor': 'pointer' }"
                        :height="currentTableHeight">
                        <el-table-column prop="name" label="名称" min-width="25%"
                            :show-overflow-tooltip="true"></el-table-column>
                        <el-table-column prop="phoneType" label="类型" min-width="25%"></el-table-column>
                        <el-table-column prop="state" label="状态" min-width="25%">
                            <template slot-scope="scope">
                                <div class="state-box" :class="{ online: scope.row.state == '在线' }"></div>
                            </template>
                        </el-table-column>
                        <el-table-column label="操作" align="center" min-width="25%">
                            <template slot-scope="scope">
                                <el-button @click="rowClick(scope.row)" type="text" size="small" title="定位">
                                    <i class="el-icon-location"></i>
                                </el-button>
                                <el-button @click="carDetail(scope.row)" type="text" size="small" title="轨迹">
                                    <i class="el-icon-position"></i>
                                </el-button>
                                <el-button @click="play(scope.row)" type="text" size="small" title="播放视频">
                                    <i class="el-icon-video-play"></i>
                                </el-button>
                            </template>
                        </el-table-column>
                    </el-table>
                    <div class="pages">
                        <el-pagination background layout="prev, pager, next" :total="phoneList.length"
                            :page-size="pagesize" pager-count="3" :current-page="currentPage"
                            @current-change="handleCurrentChange"></el-pagination>
                    </div>
                </div>
                <div class="list" v-show="navType == 3">
                    <el-table :data="dtList.slice((currentPage - 1) * pagesize, currentPage * pagesize)"
                        style="width: 100%"
                        :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
                        :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75', 'cursor': 'pointer' }"
                        :height="currentTableHeight">
                        <el-table-column prop="name" label="名称" min-width="40%"
                            :show-overflow-tooltip="true"></el-table-column>
                        <el-table-column prop="dtType" label="类型" min-width="20%"></el-table-column>
                        <el-table-column prop="state" label="状态" min-width="15%">
                            <template slot-scope="scope">
                                <div class="state-box" :class="{ online: scope.row.state == '在线' }"></div>
                            </template>
                        </el-table-column>
                        <el-table-column label="操作" align="center" min-width="25%">
                            <template slot-scope="scope">
                                <el-button @click="rowClick(scope.row)" type="text" size="small" title="定位">
                                    <i class="el-icon-location"></i>
                                </el-button>
                                <el-button @click="carDetail(scope.row)" type="text" size="small" title="轨迹">
                                    <i class="el-icon-position"></i>
                                </el-button>
                                <el-button @click="play(scope.row)" type="text" size="small" title="播放视频">
                                    <i class="el-icon-video-play"></i>
                                </el-button>
                            </template>
                        </el-table-column>
                    </el-table>
                    <div class="pages">
                        <el-pagination background layout="prev, pager, next" :total="dtList.length"
                            :page-size="pagesize" pager-count="3" :current-page="currentPage"
                            @current-change="handleCurrentChange"></el-pagination>
                    </div>
                </div>
                <div class="list" v-show="navType == 4">
                    <el-table :data="zfList.slice((currentPage - 1) * pagesize, currentPage * pagesize)"
                        style="width: 100%"
                        :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
                        :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75', 'cursor': 'pointer' }"
                        :height="currentTableHeight">
                        <el-table-column prop="name" label="名称" min-width="25%"
                            :show-overflow-tooltip="true"></el-table-column>
                        <el-table-column prop="phoneType" label="类型" min-width="25%"></el-table-column>
                        <el-table-column label="状态" min-width="25%">
                            <template slot-scope="scope">
                                <div class="state-box" :class="{ online: scope.row.state == '在线' }"></div>
                            </template>
                        </el-table-column>
                        <el-table-column label="操作" align="center" min-width="25%">
                            <template slot-scope="scope">
                                <el-button @click="rowClick(scope.row)" type="text" size="small" title="定位">
                                    <i class="el-icon-location"></i>
                                </el-button>
                                <el-button @click="carDetail(scope.row)" type="text" size="small" title="轨迹">
                                    <i class="el-icon-position"></i>
                                </el-button>
                                <el-button @click="play(scope.row)" type="text" size="small" title="播放视频">
                                    <i class="el-icon-video-play"></i>
                                </el-button>
                            </template>
                        </el-table-column>
                    </el-table>
                    <div class="pages">
                        <el-pagination background layout="prev, pager, next" :total="zfList.length"
                            :page-size="pagesize" pager-count="3" :current-page="currentPage"
                        <el-pagination background layout="prev, pager, next" :page-size="equimentPage.pageSize"
                            :page-count="equimentPage.count" :current-page="equimentPage.currentPage"
                            @current-change="handleCurrentChange"></el-pagination>
                    </div>
                </div>
@@ -182,7 +68,7 @@
            <div class="track-box" v-show="detailFlag">
                <div class="track-box-info">
                    <div class="back-btn" @click="goBack" title="轨迹">详细资料及轨迹查询</div>
                    <ul v-show="navType == 1">
                    <ul v-show="navType == 0">
                        <li>
                            <div>车辆型号:</div>
                            <div>SC7103</div>
@@ -217,7 +103,7 @@
                        </li>
                    </ul>
                    <ul v-show="navType == 2">
                    <ul v-show="navType == 1">
                        <li>
                            <div>型号:</div>
                            <div>350m</div>
@@ -263,6 +149,7 @@
            </div>
            <button @click="searchExtensivelyClick" class="el-icon-search"></button>
        </div>
        <div v-show="searchExtensivelyValBoxShow" class="searchExtensively-val-box">
            <div>
                <div @click="searchExtensivelyVlaClick(item)" v-for="(item, index) in searchExtensivelyArray"
@@ -272,42 +159,18 @@
        <el-dialog :title="dialogTitle" :modal="false" :visible.sync="dialogVisible" :before-close="dialogBeforeClose"
            :close-on-click-modal="true" class="car-video-box">
            <video src="/video/sp.mp4" autoplay controls width="100%" height="100%" ref="videoElement"
            <video autoplay controls width="100%" height="100%" ref="videoElement" id="videoElement"
                style="object-fit: fill"></video>
        </el-dialog>
        <el-dialog :title="phoneTitle" :modal="false" :visible.sync="phoneVisible" :before-close="phoneBeforeClose"
            :close-on-click-modal="true" class="phone-details-box">
            <div class="item">
                <div>责任人:</div>
                <div>{{ phoneDetails.person }}</div>
            </div>
            <div class="item">
                <div>联系方式:</div>
                <div>{{ phoneDetails.phoneID }}</div>
            </div>
            <div class="item">
                <div>类型:</div>
                <div>{{ phoneDetails.phoneType }}</div>
            </div>
            <div class="item">
                <div>所在地址:</div>
                <div>{{ phoneDetails.location }}</div>
            </div>
        </el-dialog>
    </div>
</template>
<script>
import { listQuery, accurateSearch } from "@/utils/search.js"
import phoneList from '@/assets/data/phone.js'
import zfList from '@/assets/data/zf.js'
import dtList from '@/assets/data/dt.js'
import { getHistoricalTrack } from '@/api/police/index.js'
import { getCarList } from '@/api/police/index.js'
import { getSearchExtensively } from '@/api/dept/index.js'
import { getDevices } from '@/api/video/index.js'
import flvjs from 'flv.js'
import { getEquipmentPaging } from "@/api/home/index.js"
let tc = null
@@ -316,55 +179,45 @@
export default {
    data () {
        return {
            navType: 1,
            currentPage: 1,
            pagesize: 13,
            carCurrentPage: 1,
            carPagesize: 13,
            carPagesCount: 1,
            carList: [],
            dtList: [],
            phoneList: [],
            zfList: [],
            navType: 0,
            dialogTitle: '',
            dialogVisible: false,
            phoneDetails: {},
            phoneTitle: '',
            phoneVisible: false,
            searchValue: '',
            searchArray: [],
            searchValBoxShow: false,
            currentTableHeight: 0,
            detailFlag: false,
            trackTime: [],
            options: [{
                value: '1',
                value: '0',
                label: '警车'
            }, {
                value: '2',
                label: '手持记录仪'
            }, {
                value: '3',
                label: '电台'
            }, {
                value: '4',
                label: '执法记录仪'
            }],
            typeValue: '1',
                value: '1',
                label: '摄像头'
            }
                // , {
                //     value: '3',
                //     label: '电台'
                // }, {
                //     value: '4',
                //     label: '执法记录仪'
                // }
            ],
            typeValue: '0',
            boxShow: true,
            carListSaveDate: [],
            searchExtensivelyValue: '',
            searchExtensivelyValBoxShow: false,
            searchExtensivelyArray: [],
            flvPlayer: null,
            equimentTableData: [],
            equimentPage: {
                total: 0,
                pageSize: 15,
                count: 0,
                currentPage: 1
            }
        }
    },
    created () {
        this.getCarList(this.carCurrentPage, this.carPagesize)
        this.dtList = dtList
        this.phoneList = phoneList
        this.zfList = zfList
        const that = this
        this.$nextTick(() => {
@@ -377,43 +230,21 @@
    mounted () {
        this.$parent.$parent.resize('400px', true)
        this.navClick(1)
        this.navClick()
        tc = new global.DC.TrackController(global.viewer)
    },
    methods: {
        handleCurrentChange: function (currentPage) {
            this.currentPage = currentPage
            this.carCurrentPage = currentPage
            this.getCarList(this.carCurrentPage, this.carPagesize)
        },
        // 搜索框改变事件
        searchChange () {
            this.detailFlag = false
        getCarList (current, size, serialNumber) {
            getCarList(current, size, serialNumber).then(res => {
                console.log(res.data.data, 6666)
                this.carPagesCount = res.data.data.pages
                this.carListSaveDate = res.data.data.records
                this.carList = res.data.data.records
            })
        },
        navClick (type) {
            if (!type) { type = 1 }
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'polylineLayer',
                type: 'VectorLayer'
            })
            this.detailFlag = false
            this.navType = type
            this.searchValue = ''
            this.searchValBoxShow = false
            this.searchArray = []
            this.carList = this.carListSaveDate
            this.dtList = dtList
            this.phoneList = phoneList
            this.zfList = zfList
            this.equimentPage.currentPage = 1
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'carLayers',
@@ -425,67 +256,108 @@
                type: 'VectorLayer'
            })
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'zfLayers',
                type: 'VectorLayer'
            })
            this.getEquipmentPaging({ type: this.navType })
        },
        // 设备分页处理
        handleCurrentChange (currentPage) {
            this.equimentPage.currentPage = currentPage
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'dtLayers',
                type: 'VectorLayer'
            })
            if (type == 1) {
                this.carList.forEach(item => {
                    this.$EventBus.$emit('layerPointAdd', {
                        layerName: 'carLayers',
                        type: "billboard",
                        params: {
                            name: item.name,
                            lng: item.lng,
                            lat: item.lat,
                            alt: item.alt,
                            url: item.url
                        },
                        incident: this.siteClick
                    })
                })
            } else if (type == 2) {
                this.phoneList.forEach(item => {
                    this.$EventBus.$emit('layerPointAdd', {
                        layerName: 'phoneLayers',
                        type: "billboard",
                        params: item,
                        incident: this.phoneSiteClick
                    })
                })
            } else if (type == 3) {
                this.dtList.forEach(item => {
                    this.$EventBus.$emit('layerPointAdd', {
                        layerName: 'dtLayers',
                        type: "billboard",
                        params: item,
                        incident: this.phoneSiteClick
                    })
                })
            } else if (type == 4) {
                this.zfList.forEach(item => {
                    this.$EventBus.$emit('layerPointAdd', {
                        layerName: 'zfLayers',
                        type: "billboard",
                        params: item,
                        incident: this.phoneSiteClick
                    })
                })
            }
            this.getEquipmentPaging({ type: this.navType })
        },
        // 获取设备分页数据
        getEquipmentPaging (params) {
            getEquipmentPaging({ page: this.equimentPage.currentPage, count: this.equimentPage.pageSize, ...params, query: this.searchValue }).then(res => {
                this.equimentTableData = []
                this.equimentPage.count = 0
                if (res.data.data.list.length > 0) {
                    this.equimentTableData = res.data.data.list.map(item => {
                        return { ...item, lng: item.longitude, lat: item.latitude, alt: 100 }
                    })
                    this.equimentTableData.forEach(item => {
                        if (this.navType == 0) {
                            this.$EventBus.$emit('layerPointAdd', {
                                layerName: 'carLayers',
                                type: "billboard",
                                params: {
                                    ...item,
                                    url: '/img/icon/car.png'
                                },
                                incident: this.siteClick
                            })
                        } else if (this.navType == 1) {
                            this.$EventBus.$emit('layerPointAdd', {
                                layerName: 'phoneLayers',
                                type: "billboard",
                                params: {
                                    ...item,
                                    url: '/img/icon/camera.png'
                                },
                                incident: this.siteClick
                            })
                        }
                    })
                    this.equimentPage.count = res.data.data.pages
                } else {
                    this.equimentTableData = []
                    this.equimentPage.total = 0
                }
            })
        },
        // 类别切换
        navClick (type) {
            if (type && type == this.navType) return
            this.detailFlag = false
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'polylineLayer',
                type: 'VectorLayer'
            })
            if (type) {
                this.navType = type
            }
            this.searchValue = ''
            this.equimentPage.currentPage = 1
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'carLayers',
                type: 'VectorLayer'
            })
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'phoneLayers',
                type: 'VectorLayer'
            })
            this.getEquipmentPaging({ type: this.navType })
        },
        // 表格行点击查看定位
        rowClick (row) {
            if (row.lng == 0 || row.lat == 0) {
                this.$message.error('暂无位置信息!')
                return
            }
            this.$EventBus.$emit('toPosition', {
                layerName: 'carLayers',
                siteJd: row.lng,
                siteWd: row.lat
            })
        },
        // 表格行点击查看轨迹
        carDetail (row) {
            this.detailFlag = true
        },
        async play (row) {
@@ -498,8 +370,8 @@
            }
            this.dialogTitle = row.name
            this.dialogVisible = true
            let flvUrl = ''
            await this.getDevices(row.channelId).then(res => {
                flvUrl = res
            })
@@ -510,20 +382,22 @@
                return
            }
            if (flvjs.isSupported()) {
                var videoElement = document.getElementById('videoElement')
                this.flvPlayer = flvjs.createPlayer({
                    type: 'flv',
                    isLive: true,
                    hasAudio: false,
                    url: flvUrl
                })
                this.flvPlayer.attachMediaElement(videoElement)
                this.flvPlayer.load()
                this.flvPlayer.play()
            }
            this.dialogVisible = true
            if (flvjs.isSupported()) {
                this.$nextTick(() => {
                    var videoElement = document.getElementById('videoElement')
                    this.flvPlayer = flvjs.createPlayer({
                        type: 'flv',
                        isLive: true,
                        hasAudio: false,
                        url: flvUrl
                    })
                    this.flvPlayer.attachMediaElement(videoElement)
                    this.flvPlayer.load()
                    this.flvPlayer.play()
                })
            }
        },
        async getDevices (channelId) {
@@ -538,20 +412,14 @@
            return flvAddress
        },
        // siteClick (e) {
        //     this.dialogTitle = e.overlay.attrParams.name
        //     this.dialogVisible = true
        siteClick (e) {
            this.dialogTitle = e.overlay.attrParams.name
            this.dialogVisible = true
        //     if (this.$refs.videoElement && this.$refs.videoElement != null) {
        //         this.$refs.videoElement.currentTime = 0
        //         this.$refs.videoElement.play()
        //     }
        // },
        phoneSiteClick (e) {
            this.phoneTitle = e.overlay.attrParams.name
            this.phoneDetails = e.overlay.attrParams
            this.phoneVisible = true
            if (this.$refs.videoElement && this.$refs.videoElement != null) {
                this.$refs.videoElement.currentTime = 0
                this.$refs.videoElement.play()
            }
        },
        dialogBeforeClose () {
@@ -559,63 +427,7 @@
            this.dialogVisible = false
        },
        phoneBeforeClose () {
            this.phoneVisible = false
        },
        searchChange () {
            if (this.searchValue == '') {
                this.searchValBoxShow = false
                this.searchArray = []
                this.carList = this.carListSaveDate
                this.dtList = dtList
                this.phoneList = phoneList
                this.zfList = zfList
            } else {
                if (this.navType == 1) {
                    this.searchArray = listQuery(this.carListSaveDate, this.searchValue, 'name')
                } else if (this.navType == 2) {
                    this.searchArray = listQuery(phoneList, this.searchValue, 'name')
                } else if (this.navType == 3) {
                    this.searchArray = listQuery(dtList, this.searchValue, 'name')
                } else if (this.navType == 4) {
                    this.searchArray = listQuery(zfList, this.searchValue, 'name')
                }
                this.searchValBoxShow = true
            }
        },
        searchClick () {
            this.searchValBoxShow = false
            if (this.navType == 1) {
                this.getCarList(this.carCurrentPage, this.carPagesize, this.searchValue)
            } else if (this.navType == 2) {
                this.phoneList = accurateSearch(phoneList, this.searchValue, 'name')
            } else if (this.navType == 3) {
                this.dtList = accurateSearch(phoneList, this.searchValue, 'name')
            } else if (this.navType == 4) {
                this.zfList = accurateSearch(zfList, this.searchValue, 'name')
            }
        },
        searchVlaClick (item) {
            this.searchValBoxShow = false
            this.searchArray = []
            if (this.navType == 1) {
                this.carList = [item]
            } else if (this.navType == 2) {
                this.phoneList = [item]
            } else if (this.navType == 3) {
                this.dtList = [item]
            } else if (this.navType == 4) {
                this.zfList = [item]
            }
        },
        carDetail (row) {
            this.detailFlag = true
        },
        // 轨迹返回
        goBack () {
            this.detailFlag = !this.detailFlag
            this.trackTime = []
@@ -630,6 +442,7 @@
            tc.removeTrack(track)
        },
        // 查看轨迹
        async lookTrack () {
            if (this.trackTime.length == 0) {
                this.$message({ message: "请选择开始时间", duration: 2000 })
@@ -842,7 +655,6 @@
            this.searchExtensivelyChange()
        },
    },
    destroyed () {
@@ -853,16 +665,6 @@
        this.$EventBus.$emit('mapRemoveLayer', {
            layerName: 'phoneLayers',
            type: 'VectorLayer'
        })
        this.$EventBus.$emit('mapRemoveLayer', {
            layerName: 'zfLayers',
            type: 'VectorLayer'
        })
        this.$EventBus.$emit('mapRemoveLayer', {
            layerName: 'dtLayers',
            type: 'VectorLayer'
        })
@@ -933,7 +735,7 @@
                    background-color: rgba(24, 79, 202, 0.6);
                    // border: 1px solid rgb(0, 92, 169);
                    border: 1px solid rgb(24, 79, 202);
                    border-radius: 20px 0 0 20px;
                    border-radius: 20px;
                }
                input:focus {
@@ -942,46 +744,6 @@
                input::-webkit-input-placeholder {
                    color: rgba(238, 238, 238, 0.7);
                }
                button {
                    font-size: 24px;
                    font-weight: 700;
                    width: 80px;
                    height: 100%;
                    background-color: $table-body-tr-n-color;
                    color: #fff;
                    border: 1px solid rgb(0, 92, 169);
                    cursor: pointer;
                    border-radius: 0 20px 20px 0;
                }
                button:active {
                    background-color: $table-body-tr-2n-color;
                    border: 1px solid rgb(0, 92, 169);
                }
            }
            .search-val-box {
                display: flex;
                flex-direction: column;
                position: absolute;
                top: 48px;
                left: 6px;
                width: calc(100% - 12px);
                max-height: 160px;
                text-align: left;
                color: #fff;
                background: $el-dialog-bg-color;
                z-index: 1111;
                border-radius: 10px;
                overflow-y: auto;
                &>div {
                    height: 100%;
                    padding: 0 10px;
                    line-height: 36px;
                    cursor: pointer;
                }
            }
src/views/video/list.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 16:18:17
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-01-11 15:46:01
 * @LastEditTime: 2023-01-12 17:08:15
 * @FilePath: \srs-police-affairs\src\views\video\list.vue
 * @Description: 辖区管理
 * 
@@ -221,21 +221,22 @@
                return
            }
            this.dialogVisible = true
            if (flvjs.isSupported()) {
                var videoElement = document.getElementById('videoElement')
                this.flvPlayer = flvjs.createPlayer({
                    type: 'flv',
                    isLive: true,
                    hasAudio: false,
                    url: flvUrl
                this.$nextTick(() => {
                    var videoElement = document.getElementById('videoElement')
                    this.flvPlayer = flvjs.createPlayer({
                        type: 'flv',
                        isLive: true,
                        hasAudio: false,
                        url: flvUrl
                    })
                    this.flvPlayer.attachMediaElement(videoElement)
                    this.flvPlayer.load()
                    this.flvPlayer.play()
                })
                this.flvPlayer.attachMediaElement(videoElement)
                this.flvPlayer.load()
                this.flvPlayer.play()
            }
            this.dialogVisible = true
        },
        dialogBeforeClose () {