shuishen
2021-12-30 4593a5c6ef4549a519681fa44d94fa242d15bec4
完善
25 files modified
9 files added
1518 ■■■■ changed files
public/img/icon/monitor.png patch | view | raw | blame | history
public/img/search/dorm.png patch | view | raw | blame | history
public/img/search/ofc.png patch | view | raw | blame | history
public/img/search/org.png patch | view | raw | blame | history
public/img/search/scenery.png patch | view | raw | blame | history
public/img/search/teach.png patch | view | raw | blame | history
public/img/search/venue.png patch | view | raw | blame | history
src/api/pc/public/search.js 16 ●●●●● patch | view | raw | blame | history
src/components/arcNavBar/index.vue 63 ●●●●● patch | view | raw | blame | history
src/components/leftNav/index.vue 4 ●●●● patch | view | raw | blame | history
src/components/map/components/campusBuildingSearch.vue 359 ●●●●● patch | view | raw | blame | history
src/components/map/components/dimension.vue 268 ●●●●● patch | view | raw | blame | history
src/components/map/components/mapPopup.vue 76 ●●●●● patch | view | raw | blame | history
src/components/map/index.vue 181 ●●●● patch | view | raw | blame | history
src/components/orgNavBar/index.vue 35 ●●●●● patch | view | raw | blame | history
src/pcviews/arc/culture.vue 30 ●●●● patch | view | raw | blame | history
src/pcviews/arc/dorm.vue 30 ●●●● patch | view | raw | blame | history
src/pcviews/arc/edifact.vue 30 ●●●● patch | view | raw | blame | history
src/pcviews/arc/family.vue 30 ●●●● patch | view | raw | blame | history
src/pcviews/arc/rest.vue 30 ●●●● patch | view | raw | blame | history
src/pcviews/arc/teaching.vue 30 ●●●● patch | view | raw | blame | history
src/pcviews/arc/venue.vue 30 ●●●● patch | view | raw | blame | history
src/pcviews/campusnavi/index.vue 32 ●●●●● patch | view | raw | blame | history
src/pcviews/orgnav/directly.vue 32 ●●●● patch | view | raw | blame | history
src/pcviews/orgnav/masses.vue 32 ●●●● patch | view | raw | blame | history
src/pcviews/orgnav/ofc.vue 32 ●●●● patch | view | raw | blame | history
src/pcviews/orgnav/rest.vue 32 ●●●● patch | view | raw | blame | history
src/pcviews/orgnav/teaching.vue 32 ●●●● patch | view | raw | blame | history
src/store/getters.js 9 ●●●● patch | view | raw | blame | history
src/store/modules/popupParams.js 17 ●●●● patch | view | raw | blame | history
src/store/modules/search.js 15 ●●●●● patch | view | raw | blame | history
src/styles/divforms/panoramaBox.scss 56 ●●●●● patch | view | raw | blame | history
src/styles/divforms/popup.scss 9 ●●●● patch | view | raw | blame | history
src/styles/pcpage/dc-ui.scss 8 ●●●●● patch | view | raw | blame | history
public/img/icon/monitor.png
public/img/search/dorm.png
public/img/search/ofc.png
public/img/search/org.png
public/img/search/scenery.png
public/img/search/teach.png
public/img/search/venue.png
src/api/pc/public/search.js
New file
@@ -0,0 +1,16 @@
/*
 * @Author: Morpheus
 * @Date: 2021-05-09 15:17:44
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-27 09:23:11
 */
// 校区
import request from '@/router/axios'
export const getSearchList = (params) => {
    return request({
        url: '/blade-architecture/architecture/selectLook',
        method: 'get',
        params: params
    })
}
src/components/arcNavBar/index.vue
@@ -10,7 +10,7 @@
                         src="/img/icon/xyjz.png"
                         alt="">
                    <span>
                        {{title}}
                        {{arcNavBarTitle}}
                    </span>
                </div>
                <img class="close"
