shuishen
2022-12-30 23f9c349c45117a8d2faa17e70395613fc03e6c7
Merge branch 'master' of http://192.168.0.105:10010/r/srs-police-affairs
2 files modified
1 files added
1765 ■■■■■ changed files
src/styles/media/index.scss 2 ●●● patch | view | raw | blame | history
src/views/activity/index.vue 245 ●●●● patch | view | raw | blame | history
src/views/activity/index1.vue 1518 ●●●●● patch | view | raw | blame | history
src/styles/media/index.scss
@@ -1472,7 +1472,7 @@
                                        min-width: countSizeVw(60, 1920);
                                        line-height: countSizeVh(30);
                                        height: countSizeVh(30);
                                        margin: 0 countSizeVw(5, 1920);
                                        margin: countSizeVh(7) countSizeVw(5, 1920);
                                        border: countSizeVh(1) solid #cecece;
                                        border-radius: countSizeVh(4) countSizeVw(4, 1920);
                                        font-size: countSizeVh(16);
src/views/activity/index.vue
@@ -17,9 +17,19 @@
                <div>
                    <div class="category">活动类型:</div>
                    <div class="category-value">
                        <el-select size="small" v-model="activityType" placeholder="请选择" @change="activityTypeChange">
                            <el-option v-for="item in activityOptions" :key="item.dictKey" :label="item.dictValue"
                                :value="item.dictKey" class="activity-option"></el-option>
                        <el-select
                            size="small"
                            v-model="activityType"
                            placeholder="请选择"
                            @change="activityTypeChange"
                        >
                            <el-option
                                v-for="item in activityOptions"
                                :key="item.dictKey"
                                :label="item.dictValue"
                                :value="item.dictKey"
                                class="activity-option"
                            ></el-option>
                        </el-select>
                    </div>
                </div>
@@ -34,26 +44,46 @@
                            placeholder="选择日期"
                            style="width:268px"
                        ></el-date-picker>-->
                        <el-date-picker v-model="selectTime" type="daterange" align="right" unlink-panels
                            format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss" range-separator="至"
                            start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions"
                            @change="activityTimeChange"></el-date-picker>
                        <el-date-picker
                            v-model="selectTime"
                            type="daterange"
                            align="right"
                            unlink-panels
                            format="yyyy-MM-dd HH:mm:ss"
                            value-format="yyyy-MM-dd HH:mm:ss"
                            range-separator="至"
                            start-placeholder="开始日期"
                            end-placeholder="结束日期"
                            :picker-options="pickerOptions"
                            @change="activityTimeChange"
                        ></el-date-picker>
                    </div>
                </div>
                <div>
                    <div class="category">活动名称:</div>
                    <div class="category-value">
                        <input type="text" placeholder="请输入活动名称" v-model="searchActivity" class="category-input"
                            @input="inputChange" />
                        <input
                            type="text"
                            placeholder="请输入活动名称"
                            v-model="searchActivity"
                            class="category-input"
                            @input="inputChange"
                        />
                        <button class="category-button el-icon-search" @click="searchClick"></button>
                    </div>
                </div>
            </div>
            <div class="result-content">
                <div class="table-box">
                    <div v-show="activityList.length > 0" class="row-box" :class="{ on: currentClickIndex === index }"
                        v-for="(item, index) in activityList" :key="index" @click="activityListClick(item, index)">
                    <div
                        v-show="activityList.length > 0"
                        class="row-box"
                        :class="{ on: currentClickIndex === index }"
                        v-for="(item, index) in activityList"
                        :key="index"
                        @click="activityListClick(item, index)"
                    >
                        <div class="row-title">常规安保</div>
                        <div class="row-content">
                            <div>
@@ -66,7 +96,9 @@
                            </div>
                            <div>
                                <div class="category">活动时间:</div>
                                <div class="category-value">{{ item.startTime }} 至 {{ item.endTime }}</div>
                                <div
                                    class="category-value"
                                >{{ item.startTime }} 至 {{ item.endTime }}</div>
                            </div>
                            <div>
                                <div class="category">活动详情:</div>
@@ -78,34 +110,38 @@
                    <div v-show="activityList == 0" class="no-data">暂无数据</div>
                </div>
                <div class="pages">
                    <el-pagination background layout="prev, pager, next" :page-size="pagesize" :page-count="pagesCount"
                        :current-page="currentPage" @current-change="handleCurrentChange"></el-pagination>
                    <el-pagination
                        background
                        layout="prev, pager, next"
                        :page-size="pagesize"
                        :page-count="pagesCount"
                        :current-page="currentPage"
                        @current-change="handleCurrentChange"
                    ></el-pagination>
                </div>
            </div>
        </div>
        <div class="draw-btn-box" v-show="dialogVisible">
        <div class="draw-btn-box" v-show="arrangeVisible">
            <div>
                <span>警力资源:</span>
                <ul>
                    <li>
                        <button @click="draw('billboard', 'policeman')">警员</button>
                        <button @click="draw('billboard', 'policeman')">
                            <img
                                src="../../../public/img/icon/police-people-btn.png"
                                style="height:100%"
                            />
                        </button>
                    </li>
                    <li>
                        <button @click="draw('polyline', 'policeman')">警员路线</button>
                        <button @click="draw('billboard', 'policecar')">
                            <img src="../../../public/img/icon/car-btn.png" style="height:100%" />
                        </button>
                    </li>
                    <li>
                        <button @click="draw('polygon', 'policeman')">警员范围</button>
                    </li>
                    <li>
                        <button @click="draw('billboard', 'policecar')">警车</button>
                    </li>
                    <li>
                        <button @click="draw('polyline', 'policecar')">警车路线</button>
                    </li>
                    <li>
                        <button @click="draw('polygon', 'policecar')">警车范围</button>
                        <button @click="draw('polyline', 'policecar')">巡逻路线</button>
                    </li>
                </ul>
            </div>
@@ -114,22 +150,19 @@
                <ul>
                    <li>
                        <button @click="draw('billboard', 'policeman')">警员</button>
                        <button @click="drawArrow('attack_arrow')">进攻箭头</button>
                    </li>
                    <li>
                        <button @click="draw('polyline', 'policeman')">警员路线</button>
                        <button @click="drawArrow('double_arrow')">双箭头</button>
                    </li>
                    <li>
                        <button @click="draw('polygon', 'policeman')">警员范围</button>
                        <button @click="drawArrow('fine_arrow')">直箭头</button>
                    </li>
                    <li>
                        <button @click="draw('billboard', 'policecar')">警车</button>
                        <button @click="drawArrow('tailed_attack_arrow')">燕尾箭头</button>
                    </li>
                    <li>
                        <button @click="draw('polyline', 'policecar')">警车路线</button>
                    </li>
                    <li>
                        <button @click="draw('polygon', 'policecar')">警车范围</button>
                        <button @click="removeAllArrow()">清除</button>
                    </li>
                </ul>
            </div>
