shuishen
2021-12-15 485b6c1599b0c98160ebf0d8eff6c41693236208
校内建筑添加接口,校内导航步行以及驾驶路线完善,弹窗部分完善
19 files modified
3 files added
910 ■■■■■ changed files
public/img/navicon/end.png patch | view | raw | blame | history
public/img/navicon/start.png patch | view | raw | blame | history
src/api/pc/public/arc.js 32 ●●●●● patch | view | raw | blame | history
src/components/arcNavBar/index.vue 99 ●●●● patch | view | raw | blame | history
src/components/campusNav/index.vue 117 ●●●●● patch | view | raw | blame | history
src/components/map/index.vue 32 ●●●● patch | view | raw | blame | history
src/components/orgNavBar/index.vue 12 ●●●● patch | view | raw | blame | history
src/main.js 6 ●●●● 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 61 ●●●● 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 174 ●●●●● patch | view | raw | blame | history
src/pcviews/arc/venue.vue 30 ●●●● patch | view | raw | blame | history
src/pcviews/orgnav/directly.vue 49 ●●●● patch | view | raw | blame | history
src/pcviews/orgnav/masses.vue 7 ●●●● patch | view | raw | blame | history
src/pcviews/orgnav/ofc.vue 49 ●●●● patch | view | raw | blame | history
src/pcviews/orgnav/rest.vue 49 ●●●● patch | view | raw | blame | history
src/pcviews/orgnav/teaching.vue 49 ●●●● patch | view | raw | blame | history
src/store/getters.js 6 ●●●● patch | view | raw | blame | history
src/store/modules/popupParams.js 18 ●●●●● patch | view | raw | blame | history
public/img/navicon/end.png
public/img/navicon/start.png
src/api/pc/public/arc.js
New file
@@ -0,0 +1,32 @@
/*
 * @Author: Morpheus
 * @Date: 2021-05-09 15:17:44
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-15 11:57:20
 */
// 校区
import request from '@/router/axios'
export const getList = (params) => {
    return request({
        url: '/blade-system/dict-biz/dictionary?code=campus',
        method: 'get',
        params: params
    })
}
export const getChildNavList = (params) => {
    return request({
        url: '/blade-architecture/architecture/selectList',
        method: 'get',
        params: params
    })
}
export const getChildNavDetail = (params) => {
    return request({
        url: '/blade-architecture/architecture/selectInArchite',
        method: 'get',
        params: params
    })
}
src/components/arcNavBar/index.vue
@@ -21,12 +21,16 @@
            <div class="content">
                <div class="tab">
                    <ul>
                        <li :class="{'on': item.flag}" v-for="(item, index) in navList" :key="index" @click="topNavClick(index)">{{ item.title }}</li>
                        <li :class="{'on': item.flag}"
                            v-for="(item, index) in titleList"
                            :key="index"
                            @click="topNavClick(item, index)">{{ item.title }}</li>
                    </ul>
                </div>
                <ul>
                    <li v-for="(item, index) in itemNavList"
                        :key="index">
                        :key="index"
                        @click="mapPopup(item)">
                        <img :src="item.icon"
                             alt="">
                        <span>