@@ -53,16 +53,12 @@
        return {
            moveFlag: false,
            itemNavList: [],
            titleList: [],
            DC: null
        }
    },
    props: {
        title: {
            type: String
        },
        arcCode: {
            type: Number
        }
    },
    computed: {
        ...mapGetters([
@@ -78,23 +74,33 @@
            // 介绍
            'introduceText',
            // 全景地址
            'panoramaUrl'
            'panoramaUrl',
            'arcNavBarTitle',
            'arcNavBarCode'
        ])
    },
    created () {
        this.DC = global.DC
        this.titleList = []
        getList().then(res => {
            res.data.data.forEach(item => {
                this.titleList.push({ title: item.dictValue, flag: false, key: item.dictKey })
            })
            this.titleList[0].flag = true
            this.getChilsNavs(this.titleList[0].key)
        })
    },
    mounted () {
    },
    watch: {
        arcNavBarCode: {
            immediate: true,
            handler (newCode, oldCode) {
                this.titleList = []
                getList().then(res => {
                    res.data.data.forEach(item => {
                        this.titleList.push({ title: item.dictValue, flag: false, key: item.dictKey })
                    })
                    this.titleList[0].flag = true
                    this.getChilsNavs(this.titleList[0].key)
                })
            }
        }
    },
    methods: {
        move (e) {
@@ -143,9 +149,7 @@
                document.onmouseup = null
            }
        },
        closeModel () {
            this.$parent.closeModel()
        },
        topNavClick (item, index) {
            this.titleList.forEach(item => {
                item.flag = false
@@ -155,10 +159,11 @@
            this.getChilsNavs(item.key)
        },
        getChilsNavs (campus) {
            this.itemNavList = []
            getChildNavList({ campus: campus, type: this.arcCode }).then(res => {
            getChildNavList({ campus: campus, type: this.arcNavBarCode }).then(res => {
                res.data.data.forEach(item => {
                    this.itemNavList.push({
                        navTitle: item.mechanismname,
@@ -168,6 +173,7 @@
                })
            })
        },
        mapPopup (param) {
            getChildNavDetail({ id: param.id }).then(res => {
                var result = res.data.data[0].list
@@ -207,6 +213,7 @@
                )
            })
        },
        newPopup (item) {
            const position = this.DC.Transform.transformWGS84ToCartesian(new this.DC.Position(Number(item.jd), Number(item.wd), Number(item.gd), Number(item.heading), Number(item.pitch), Number(item.roll)))
            // eslint-disable-next-line no-unused-vars
@@ -219,6 +226,18 @@
            this.$store.commit('SET_PANORAMAPOPUP', false)
            this.$store.commit('SET_DETAILSPOPUP', true)
        },
        closeModel () {
            var path = this.$route.path
            if (path.indexOf('/arc') != -1) {
                this.$store.dispatch('delVisitedViews', this.$route)
                this.$router.push('/pcLayout/default')
            }
            this.$store.commit('SET_ARCNAVBARTITLE', '')
            this.$store.commit('SET_ARCNAVBARCODE', '')
            this.$store.commit('SET_ARCNAVBARFLAG', false)
        }
    }
}
src/components/leftNav/index.vue
@@ -275,8 +275,8 @@
<style scoped lang='scss'>
.left-nav {
    position: fixed;
    top: 100px;
    right: 20px;
    top: 160px;
    right: 30px;
    // bottom: 20px;
    // left: 0;
    z-index: 1;
src/components/map/components/campusBuildingSearch.vue
@@ -1,9 +1,12 @@
<template>
    <div>
        <div class="map-campus-serarch">
        <div class="map-campus-search"
             id="CampusSearchPanel">
            <el-input class="search-input"
                      placeholder="校园搜索…"
                      v-model="input3">
                      v-model="searchInput"
                      @input="searchValueChange"
                      @focus="shortcutFlag = true">
            </el-input>
            <el-button-group>
                <el-button @click="navigationShow"
@@ -13,22 +16,31 @@
                           type="primary"
                           icon="el-icon-my-search"></el-button>
            </el-button-group>
        </div>
        <div class="map-campus-shortcut">
            <div class="shortcut-box">
            <div v-show="searchValShow"
                 class="search-value-box">
                <ul>
                    <li><img src="" alt=""><span>党群机构</span></li>
                    <li><img src="" alt=""><span></span></li>
                    <li><img src="" alt=""><span></span></li>
                    <li><img src="" alt=""><span></span></li>
                    <li><img src="" alt=""><span></span></li>
                    <li><img src="" alt=""><span></span></li>
                    <li><img src="" alt=""><span></span></li>
                    <li><img src="" alt=""><span></span></li>
                    <li><img src="" alt=""><span></span></li>
                    <li v-for="(item, index) in searchValList"
                        :key="index"
                        @click="loadPopup(item)">
                        {{item.name}}
                    </li>
                </ul>
            </div>
            <div class="map-campus-shortcut"
                 v-show="shortcutFlag">
                <div class="shortcut-box">
                    <ul>
                        <li v-for="(item, index) in shortcutList"
                            :key="index">
                            <el-button @click="openModelPopup(item)">
                                <img :src="item.bgimg"
                                     alt="">
                                <span>{{item.title}}</span>
                            </el-button>
                        </li>
                    </ul>
                </div>
            </div>
        </div>
    </div>
</template>
@@ -37,29 +49,230 @@
import { mapGetters } from 'vuex'
import { getList } from '@/api/pc/orgnav/index'
import { getSearchList } from '@/api/pc/public/search'
export default {
    name: 'campusBuildingSearch',
    data () {
        return {
            DC: null,
            shortcutList: [
                {
                    bgimg: '/img/search/',
                    span: '党群机构'
                    bgimg: '/img/search/org.png',
                    title: '党群机构',
                    type: 'orgnav',
                    code: 1
                },
                {
                    bgimg: '/img/search/ofc.png',
                    title: '职能部处',
                    type: 'orgnav',
                    code: 2
                },
                {
                    bgimg: '/img/search/teach.png',
                    title: '教学科研',
                    type: 'orgnav',
                    code: 4
                },
                {
                    bgimg: '/img/search/venue.png',
                    title: '校内场馆',
                    type: 'arc',
                    code: 3
                },
                {
                    bgimg: '/img/search/dorm.png',
                    title: '学生宿舍',
                    type: 'arc',
                    code: 4
                },
                {
                    bgimg: '/img/search/scenery.png',
                    title: '文化风景',
                    type: 'arc',
                    code: 5
                }
            ]
            ],
            shortcutFlag: false,
            searchInput: '',
            searchValShow: false,
            searchValList: []
        }
    },
    computed: {
        ...mapGetters([
            'viewer',
            // 校内导航的显示关闭
            'campusNavFlag'
            'campusNavFlag',
            'orgNavBarFlag',
            'arcNavBarFlag'
        ])
    },
    created () {
        this.DC = global.DC
    },
    methods: {
        searchValueChange () {
            if (this.searchInput == '') {
                this.searchValList = []
                this.searchValShow = false
                return
            }
            getSearchList({ mechanismName: this.searchInput }).then(res => {
                if (res.data.data.length > 0) {
                    this.searchValList = res.data.data
                    this.searchValShow = true
                }
            })
        },
        navigationShow () {
            if (this.campusNavFlag == false) {
                this.$store.commit('SET_CAMPUSNAVFLAG', true)
            }
        },
        openModelPopup (param) {
            var list = []
            if (param.type == 'orgnav') {
                var path = this.$route.path
                if (path.indexOf('/arc') != -1) {
                    this.$store.dispatch('delVisitedViews', this.$route)
                    this.$router.push('/pcLayout/default')
                    this.$store.commit('SET_ARCNAVBARTITLE', '')
                    this.$store.commit('SET_ARCNAVBARCODE', '')
                    this.$store.commit('SET_ARCNAVBARFLAG', false)
                }
                if (this.arcNavBarFlag == true) {
                    this.$store.commit('SET_ARCNAVBARTITLE', '')
                    this.$store.commit('SET_ARCNAVBARCODE', '')
                    this.$store.commit('SET_ARCNAVBARFLAG', false)
                }
                this.$store.commit('SET_ORGNAVBARTITLE', param.title)
                this.$store.commit('SET_ORGNAVBARLIST', [])
                this.$store.commit('SET_ORGNAVBARFLAG', true)
                getList({ type: param.code }).then(res => {
                    res.data.data.records.forEach(item => {
                        list.push({
                            navTitle: item.mechanismname,
                            icon: '/img/navicon/tag.png',
                            longitude: item.jd,
                            latitude: item.wd,
                            alt: item.gd,
                            heading: item.heading,
                            pitch: item.pitch,
                            roll: item.roll,
                            bgImg: item.tpurl,
                            QRImg: item.codeurl,
                            address: item.address,
                            telephone: item.telephone,
                            introduce: item.introduce
                        })
                    })
                    this.$store.commit('SET_ORGNAVBARLIST', list)
                })
            } else if (param.type == 'arc') {
                if (this.$route.path.indexOf('/orgnav') != -1) {
                    this.$store.dispatch('delVisitedViews', this.$route)
                    this.$router.push('/pcLayout/default')
                    this.$store.commit('SET_ORGNAVBARTITLE', '')
                    this.$store.commit('SET_ORGNAVBARLIST', [])
                    this.$store.commit('SET_ORGNAVBARFLAG', false)
                }
                if (this.orgNavBarFlag == true) {
                    this.$store.commit('SET_ORGNAVBARTITLE', '')
                    this.$store.commit('SET_ORGNAVBARLIST', [])
                    this.$store.commit('SET_ORGNAVBARFLAG', false)
                }
                this.$store.commit('SET_ARCNAVBARTITLE', param.title)
                this.$store.commit('SET_ARCNAVBARCODE', param.code)
                this.$store.commit('SET_ARCNAVBARFLAG', true)
            }
        },
        shortcutShow (event) {
            var sp = document.getElementById('CampusSearchPanel')
            if (sp) {
                if (!sp.contains(event.target)) { // 这句是说如果我们点击到了id为myPanel以外的区域
                    this.shortcutFlag = false
                }
            }
        },
        loadPopup (param) {
            var that = this
            that.searchInput = ''
            that.searchValList = []
            that.searchValShow = false
            this.$store.commit('CLEAR_ALL', null)
            var result = param.list
            var imgArr = result.tpurl.split(',')
            var tabOne = param.jx.split(',')
            var tabTwo = param.sh.split(',')
            this.$store.commit('SET_POPUPBGURL', imgArr[0])
            this.$store.commit('SET_POPUPQRURL', result.codeurl)
            this.$store.commit('SET_POINTPOSITION', [Number(result.jd), Number(result.wd), Number(result.gd), Number(result.heading), Number(result.pitch), Number(result.roll)])
            this.$store.commit('SET_STATENAME', result.mechanismname)
            this.$store.commit('SET_SITENAME', result.address)
            this.$store.commit('SET_TELEPHONE', result.telephone)
            this.$store.commit('SET_INTRODUCETEXT', result.introduce)
            if (result.panoramaurl != '') {
                this.$store.commit('SET_PANORAMAURL', result.panoramaurl)
            }
            if (result.videourl != '') {
                this.$store.commit('SET_MONITORURL', result.videourl)
            }
            this.$store.commit('SET_POPUPIMGATLAS', imgArr)
            if (param.jx != '') {
                this.$store.commit('SET_TEACHLIST', tabOne)
            } else {
                this.$store.commit('SET_TEACHLIST', [])
            }
            if (param.sh != '') {
                this.$store.commit('SET_LIVELIST', tabTwo)
            } else {
                this.$store.commit('SET_LIVELIST', [])
            }
            this.newPopup(result)
            this.viewer.flyToPosition(
                new this.DC.Position(Number(result.jd), Number(result.wd), 3000, Number(result.heading), Number(result.pitch), Number(result.roll)),
                () => {
                },
                3
            )
        },
        newPopup (item) {
            const position = this.DC.Transform.transformWGS84ToCartesian(new this.DC.Position(Number(item.jd), Number(item.wd), Number(item.gd), Number(item.heading), Number(item.pitch), Number(item.roll)))
            // eslint-disable-next-line no-unused-vars
            var popup = new this.DC.DivForms(this.viewer, {
                domId: 'divFormsDomBox',
                position: [
                    position
                ]
            })
            this.$store.commit('SET_PANORAMAPOPUP', false)
            this.$store.commit('SET_MONITORPOPUP', false)
            this.$store.commit('SET_DETAILSPOPUP', true)
        }
    }
@@ -67,7 +280,7 @@
</script>
<style lang='scss' scope>
.map-campus-serarch {
.map-campus-search {
    position: fixed;
    top: 100px;
    left: 0;
@@ -75,19 +288,21 @@
    bottom: auto;
    margin: auto;
    width: 320px;
    height: 40px;
    min-height: 40px;
    max-height: 360px;
    height: auto;
    z-index: 11;
    border-radius: 5px;
    box-shadow: 0 0 10px 2px #666;
    box-shadow: 0 0 14px 2px rgb(221, 221, 221);
    .search-input {
        float: left;
        width: 240px;
        height: 40px;
        border-radius: 5px 0 0 5px;
        input {
            border: none;
            border-right: 1px solid #dcdfe6;
            box-sizing: border-box;
            border-radius: 5px 0 0 5px;
        }
    }
@@ -98,11 +313,12 @@
        .el-button {
            margin: 0;
            position: relative;
            padding: 0;
            width: 40px;
            height: 40px;
            height: 40px !important;
            position: relative;
            border-radius: 0;
            border: none;
            border: 1px solid #dcdfe6;
            i {
                margin: auto;
@@ -114,9 +330,98 @@
            }
        }
        .el-button:nth-child(1) {
            border-left: none;
            border-right: none;
        }
        .el-button:nth-child(2) {
            border-left: none;
            border-right: none;
            border-radius: 0 5px 5px 0;
        }
    }
    .search-value-box {
        position: absolute;
        top: 41px;
        left: 0;
        width: auto;
        min-width: 240px;
        max-height: 520px;
        background: #fff;
        overflow-y: auto;
        box-shadow: 0 0 14px 2px rgb(221, 221, 221);
        border-radius: 5px;
        ul {
            li {
                padding-left: 20px;
                height: 36px;
                line-height: 36px;
                cursor: pointer;
            }
            li:hover {
                background: #f5f5f5;
            }
        }
    }
    .map-campus-shortcut {
        margin-top: 20px;
        width: 100%;
        height: 320px;
        background: #fff;
        border-radius: 5px;
        .shortcut-box {
            padding-top: 36px;
            ul {
                display: flex;
                width: 100%;
                height: 120px;
                justify-content: space-around;
                flex-wrap: wrap;
                li {
                    width: 84px;
                    height: 76px;
                    .el-button {
                        width: 80px;
                        height: 70px;
                        padding: 6px 12px;
                        background: #efefef;
                        border: none;
                        border-radius: 5px;
                        box-sizing: border-box;
                        text-align: center;
                        & > span {
                            width: auto;
                            height: auto;
                            img {
                                margin-top: 4px;
                                width: 26px;
                                height: 26px;
                            }
                            span {
                                display: block;
                                font-size: 14px;
                                line-height: 28px;
                            }
                        }
                    }
                    .el-button:focus {
                        border: 1px solid #000;
                    }
                }
            }
        }
    }
}
</style>
src/components/map/components/dimension.vue
New file
@@ -0,0 +1,268 @@
<template>
    <div class="dimension-cut">
        <el-radio-group v-model="dimensionValue"
                        size="medium"
                        @change="dimensionChange">
            <el-radio-button label="三 维"></el-radio-button>
            <el-radio-button label="2.5维"></el-radio-button>
        </el-radio-group>
    </div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
    name: 'dimension',
    data () {
        return {
            DC: null,
            dimensionValue: '三 维',
            newLayer: null,
            provider: null,
            wallLayer: null,
            tileset: null,
            tilesetLayer: null,
            titlesetLayerFlag: false,
            oneFlag: false,
            wallArr: [
                [116.41526036, 27.95352217, 100],
                [116.41128018, 27.95789328, 100],
                [116.40246486, 27.96397110, 100],
                [116.39728537, 27.96779573, 100],
                [116.39588026, 27.96862679, 100],
                [116.38903705, 27.97029865, 100],
                [116.38872398, 27.97051829, 100],
                [116.38892229, 27.97090120, 100],
                [116.38906721, 27.97190632, 100],
                [116.38706808, 27.97195638, 100],
                [116.38649076, 27.97114448, 100],
                [116.38214070, 27.97312735, 100],
                [116.37876213, 27.97582549, 100],
                [116.37851310, 27.97664153, 100],
                [116.37634915, 27.98039526, 100],
                [116.37439220, 27.98131916, 100],
                [116.36995935, 27.97936074, 100],
                [116.37217247, 27.97498147, 100],
                [116.35099819, 27.97539586, 100],
                [116.35103749, 27.98088050, 100],
                [116.33972460, 27.97987911, 100],
                [116.33950071, 27.97372028, 100],
                [116.32313266, 27.97004136, 100],
                [116.32606743, 27.95863979, 100],
                [116.34788837, 27.92538024, 100],
                [116.34566310, 27.92338627, 100],
                [116.34874490, 27.91718915, 100],
                [116.35311999, 27.91804451, 100],
                [116.35109257, 27.92284807, 100],
                [116.35975153, 27.92900526, 100],
                [116.35660704, 27.93816236, 100],
                [116.39585177, 27.93945304, 100],
                [116.41526036, 27.95352217, 100]
            ]
        }
    },
    computed: {
        ...mapGetters([
            'viewer',
            // 校内导航的显示关闭
            'campusNavFlag',
            'orgNavBarFlag',
            'arcNavBarFlag'
        ])
    },
    created () {
        this.DC = global.DC
    },
    watch: {
        viewer: {
            immediate: true,
            handler (newCode, oldCode) {
                if (this.titlesetLayerFlag == false && newCode != null) {
                    var that = this
                    that.tilesetLayer = new that.DC.TilesetLayer('tilesetLayer')
                    that.viewer.addLayer(that.tilesetLayer)
                    that.tileset = new that.DC.Tileset(
                        'http://data.mars3d.cn/3dtiles/max-shihua/tileset.json',
                        {
                            luminanceAtZenith: 0.5
                        }
                    )
                    that.tilesetLayer.addOverlay(that.tileset)
                    setTimeout(() => {
                        that.viewer.flyTo(that.tileset, 10)
                    }, 2000)
                    var silhouetteBlue = that.DC.Namespace.Cesium.PostProcessStageLibrary.createEdgeDetectionStage()
                    silhouetteBlue.uniforms.color = that.DC.Namespace.Cesium.Color.fromBytes(9, 162, 40)
                    silhouetteBlue.uniforms.length = 0.01
                    silhouetteBlue.selected = []
                    that.viewer.scene.postProcessStages.add(
                        that.DC.Namespace.Cesium.PostProcessStageLibrary.createSilhouetteStage([
                            silhouetteBlue
                        ])
                    )
                    var highlighted = {
                        feature: undefined,
                        originalColor: new that.DC.Namespace.Cesium.Color()
                    }
                    var selected = {
                        feature: undefined,
                        originalColor: new that.DC.Namespace.Cesium.Color()
                    }
                    that.tileset.on(that.DC.MouseEventType.CLICK, e => {
                        that.viewer.scene.globe.depthTestAgainstTerrain = false
                        that.$store.commit('CLEAR_ALL', null)
                        var imgArr = ['http://223.82.109.183:2081/zhxy/upload/20211222/f66dc4527eb4cc1b2d33fa3a5b345ed0.jpg']
                        that.$store.commit('SET_POPUPBGURL', imgArr[0])
                        that.$store.commit('SET_POPUPQRURL', 'http://223.82.109.183:2081/zhxy/upload/20211222/9c324adea5d9e5b50cd8f874d5f780f4.png')
                        that.$store.commit('SET_POINTPOSITION', [Number(e.wgs84Position.lng), Number(e.wgs84Position.lat), Number(e.wgs84Position.alt), Number(0), Number(0), Number(0)])
                        that.$store.commit('SET_STATENAME', e.overlay.attr.name)
                        that.$store.commit('SET_SITENAME', e.overlay.attr['地址'])
                        that.$store.commit('SET_POPUPIMGATLAS', imgArr)
                        // 定制化窗体
                        // eslint-disable-next-line no-unused-vars
                        var popup = new that.DC.DivForms(that.viewer, {
                            domId: 'divFormsDomBox',
                            position: [
                                that.DC.Transform.transformWGS84ToCartesian(new that.DC.Position(Number(e.wgs84Position.lng), Number(e.wgs84Position.lat), Number(e.wgs84Position.alt), Number(0), Number(0), Number(0)))
                            ]
                        })
                        that.$store.commit('SET_DETAILSPOPUP', true)
                        that.$store.commit('SET_PANORAMAPOPUP', false)
                    })
                    that.tileset.on(that.DC.MouseEventType.MOUSE_MOVE, e => {
                        silhouetteBlue.selected = []
                        if (that.DC.Namespace.Cesium.defined(highlighted.feature)) {
                            highlighted.feature.color = highlighted.originalColor
                            highlighted.feature = undefined
                        }
                        if (e.feature !== selected.feature) {
                            silhouetteBlue.selected = [e.feature]
                            highlighted.feature = e.feature
                            that.DC.Namespace.Cesium.Color.clone(
                                e.feature.color,
                                highlighted.originalColor
                            )
                            e.feature.color = that.DC.Namespace.Cesium.Color.fromBytes(155, 255, 175)
                        }
                    })
                    this.titlesetLayerFlag = true
                }
            }
        }
    },
    methods: {
        dimensionChange () {
            var that = this
            if (that.dimensionValue == '三 维') {
                that.wallLayer.show = false
                that.viewer.imageryLayers.remove(that.newLayer)
                that.newLayer = null
                that.tilesetLayer.show = true
                that.viewer.flyTo(that.tileset)
            } else {
                that.tilesetLayer.show = false
                var provider = new that.DC.Namespace.Cesium.WebMapTileServiceImageryProvider({
                    url: 'http://www.tdtfz.com/OneMapServer/rest/services/fzsw2019/MapServer/WMTS/tile/1.0.0/fzsw2019/{Style}/{TileMatrixSet}/{TileMatrix}/{TileRow}/{TileCol}',
                    layer: 'fzsw2019',
                    style: 'default',
                    tileMatrixSetID: 'default028mm',
                    format: 'image/jpgpng',
                    tilingScheme: new that.DC.Namespace.Cesium.GeographicTilingScheme(),
                    maximumLevel: 19,
                    tileMatrixLabels: [
                        '0',
                        '1',
                        '2',
                        '3',
                        '4',
                        '5',
                        '6',
                        '7',
                        '8',
                        '9',
                        '10',
                        '11',
                        '12',
                        '13',
                        '14',
                        '15',
                        '16',
                        '17',
                        '18',
                        '19'
                    ]
                })
                that.newLayer = that.viewer.imageryLayers.addImageryProvider(provider)
                if (that.oneFlag == false) {
                    that.wallLayer = new that.DC.VectorLayer('wallLayer')
                    that.viewer.addLayer(that.wallLayer)
                    that.wallArr.forEach(item => {
                        item = item.join(',')
                    })
                    that.wallArr = that.wallArr.join(';')
                    const wall = new that.DC.Wall(
                        that.wallArr
                    )
                    wall.setStyle({
                        material: new that.DC.WallTrailMaterialProperty({
                            color: that.DC.Namespace.Cesium.Color.fromBytes(0, 142, 255, 150),
                            // color: that.DC.Color.CYAN,
                            speed: 10
                        })
                    })
                    that.wallLayer.addOverlay(wall)
                    that.oneFlag = true
                }
                that.wallLayer.show = true
                that.viewer.camera.setView({
                    // Cesium的坐标是以地心为原点,一向指向南美洲,一向指向亚洲,一向指向北极州
                    // fromDegrees()方法,将经纬度和高程转换为世界坐标
                    destination: that.DC.Namespace.Cesium.Cartesian3.fromDegrees(116.36618337, 27.95911915, 1000.0),
                    orientation: {
                        // 指向
                        heading: that.DC.Namespace.Cesium.Math.toRadians(0, 0),
                        // 视角
                        pitch: that.DC.Namespace.Cesium.Math.toRadians(-90),
                        roll: 0.0
                    }
                })
            }
        }
    }
}
</script>
<style lang='scss' scope>
.dimension-cut {
    position: fixed;
    top: 100px;
    right: 10px;
    width: auto;
    // height: 40px;
    z-index: 1;
}
</style>
src/components/map/components/mapPopup.vue
@@ -72,6 +72,11 @@
                                                    <i class="popup-icon live-action-nav deblurring"></i>
                                                    实景
                                                </li>
                                                <li v-show="panoramaUrl != null && panoramaUrl != ''"
                                                    @click="monitorClick">
                                                    <i class="popup-icon monitor-nav deblurring"></i>
                                                    监控
                                                </li>
                                            </ul>
                                        </div>
                                        <div v-show="teachList.length > 0 || liveList.length > 0"
@@ -85,7 +90,7 @@
                                                    @click="tabBtnClick('生活服务')">生活服务</li>
                                            </ul>
                                            <div class="btm-content">
                                                <div class="on">
                                                <div :class="{'on': tabBtnFlag == '教学科研行政'}">
                                                    <ul>
                                                        <li v-for="(item, index) in teachList"
                                                            :key="index"
@@ -95,11 +100,11 @@
                                                        </li>
                                                    </ul>
                                                </div>
                                                <div>
                                                <div :class="{'on': tabBtnFlag == '生活服务'}">
                                                    <ul>
                                                        <li v-for="(item, index) in liveList"
                                                            :key="index"
                                                            @click="mechanismDetailPopup(1, item)">>
                                                            @click="mechanismDetailPopup(1, item)">
                                                            <i class="popup-icon location-icon deblurring"></i>
                                                            {{item}}
                                                        </li>
@@ -118,6 +123,7 @@
                    </div>
                </div>
            </div>
            <div v-if="panoramaPopup"
                 class="panorama-dom"
                 id="PanoramaBox">
@@ -142,11 +148,39 @@
                    </div>
                </div>
            </div>
            <div v-if="monitorPopup"
                 class="monitor-dom"
                 id="MonitorBox">
                <div style="width: 100%; height: 100%;">
                    <div class="monitor-container">
                        <div class="monitor-wrap">
                            <div class="content-wrap">
                                <div class="title">
                                    {{stateName}}
                                    <img @click="closeMonitorPopupBox"
                                         class="close-box"
                                         src="/img/navicon/close.png"
                                         alt="">
                                </div>
                                <div class="content">
                                    <video :src="monitorUrl"
                                           controls
                                           autoplay></video>
                                </div>
                            </div>
                        </div>
                        <div class="arrow"></div>
                    </div>
                </div>
            </div>
        </div>
        <!-- 二维码弹框相关 -->
        <el-dialog title="场景二维码"
                   :visible.sync="QRCodeFlag"
                   :modal="false"
                   :modal-append-to-body="false"
                   width='44%'>
            <div style="margin: 0; position: relative; width: 100%; height: 352px;">
                <img width="260"
@@ -175,7 +209,6 @@
               style="position: fixed; left: 111111111px;"
               v-html="audioSource"
               @ended="overAudio">
        </audio>
    </div>
</template>
@@ -214,12 +247,16 @@
            'telephone',
            // 介绍
            'introduceText',
            // 全景地址
            'panoramaUrl',
            // 详情弹框显示关闭
            'detailsPopup',
            // 全景地址
            'panoramaUrl',
            // 全景弹框显示关闭
            'panoramaPopup',
            // 监控地址
            'monitorUrl',
            // 监控弹框显示关闭
            'monitorPopup',
            'popupImgAtlas',
            // 教学
@@ -279,8 +316,30 @@
                    positions
                ]
            })
            this.$store.commit('SET_DETAILSPOPUP', false)
            this.$store.commit('SET_MONITORPOPUP', false)
            this.$store.commit('SET_PANORAMAPOPUP', true)
        },
        monitorClick () {
            if (this.audioFlag == true) {
                this.$refs.audioControlPlay.pause()
                this.audioFlag = false
            }
            // eslint-disable-next-line new-cap
            var positions = this.DC.Transform.transformWGS84ToCartesian(new this.DC.Position.fromArray(this.pointPosition))
            this.viewer.scene.globe.depthTestAgainstTerrain = false
            // eslint-disable-next-line no-unused-vars
            var monitor = new this.DC.PanoramaBox(this.viewer, {
                domId: 'MonitorBox',
                position: [
                    positions
                ]
            })
            this.$store.commit('SET_PANORAMAPOPUP', false)
            this.$store.commit('SET_DETAILSPOPUP', false)
            this.$store.commit('SET_MONITORPOPUP', true)
        },
        closeMapPopupBox () {
@@ -297,6 +356,11 @@
            this.$store.commit('SET_PANORAMAPOPUP', false)
        },
        closeMonitorPopupBox () {
            this.$store.commit('SET_MONITORURL', '')
            this.$store.commit('SET_MONITORPOPUP', false)
        },
        audioPlay () {
            if (this.audioSource == '') {
                var zhText = encodeURI(this.$refs.DomIntroduceText.innerText)
src/components/map/index.vue
@@ -1,16 +1,22 @@
/* eslint-disable camelcase */
<template>
    <div id="viewer-container"
         style="height: 100%; width: 100%;">
         style="height: 100%; width: 100%;"
         @click="mapClick($event)">
        <dimension />
        <left-nav ref="leftNav"></left-nav>
        <mapPopup />
        <campusBuildingSearch />
        <campusBuildingSearch ref="campusBuildingSearch" />
        <campusNav ref="campusNavRoute"
                   v-show="campusNavFlag" />
        <org-nav-bar v-if="orgNavBarFlag"></org-nav-bar>
        <arc-nav-bar v-if="arcNavBarFlag"></arc-nav-bar>
    </div>
</template>
<script>
@@ -18,12 +24,14 @@
import { mapGetters } from 'vuex'
import mapPopup from './components/mapPopup.vue'
import campusBuildingSearch from './components/campusBuildingSearch.vue'
import dimension from './components/dimension.vue'
export default {
    name: 'mapBox',
    components: {
        mapPopup,
        campusBuildingSearch
        campusBuildingSearch,
        dimension
    },
    data () {
        return {
@@ -54,7 +62,9 @@
            // 全景弹框显示关闭
            'panoramaPopup',
            // 校内导航的显示关闭
            'campusNavFlag'
            'campusNavFlag',
            'orgNavBarFlag',
            'arcNavBarFlag'
        ])
    },
    mounted () {
@@ -118,10 +128,6 @@
            viewer.measure.deactivate()
        }
        function gotoModel () {
            viewer.flyTo(tileset)
        }
        function initViewer () {
            viewer = new that.DC.Viewer('viewer-container', {
                contextOptions: {
@@ -134,22 +140,74 @@
            that.$store.commit('SET_VIEWER', viewer)
            viewer.on(that.DC.SceneEventType.CAMERA_CHANGED, (e) => {
                const height = Math.ceil(viewer.camera.positionCartographic.height)
                if (height < 100) {
                    viewer.camera.setView({
                        destination: that.DC.Namespace.Cesium.Cartesian3.fromRadians(viewer.camera.positionCartographic.longitude, viewer.camera.positionCartographic.latitude, 100),
                        orientation: {
                            // 指向
                            heading: that.DC.Namespace.Cesium.Math.toRadians(0, 0),
                            // 视角
                            pitch: that.DC.Namespace.Cesium.Math.toRadians(-90),
                            roll: 0.0
                        }
                    })
                };
                if (height > 6000) {
                    viewer.camera.setView({
                        destination: that.DC.Namespace.Cesium.Cartesian3.fromRadians(viewer.camera.positionCartographic.longitude, viewer.camera.positionCartographic.latitude, 6000),
                        orientation: {
                            // 指向
                            heading: that.DC.Namespace.Cesium.Math.toRadians(0, 0),
                            // 视角
                            pitch: that.DC.Namespace.Cesium.Math.toRadians(-90),
                            roll: 0.0
                        }
                    })
                }
            })
            // 最小
            viewer.scene.screenSpaceCameraController.minimumZoomDistance = 500
            // 最大
            viewer.scene.screenSpaceCameraController.maximumZoomDistance = 6000
            // 设置相机缩小时的速率
            viewer.scene.screenSpaceCameraController._minimumZoomRate = 30000
            // 设置相机放大时的速率
            viewer.scene.screenSpaceCameraController._maximumZoomRate = 5906376272000
            // 视角平移
            viewer.scene.screenSpaceCameraController.enableRotate = true
            // 视角缩放
            viewer.scene.screenSpaceCameraController.enableZoom = true
            // 视角旋转
            viewer.scene.screenSpaceCameraController.enableTilt = false
            that.$refs.leftNav.initialize(viewer)
            const popup = viewer.popup
            // const baselayer = that.DC.ImageryLayerFactory.createImageryLayer(that.DC.ImageryType.XYZ, {
            //     url: 'https://webmap-tile.sf-express.com/MapTileService/rt?x={col}&y={row}&z={level}'
            //     // url: 'https://webmap-tile.sf-express.com/MapTileService/rt?fetchtype=static&x={x}&y={y}&z={z}&project=sfmap&pic_size=256&pic_type=png8&data_name=361100&data_format=merged-dat&data_type=normal' // 行政区划
            popup.hide()
            // })
            const baselayer = that.DC.ImageryLayerFactory.createImageryLayer(that.DC.ImageryType.XYZ, {
                // url: 'https://webmap-tile.sf-express.com/MapTileService/rt?x={col}&y={row}&z={level}'
            const baselayer = that.DC.ImageryLayerFactory.createAmapImageryLayer(
                {
                    crs: 'WGS84'
                }
            )
            viewer.addBaseLayer(baselayer)
                url: 'https://webmap-tile.sf-express.com/MapTileService/rt?fetchtype=static&x={x}&y={y}&z={z}&project=sfmap&pic_size=256&pic_type=png8&data_name=361100&data_format=merged-dat&data_type=normal' // 行政区划
            // viewer.addBaseLayer(baselayer, {
            //     iconUrl: 'examples/images/icon/img.png',
            //     name: '影像'
            // })
            })
            viewer.addBaseLayer(baselayer, {
                iconUrl: 'examples/images/icon/img.png',
                name: '影像'
            })
            // viewer.addBaseLayer(wmtslayer, {
            //     iconUrl: 'examples/images/icon/img.png',
            //     name: '影像'
            // })
            // // eslint-disable-next-line camelcase
            // const baselayer_shaded = that.DC.ImageryLayerFactory.createArcGisImageryLayer({
@@ -181,80 +239,7 @@
            //     name: '地形'
            // })
            const tilesetLayer = new that.DC.TilesetLayer('tilesetLayer')
            viewer.addLayer(tilesetLayer)
            const tileset = new that.DC.Tileset(
                'http://data.mars3d.cn/3dtiles/max-shihua/tileset.json',
                {
                    luminanceAtZenith: 0.5
                }
            )
            tilesetLayer.addOverlay(tileset)
            setTimeout(() => {
                viewer.flyTo(tileset)
            }, 1500)
            tileset.on(that.DC.MouseEventType.CLICK, e => {
                viewer.scene.globe.depthTestAgainstTerrain = false
                that.$store.commit('CLEAR_ALL', null)
                var imgArr = ['http://223.82.109.183:2081/zhxy/upload/20211222/f66dc4527eb4cc1b2d33fa3a5b345ed0.jpg']
                that.$store.commit('SET_POPUPBGURL', imgArr[0])
                that.$store.commit('SET_POPUPQRURL', 'http://223.82.109.183:2081/zhxy/upload/20211222/9c324adea5d9e5b50cd8f874d5f780f4.png')
                that.$store.commit('SET_POINTPOSITION', [Number(e.wgs84Position.lng), Number(e.wgs84Position.lat), Number(e.wgs84Position.alt), Number(0), Number(0), Number(0)])
                that.$store.commit('SET_STATENAME', e.overlay.attr.name)
                that.$store.commit('SET_SITENAME', e.overlay.attr['地址'])
                that.$store.commit('SET_POPUPIMGATLAS', imgArr)
                // 定制化窗体
                // eslint-disable-next-line no-unused-vars
                var popup = new that.DC.DivForms(viewer, {
                    domId: 'divFormsDomBox',
                    position: [
                        that.DC.Transform.transformWGS84ToCartesian(new that.DC.Position(Number(e.wgs84Position.lng), Number(e.wgs84Position.lat), Number(e.wgs84Position.alt), Number(0), Number(0), Number(0)))
                    ]
                })
                that.$store.commit('SET_DETAILSPOPUP', true)
                that.$store.commit('SET_PANORAMAPOPUP', false)
            })
            const wallLayer = new that.DC.VectorLayer('wallLayer')
            viewer.addLayer(wallLayer)
            var arr = [
                [115.87597219, 28.74628526, 100],
                [115.87556558, 28.74415792, 100],
                [115.87459782, 28.74197687, 100],
                [115.87371834, 28.74219927, 100],
                [115.87210924, 28.74182217, 100],
                [115.86469971, 28.73630725, 100],
                [115.86387107, 28.73620123, 100],
                [115.86274498, 28.73616026, 100],
                [115.86173699, 28.74241350, 100],
                [115.86105468, 28.74643934, 100],
                [115.86609240, 28.74642593, 100],
                [115.87597219, 28.74628526, 100]
            ]
            arr.forEach(item => {
                item = item.join(',')
            })
            arr = arr.join(';')
            const wall = new that.DC.Wall(
                arr
            )
            wall.setStyle({
                material: new that.DC.WallTrailMaterialProperty({
                    color: that.DC.Namespace.Cesium.Color.fromBytes(0, 142, 255, 150),
                    // color: that.DC.Color.CYAN,
                    speed: 10
                })
            })
            wallLayer.addOverlay(wall)
            // viewer.use(new that.DC.Measure())
            // viewer.flyTo(wallLayer)
            // viewer.flyToPosition(
            //     new that.DC.Position(117.08489820, 31.65413916, 1500, 0, -90, 45)
@@ -262,14 +247,24 @@
            viewer.compass.enable = true
            viewer.zoomController.enable = true
            // viewer.locationBar.enable = true
            viewer.locationBar.enable = true
            viewer.hawkeyeMap.enable = true
            viewer.hawkeyeMap.addBaseLayer(
                that.DC.ImageryLayerFactory.createAmapImageryLayer(
                    {
                        crs: 'WGS84'
                    }
                )
            )
            // viewer.distanceLegend.enable = true
        }
        that.DC.ready(initViewer)
    },
    methods: {
        mapClick (e) {
            this.$refs.campusBuildingSearch.shortcutShow(e)
        }
    }
}
</script>
src/components/orgNavBar/index.vue
@@ -10,7 +10,7 @@
                         src="/img/icon/jg.png"
                         alt="">
                    <span>
                        {{title}}
                        {{orgNavBarTitle}}
                    </span>
                </div>
                <img class="close"
@@ -20,7 +20,7 @@
            </div>
            <div class="content">
                <ul>
                    <li v-for="(item, index) in navList"
                    <li v-for="(item, index) in orgNavBarList"
                        :key="index"
                        @click="mapPopup(item)">
                        <img :src="item.icon"
@@ -46,14 +46,6 @@
            DC: null
        }
    },
    props: {
        navList: {
            type: Array
        },
        title: {
            type: String
        }
    },
    created () {
        this.DC = global.DC
    },
@@ -71,7 +63,9 @@
            // 介绍
            'introduceText',
            // 全景地址
            'panoramaUrl'
            'panoramaUrl',
            'orgNavBarList',
            'orgNavBarTitle'
        ])
    },
    methods: {
@@ -121,9 +115,7 @@
                document.onmouseup = null
            }
        },
        closeModel () {
            this.$parent.closeModel()
        },
        mapPopup (item) {
            this.$store.commit('CLEAR_ALL', null)
@@ -146,6 +138,7 @@
                3
            )
        },
        newPopup (item) {
            const position = this.DC.Transform.transformWGS84ToCartesian(new this.DC.Position(Number(item.longitude), Number(item.latitude), Number(item.alt), Number(item.heading), Number(item.pitch), Number(item.roll)))
            // eslint-disable-next-line no-unused-vars
@@ -158,6 +151,20 @@
            this.$store.commit('SET_PANORAMAPOPUP', false)
            this.$store.commit('SET_DETAILSPOPUP', true)
        },
        closeModel () {
            var path = this.$route.path
            if (path.indexOf('/orgnav') != -1) {
                this.$store.dispatch('delVisitedViews', this.$route)
                this.$router.push('/pcLayout/default')
            }
            this.$store.commit('SET_ORGNAVBARTITLE', '')
            this.$store.commit('SET_ORGNAVBARFLAG', false)
            this.$store.commit('SET_ORGNAVBARLIST', [])
        }
    }
}
src/pcviews/arc/culture.vue
@@ -3,30 +3,42 @@
 * @Name: 文化风景
 * @Date: 2021-11-15 17:14:47
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-15 11:48:47
 * @Last Modified time: 2021-12-25 14:39:28
 */