@@ -137,8 +170,11 @@
                <span>撤离路线:</span>
                <ul>
                    <li>
                        <el-button title="路线绘制" @click="draw('billboard', 'policeman')" icon="el-icon-my-route">
                        </el-button>
                        <el-button
                            title="路线绘制"
                            @click="draw('billboard', 'policeman')"
                            icon="el-icon-my-route"
                        ></el-button>
                    </li>
                </ul>
            </div>
@@ -161,17 +197,17 @@
            <div class="row-box">
                <div class="category">活动时间:</div>
                <div class="category-value">{{ activityDetails.startTime }} 至 {{ activityDetails.endTime }}</div>
                <div
                    class="category-value"
                >{{ activityDetails.startTime }} 至 {{ activityDetails.endTime }}</div>
            </div>
            <div class="row-box">
                <div class="category">活动内容1:</div>
                <div class="category-value">
                    {{ activityDetails.content }}
                </div>
                <div class="category-value">{{ activityDetails.content }}</div>
            </div>
            <div class="row-box">
            <!-- <div class="row-box">
                <div class="category">应急预案:</div>
                <div class="category-value">
                    <el-switch v-model="polylineSwitch" @change="switchChange" active-color="#13ce66"
@@ -185,7 +221,7 @@
                    <el-switch v-model="polylineBtnSwitch" @change="switchBtnChange" active-color="#13ce66"
                        inactive-color="#ccc"></el-switch>
                </div>
            </div>
            </div>-->
            <!-- <div class="row-box">
                <div class="category">分析范围:</div>
@@ -201,9 +237,33 @@
            </div>-->
            <div class="row-box">
                <el-button>
                    预案布置
                </el-button>
                <el-button @click="arrangeDraw">预案布置</el-button>
            </div>
        </div>
        <div class="plan-control">
            <div class="row-box">
                <div class="category">应急预案:</div>
                <div class="category-value">
                    <el-switch
                        v-model="polylineSwitch"
                        @change="switchChange"
                        active-color="#13ce66"
                        inactive-color="#ccc"
                    ></el-switch>
                </div>
            </div>
            <div class="row-box">
                <div class="category">巡逻路线:</div>
                <div class="category-value">
                    <el-switch
                        v-model="polylineBtnSwitch"
                        @change="switchBtnChange"
                        active-color="#13ce66"
                        inactive-color="#ccc"
                    ></el-switch>
                </div>
            </div>
        </div>
@@ -233,12 +293,22 @@
            </ul>
        </div>
        <el-dialog :title="policeChooseTitle" :modal="true" :visible.sync="policeChooseVisible"
            :before-close="policeChooseBeforeClose" :close-on-click-modal="true" class="choose-police-box">
        <el-dialog
            :title="policeChooseTitle"
            :modal="true"
            :visible.sync="policeChooseVisible"
            :before-close="policeChooseBeforeClose"
            :close-on-click-modal="true"
            class="choose-police-box"
        >
            <div>
                <el-select size="small" v-model="policeType" placeholder="请选择">
                    <el-option v-for="item in policeOption" :key="item.value" :label="item.label"
                        :value="item.value"></el-option>
                    <el-option
                        v-for="item in policeOption"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value"
                    ></el-option>
                </el-select>
                <el-button @click="determine">确定</el-button>
                <el-button @click="cancel">取消</el-button>
@@ -253,7 +323,9 @@
let analyseLayer = null
let analysePolygon = null
let drawLayers = null
let drawArrowLayers = null
let plot = undefined
let arrowPlot = undefined
let tc = undefined
let track = undefined
let loading = null
@@ -418,6 +490,7 @@
                label: 'label'
            },
            dialogVisible: false,
            arrangeVisible: false,
            currentClickIndex: '',
            polylineSwitch: false,
            polylineBtnSwitch: false,
@@ -458,6 +531,12 @@
                global.viewer.addLayer(drawLayers)
                plot = new global.DC.Plot(global.viewer)
            }
            if (drawArrowLayers == null) {
                drawArrowLayers = new global.DC.VectorLayer('drawArrowLayers')
                global.viewer.addLayer(drawArrowLayers)
                arrowPlot = new global.DC.Plot(global.viewer)
            }
            // 轨迹
            let positions = "116.023042, 28.684732; 116.023402, 28.679067; 116.023475, 28.678843; 116.023697, 28.678647; 116.024121, 28.678391; 116.026906, 28.678461; 116.027065, 28.676867; 116.033252, 28.676165"
            tc = new global.DC.TrackController(global.viewer)
@@ -491,6 +570,7 @@
                })
            })
        },
        // 生成热力图坐标
        generatePosition (num) {
            let list = []
@@ -607,7 +687,7 @@
                                id: item.id,
                                carId: item.carId
                            },
                            incident: this.overlayTypeClick
                            // incident: this.overlayTypeClick
                        })
                    } else if (item.type == 2) {
                        let positionNewArr = this.convertPolylineOrPolygonPositionDate(item.position, item.type)
@@ -619,7 +699,7 @@
                                id: item.id,
                                carId: item.carId
                            },
                            incident: this.overlayTypeClick
                            // incident: this.overlayTypeClick
                        })
                    } else if (item.type == 3) {
@@ -723,7 +803,7 @@
            if (iconName == 'activity') {
                positionObj = { lng: `${positionArr[0]}`, lat: `${positionArr[1]}`, alt: 100, url: '/img/icon/activity.png' }
            } else if (iconName == 'policeman') {
                positionObj = { lng: `${positionArr[0]}`, lat: `${positionArr[1]}`, alt: 100, url: '/img/icon/police.png', id: plotId, policemanId: policeId }
                positionObj = { lng: `${positionArr[0]}`, lat: `${positionArr[1]}`, alt: 100, url: '/img/icon/police-people.png', id: plotId, policemanId: policeId }
            } else if (iconName == 'policecar') {
                positionObj = { lng: `${positionArr[0]}`, lat: `${positionArr[1]}`, alt: 100, url: '/img/icon/car.png', id: plotId, carId: policeId }
            }
@@ -914,7 +994,7 @@
                        overlay.policeType = policeType
                        this.overlayObj = overlay
                        document.oncontextmenu = function () {
                            if (flag == true) {
                            if (flag == true && poltType == 'billboard') {
                                if (policeType == 'policeman') {
                                    that.policeChooseTitle = '选择警员'
                                    that.policeOption = that.policemanOption
@@ -924,11 +1004,16 @@
                                }
                                that.policeChooseVisible = true
                                flag = false
                            }
                        }
                            } else if (flag == true && poltType == 'polyline') {
                                let position = ''
                                overlay._positions.forEach(item => {
                                    position += item._lng + ' ' + item._lat + ','
                    })
                                position = position.slice(0, position.length - 1)
                                that.addActivityPolice(this.policeType, position, this.showingSecurityId, 1)
                            }
                        }
                    })
                }
            })
        },