@@ -40,24 +44,50 @@
</template>
<script>
import { mapGetters } from 'vuex'
import { getList, getChildNavList, getChildNavDetail } from '@/api/pc/public/arc'
export default {
    name: 'ArcNavBar',
    data () {
        return {
            moveFlag: false,
            itemNavList: []
            itemNavList: [],
            DC: null
        }
    },
    props: {
        navList: {
            type: Array
        },
        title: {
            type: String
        },
        arcCode: {
            type: Number
        }
    },
    computed: {
        ...mapGetters([
            'viewer',
            'popupBgUrl',
            'pupupQRUrl',
            // 点信息
            'pointPosition',
            // 点名称
            'stateName'
        ])
    },
    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 () {
        this.itemNavList = this.navList[0].list
    },
    methods: {
        move (e) {
@@ -109,14 +139,59 @@
        closeModel () {
            this.$parent.closeModel()
        },
        topNavClick (index) {
            this.navList.forEach(item => {
        topNavClick (item, index) {
            this.titleList.forEach(item => {
                item.flag = false
            })
            this.navList[index].flag = true
            this.titleList[index].flag = true
            this.itemNavList = this.navList[index].list
            this.getChilsNavs(item.key)
        },
        getChilsNavs (campus) {
            this.itemNavList = []
            getChildNavList({ campus: campus, type: this.arcCode }).then(res => {
                res.data.data.forEach(item => {
                    this.itemNavList.push({
                        navTitle: item.mechanismName,
                        icon: '/img/navicon/tag.png',
                        id: item.id
                    })
                })
            })
        },
        mapPopup (param) {
            getChildNavDetail({ id: param.id }).then(res => {
                var result = res.data.data[0].list
                this.$store.commit('SET_POPUPBGURL', result.tpUrl)
                this.$store.commit('SET_POPUPQRURL', result.codeUrl)
                this.$store.commit('SET_POINTPOSITION', [result.jd, result.wd, result.gd, result.heading, result.pitch, result.roll])
                this.$store.commit('SET_STATENAME', result.mechanismName)
                var that = this
                // item.alt, item.heading, item.pitch, item.roll
                this.viewer.zoomToPosition(
                    new this.DC.Position(result.jd, result.wd, result.gd, result.heading, result.pitch, result.roll),
                    function () {
                        that.newPopup(result)
                    }
                )
                // res.data.data[0].jx
            })
        },
        newPopup (item) {
            const position = this.DC.Transform.transformWGS84ToCartesian(new this.DC.Position(item.jd, item.wd, item.gd, item.heading, item.pitch, item.roll))
            // eslint-disable-next-line new-cap
            var popup = new this.DC.divForms(this.viewer, {
                domId: 'div1',
                title: item.mechanismName,
                className: 'divForms-dom',
                content: document.getElementById('mapChildContent'),
                position: [
                    position
                ]
            })
        }
    }
}
@@ -177,7 +252,7 @@
            text-align: center;
            overflow-y: auto;
            background: url(/img/bg/nav-bg.jpeg) no-repeat;
            background-size:  100% 100%;
            background-size: 100% 100%;
            .tab {
                height: 42px;
                border-bottom: 1px solid #ccc;
src/components/campusNav/index.vue
@@ -20,12 +20,12 @@
        <div class="container">
            <div class="tab">
                <ul>
                    <li @click="tabClick"
                    <li @click="tabClick('步行')"
                        :class="{on:tabOneFlag}">
                        <i></i>
                        步行
                    </li>
                    <li @click="tabClick"
                    <li @click="tabClick('驾车')"
                        :class="{on:tabTwoFlag}">
                        <i></i>
                        驾车
@@ -50,7 +50,8 @@
                    </div>
                </div>
                <div>
                    <el-button type="danger">导航</el-button>
                    <el-button @click="startNavigation"
                               type="danger">导航</el-button>
                </div>
            </div>
        </div>
@@ -58,13 +59,18 @@
</template>
<script>
import { mapGetters } from 'vuex'
import axios from 'axios'
export default {
    name: 'campusNav',
    data () {
        return {
            moveFlag: false,
            tabOneFlag: true,
            tabTwoFlag: false
            tabTwoFlag: false,
            DC: null,
            navigationWay: '步行',
            routeLayer: null
        }
    },
    props: {
@@ -74,6 +80,18 @@
        getToName: {
            type: String
        }
    },
    computed: {
        ...mapGetters([
            'viewer',
            // 起点
            'startingPoint',
            // 终点
            'terminus'
        ])
    },
    created () {
        this.DC = global.DC
    },
    methods: {
        move (e) {
@@ -125,9 +143,98 @@
        closeModel () {
            this.$parent.closeCampusNav()
        },
        tabClick () {
        tabClick (param) {
            this.navigationWay = param
            this.tabOneFlag = !this.tabOneFlag
            this.tabTwoFlag = !this.tabTwoFlag
        },
        startNavigation () {
            if (this.routeLayer == null) {
                this.routeLayer = new this.DC.VectorLayer('navigation')
                this.viewer.addLayer(this.routeLayer)
            } else {
                this.routeLayer.clear()
            }
            if (this.startingPoint == null) {
                this.$message('请输入起点!!!')
            }
            if (this.terminus == null) {
                this.$message('请输入终点!!!')
            }
            // var start = this.DC.Transform.transformWGS84ToCartesian()
            const startEntity = new this.DC.Billboard(new this.DC.Position(Number(this.startingPoint[0]), Number(this.startingPoint[1]), Number(this.startingPoint[2])), '/img/navicon/start.png')
            this.routeLayer.addOverlay(startEntity)
            // var end = this.DC.Transform.transformWGS84ToCartesian()
            const endEntity = new this.DC.Billboard(new this.DC.Position(Number(this.terminus[0]), Number(this.terminus[1]), Number(this.terminus[2])), '/img/navicon/end.png')
            this.routeLayer.addOverlay(endEntity)
            var routes = ''
            if (this.navigationWay == '步行') {
                axios.get('https://restapi.amap.com/v3/direction/walking', {
                    params: {
                        origin: `${Number(this.startingPoint[0]).toFixed(6)},${Number(this.startingPoint[1]).toFixed(6)}`,
                        destination: `${Number(this.terminus[0]).toFixed(6)},${Number(this.terminus[1]).toFixed(6)}`,
                        key: '4b3e1db3211054ce5b466407cbb9d221',
                        output: 'json'
                    }
                }).then(res => {
                    res.data.route.paths[0].steps.forEach(item => {
                        item.polyline += ';'
                        routes += item.polyline
                    })
                    routes = routes.substr(0, routes.length - 1)
                    const polyline = new this.DC.Polyline(routes)
                    polyline.setStyle({
                        width: 3,
                        material: new this.DC.PolylineTrailMaterialProperty({
                            color: this.DC.Color.RED,
                            speed: 10
                        }),
                        clampToGround: true
                    })
                    this.routeLayer.addOverlay(polyline)
                    this.viewer.flyTo(this.routeLayer)
                })
            } else {
                axios.get('https://restapi.amap.com/v3/direction/driving', {
                    params: {
                        origin: `${Number(this.startingPoint[0]).toFixed(6)},${Number(this.startingPoint[1]).toFixed(6)}`,
                        destination: `${Number(this.terminus[0]).toFixed(6)},${Number(this.terminus[1]).toFixed(6)}`,
                        key: '4b3e1db3211054ce5b466407cbb9d221',
                        strategy: 2,
                        extensions: 'all',
                        output: 'json'
                    }
                }).then(res => {
                    res.data.route.paths[0].steps.forEach(item => {
                        item.polyline += ';'
                        routes += item.polyline
                    })
                    routes = routes.substr(0, routes.length - 1)
                    const polyline = new this.DC.Polyline(routes)
                    polyline.setStyle({
                        width: 3,
                        material: new this.DC.PolylineTrailMaterialProperty({
                            color: this.DC.Color.RED,
                            speed: 10
                        }),
                        clampToGround: true
                    })
                    this.routeLayer.addOverlay(polyline)
                    this.viewer.flyTo(this.routeLayer)
                })
            }
        },
        clearLayer () {
            if (this.routeLayer != null) {
                this.routeLayer.clear()
            }
        }
    }
}
src/components/map/index.vue
@@ -45,11 +45,13 @@
                </div>
                <div class="popup-nav">
                    <ul>
                        <li class="come-here-fun">
                        <li class="come-here-fun"
                            :terminus="terminus">
                            <i class="popup-icon come-nav deblurring"></i>
                            到这
                        </li>
                        <li class="get-to-fun">
                        <li class="get-to-fun"
                            :startingPoint="startingPoint">
                            <i class="popup-icon start-nav deblurring"></i>
                            出发
                        </li>
@@ -126,7 +128,8 @@
        <left-nav ref="leftNav"></left-nav>
        <campusNav :comeName="comeName"
        <campusNav ref="campusNavRoute"
                   :comeName="comeName"
                   :getToName="getToName"
                   v-show="campusNavFlag" />
@@ -165,7 +168,15 @@
        ...mapGetters([
            'viewer',
            'popupBgUrl',
            'pupupQRUrl'
            'pupupQRUrl',
            // 终点
            'terminus',
            // 起点
            'startingPoint',
            // 点信息
            'pointPosition',
            // 点名称
            'stateName'
        ])
    },
    mounted () {
@@ -183,13 +194,17 @@
                $(this).parent().siblings().children(`div:eq(${$(this).index()})`).addClass('on').siblings().removeClass('on')
            })
            // 终点
            $('#map_popup_content').on('click', '.popup-nav .come-here-fun', function (e) {
                that.comeName = '成交楼'
                that.comeName = that.stateName
                that.$store.commit('SET_TERMINUS', that.pointPosition)
                if (that.campusNavFlag == false) that.campusNavFlag = true
            })
            // 起点
            $('#map_popup_content').on('click', '.popup-nav .get-to-fun', function (e) {
                that.getToName = '活动中心'
                that.getToName = that.stateName
                that.$store.commit('SET_STARTINGPOINT', that.pointPosition)
                if (that.campusNavFlag == false) that.campusNavFlag = true
            })
@@ -385,6 +400,11 @@
    methods: {
        closeCampusNav () {
            this.campusNavFlag = false
            this.$refs.campusNavRoute.clearLayer()
            this.$store.commit('SET_STARTINGPOINT', null)
            this.$store.commit('SET_TERMINUS', null)
            this.comeName = ''
            this.getToName = ''
        }
    }
}
src/components/orgNavBar/index.vue
@@ -60,7 +60,11 @@
        ...mapGetters([
            'viewer',
            'popupBgUrl',
            'pupupQRUrl'
            'pupupQRUrl',
            // 点信息
            'pointPosition',
            // 点名称
            'stateName'
        ])
    },
    methods: {
@@ -116,19 +120,21 @@
        mapPopup (item) {
            this.$store.commit('SET_POPUPBGURL', item.bgImg)
            this.$store.commit('SET_POPUPQRURL', item.QRImg)
            this.$store.commit('SET_POINTPOSITION', [item.longitude, item.latitude, item.alt, item.heading, item.pitch, item.roll])
            this.$store.commit('SET_STATENAME', item.navTitle)
            console.log(this.popupBgUrl)
            var that = this
            // item.alt, item.heading, item.pitch, item.roll
            this.viewer.zoomToPosition(
                new this.DC.Position(item.longitude, item.latitude, item.alt, 35, -45, 0),
                new this.DC.Position(item.longitude, item.latitude, item.alt, item.heading, item.pitch, item.roll),
                function () {
                    that.newPopup(item)
                }
            )
        },
        newPopup (item) {
            const position = this.DC.Transform.transformWGS84ToCartesian(new this.DC.Position(item.longitude, item.latitude, item.alt, 35, -45, 0))
            const position = this.DC.Transform.transformWGS84ToCartesian(new this.DC.Position(item.longitude, item.latitude, item.alt, item.heading, item.pitch, item.roll))
            // eslint-disable-next-line new-cap
            var popup = new this.DC.divForms(this.viewer, {
                domId: 'div1',
src/main.js
@@ -31,6 +31,9 @@
import divForms from '@/divForms/divForms'
// 手机弹窗
import mobileDivForms from '@/mobileDivForms/mobileDivForms'
Vue.prototype.$echarts = echarts
console.log(DcCore)
@@ -41,9 +44,6 @@
global.echarts = echarts // 将DC提升到全局变量,方便在工程中直接使用
DC.divForms = divForms
//手机弹窗
import mobileDivForms from '@/mobileDivForms/mobileDivForms'
DC.mobileDivForms = mobileDivForms
DC.use(DcCore) // 安装DC核心库
src/pcviews/arc/culture.vue
@@ -1,15 +1,35 @@
/*
 * @Author: Morpheus
 * @Name: 文化风景
 * @Date: 2021-11-15 17:14:47
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-15 11:48:47
 */
<template>
  <div>
      校内建筑
  </div>
    <div>
        <arc-nav-bar :title="title"
                     :arcCode="code"></arc-nav-bar>
    </div>
</template>
<script>
export default {
    data () {
        return {
            title: '文化风景',
            code: 5
        }
    },
    created () {
    },
    methods: {
        closeModel () {
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        }
    }
}
</script>
<style>
</style>
src/pcviews/arc/dorm.vue
@@ -1,15 +1,35 @@
/*
 * @Author: Morpheus
 * @Name: 学生宿舍
 * @Date: 2021-11-15 17:14:47
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-15 11:48:43
 */
<template>
  <div>
      校内建筑
  </div>
    <div>
        <arc-nav-bar :title="title"
                     :arcCode="code"></arc-nav-bar>
    </div>
</template>
<script>
export default {
    data () {
        return {
            title: '学生宿舍',
            code: 4
        }
    },
    created () {
    },
    methods: {
        closeModel () {
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        }
    }
}
</script>
<style>
</style>
src/pcviews/arc/edifact.vue
@@ -1,15 +1,14 @@
/*
 * @Author: Morpheus
 * @Name: 行政办公
 * @Date: 2021-11-15 17:10:23
 * @Date: 2021-11-15 17:14:47
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-11-15 17:12:12
 *
 /
 <template>
 * @Last Modified time: 2021-12-15 11:48:39
 */
<template>
    <div>
        <arc-nav-bar :navList="list"
                     :title="title"></arc-nav-bar>
        <arc-nav-bar :title="title"
                     :arcCode="code"></arc-nav-bar>
    </div>
</template>
@@ -18,56 +17,10 @@
    data () {
        return {
            title: '行政办公',
            list: []
            code: 1
        }
    },
    created () {
        this.list = [
            {
                navTitle: '学校办公室',
                icon: '/img/navicon/tag.png'
            },
            {
                navTitle: '组织部',
                icon: '/img/navicon/tag.png'
            },
            {
                navTitle: '宣传部',
                icon: '/img/navicon/tag.png'
            },
            {
                navTitle: '博物馆',
                icon: '/img/navicon/tag.png'
            },
            {
                navTitle: '统战部',
                icon: '/img/navicon/tag.png'
            },
            {
                navTitle: '纪委办公室',
                icon: '/img/navicon/tag.png'
            },
            {
                navTitle: '巡查办公室',
                icon: '/img/navicon/tag.png'
            },
            {
                navTitle: '学生工作部(处)/团委',
                icon: '/img/navicon/tag.png'
            },
            {
                navTitle: '研究生工作部',
                icon: '/img/navicon/tag.png'
            },
            {
                navTitle: '保卫部',
                icon: '/img/navicon/tag.png'
            },
            {
                navTitle: '工会',
                icon: '/img/navicon/tag.png'
            }
        ]
    },
    methods: {
        closeModel () {
src/pcviews/arc/family.vue
@@ -1,15 +1,35 @@
/*
 * @Author: Morpheus
 * @Name: 家属住宅
 * @Date: 2021-11-15 17:14:47
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-15 11:48:35
 */
<template>
  <div>
      校内建筑
  </div>
    <div>
        <arc-nav-bar :title="title"
                     :arcCode="code"></arc-nav-bar>
    </div>
</template>
<script>
export default {
    data () {
        return {
            title: '家属住宅',
            code: 6
        }
    },
    created () {
    },
    methods: {
        closeModel () {
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        }
    }
}
</script>
<style>
</style>
src/pcviews/arc/rest.vue
@@ -1,15 +1,35 @@
/*
 * @Author: Morpheus
 * @Name: 其他楼宇
 * @Date: 2021-11-15 17:14:47
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-15 11:48:17
 */
<template>
  <div>
      校内建筑
  </div>
    <div>
        <arc-nav-bar :title="title"
                     :arcCode="code"></arc-nav-bar>
    </div>
</template>
<script>
export default {
    data () {
        return {
            title: '其他楼宇',
            code: 7
        }
    },
    created () {
    },
    methods: {
        closeModel () {
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        }
    }
}
</script>
<style>
</style>
src/pcviews/arc/teaching.vue
@@ -3,12 +3,12 @@
 * @Name: 教学科研
 * @Date: 2021-11-15 17:14:47
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-11-19 14:06:53
 * @Last Modified time: 2021-12-15 11:48:26
 */
<template>
    <div>
        <arc-nav-bar :navList="list"
                     :title="title"></arc-nav-bar>
        <arc-nav-bar :title="title"
                     :arcCode="code"></arc-nav-bar>
    </div>
</template>
@@ -17,176 +17,10 @@
    data () {
        return {
            title: '教学科研',
            list: []
            code: 2
        }
    },
    created () {
        this.list = [
            {
                title: '西大直街',
                flag: true,
                list: [
                    {
                        navTitle: '外国语学院',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '主楼',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '电机楼',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '机械楼',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '明德楼',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '格物楼',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '管理楼',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '理学楼',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '正心楼',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '新技术楼',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '综合楼',
                        icon: '/img/navicon/tag.png'
                    }
                ]
            },
            {
                title: '黄河路',
                flag: false,
                list: [
                    {
                        navTitle: '二校区主楼',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '土木科研楼',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '建筑设计院',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '环境学院',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '土木学院',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '交通学院',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '计算机学院',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '城市水资源与水环境国家重点实验室楼',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '寒地城乡人居环境科学重点实验室',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '西配楼',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '水实验楼',
                        icon: '/img/navicon/tag.png'
                    }
                ]
            },
            {
                title: '科学园',
                flag: false,
                list: [
                    {
                        navTitle: '一期小园',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '科学园A栋',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '科学园B1栋',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '科学园B2栋',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '科学园B3栋',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '科学园C1栋',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '科学园C2栋',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '科学园C3栋',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '科学园D栋',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '科学园E栋',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '科技创新大厦',
                        icon: '/img/navicon/tag.png'
                    }
                ]
            },
            {
                title: '土木楼',
                flag: false,
                list: [
                    {
                        navTitle: '土木楼',
                        icon: '/img/navicon/tag.png'
                    },
                    {
                        navTitle: '机电学院实验楼',
                        icon: '/img/navicon/tag.png'
                    }
                ]
            }
        ]
    },
    methods: {
        closeModel () {
src/pcviews/arc/venue.vue
@@ -1,15 +1,35 @@
/*
 * @Author: Morpheus
 * @Name: 校内场馆
 * @Date: 2021-11-15 17:14:47
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-15 11:48:23
 */
<template>
  <div>
      校内建筑
  </div>
    <div>
        <arc-nav-bar :title="title"
                     :arcCode="code"></arc-nav-bar>
    </div>
</template>
<script>
export default {
    data () {
        return {
            title: '校内场馆',
            code: 3
        }
    },
    created () {
    },
    methods: {
        closeModel () {
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        }
    }
}
</script>
<style>
</style>
src/pcviews/orgnav/directly.vue
@@ -1,15 +1,52 @@
<template>
  <div>
      校内机构导览
  </div>
/*
 * @Author: Morpheus
 * @Name: 直属及附属单位
 * @Date: 2021-11-15 10:02:12
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-14 16:30:52
 */
 <template>
    <div>
        <org-nav-bar :navList="list"
                     :title="title"></org-nav-bar>
    </div>
</template>
<script>
import { getList } from '@/api/pc/orgnav/index'
export default {
    data () {
        return {
            title: '直属及附属单位',
            list: []
        }
    },
    created () {
        getList({ type: 2 }).then(res => {
            res.data.data.records.forEach(item => {
                this.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
                })
            })
        })
    },
    methods: {
        closeModel () {
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        }
    }
}
</script>
<style>
</style>
src/pcviews/orgnav/masses.vue
@@ -3,7 +3,7 @@
 * @Name: 党群机构
 * @Date: 2021-11-15 10:02:12
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-14 15:38:17
 * @Last Modified time: 2021-12-15 14:42:59
 */
 <template>
    <div>
@@ -22,7 +22,7 @@
        }
    },
    created () {
        getList({ type: 1462593559077318657 }).then(res => {
        getList({ type: 1 }).then(res => {
            res.data.data.records.forEach(item => {
                this.list.push({
                    navTitle: item.mechanismname,
@@ -30,6 +30,9 @@
                    longitude: item.jd,
                    latitude: item.wd,
                    alt: item.gd,
                    heading: item.heading,
                    pitch: item.pitch,
                    roll: item.roll,
                    bgImg: item.tpurl,
                    QRImg: item.codeurl
                })
src/pcviews/orgnav/ofc.vue
@@ -1,15 +1,52 @@
<template>
  <div>
      校内机构导览
  </div>
/*
 * @Author: Morpheus
 * @Name: 职能部处
 * @Date: 2021-11-15 10:02:12
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-15 14:44:26
 */
 <template>
    <div>
        <org-nav-bar :navList="list"
                     :title="title"></org-nav-bar>
    </div>
</template>
<script>
import { getList } from '@/api/pc/orgnav/index'
export default {
    data () {
        return {
            title: '职能部处',
            list: []
        }
    },
    created () {
        getList({ type: 2 }).then(res => {
            res.data.data.records.forEach(item => {
                this.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
                })
            })
        })
    },
    methods: {
        closeModel () {
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        }
    }
}
</script>
<style>
</style>
src/pcviews/orgnav/rest.vue
@@ -1,15 +1,52 @@
<template>
  <div>
      校内机构导览
  </div>
/*
 * @Author: Morpheus
 * @Name: 其他机构
 * @Date: 2021-11-15 10:02:12
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-15 14:44:30
 */
 <template>
    <div>
        <org-nav-bar :navList="list"
                     :title="title"></org-nav-bar>
    </div>
</template>
<script>
import { getList } from '@/api/pc/orgnav/index'
export default {
    data () {
        return {
            title: '其他机构',
            list: []
        }
    },
    created () {
        getList({ type: 2 }).then(res => {
            res.data.data.records.forEach(item => {
                this.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
                })
            })
        })
    },
    methods: {
        closeModel () {
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        }
    }
}
</script>
<style>
</style>
src/pcviews/orgnav/teaching.vue
@@ -1,15 +1,52 @@
<template>
  <div>
      校内机构导览
  </div>
/*
 * @Author: Morpheus
 * @Name: 教学与科研机构
 * @Date: 2021-11-15 10:02:12
 * @Last Modified by: Morpheus
 * @Last Modified time: 2021-12-15 14:44:35
 */
 <template>
    <div>
        <org-nav-bar :navList="list"
                     :title="title"></org-nav-bar>
    </div>
</template>
<script>
import { getList } from '@/api/pc/orgnav/index'
export default {
    data () {
        return {
            title: '教学与科研机构',
            list: []
        }
    },
    created () {
        getList({ type: 2 }).then(res => {
            res.data.data.records.forEach(item => {
                this.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
                })
            })
        })
    },
    methods: {
        closeModel () {
            this.$store.dispatch('delVisitedViews', this.$route)
            this.$router.push('/pcLayout/default')
        }
    }
}
</script>
<style>
</style>
src/store/getters.js
@@ -1,7 +1,11 @@
const getters = {
    viewer: state => state.viewer.viewer,
    mviewer: state => state.mobile.mviewer,
    popupBgUrl: state => state.popupParams.popupBgUrl,
    pupupQRUrl: state => state.popupParams.pupupQRUrl,
    mviewer: state => state.mobile.mviewer
    pointPosition: state => state.popupParams.pointPosition,
    terminus: state => state.popupParams.terminus,
    startingPoint: state => state.popupParams.startingPoint,
    stateName: state => state.popupParams.stateName
}
export default getters
src/store/modules/popupParams.js
@@ -1,7 +1,11 @@
const popupParams = {
    state: {
        popupBgUrl: null,
        pupupQRUrl: null
        pupupQRUrl: null,
        terminus: null,
        startingPoint: null,
        pointPosition: null,
        stateName: null
    },
    mutations: {
        SET_POPUPBGURL (state, popupBgUrl) {
@@ -9,6 +13,18 @@
        },
        SET_POPUPQRURL (state, pupupQRUrl) {
            state.pupupQRUrl = pupupQRUrl
        },
        SET_TERMINUS (state, terminus) {
            state.terminus = terminus
        },
        SET_STARTINGPOINT (state, startingPoint) {
            state.startingPoint = startingPoint
        },
        SET_POINTPOSITION (state, pointPosition) {
            state.pointPosition = pointPosition
        },
        SET_STATENAME (state, stateName) {
            state.stateName = stateName
        }
    },
    actions: {