<template>
    <div>
        <arc-nav-bar :title="title"
                     :arcCode="code"></arc-nav-bar>
    </div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
    data () {
        return {
            title: '文化风景',
            code: 5
        }
    },
    computed: {
        ...mapGetters([
            // 校内导航的显示关闭
            'orgNavBarFlag'
        ])
    },
    created () {
        if (this.orgNavBarFlag == true) {
            this.$store.commit('SET_ORGNAVBARTITLE', '')
            this.$store.commit('SET_ORGNAVBARLIST', [])
            this.$store.commit('SET_ORGNAVBARFLAG', false)
        }
        this.$store.commit('SET_ARCNAVBARTITLE', '文化风景')
        this.$store.commit('SET_ARCNAVBARCODE', 5)
        this.$store.commit('SET_ARCNAVBARFLAG', true)
    },
    methods: {
        closeModel () {
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        }
    }
}
</script>
src/pcviews/arc/dorm.vue
@@ -3,30 +3,42 @@
 * @Name: 学生宿舍
 * @Date: 2021-11-15 17:14:47
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-15 11:48:43
 * @Last Modified time: 2021-12-25 14:41:30
 */
<template>
    <div>
        <arc-nav-bar :title="title"
                     :arcCode="code"></arc-nav-bar>
    </div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
    data () {
        return {
            title: '学生宿舍',
            code: 4
        }
    },
    computed: {
        ...mapGetters([
            // 校内导航的显示关闭
            'orgNavBarFlag'
        ])
    },
    created () {
        if (this.orgNavBarFlag == true) {
            this.$store.commit('SET_ORGNAVBARTITLE', '')
            this.$store.commit('SET_ORGNAVBARLIST', [])
            this.$store.commit('SET_ORGNAVBARFLAG', false)
        }
        this.$store.commit('SET_ARCNAVBARTITLE', '学生宿舍')
        this.$store.commit('SET_ARCNAVBARCODE', 4)
        this.$store.commit('SET_ARCNAVBARFLAG', true)
    },
    methods: {
        closeModel () {
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        }
    }
}
</script>
src/pcviews/arc/edifact.vue
@@ -3,30 +3,42 @@
 * @Name: 行政办公
 * @Date: 2021-11-15 17:14:47
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-15 11:48:39
 * @Last Modified time: 2021-12-25 14:42:35
 */