@@ -936,6 +1021,23 @@
        // 删除所有地图绘制元素
        removeAll () {
            drawLayers.clear()
        },
        drawArrow (type) {
            arrowPlot && arrowPlot.draw(type, overlay => {
                if (overlay) {
                    drawArrowLayers.addOverlay(overlay)
                    plot.edit(overlay)
                }
            })
        },
        removeAllArrow () {
            drawArrowLayers.clear()
        },
        arrangeDraw () {
            this.arrangeVisible = true
        },
        // 播放轨迹
@@ -1351,6 +1453,33 @@
        }
    }
    .plan-control {
        position: fixed;
        top: 90px;
        right: 450px;
        width: 180px;
        padding: 10px;
        color: #fff;
        background-color: $bg-color;
        .row-box {
            width: 100%;
            line-height: 28px;
            display: flex;
            & > div {
                text-align: left;
            }
            .category {
                width: 96px;
            }
            .category-value {
                flex: 1;
            }
        }
    }
    .btn-box {
        position: fixed;
        top: 78px;
src/views/activity/index1.vue
New file
@@ -0,0 +1,1518 @@
<!--
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 16:18:17
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2022-12-29 15:46:00
 * @FilePath: \srs-police-affairs\src\views\activity\index.vue
 * @Description: 安保活动
 *
 * Copyright (c) 2022 by shuishen 1109946754@qq.com, All Rights Reserved.
-->
<template>
    <div class="activity-page container">
        <div v-show="boxShow" class="container-content">
            <div class="title">安保活动</div>
            <div class="search-box">
                <div>
                    <div class="category">活动类型:</div>
                    <div class="category-value">
                        <el-select
                            size="small"
                            v-model="activityType"
                            placeholder="请选择"
                            @change="activityTypeChange"
                        >
                            <el-option
                                v-for="item in activityOptions"
                                :key="item.dictKey"
                                :label="item.dictValue"
                                :value="item.dictKey"
                                class="activity-option"
                            ></el-option>
                        </el-select>
                    </div>
                </div>
                <div>
                    <div class="category">选择时间:</div>
                    <div class="category-value">
                        <!-- <el-date-picker
                            size="small"
                            v-model="selectTime"
                            type="date"
                            placeholder="选择日期"
                            style="width:268px"
                        ></el-date-picker>-->
                        <el-date-picker
                            v-model="selectTime"
                            type="daterange"
                            align="right"
                            unlink-panels
                            format="yyyy-MM-dd HH:mm:ss"
                            value-format="yyyy-MM-dd HH:mm:ss"
                            range-separator="至"
                            start-placeholder="开始日期"
                            end-placeholder="结束日期"
                            :picker-options="pickerOptions"
                            @change="activityTimeChange"
                        ></el-date-picker>
                    </div>
                </div>
                <div>
                    <div class="category">活动名称:</div>
                    <div class="category-value">
                        <input
                            type="text"
                            placeholder="请输入活动名称"
                            v-model="searchActivity"
                            class="category-input"
                            @input="inputChange"
                        />
                        <button class="category-button el-icon-search" @click="searchClick"></button>
                    </div>
                </div>
            </div>
            <div class="result-content">
                <div class="table-box">
                    <div
                        v-show="activityList.length > 0"
                        class="row-box"
                        :class="{ on: currentClickIndex === index }"
                        v-for="(item, index) in activityList"
                        :key="index"
                        @click="activityListClick(item, index)"
                    >
                        <div class="row-title">常规安保</div>
                        <div class="row-content">
                            <div>
                                <div class="category">活动名称:</div>
                                <div class="category-value">{{ item.name }}</div>
                            </div>
                            <div>
                                <div class="category">申报人数:</div>
                                <div class="category-value">{{ item.number }}</div>
                            </div>
                            <div>
                                <div class="category">活动时间:</div>
                                <div
                                    class="category-value"
                                >{{ item.startTime }} 至 {{ item.endTime }}</div>
                            </div>
                            <div>
                                <div class="category">活动详情:</div>
                                <div class="category-value">{{ item.content }}</div>
                            </div>
                        </div>
                    </div>
                    <div v-show="activityList == 0" class="no-data">暂无数据</div>
                </div>
                <div class="pages">
                    <el-pagination
                        background
                        layout="prev, pager, next"
                        :page-size="pagesize"
                        :page-count="pagesCount"
                        :current-page="currentPage"
                        @current-change="handleCurrentChange"
                    ></el-pagination>
                </div>
            </div>
        </div>
        <div class="draw-btn-box" v-show="arrangeVisible">
            <div>
                <span>警力资源:</span>
                <ul>
                    <li>
                        <button @click="draw('billboard', 'policeman')">
                            <img src="../../../public/img/icon/police.png" style="height:100%" />
                        </button>
                    </li>
                    <li>
                        <button @click="draw('polyline', 'policeman')">警员路线</button>
                    </li>
                    <li>
                        <button @click="draw('polygon', 'policeman')">警员范围</button>
                    </li>
                    <li>
                        <button @click="draw('billboard', 'policecar')">
                            <img src="../../../public/img/icon/car.png" style="height:100%" />
                        </button>
                    </li>
                    <li>
                        <button @click="draw('polyline', 'policecar')">警车路线</button>
                    </li>
                    <li>
                        <button @click="draw('polygon', 'policecar')">警车范围</button>
                    </li>
                </ul>
            </div>
            <div>
                <span>作战标绘:</span>
                <ul>
                    <li>
                        <button @click="drawArrow('attack_arrow')">进攻箭头</button>
                    </li>
                    <li>
                        <button @click="drawArrow('double_arrow')">双箭头</button>
                    </li>
                    <li>
                        <button @click="drawArrow('fine_arrow')">直箭头</button>
                    </li>
                    <li>
                        <button @click="drawArrow('tailed_attack_arrow')">燕尾箭头</button>
                    </li>
                    <li>
                        <button @click="removeAllArrow()">清除</button>
                    </li>
                </ul>
            </div>
            <div>
                <span>撤离路线:</span>
                <ul>
                    <li>
                        <el-button
                            title="路线绘制"
                            @click="draw('billboard', 'policeman')"
                            icon="el-icon-my-route"
                        ></el-button>
                    </li>
                </ul>
            </div>
        </div>
        <div class="second-container" :class="{ 'spread': boxShow, 'take-back': !boxShow }">
            <el-tree :data="treeData" show-checkbox node-key="id" @check="treeCheckClick"></el-tree>
        </div>
        <div v-show="dialogVisible" class="activity-details-box">
            <div class="title">
                活动详情
                <div class="close" @click="closeActivityDetails"></div>
            </div>
            <div class="row-box">
                <div class="category">活动名称:</div>
                <div class="category-value">{{ activityDetails.name }}</div>
            </div>
            <div class="row-box">
                <div class="category">活动时间:</div>
                <div
                    class="category-value"
                >{{ activityDetails.startTime }} 至 {{ activityDetails.endTime }}</div>
            </div>
            <div class="row-box">
                <div class="category">活动内容1:</div>
                <div class="category-value">{{ activityDetails.content }}</div>
            </div>
            <!-- <div class="row-box">
                <div class="category">应急预案:</div>
                <div class="category-value">
                    <el-switch v-model="polylineSwitch" @change="switchChange" active-color="#13ce66"
                        inactive-color="#ccc"></el-switch>
                </div>
            </div>
            <div class="row-box">
                <div class="category">巡逻路线:</div>
                <div class="category-value">
                    <el-switch v-model="polylineBtnSwitch" @change="switchBtnChange" active-color="#13ce66"
                        inactive-color="#ccc"></el-switch>
                </div>
            </div>-->
            <!-- <div class="row-box">
                <div class="category">分析范围:</div>
                <div class="category-value">
                    <el-input
                        @input="analyseChange"
                        size="mini"
                        type="number"
                        v-model="analyseInput"
                        placeholder="请输入范围"
                    ></el-input>
                </div>
            </div>-->
            <div class="row-box">
                <el-button @click="arrangeDraw">预案布置</el-button>
            </div>
        </div>
        <div class="plan-control">
            <div class="row-box">
                <div class="category">应急预案:</div>
                <div class="category-value">
                    <el-switch
                        v-model="polylineSwitch"
                        @change="switchChange"
                        active-color="#13ce66"
                        inactive-color="#ccc"
                    ></el-switch>
                </div>
            </div>
            <div class="row-box">
                <div class="category">巡逻路线:</div>
                <div class="category-value">
                    <el-switch
                        v-model="polylineBtnSwitch"
                        @change="switchBtnChange"
                        active-color="#13ce66"
                        inactive-color="#ccc"
                    ></el-switch>
                </div>
            </div>
        </div>
        <div class="btn-box" v-show="isTrackBtnShow">
            <ul>
                <li>
                    <button @click="play()">播放</button>
                </li>
                <li>
                    <button @click="pause()">暂停</button>
                </li>
                <li>
                    <button @click="restore()">恢复</button>
                </li>
                <li>
                    <button @click="view('1', -20, 100)">第一视角</button>
                </li>
                <li>
                    <button @click="view('2')">上帝视角</button>
                </li>
                <li>
                    <button @click="view('tracked')">跟随视角</button>
                </li>
                <li>
                    <button @click="view('free')">自由视角</button>
                </li>
            </ul>
        </div>
        <el-dialog
            :title="policeChooseTitle"
            :modal="true"
            :visible.sync="policeChooseVisible"
            :before-close="policeChooseBeforeClose"
            :close-on-click-modal="true"
            class="choose-police-box"
        >
            <div>
                <el-select size="small" v-model="policeType" placeholder="请选择">
                    <el-option
                        v-for="item in policeOption"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value"
                    ></el-option>
                </el-select>
                <el-button @click="determine">确定</el-button>
                <el-button @click="cancel">取消</el-button>
            </div>
        </el-dialog>
    </div>
</template>
<script>
import { getSecurityList, getPoliceList, getCarList, addCarAndRange, addActivityPolice, getSecurityPoliceList, getSecurityCarList, updateActivityPolice, updateActivityCar, getServiceDictionary, getActivityType } from '@/api/activity/index.js'
let analyseLayer = null
let analysePolygon = null
let drawLayers = null
let drawArrowLayers = null
let plot = undefined
let arrowPlot = undefined
let tc = undefined
let track = undefined
let loading = null
export default {
    data () {
        return {
            currentPage: 1,
            pagesize: 4,
            pagesCount: 1,
            activityOptions: [
                {
                    dictKey: '',
                    dictValue: '全部'
                }
            ],
            policeOption: [],
            policemanOption: [],
            policecarOption: [],
            activityType: '',
            policeType: '',
            searchActivity: '',
            selectTime: '',
            navType: 0,
            treeData: [{
                id: 1,
                label: '数据地图',
                children: [{
                    id: 2,
                    label: '实时警力',
                    children: [{
                        id: 7,
                        label: 'BOOM',
                        lng: 116.020595,
                        lat: 28.686225,
                        alt: 100,
                    }, {
                        id: 8,
                        label: 'MDM',
                        lng: 116.030370,
                        lat: 28.685075,
                        alt: 100,
                    }, {
                        id: 9,
                        label: 'pdds',
                        lng: 116.021054,
                        lat: 28.684692,
                        alt: 100,
                    }]
                }, {
                    id: 3,
                    label: '视频监控',
                    children: [{
                        id: 10,
                        label: '监控1',
                        lng: 116.032703,
                        lat: 28.677435,
                        alt: 100,
                    }]
                }, {
                    id: 4,
                    label: '治安重点场所',
                    children: [{
                        id: 10,
                        label: '卡点',
                        lng: 116.029703,
                        lat: 28.683435,
                        alt: 100,
                    },
                    {
                        id: 11,
                        label: '电警点',
                        lng: 115.022703,
                        lat: 28.682435,
                        alt: 100,
                    },
                    {
                        id: 12,
                        label: '岗亭',
                        lng: 116.028002,
                        lat: 28.681302,
                        alt: 100,
                    }]
                }, {
                    id: 5,
                    label: '重点单位',
                    children: [{
                        id: 13,
                        label: '大中型商超',
                        lng: 116.023293,
                        lat: 28.680986,
                        alt: 100,
                    },
                    {
                        id: 14,
                        label: '幼儿园',
                        lng: 116.0275001,
                        lat: 28.679361,
                        alt: 100,
                    },
                    {
                        id: 15,
                        label: '政府事业单位',
                        lng: 116.024398,
                        lat: 28.678066,
                        alt: 100,
                    },
                    {
                        id: 16,
                        label: '机场',
                        lng: 116.0268529,
                        lat: 28.6829572,
                        alt: 100,
                    },
                    {
                        id: 17,
                        label: '银行',
                        lng: 116.025595,
                        lat: 28.681225,
                        alt: 100,
                    }]
                },
                {
                    id: 6,
                    label: '特殊场所',
                    children: [{
                        id: 18,
                        label: '印刷店',
                        lng: 116.020370,
                        lat: 28.680075,
                        alt: 100,
                    },
                    {
                        id: 19,
                        label: '废旧金属收购',
                        lng: 116.030054,
                        lat: 28.683692,
                        alt: 100,
                    },
                    {
                        id: 20,
                        label: '开锁店',
                        lng: 116.022703,
                        lat: 28.679435,
                        alt: 100,
                    },
                    {
                        id: 21,
                        label: '酒店',
                        lng: 115.028703,
                        lat: 28.684435,
                        alt: 100,
                    }]
                },
                {
                    id: 777,
                    label: '热力图'
                }]
            }],
            defaultProps: {
                children: 'children',
                label: 'label'
            },
            dialogVisible: false,
            arrangeVisible: false,
            currentClickIndex: '',
            polylineSwitch: false,
            polylineBtnSwitch: false,
            analyseInput: 100,
            activityList: [],
            activityDetails: {},
            boxShow: true,
            policeChooseTitle: '选择警员',
            policeChooseVisible: false,
            overlayObj: {},
            isTrackBtnShow: false,
            showingSecurityId: '',
            policeIconIsCreated: false,
            policeIconId: {},
        }
    },
    created () {
        // 获取下拉列表数据
        this.getActivityType()
        this.getPoliceList()
        this.getCarList()
        this.getSecurityList(this.currentPage, this.pagesize)
    },
    mounted () {
        this.$parent.$parent.resize('400px', true)
        this.$nextTick(() => {
            if (analyseLayer == null) {
                analyseLayer = new global.DC.VectorLayer('analyseLayer')
                global.viewer.addLayer(analyseLayer)
            }
            if (drawLayers == null) {
                drawLayers = new global.DC.VectorLayer('drawLayers')
                global.viewer.addLayer(drawLayers)
                plot = new global.DC.Plot(global.viewer)
            }
            if (drawArrowLayers == null) {
                drawArrowLayers = new global.DC.VectorLayer('drawArrowLayers')
                global.viewer.addLayer(drawArrowLayers)
                arrowPlot = new global.DC.Plot(global.viewer)
            }
            // 轨迹
            let positions = "116.023042, 28.684732; 116.023402, 28.679067; 116.023475, 28.678843; 116.023697, 28.678647; 116.024121, 28.678391; 116.026906, 28.678461; 116.027065, 28.676867; 116.033252, 28.676165"
            tc = new global.DC.TrackController(global.viewer)
            track = new global.DC.Track(positions, 15)
            track.setModel('/model/qiche.gltf', {
                scale: 0.5
            })
            tc.addTrack(track)
        })
    },
    updated () {
    },
    methods: {
        loading () {
            loading = this.$loading({
                lock: true,
                text: '拼命加载中',
                spinner: 'el-icon-loading',
                background: 'rgba(0, 0, 0, 0.7)'
            })
        },
        getActivityType () {
            getServiceDictionary().then(response => {
                const activityType = response.data.data.records.filter(item => item.code == "securityType")
                getActivityType(activityType[0].id).then(res => {
                    this.activityOptions.push(...res.data.data)
                })
            })
        },
        // 生成热力图坐标
        generatePosition (num) {
            let list = []
            for (let i = 0; i < num; i++) {
                let lng = 115.974 + Math.random() * 0.5
                let lat = 28.628 + Math.random() * 0.5
                list.push(new global.DC.Position(lng, lat))
            }
            return list
        },
        inputChange (e) {
            console.log(e)
        },
        // 点击搜索
        searchClick () {
            let startTime = ''
            let endTime = ''
            if (this.selectTime) {
                startTime = this.selectTime[0]
                endTime = this.selectTime[1]
            }
            this.getSecurityList(this.currentPage, this.pagesize, this.activityType, this.searchActivity, startTime, endTime)
        },
        // 下拉选择值变化
        activityTypeChange () {
            let startTime = ''
            let endTime = ''
            if (this.selectTime) {
                startTime = this.selectTime[0]
                endTime = this.selectTime[1]
            }
            this.getSecurityList(this.currentPage, this.pagesize, this.activityType, this.searchActivity, startTime, endTime)
        },
        // 时间选中值触发
        activityTimeChange () {
            let startTime = ''
            let endTime = ''
            if (this.selectTime) {
                startTime = this.selectTime[0]
                endTime = this.selectTime[1]
            }
            this.getSecurityList(this.currentPage, this.pagesize, this.activityType, this.searchActivity, startTime, endTime)
        },
        // 获取活动警员分布信息
        getSecurityPoliceList (securityId) {
            this.removeAll()
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'newDrawLayers',
                type: 'VectorLayer'
            })
            getSecurityPoliceList(securityId).then(res => {
                res.data.data.forEach(item => {
                    if (item.type == 1) {
                        let positionNewArr = this.convertPolylineOrPolygonPositionDate(item.position, item.type)
                        this.$EventBus.$emit('layerPolylineAdd', {
                            layerName: 'newDrawLayers',
                            positions: positionNewArr,
                            material: global.DC.Color.ORANGE.withAlpha(0.6),
                            width: 4,
                            params: {
                                id: item.id,
                                policemanId: item.policemanId
                            },
                            incident: this.overlayTypeClick
                        })
                    } else if (item.type == 2) {
                        let positionNewArr = this.convertPolylineOrPolygonPositionDate(item.position, item.type)
                        this.$EventBus.$emit('layerPolygonAdd', {
                            layerName: 'newDrawLayers',
                            positions: positionNewArr,
                            material: global.DC.Color.ORANGE.withAlpha(0.6),
                            params: {
                                id: item.id,
                                policemanId: item.policemanId
                            },
                            incident: this.overlayTypeClick
                        })
                    } else if (item.type == 3) {
                        let positionObj = this.convertBillboardPositionDate(item.position, 'policeman', item.id, item.policemanId)
                        this.$EventBus.$emit('layerPointAdd', {
                            layerName: 'newDrawLayers',
                            type: 'billboard',
                            params: positionObj,
                            incident: this.overlayTypeClick
                        })
                    }
                })
            })
        },
        // 获取活动警车分布信息
        getSecurityCarList (securityId) {
            this.removeAll()
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'newCarDrawLayers',
                type: 'VectorLayer'
            })
            getSecurityCarList(securityId).then(res => {
                res.data.data.forEach(item => {
                    if (item.type == 1) {
                        let positionNewArr = this.convertPolylineOrPolygonPositionDate(item.position, item.type)
                        this.$EventBus.$emit('layerPolylineAdd', {
                            layerName: 'newCarDrawLayers',
                            positions: positionNewArr,
                            material: global.DC.Color.BLUE.withAlpha(0.4),
                            width: 8,
                            params: {
                                id: item.id,
                                carId: item.carId
                            },
                            incident: this.overlayTypeClick
                        })
                    } else if (item.type == 2) {
                        let positionNewArr = this.convertPolylineOrPolygonPositionDate(item.position, item.type)
                        this.$EventBus.$emit('layerPolygonAdd', {
                            layerName: 'newCarDrawLayers',
                            positions: positionNewArr,
                            material: global.DC.Color.BLUE.withAlpha(0.4),
                            params: {
                                id: item.id,
                                carId: item.carId
                            },
                            incident: this.overlayTypeClick
                        })
                    } else if (item.type == 3) {
                        let positionObj = this.convertBillboardPositionDate(item.position, 'policecar', item.id, item.carId)
                        this.$EventBus.$emit('layerPointAdd', {
                            layerName: 'newCarDrawLayers',
                            type: 'billboard',
                            params: positionObj,
                            incident: this.overlayTypeClick
                        })
                    }
                })
            })
        },
        // 获取活动列表
        getSecurityList (current, size, type, name, startTime, endTime) {
            this.loading()
            getSecurityList(current, size, type, name, startTime, endTime).then(res => {
                this.activityList = res.data.data.records.map(item => {
                    item.startTime = item.startTime.substring(0, 16)
                    item.endTime = item.endTime.substring(0, 16)
                    return item
                })
                this.pagesCount = res.data.data.pages
                this.addActivityPoint()
                loading.close()
            })
        },
        // 获取警员列表,生成下拉数据
        getPoliceList () {
            getPoliceList().then(res => {
                res.data.data.forEach(item => {
                    this.policemanOption.push({ value: `${item.id}`, label: `${item.name}` })
                })
            })
        },
        // 获取警车列表,生成下拉数据
        getCarList () {
            getCarList().then(res => {
                res.data.data.forEach(item => {
                    this.policecarOption.push({ value: `${item.id}`, label: `${item.serialNumber}` })
                })
            })
        },
        // 修改活动警员
        updateActivityPolice (id, policemanId) {
            updateActivityPolice(id, policemanId).then(res => {
                this.getSecurityPoliceList(this.showingSecurityId)
            })
        },
        // 修改活动警车
        updateActivityCar (id, carId) {
            updateActivityCar(id, carId).then(res => {
                this.getSecurityCarList(this.showingSecurityId)
            })
        },
        // 活动添加警车和范围
        addCarAndRange (carId, position, securityId, type) {
            addCarAndRange(carId, position, securityId, type).then(res => {
                this.getSecurityCarList(securityId)
            })
        },
        // 添加活动图标
        addActivityPoint () {
            this.activityList.forEach(item => {
                let positionObj = this.convertBillboardPositionDate(item.position, 'activity')
                this.$EventBus.$emit('layerPointAdd', {
                    layerName: 'activityLayers',
                    type: "billboard",
                    params: positionObj,
                    incident: this.houseSiteClick
                })
            })
        },
        // 活动添加警员
        addActivityPolice (policemanId, position, securityId, type) {
            addActivityPolice(policemanId, position, securityId, type).then(res => {
                this.getSecurityPoliceList(securityId)
            })
        },
        // 转换 点 坐标数据
        convertBillboardPositionDate (data, iconName, plotId, policeId) {
            let positionStr = data
            positionStr = data.slice(6, positionStr.length - 1)
            let positionArr = positionStr.split(" ")
            let positionObj = {}
            if (iconName == 'activity') {
                positionObj = { lng: `${positionArr[0]}`, lat: `${positionArr[1]}`, alt: 100, url: '/img/icon/activity.png' }
            } else if (iconName == 'policeman') {
                positionObj = { lng: `${positionArr[0]}`, lat: `${positionArr[1]}`, alt: 100, url: '/img/icon/police.png', id: plotId, policemanId: policeId }
            } else if (iconName == 'policecar') {
                positionObj = { lng: `${positionArr[0]}`, lat: `${positionArr[1]}`, alt: 100, url: '/img/icon/car.png', id: plotId, carId: policeId }
            }
            return positionObj
        },
        // 转换 线面 坐标数据
        convertPolylineOrPolygonPositionDate (data, type) {
            let positionStr = data.slice(11, data.length - 1)
            let positionArr = positionStr.split(',')
            let positionNewArr = ''
            positionArr.forEach(item => {
                if (type == 1) {
                    positionNewArr += item.split(' ')[0] + ',' + item.split(' ')[1] + ';'
                } else {
                    positionNewArr += item.split(' ')[0] + ',' + item.split(' ')[1] + ',' + 0 + ';'
                }
            })
            return positionNewArr
        },
        // 树形控件选中事件
        treeCheckClick (e1, e2) {
            const that = this
            this.$EventBus.$emit('mapRemoveLayer', {
                layerName: 'activeHeatLayer',
                type: 'HeatLayer'
            })
            if (e1.label == '热力图' && e2.checkedKeys.some(item => {
                return item == 777
            })) {
                this.$EventBus.$emit('layerPointAdd', {
                    layerName: 'activeHeatLayer',
                    type: "HeatPoint",
                    layerType: 'HeatLayer',
                    params: {
                        positions: that.generatePosition(2000)
                    }
                })
            } else {
                this.$EventBus.$emit('mapClearLayer', {
                    layerName: 'activeLayer',
                    type: 'VectorLayer'
                })
                e2.checkedNodes.forEach(item => {
                    if (item.lng) {
                        item.url = '/img/icon/position.png'
                        this.$EventBus.$emit('layerPointAdd', {
                            layerName: 'activeLayer',
                            type: "billboard",
                            params: item
                        })
                    }
                })
            }
        },
        // 点击活动列表活动
        activityListClick (item, index) {
            this.removeAll()
            this.showingSecurityId = item.id
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'newDrawLayers',
                type: 'VectorLayer'
            })
            this.getSecurityPoliceList(item.id)
            this.getSecurityCarList(item.id)
            if (this.currentClickIndex !== '' && this.currentClickIndex == index) {
                return
            }
            this.analyseInput = 100
            this.activityDetails = item
            this.polylineSwitch = false
            if (analyseLayer != null) {
                analyseLayer.clear()
            }
            let positionObj = this.convertBillboardPositionDate(item.position, 'activity')
            let point = new global.DC.Point(`${positionObj.lng}, ${positionObj.lat}`)
            analyseLayer.addOverlay(point)
            let coords = global.DC.GeoTools.pointBuffer(`${positionObj.lng}, ${positionObj.lat}`, 100)
            analysePolygon = new global.DC.Polygon(coords)
            analysePolygon.setStyle({
                material: global.DC.Color.RED.withAlpha(0.4)
            })
            analyseLayer.addOverlay(analysePolygon)
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'polylineLayer',
                type: 'VectorLayer'
            })
            this.dialogVisible = true
            this.currentClickIndex = index
            this.$EventBus.$emit('toPosition', {
                siteJd: positionObj.lng,
                siteWd: positionObj.lat,
                siteGd: 1500
            })
        },
        // 切换轨迹路线显示
        switchChange (e) {
            if (e == true) {
                this.$EventBus.$emit('layerPolylineAdd', {
                    layerName: 'polylineLayer',
                    positions: '116.023042, 28.684732; 116.023402, 28.679067; 116.023475, 28.678843; 116.023697, 28.678647; 116.024121, 28.678391; 116.026906, 28.678461; 116.027065, 28.676867; 116.033252, 28.676165',
                    material: global.DC.Namespace.Cesium.Color.fromBytes(
                        255, 0, 0,
                        255
                    ),
                    distanceDisplayCondition: {
                        near: 0, //最近距离
                        far: Number.MAX_VALUE //最远距离
                    }
                })
            } else {
                this.$EventBus.$emit('mapClearLayer', {
                    layerName: 'polylineLayer',
                    type: 'VectorLayer'
                })
            }
        },
        // 切换轨迹播放控件
        switchBtnChange (e) {
            this.isTrackBtnShow = e
        },
        // 输入绘制线范围
        analyseChange (e) {
            analyseLayer.removeOverlay(analysePolygon)
            let coords = global.DC.GeoTools.pointBuffer(`${this.activityDetails.lng}, ${this.activityDetails.lat}`, e)
            analysePolygon = new global.DC.Polygon(coords)
            analysePolygon.setStyle({
                material: global.DC.Color.RED.withAlpha(0.4)
            })
            analyseLayer.addOverlay(analysePolygon)
        },
        // 分页页码变化事件
        handleCurrentChange: function (currentPage) {
            this.currentPage = currentPage
            this.getSecurityList(this.currentPage, this.pagesize)
        },
        // 关闭活动详情弹窗
        closeActivityDetails () {
            this.dialogVisible = false
            this.currentClickIndex = ''
            this.polylineSwitch = false
            analyseLayer.clear()
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'polylineLayer',
                type: 'VectorLayer'
            })
        },
        // 地图元素绘制
        draw (poltType, policeType) {
            let flag = false
            const that = this
            this.policeType = ''
            plot && plot.draw(poltType, overlay => {
                if (poltType == 'billboard' && policeType == 'policeman') {
                    overlay.icon = '/img/policeIcon.png'
                } else if (poltType == 'billboard' && policeType == 'policecar') {
                    overlay.icon = '/img/policeCar.jfif'
                }
                if (overlay) {
                    drawLayers.addOverlay(overlay)
                    plot.edit(overlay, (e) => {
                        flag = true
                        overlay.on(global.DC.MouseEventType.CLICK, this.overlayTypeClick)
                        overlay.drawType = poltType
                        overlay.policeType = policeType
                        this.overlayObj = overlay
                        document.oncontextmenu = function () {
                            if (flag == true && poltType == 'billboard') {
                                if (policeType == 'policeman') {
                                    that.policeChooseTitle = '选择警员'
                                    that.policeOption = that.policemanOption
                                } else if (policeType == 'policecar') {
                                    that.policeChooseTitle = '选择警车'
                                    that.policeOption = that.policecarOption
                                }
                                that.policeChooseVisible = true
                                flag = false
                            } else if (flag == true && poltType == 'polygon') {
                                if (policeType == 'policecar') {
                                    that.policeChooseTitle = '选择警车'
                                    that.policeOption = that.policecarOption
                                    that.policeChooseVisible = true
                                    flag = false
                                }
                            }
                        }
                    })
                }
            })
        },
        // 删除所有地图绘制元素
        removeAll () {
            drawLayers.clear()
        },
        drawArrow (type) {
            arrowPlot && arrowPlot.draw(type, overlay => {
                if (overlay) {
                    drawArrowLayers.addOverlay(overlay)
                    plot.edit(overlay)
                }
            })
        },
        removeAllArrow () {
            drawArrowLayers.clear()
        },
        arrangeDraw () {
            this.arrangeVisible = true
        },
        // 播放轨迹
        play () {
            tc.play()
            this.view('1', -20, 100)
        },
        // 暂停播放轨迹
        pause () {
            tc.pause()
        },
        // 恢复播放轨迹
        restore () {
            tc.restore()
        },
        // 轨迹视角切换
        view (mode, pitch, range) {
            tc.viewTrack(track, {
                mode: mode,
                pitch: pitch,
                range: range
            })
        },
        // 大小重置
        boxResize (val) {
            this.boxShow = val
        },
        // 选择警员取消按钮
        cancel () {
            this.policeIconIsCreated = false
            this.policeChooseVisible = false
            this.overlayObj2 = {}
            this.removeAll()
        },
        // 选择警员关闭
        policeChooseBeforeClose () {
            this.policeChooseVisible = false
            this.policeIconIsCreated = false
            this.removeAll()
        },
        // 选择警员确认按钮
        determine () {
            if (!this.policeIconIsCreated) {
                let type = ''
                let position = ''
                if (this.overlayObj.drawType == 'billboard') {
                    type = 3
                    position = this.overlayObj._position._lng + ' ' + this.overlayObj._position._lat
                } else if (this.overlayObj.drawType == 'polyline') {
                    type = 1
                    this.overlayObj._positions.forEach(item => {
                        position += item._lng + ' ' + item._lat + ','
                    })
                    position = position.slice(0, position.length - 1)
                } else if (this.overlayObj.drawType == 'polygon') {
                    type = 2
                    this.overlayObj._positions.forEach(item => {
                        position += item._lng + ' ' + item._lat + ','
                    })
                    position += this.overlayObj._positions[0]._lng + ' ' + this.overlayObj._positions[0]._lat + ','
                    position = position.slice(0, position.length - 1)
                }
                if (this.overlayObj.policeType == 'policeman') {
                    this.addActivityPolice(this.policeType, position, this.showingSecurityId, type)
                } else if (this.overlayObj.policeType == 'policecar') {
                    this.addCarAndRange(this.policeType, position, this.showingSecurityId, type)
                }
                this.policeChooseVisible = false
                this.policeIconIsCreated = false
            } else {
                if (this.policeChooseTitle == '选择警员') {
                    this.updateActivityPolice(this.policeIconId, this.policeType)
                } else if (this.policeChooseTitle == '选择警车') {
                    this.updateActivityCar(this.policeIconId, this.policeType)
                }
                this.policeChooseVisible = false
                this.policeIconIsCreated = false
            }
        },
        // 地图绘制元素点击事件
        overlayTypeClick (e) {
            this.policeIconIsCreated = true
            if ('policemanId' in e.overlay.attrParams) {
                this.policeChooseTitle = '选择警员'
                this.policeOption = this.policemanOption
                this.policeIconId = e.overlay.attrParams.id
                this.policeType = e.overlay.attrParams.policemanId
            } else if ('carId' in e.overlay.attrParams) {
                this.policeChooseTitle = '选择警车'
                this.policeOption = this.policecarOption
                this.policeIconId = e.overlay.attrParams.id
                this.policeType = e.overlay.attrParams.carId
            }
            this.policeChooseVisible = true
        }
    },
    destroyed () {
        this.$EventBus.$emit('mapRemoveLayer', {
            layerName: 'activeLayer',
            type: 'VectorLayer'
        })
        this.$EventBus.$emit('mapRemoveLayer', {
            layerName: 'activityLayers',
            type: 'VectorLayer'
        })
        this.$EventBus.$emit('mapRemoveLayer', {
            layerName: 'polylineLayer',
            type: 'VectorLayer'
        })
        this.$EventBus.$emit('mapRemoveLayer', {
            layerName: 'activeHeatLayer',
            type: 'HeatLayer'
        })
        this.$EventBus.$emit('mapClearLayer', {
            layerName: 'newDrawLayers',
            type: 'VectorLayer'
        })
        this.$EventBus.$emit('mapClearLayer', {
            layerName: 'newCarDrawLayers',
            type: 'VectorLayer'
        })
        analyseLayer.clear()
        this.removeAll()
        tc.clear()
        this.$parent.$parent.resize('0px')
    }
}
</script>
<style scoped lang="scss">
.container {
    height: 100%;
    width: 100%;
    position: relative;
    &-content {
        position: relative;
        display: flex;
        flex-direction: column;
        width: 100%;
        height: 100%;
        color: #fff;
        background: $bg-color;
        .title {
            height: 40px;
            line-height: 40px;
            font-weight: 700;
            font-size: 24px;
            letter-spacing: 20px;
        }
        .search-box {
            padding: 0 10px;
            & > div:first-child {
                margin-top: 0;
            }
            & > div {
                margin-top: 10px;
                display: flex;
                align-items: center;
                justify-content: space-between;
                .category {
                    width: 88px;
                    font-size: 16px;
                }
                .category-value {
                    flex: 1;
                }
                input {
                    width: 209px;
                    height: 32px;
                    font-size: 12px;
                    text-indent: 1em;
                    color: #ffffff;
                    background-color: transparent;
                    border: 1px solid rgb(0, 92, 169);
                    border-radius: 5px 0 0 5px;
                }
                input:focus {
                    outline: none;
                }
                input::-webkit-input-placeholder {
                    color: rgba(238, 238, 238, 0.7);
                }
                button {
                    font-size: 20px;
                    font-weight: 700;
                    width: 60px;
                    height: 32px;
                    background-color: $table-body-tr-2n-color;
                    color: #fff;
                    border: 1px solid rgb(0, 92, 169);
                    cursor: pointer;
                    border-radius: 0 5px 5px 0;
                    vertical-align: top;
                }
                button:active {
                    background-color: $table-body-tr-2n-color;
                    border: 1px solid rgb(0, 92, 169);
                    color: rgb(189, 185, 185) !important;
                }
            }
        }
        .result-content {
            flex: 1;
            margin-top: 8px;
            display: flex;
            flex-direction: column;
            overflow: hidden;
            .table-box {
                flex: 1;
                overflow-x: hidden;
                overflow-y: auto;
                .row-box {
                    margin: 10px;
                    padding: 10px;
                    background: $table-body-tr-2n-color;
                    cursor: pointer;
                    font-size: 14px;
                    .row-content {
                        & > div {
                            display: flex;
                            line-height: 28px;
                            .category {
                                width: 88px;
                            }
                            .category-value {
                                flex: 1;
                                display: flex;
                                justify-content: flex-start;
                                flex-wrap: wrap;
                            }
                        }
                    }
                }
                .row-box:hover {
                    // background-color: $table-header-bg-color;
                    background-color: rgba(17, 38, 163, 0.5);
                }
                .row-box.on {
                    // background: $table-header-bg-color;
                    background-color: rgba(17, 38, 163, 0.5);
                }
                :deep(.el-dialog) {
                    margin-right: 0px;
                }
                .tableClass {
                    margin: 0 auto;
                    width: 400px;
                    // height: 400px;
                    border-collapse: collapse;
                }
                .tableClass td {
                    width: 300px;
                }
            }
            .pages {
                height: 40px;
                display: flex;
                align-items: center;
                justify-content: center;
            }
        }
    }
    .draw-btn-box {
        position: fixed;
        left: 50%;
        bottom: 40px;
        color: #fff;
        background: $bg-one-color;
        white-space: nowrap;
        transform: translate(-50%, 0);
        & > div {
            display: flex;
        }
        ul {
            display: flex;
            li {
                button {
                    height: 30px;
                    margin: 0 5px;
                    background-color: $bg-color;
                    border: 1px solid #cecece;
                    border-radius: 4px;
                    color: #fff;
                    cursor: pointer;
                    outline: none;
                }
            }
        }
    }
    .second-container {
        position: absolute;
        top: 0px;
        display: flex;
        flex-direction: column;
        width: 240px;
        background: $bg-color;
        :deep(.el-tree) {
            background: transparent;
        }
        :deep(.el-tree-node__content) {
            background: transparent;
        }
        :deep(.el-tree-node) {
            background: transparent;
            color: #fff;
        }
    }
    .second-container.spread {
        left: 444px;
    }
    .second-container.take-back {
        left: 10px;
    }
    .activity-details-box {
        position: fixed;
        top: 90px;
        right: 10px;
        width: 400px;
        padding: 10px;
        border-radius: 10px;
        color: #fff;
        background: $bg-color;
        overflow-x: hidden;
        overflow-y: auto;
        .title {
            position: relative;
            height: 36px;
            line-height: 36px;
            .close {
                position: absolute;
                top: 50%;
                right: 0;
                transform: translate(0, -50%);
                cursor: pointer;
            }
            .close::before {
                content: '\e6db';
                font-family: element-icons;
            }
        }
        .row-box {
            width: 100%;
            line-height: 28px;
            display: flex;
            & > div {
                text-align: left;
            }
            .category {
                width: 96px;
            }
            .category-value {
                flex: 1;
            }
        }
    }
    .plan-control {
        position: fixed;
        top: 90px;
        right: 450px;
        width: 180px;
        padding: 10px;
        color: #fff;
        background-color: $bg-color;
        .row-box {
            width: 100%;
            line-height: 28px;
            display: flex;
            & > div {
                text-align: left;
            }
            .category {
                width: 96px;
            }
            .category-value {
                flex: 1;
            }
        }
    }
    .btn-box {
        position: fixed;
        top: 78px;
        left: 50%;
        transform: translate(-50%, 0);
        min-height: 40px;
        padding: 10px 10px 0 10px;
        border-radius: 10px;
        color: #fff;
        user-select: none;
        ul {
            display: flex;
            li {
                button {
                    height: 30px;
                    margin: 0 5px;
                    background-color: $bg-color;
                    border: 1px solid #cecece;
                    border-radius: 4px;
                    color: #fff;
                    cursor: pointer;
                    outline: none;
                }
            }
        }
    }
}
</style>