<template>
    <div>
        <arc-nav-bar :title="title"
                     :arcCode="code"></arc-nav-bar>
    </div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
    data () {
        return {
            title: '行政办公',
            code: 1
        }
    },
    computed: {
        ...mapGetters([
            // 校内导航的显示关闭
            'orgNavBarFlag'
        ])
    },
    created () {
        if (this.orgNavBarFlag == true) {
            this.$store.commit('SET_ORGNAVBARTITLE', '')
            this.$store.commit('SET_ORGNAVBARLIST', [])
            this.$store.commit('SET_ORGNAVBARFLAG', false)
        }
        this.$store.commit('SET_ARCNAVBARTITLE', '行政办公')
        this.$store.commit('SET_ARCNAVBARCODE', 1)
        this.$store.commit('SET_ARCNAVBARFLAG', true)
    },
    methods: {
        closeModel () {
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        }
    }
}
</script>
src/pcviews/arc/family.vue
@@ -3,30 +3,42 @@
 * @Name: 家属住宅
 * @Date: 2021-11-15 17:14:47
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-15 11:48:35
 * @Last Modified time: 2021-12-25 14:42:54
 */
<template>
    <div>
        <arc-nav-bar :title="title"
                     :arcCode="code"></arc-nav-bar>
    </div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
    data () {
        return {
            title: '家属住宅',
            code: 6
        }
    },
    computed: {
        ...mapGetters([
            // 校内导航的显示关闭
            'orgNavBarFlag'
        ])
    },
    created () {
        if (this.orgNavBarFlag == true) {
            this.$store.commit('SET_ORGNAVBARTITLE', '')
            this.$store.commit('SET_ORGNAVBARLIST', [])
            this.$store.commit('SET_ORGNAVBARFLAG', false)
        }
        this.$store.commit('SET_ARCNAVBARTITLE', '家属住宅')
        this.$store.commit('SET_ARCNAVBARCODE', 6)
        this.$store.commit('SET_ARCNAVBARFLAG', true)
    },
    methods: {
        closeModel () {
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        }
    }
}
</script>
src/pcviews/arc/rest.vue
@@ -3,30 +3,42 @@
 * @Name: 其他楼宇
 * @Date: 2021-11-15 17:14:47
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-15 11:48:17
 * @Last Modified time: 2021-12-25 14:44:21
 */
<template>
    <div>
        <arc-nav-bar :title="title"
                     :arcCode="code"></arc-nav-bar>
    </div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
    data () {
        return {
            title: '其他楼宇',
            code: 7
        }
    },
    computed: {
        ...mapGetters([
            // 校内导航的显示关闭
            'orgNavBarFlag'
        ])
    },
    created () {
        if (this.orgNavBarFlag == true) {
            this.$store.commit('SET_ORGNAVBARTITLE', '')
            this.$store.commit('SET_ORGNAVBARLIST', [])
            this.$store.commit('SET_ORGNAVBARFLAG', false)
        }
        this.$store.commit('SET_ARCNAVBARTITLE', '其他楼宇')
        this.$store.commit('SET_ARCNAVBARCODE', 7)
        this.$store.commit('SET_ARCNAVBARFLAG', true)
    },
    methods: {
        closeModel () {
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        }
    }
}
</script>
src/pcviews/arc/teaching.vue
@@ -3,30 +3,42 @@
 * @Name: 教学科研
 * @Date: 2021-11-15 17:14:47
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-15 11:48:26
 * @Last Modified time: 2021-12-25 14:45:10
 */
<template>
    <div>
        <arc-nav-bar :title="title"
                     :arcCode="code"></arc-nav-bar>
    </div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
    data () {
        return {
            title: '教学科研',
            code: 2
        }
    },
    computed: {
        ...mapGetters([
            // 校内导航的显示关闭
            'orgNavBarFlag'
        ])
    },
    created () {
        if (this.orgNavBarFlag == true) {
            this.$store.commit('SET_ORGNAVBARTITLE', '')
            this.$store.commit('SET_ORGNAVBARLIST', [])
            this.$store.commit('SET_ORGNAVBARFLAG', false)
        }
        this.$store.commit('SET_ARCNAVBARTITLE', '教学科研')
        this.$store.commit('SET_ARCNAVBARCODE', 2)
        this.$store.commit('SET_ARCNAVBARFLAG', true)
    },
    methods: {
        closeModel () {
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        }
    }
}
</script>
src/pcviews/arc/venue.vue
@@ -3,30 +3,42 @@
 * @Name: 校内场馆
 * @Date: 2021-11-15 17:14:47
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-15 11:48:23
 * @Last Modified time: 2021-12-25 14:47:37
 */
<template>
    <div>
        <arc-nav-bar :title="title"
                     :arcCode="code"></arc-nav-bar>
    </div>
</template>
<script>
import { mapGetters } from 'vuex'
export default {
    data () {
        return {
            title: '校内场馆',
            code: 3
        }
    },
    computed: {
        ...mapGetters([
            // 校内导航的显示关闭
            'orgNavBarFlag'
        ])
    },
    created () {
        if (this.orgNavBarFlag == true) {
            this.$store.commit('SET_ORGNAVBARTITLE', '')
            this.$store.commit('SET_ORGNAVBARLIST', [])
            this.$store.commit('SET_ORGNAVBARFLAG', false)
        }
        this.$store.commit('SET_ARCNAVBARTITLE', '校内场馆')
        this.$store.commit('SET_ARCNAVBARCODE', 3)
        this.$store.commit('SET_ARCNAVBARFLAG', true)
    },
    methods: {
        closeModel () {
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        }
    }
}
</script>
src/pcviews/campusnavi/index.vue
@@ -6,8 +6,6 @@
<script>
import { mapGetters } from 'vuex'
export default {
    data () {
        return {
@@ -15,36 +13,8 @@
        }
    },
    computed: {
        ...mapGetters([
            'viewer',
            'popupBgUrl',
            'pupupQRUrl',
            // 终点
            'terminus',
            // 起点
            'startingPoint',
            // 点信息
            'pointPosition',
            // 点名称
            'stateName',
            // 地址
            'siteName',
            // 介绍
            'introduceText',
            // 全景地址
            'panoramaUrl',
            // 详情弹框显示关闭
            'detailsPopup',
            // 全景弹框显示关闭
            'panoramaPopup',
            // 校内导航的显示关闭
            'campusNavFlag'
        ])
    },
    mounted () {
        if (this.campusNavFlag == false) this.$store.commit('SET_CAMPUSNAVFLAG', true)
        this.$store.commit('SET_CAMPUSNAVFLAG', true)
    },
    methods: {
src/pcviews/orgnav/directly.vue
@@ -3,25 +3,42 @@
 * @Name: 直属及附属单位
 * @Date: 2021-11-15 10:02:12
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-21 15:11:39
 * @Last Modified time: 2021-12-25 14:50:00
 */
 <template>
    <div>
        <org-nav-bar :navList="list"
                     :title="title"></org-nav-bar>
    </div>
</template>
<script>
import { getList } from '@/api/pc/orgnav/index'
import { mapGetters } from 'vuex'
export default {
    data () {
        return {
            title: '直属及附属单位',
            list: []
        }
    },
    computed: {
        ...mapGetters([
            // 校内导航的显示关闭
            'arcNavBarFlag'
        ])
    },
    created () {
        if (this.arcNavBarFlag == true) {
            this.$store.commit('SET_ARCNAVBARTITLE', '')
            this.$store.commit('SET_ARCNAVBARCODE', '')
            this.$store.commit('SET_ARCNAVBARFLAG', false)
        }
        this.$store.commit('SET_ORGNAVBARTITLE', '直属及附属单位')
        this.$store.commit('SET_ORGNAVBARLIST', [])
        this.$store.commit('SET_ORGNAVBARFLAG', true)
        getList({ type: 3 }).then(res => {
            res.data.data.records.forEach(item => {
                this.list.push({
@@ -40,13 +57,12 @@
                    introduce: item.introduce
                })
            })
            this.$store.commit('SET_ORGNAVBARLIST', this.list)
        })
    },
    methods: {
        closeModel () {
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        }
    }
}
</script>
src/pcviews/orgnav/masses.vue
@@ -3,25 +3,42 @@
 * @Name: 党群机构
 * @Date: 2021-11-15 10:02:12
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-20 11:26:52
 * @Last Modified time: 2021-12-25 15:10:09
 */
 <template>
    <div>
        <org-nav-bar :navList="list"
                     :title="title"></org-nav-bar>
    </div>
</template>
<script>
import { getList } from '@/api/pc/orgnav/index'
import { mapGetters } from 'vuex'
export default {
    data () {
        return {
            title: '党群机构',
            list: []
        }
    },
    computed: {
        ...mapGetters([
            // 校内导航的显示关闭
            'arcNavBarFlag'
        ])
    },
    created () {
        if (this.arcNavBarFlag == true) {
            this.$store.commit('SET_ARCNAVBARTITLE', '')
            this.$store.commit('SET_ARCNAVBARCODE', '')
            this.$store.commit('SET_ARCNAVBARFLAG', false)
        }
        this.$store.commit('SET_ORGNAVBARTITLE', '党群机构')
        this.$store.commit('SET_ORGNAVBARLIST', [])
        this.$store.commit('SET_ORGNAVBARFLAG', true)
        getList({ type: 1 }).then(res => {
            res.data.data.records.forEach(item => {
                this.list.push({
@@ -40,13 +57,12 @@
                    introduce: item.introduce
                })
            })
            this.$store.commit('SET_ORGNAVBARLIST', this.list)
        })
    },
    methods: {
        closeModel () {
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        }
    }
}
</script>
src/pcviews/orgnav/ofc.vue
@@ -3,25 +3,42 @@
 * @Name: 职能部处
 * @Date: 2021-11-15 10:02:12
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-20 11:26:49
 * @Last Modified time: 2021-12-25 15:10:30
 */
 <template>
    <div>
        <org-nav-bar :navList="list"
                     :title="title"></org-nav-bar>
    </div>
</template>
<script>
import { getList } from '@/api/pc/orgnav/index'
import { mapGetters } from 'vuex'
export default {
    data () {
        return {
            title: '职能部处',
            list: []
        }
    },
    computed: {
        ...mapGetters([
            // 校内导航的显示关闭
            'arcNavBarFlag'
        ])
    },
    created () {
        if (this.arcNavBarFlag == true) {
            this.$store.commit('SET_ARCNAVBARTITLE', '')
            this.$store.commit('SET_ARCNAVBARCODE', '')
            this.$store.commit('SET_ARCNAVBARFLAG', false)
        }
        this.$store.commit('SET_ORGNAVBARTITLE', '职能部处')
        this.$store.commit('SET_ORGNAVBARLIST', [])
        this.$store.commit('SET_ORGNAVBARFLAG', true)
        getList({ type: 2 }).then(res => {
            res.data.data.records.forEach(item => {
                this.list.push({
@@ -40,13 +57,12 @@
                    introduce: item.introduce
                })
            })
            this.$store.commit('SET_ORGNAVBARLIST', this.list)
        })
    },
    methods: {
        closeModel () {
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        }
    }
}
</script>
src/pcviews/orgnav/rest.vue
@@ -3,25 +3,42 @@
 * @Name: 其他机构
 * @Date: 2021-11-15 10:02:12
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-21 15:13:31
 * @Last Modified time: 2021-12-25 15:10:47
 */
 <template>
    <div>
        <org-nav-bar :navList="list"
                     :title="title"></org-nav-bar>
    </div>
</template>
<script>
import { getList } from '@/api/pc/orgnav/index'
import { mapGetters } from 'vuex'
export default {
    data () {
        return {
            title: '其他机构',
            list: []
        }
    },
    computed: {
        ...mapGetters([
            // 校内导航的显示关闭
            'arcNavBarFlag'
        ])
    },
    created () {
        if (this.arcNavBarFlag == true) {
            this.$store.commit('SET_ARCNAVBARTITLE', '')
            this.$store.commit('SET_ARCNAVBARCODE', '')
            this.$store.commit('SET_ARCNAVBARFLAG', false)
        }
        this.$store.commit('SET_ORGNAVBARTITLE', '其他机构')
        this.$store.commit('SET_ORGNAVBARLIST', [])
        this.$store.commit('SET_ORGNAVBARFLAG', true)
        getList({ type: 5 }).then(res => {
            res.data.data.records.forEach(item => {
                this.list.push({
@@ -40,13 +57,12 @@
                    introduce: item.introduce
                })
            })
            this.$store.commit('SET_ORGNAVBARLIST', this.list)
        })
    },
    methods: {
        closeModel () {
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        }
    }
}
</script>
src/pcviews/orgnav/teaching.vue
@@ -3,25 +3,42 @@
 * @Name: 教学与科研机构
 * @Date: 2021-11-15 10:02:12
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-21 15:12:33
 * @Last Modified time: 2021-12-25 15:11:00
 */
 <template>
    <div>
        <org-nav-bar :navList="list"
                     :title="title"></org-nav-bar>
    </div>
</template>
<script>
import { getList } from '@/api/pc/orgnav/index'
import { mapGetters } from 'vuex'
export default {
    data () {
        return {
            title: '教学与科研机构',
            list: []
        }
    },
    computed: {
        ...mapGetters([
            // 校内导航的显示关闭
            'arcNavBarFlag'
        ])
    },
    created () {
        if (this.arcNavBarFlag == true) {
            this.$store.commit('SET_ARCNAVBARTITLE', '')
            this.$store.commit('SET_ARCNAVBARCODE', '')
            this.$store.commit('SET_ARCNAVBARFLAG', false)
        }
        this.$store.commit('SET_ORGNAVBARTITLE', '教学与科研机构')
        this.$store.commit('SET_ORGNAVBARLIST', [])
        this.$store.commit('SET_ORGNAVBARFLAG', true)
        getList({ type: 4 }).then(res => {
            res.data.data.records.forEach(item => {
                this.list.push({
@@ -40,13 +57,12 @@
                    introduce: item.introduce
                })
            })
            this.$store.commit('SET_ORGNAVBARLIST', this.list)
        })
    },
    methods: {
        closeModel () {
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        }
    }
}
</script>
src/store/getters.js
@@ -26,7 +26,10 @@
const search = {
    orgNavBarFlag: state => state.search.orgNavBarFlag,
    orgNavBarTitle: state => state.search.orgNavBarTitle,
    orgNavBarList: state => state.search.orgNavBarList
    orgNavBarList: state => state.search.orgNavBarList,
    arcNavBarFlag: state => state.search.arcNavBarFlag,
    arcNavBarTitle: state => state.search.arcNavBarTitle,
    arcNavBarCode: state => state.search.arcNavBarCode
}
const getters = {
@@ -44,8 +47,10 @@
    telephone: state => state.popupParams.telephone,
    introduceText: state => state.popupParams.introduceText,
    panoramaUrl: state => state.popupParams.panoramaUrl,
    detailsPopup: state => state.popupParams.detailsPopup,
    panoramaPopup: state => state.popupParams.panoramaPopup,
    monitorUrl: state => state.popupParams.monitorUrl,
    monitorPopup: state => state.popupParams.monitorPopup,
    detailsPopup: state => state.popupParams.detailsPopup,
    popupImgAtlas: state => state.popupParams.popupImgAtlas,
    teachList: state => state.popupParams.teachList,
    liveList: state => state.popupParams.liveList
src/store/modules/popupParams.js
@@ -9,9 +9,11 @@
        siteName: null,
        telephone: null,
        introduceText: null,
        panoramaUrl: null,
        detailsPopup: false,
        panoramaUrl: null,
        panoramaPopup: false,
        monitorUrl: null,
        monitorPopup: false,
        // 图集
        popupImgAtlas: [],
        teachList: [],
@@ -48,11 +50,17 @@
        SET_PANORAMAURL (state, panoramaUrl) {
            state.panoramaUrl = panoramaUrl
        },
        SET_DETAILSPOPUP (state, detailsPopup) {
            state.detailsPopup = detailsPopup
        },
        SET_PANORAMAPOPUP (state, panoramaPopup) {
            state.panoramaPopup = panoramaPopup
        },
        SET_MONITORURL (state, monitorUrl) {
            state.monitorUrl = monitorUrl
        },
        SET_MONITORPOPUP (state, monitorPopup) {
            state.monitorPopup = monitorPopup
        },
        SET_DETAILSPOPUP (state, detailsPopup) {
            state.detailsPopup = detailsPopup
        },
        SET_POPUPIMGATLAS (state, popupImgAtlas) {
            state.popupImgAtlas = popupImgAtlas
@@ -69,6 +77,7 @@
            state.introduceText = param
            state.telephone = param
            state.panoramaUrl = param
            state.monitorUrl = param
            state.teachList = []
            state.liveList = []
        }
src/store/modules/search.js
@@ -2,7 +2,10 @@
    state: {
        orgNavBarFlag: false,
        orgNavBarTitle: [],
        orgNavBarList: []
        orgNavBarList: [],
        arcNavBarFlag: false,
        arcNavBarTitle: [],
        arcNavBarCode: []
    },
    mutations: {
        SET_ORGNAVBARFLAG (state, orgNavBarFlag) {
@@ -13,6 +16,16 @@
        },
        SET_ORGNAVBARLIST (state, orgNavBarList) {
            state.orgNavBarList = orgNavBarList
        },
        SET_ARCNAVBARFLAG (state, arcNavBarFlag) {
            state.arcNavBarFlag = arcNavBarFlag
        },
        SET_ARCNAVBARTITLE (state, arcNavBarTitle) {
            state.arcNavBarTitle = arcNavBarTitle
        },
        SET_ARCNAVBARCODE (state, arcNavBarCode) {
            state.arcNavBarCode = arcNavBarCode
        }
    },
    actions: {
src/styles/divforms/panoramaBox.scss
@@ -30,6 +30,7 @@
                    margin: auto;
                    width: 18px;
                    height: 18px;
                    cursor: pointer;
                }
            }
        }
@@ -49,4 +50,59 @@
        transform: rotate(-45deg) translate(5px, -15px);
        background-color: #28bbf0;
    }
}
.monitor-dom {
    position: fixed;
    left: 0;
    z-index: 1 !important;
    .monitor-wrap {
        position: relative;
        overflow: hidden;
        padding: 30px;
        .content-wrap {
            padding: 0 20px 20px 20px;
            background-image: linear-gradient(180deg, transparent 0px, #28bbf06c 0px, #28bbf06c 50%, transparent 50%), linear-gradient(0deg, transparent 0px, #28bbf06c 0px, #28bbf06c 50.1%, transparent 50%);
            border: 1px solid #29baf1;
            box-shadow: 0 0px 12px #29b8f1e5;
            .title {
                position: relative;
                line-height: 36px;
                color: #fff;
                text-align: center;
                .close-box {
                    position: absolute;
                    top: 0;
                    right: 8px;
                    bottom: 0;
                    left: auto;
                    margin: auto;
                    width: 18px;
                    height: 18px;
                    cursor: pointer;
                }
            }
        }
        video {
            width: 460px;
            height: 320px;
            object-fit: fill;
        }
    }
    .arrow {
        position: absolute;
        bottom: 0;
        left: 0;
        width: 45px;
        height: 2px;
        transform: rotate(-45deg) translate(5px, -15px);
        background-color: #28bbf0;
    }
}
src/styles/divforms/popup.scss
@@ -10,6 +10,7 @@
        li {
            margin: 0 4px;
            flex: 1;
            min-width: 72px;
            height: 30px;
            line-height: 30px;
            list-style: none;
@@ -48,6 +49,11 @@
            .live-action-nav {
                background: url(/img/icon/live-action.png) no-repeat;
                background-size: 100% 100%;
            }
            .monitor-nav {
                background: url(/img/icon/monitor.png) no-repeat;
                background-size: 100% 100%;
            }
@@ -142,7 +148,8 @@
    p {
        white-space: normal !important;
        word-wrap: break-word !important;
        max-width: 396px;
        min-width: 396px;
        max-width: 492px;
        font-size: 0.875rem;
        line-height: 24px;
    }
src/styles/pcpage/dc-ui.scss
@@ -12,4 +12,12 @@
        transform: scale(1.6);
    }
    .dc-zoom-controller {
        background: #2196f3;
    }
    .dc-compass .out-ring {
        fill: #2196f3;
    }
}