|
@@ -289,16 +289,165 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="pdgdf conList">
|
|
|
- <div class="floortitle">大厅取号高低峰图</div>
|
|
|
+ <div class="floortitle">区行政服务中心网点分布</div>
|
|
|
<div class="floorcontent">
|
|
|
- <div id="pdgdfechart" style="width: 100%;height: 100%;"></div>
|
|
|
+ <!-- <div id="pdgdfechart" style="width: 100%;height: 100%;"></div> -->
|
|
|
+ <div class="list" @click="showDistrictLevel(1)">
|
|
|
+ <div class="img">
|
|
|
+ <img src="./images/districtLevelCenter.png" alt="">
|
|
|
+ </div>
|
|
|
+ <div class="right">
|
|
|
+ <span>区级中心</span>
|
|
|
+ <div class="number">
|
|
|
+ <span>3</span>
|
|
|
+ <span>个</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="list" @click="showDistrictLevel(2)">
|
|
|
+ <div class="img">
|
|
|
+ <img src="./images/townStreet.png" alt="">
|
|
|
+ </div>
|
|
|
+ <div class="right">
|
|
|
+ <span>镇街便民服务中心</span>
|
|
|
+ <div class="number">
|
|
|
+ <span>15</span>
|
|
|
+ <span>个</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="list" @click="showDistrictLevel(3)">
|
|
|
+ <div class="img">
|
|
|
+ <img src="./images/convenienceServiceStation.png" alt="">
|
|
|
+ </div>
|
|
|
+ <div class="right">
|
|
|
+ <span>便民服务站</span>
|
|
|
+ <div class="number">
|
|
|
+ <span>153</span>
|
|
|
+ <span>个</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="list" @click="showDistrictLevel(4)">
|
|
|
+ <div class="img">
|
|
|
+ <img src="./images/subCenter.png" alt="">
|
|
|
+ </div>
|
|
|
+ <div class="right">
|
|
|
+ <span>分中心</span>
|
|
|
+ <div class="number">
|
|
|
+ <span>2</span>
|
|
|
+ <span>个</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
+ <!-- 区行政服务中心网点分布弹窗 -->
|
|
|
+ <div class="districtLevelBox" v-show="districtLevelShow">
|
|
|
+ <div class="districtLevelContent">
|
|
|
+ <img class="districtLevelbg" src="./images/districtLevelbg.png" alt="" srcset="">
|
|
|
+ <div class="districtLevelContent-box" ref="districtLevelContent">
|
|
|
+ <div class="districtLevelContent-tit" ref="districtLevelTit">
|
|
|
+ <span></span>
|
|
|
+ <span>区行政服务中心网点分布——{{districtLevelTitle}}</span>
|
|
|
+ <img @click="clearDistrictLevel" src="./images/districtLevelClear.png" alt=""
|
|
|
+ srcset="">
|
|
|
+ </div>
|
|
|
+ <img class="districtLevelLine" ref="districtLevelLine"
|
|
|
+ src="./images/districtLevelLine.png" alt="">
|
|
|
+ <div class="districtLevelList" ref="districtLevelList"
|
|
|
+ :style="`height:${districtLevelListHeight}`">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12" v-for="(item,index) in districtLevelList">
|
|
|
+ <div class="districtLevelList-col">
|
|
|
+ <img :src="`./images/districtLevelList${districtLevelNum}.png`"
|
|
|
+ alt="" srcset="">
|
|
|
+ <div class="left">
|
|
|
+ <span class="span-col name">{{index+1}}.{{item.name}}</span>
|
|
|
+ <span class="span-col">
|
|
|
+ <span class="label">电话:</span>
|
|
|
+ <span class="center">{{item.tel}}</span>
|
|
|
+ </span>
|
|
|
+ <span class="span-col">
|
|
|
+ <span class="label">地址:</span>
|
|
|
+ <span class="center">{{item.address}}</span>
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ <div class="districtLevelFooter" ref="districtLevelFooter">
|
|
|
+ <el-pagination :page-size="10" background layout="prev, pager, next"
|
|
|
+ :total="districtLevelTotal">
|
|
|
+ </el-pagination>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- 公交详情弹窗 -->
|
|
|
+ <div id="transitTitPop" v-show="false"></div>
|
|
|
+ <div class="districtLevelBox transitBox" id="transitBox" v-show="transitPopShow">
|
|
|
+ <div class="districtLevelContent" id="transitContent">
|
|
|
+ <img class="districtLevelbg" src="./images/districtLevelbg.png" alt="" srcset="">
|
|
|
+ <div class="districtLevelContent-box">
|
|
|
+ <div class="districtLevelContent-tit">
|
|
|
+ <span></span>
|
|
|
+ <span>天福路口站</span>
|
|
|
+ <img @click="transitClearFun" src="./images/districtLevelClear.png" alt=""
|
|
|
+ srcset="">
|
|
|
+ </div>
|
|
|
+ <img class="districtLevelLine" src="./images/districtLevelLine.png" alt="">
|
|
|
+ <div class="transitContent">
|
|
|
+ <div class="transitContentList" v-for="(item,index) in transitList"
|
|
|
+ :key="item.id"
|
|
|
+ :style="`border-bottom:${index == transitList.length-1?0:'1px solid #33333341'}`"
|
|
|
+ @click="transitContentListClickFun(item)">
|
|
|
+ <div class="left">
|
|
|
+ <span
|
|
|
+ class="left-col"><span>{{item.name}}</span><span>下一站:{{item.nextTransit}}</span></span>
|
|
|
+ <span class="left-col"><span>--</span><span>等待发出</span></span>
|
|
|
+ </div>
|
|
|
+ <div class="right"
|
|
|
+ @click="transitJson.routeOrder = !transitJson.routeOrder">
|
|
|
+ <img src="./images/transitChange.png" alt="">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="transitFooter" v-show="transitShow">
|
|
|
+ <div class="transitRoute">
|
|
|
+ {{transitJson.routeOrder?transitJson.start:transitJson.end}}
|
|
|
+ <img src="./images/blueArrow.png" alt="" srcset="">
|
|
|
+ {{transitJson.routeOrder?transitJson.end:transitJson.start}}
|
|
|
+ </div>
|
|
|
+ <div class="transitRouteContent">
|
|
|
+ <span>首 {{transitJson.startTime}}</span>
|
|
|
+ <span>末 {{transitJson.endTime}}</span>
|
|
|
+ <span>票价{{transitJson.ticketPrice}}元</span>
|
|
|
+ </div>
|
|
|
+ <div class="carRoute">
|
|
|
+ <div class="greenRoute"></div>
|
|
|
+ <div class="nameRoute">
|
|
|
+ <div class="nameRouteItem" v-for="(item,index) in transitRouteList"
|
|
|
+ :key="index"
|
|
|
+ :style="`width:${ index==transitRouteList.length-1?'2%':98/(transitRouteList.length-1)}%`">
|
|
|
+ <div class="number">{{index+1}}</div>
|
|
|
+ <div v-for="colItem in item.name" :key="colItem">
|
|
|
+ {{colItem}}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+
|
|
|
<div id="loading">
|
|
|
<i class="fa fa-spinner fa-spin fa-fw"></i>加载中...
|
|
|
</div>
|
|
@@ -380,8 +529,57 @@
|
|
|
type: 'js'
|
|
|
});
|
|
|
gLTFLoader.setDRACOLoader(dracoLoader);
|
|
|
- gLTFLoader.load('https://www.cqna.gov.cn/syygapi/naxsb/3ddemo/model/27.gltf', function (obj) {
|
|
|
+ gLTFLoader.load('./3ddemo/model/33.gltf', function (obj) {
|
|
|
+
|
|
|
obj.scene.traverse(function (child) {
|
|
|
+
|
|
|
+ if (child.material && child.material.name) {
|
|
|
+ child.frustumCulled = false;
|
|
|
+ child.castShadow = true;
|
|
|
+ child.receiveShadow = true;
|
|
|
+ child.material.emissive = child.material.color;
|
|
|
+ child.material.emissiveMap = child.material.map;
|
|
|
+ child.material.transparent = true;
|
|
|
+ child.material.emissiveIntensity = 0.8;
|
|
|
+ if (child.material.name == 'ckck') {
|
|
|
+ const div = document.createElement('div');
|
|
|
+ div.id = child.uuid;
|
|
|
+ let html = '';
|
|
|
+ html += '<div style="font-size: 12px; width: 80px; text-align: center;position: relative;">';
|
|
|
+ html += '<div class="building-text" style="background: #18A65A; margin-bottom: -2px;position: absolute;top:170px">';
|
|
|
+ html += '<span style="text-align: left;">停车场</span>';
|
|
|
+ html += '<span style="font-size: 10px; text-align: left;">空余车位:-</span>';
|
|
|
+ html += '<span style="font-size: 10px; text-align: left;">空余充电桩:-</span>';
|
|
|
+ html += '</div>';
|
|
|
+ html += '</div>';
|
|
|
+ div.innerHTML = html;
|
|
|
+ let tag = new THREE.CSS2DObject(div);
|
|
|
+ child.add(tag);
|
|
|
+ }
|
|
|
+ if (child.material.name == 'gongjiaochezhan') {
|
|
|
+
|
|
|
+ const div = document.createElement('div');
|
|
|
+ div.id = child.uuid;
|
|
|
+ let html = `
|
|
|
+ <div class="building-box-chekuchukou">
|
|
|
+ <div class="chekuchukou-tit"><span>公交车站</span><span id="busDetails">详情</span></div>
|
|
|
+ <div>144路:即将到达</div>
|
|
|
+ <div>180路:车已到站</div>
|
|
|
+ <div>188路:9分钟</div>
|
|
|
+ <div>345路:2分钟</div>
|
|
|
+ </div>
|
|
|
+ `;
|
|
|
+ div.innerHTML = html;
|
|
|
+ let tag = new THREE.CSS2DObject(div);
|
|
|
+ child.add(tag);
|
|
|
+ div.style.pointerEvents = 'auto';
|
|
|
+
|
|
|
+ // div.addEventListener('click', function (event) {
|
|
|
+ // document.getElementById('transitTitPop').innerText = "true"
|
|
|
+ // });
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
if (child.isMesh) {
|
|
|
child.frustumCulled = false;
|
|
|
child.castShadow = true;
|
|
@@ -391,6 +589,7 @@
|
|
|
child.material.transparent = true;
|
|
|
child.material.emissiveIntensity = 0.8;
|
|
|
if (child.name) {
|
|
|
+ // console.log(child, 'child', child.name);
|
|
|
const div = document.createElement('div');
|
|
|
div.id = child.uuid;
|
|
|
div.style = 'color:red;';
|
|
@@ -398,6 +597,7 @@
|
|
|
div.innerHTML = '<p data-name="' + child.name + '"></p>';
|
|
|
let tag = new THREE.CSS2DObject(div);
|
|
|
}
|
|
|
+
|
|
|
// 一号楼
|
|
|
if (child.name == 'yihaolou') {
|
|
|
const div = document.createElement('div');
|
|
@@ -410,10 +610,14 @@
|
|
|
html += '<svg width="10" height="10"><polygon id="triangle" points="0,0 10,0 5,10" fill="#1D96E9"/></svg>';
|
|
|
html += '</div>';
|
|
|
html += '<div class="building-line" style="border-left: 1px dashed #1D96E9; height: 100px; top: 110px;"></div>';
|
|
|
- html += `<div style="font-size: 12px;background: #18A65A;width: 100px;top: 326px;left: 58px;position: absolute;display: flex;flex-direction: column;align-items: flex-start;color: #fff;">
|
|
|
- <span>地下停车场入口⬇</span>
|
|
|
+ html += `<div style="font-size: 12px;width: 100px;top: 326px;left: 58px;position: absolute;display: flex;flex-direction: column;align-items: flex-start;color: #fff;">
|
|
|
+ <div class="building-text" style="background: #18A65A; margin-bottom: -2px;">
|
|
|
+ <span style="text-align: left;">停车场</span>
|
|
|
+ <span style="font-size: 10px; text-align: left;">空余车位:-</span>
|
|
|
+ <span style="font-size: 10px; text-align: left;">空余充电桩:-</span>
|
|
|
+ </div>
|
|
|
</div>`
|
|
|
- html += '<div class="building-line" style="border-left: 1px dashed #1D96E9; height: 100px; top: 326px;left: 58px;"></div>';
|
|
|
+ // html += '<div class="building-line" style="border-left: 1px dashed #1D96E9; height: 100px; top: 326px;left: 58px;"></div>';
|
|
|
div.innerHTML = html;
|
|
|
let tag = new THREE.CSS2DObject(div);
|
|
|
child.add(tag);
|
|
@@ -430,7 +634,7 @@
|
|
|
div.id = child.uuid;
|
|
|
let html = '';
|
|
|
html += '<div class="building-box" style="width: 100px; top: 28px; left: -48px;">';
|
|
|
- html += '<div class="finger" style="animation:blink 1s infinite;"><img src="images/finger.png">点我</div>';
|
|
|
+ // html += '<div class="finger" style="animation:blink 1s infinite;"><img src="images/finger.png">点我</div>';
|
|
|
html += '<div class="building-text" style="background: #1D96E9;">';
|
|
|
html += '<span>2号楼</span></span></span><span style="font-size: 10px;">南岸区政务服务中心</span>';
|
|
|
html += '</div>';
|
|
@@ -468,12 +672,12 @@
|
|
|
div.id = child.uuid;
|
|
|
let html = '';
|
|
|
html += '<div class="building-box">';
|
|
|
- html += `<div class="text" style="top: -30px;left: 146px;position: absolute;display: flex;flex-direction: column;align-items: flex-start;color: #1A95EB;">
|
|
|
- <span style="font-size: 18px;font-weight: bold;margin-bottom: 5px;">地铁6号线</span>
|
|
|
- <span>邱家湾站2B出口</span>
|
|
|
- <span>距离:800米</span>
|
|
|
- <img src="https://www.cqna.gov.cn/syygapi/naxsb/images/qjtArrow.png" alt="" style="height: 1.75rem;">
|
|
|
- </div>`
|
|
|
+ // html += `<div class="text" style="top: -30px;left: 146px;position: absolute;display: flex;flex-direction: column;align-items: flex-start;color: #1A95EB;">
|
|
|
+ // <span style="font-size: 18px;font-weight: bold;margin-bottom: 5px;">地铁6号线</span>
|
|
|
+ // <span>邱家湾站2B出口</span>
|
|
|
+ // <span>距离:800米</span>
|
|
|
+ // <img src="https://www.cqna.gov.cn/syygapi/naxsb/images/qjtArrow.png" alt="" style="height: 1.75rem;">
|
|
|
+ // </div>`
|
|
|
html += '<div class="building-text">';
|
|
|
html += '<span>4号楼</span><span style="font-size: 10px;">商务打印、小卖部、食堂</span>';
|
|
|
html += '</div>';
|
|
@@ -484,7 +688,8 @@
|
|
|
let tag = new THREE.CSS2DObject(div);
|
|
|
child.add(tag);
|
|
|
}
|
|
|
- if (child.name == 'chedao-chedao') {
|
|
|
+ if (child.name == 'chekuchukou') {
|
|
|
+ // console.log(child, 'child', child.name);
|
|
|
const div = document.createElement('div');
|
|
|
div.id = child.uuid;
|
|
|
let html = '';
|
|
@@ -512,6 +717,13 @@
|
|
|
obj.scene.position.sub(center);
|
|
|
|
|
|
document.getElementById('loading').style.display = 'none';
|
|
|
+ // 公交详情加点事件
|
|
|
+ setTimeout(() => {
|
|
|
+ document.getElementById('busDetails').addEventListener('click', function (event) {
|
|
|
+ document.getElementById('transitTitPop').innerText = "true"
|
|
|
+ });
|
|
|
+ }, 300)
|
|
|
+
|
|
|
render();
|
|
|
}, function (xhr) {
|
|
|
}, function (error) {
|
|
@@ -540,16 +752,105 @@
|
|
|
data: function () {
|
|
|
return {
|
|
|
currentTime: "",
|
|
|
- bjxqList: []
|
|
|
+ bjxqList: [],
|
|
|
+ /* 区行政服务中心网点分布 start*/
|
|
|
+ districtLevelShow: false,
|
|
|
+ districtLevelTitle: '',
|
|
|
+ districtLevelNum: -1,
|
|
|
+ districtLevelList: [
|
|
|
+ {
|
|
|
+ name: '重庆市南岸区政务服务中心(江南新城中心)',
|
|
|
+ tel: '023-62980263',
|
|
|
+ address: '重庆市南岸区铜元局街道南坪西路36号(上海城嘉发跨贸中心 二楼)南岸区'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '重庆市南岸区政务服务中心(江南新城中心)',
|
|
|
+ tel: '023-62980263',
|
|
|
+ address: '重庆市南岸区铜元局街道南坪西路36号(上海城嘉发跨贸中心 二楼)南岸区'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '重庆市南岸区政务服务中心(江南新城中心)',
|
|
|
+ tel: '023-62980263',
|
|
|
+ address: '重庆市南岸区铜元局街道南坪西路36号(上海城嘉发跨贸中心 二楼)南岸区'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ districtLevelTotal: 0,
|
|
|
+ districtLevelListHeight: "60%",
|
|
|
+ /* 区行政服务中心网点分布 end*/
|
|
|
+ /* 公交详情start */
|
|
|
+ transitPopShow: false,
|
|
|
+ transitShow: false,
|
|
|
+ transitTime: null,
|
|
|
+ transitList: [
|
|
|
+ {
|
|
|
+ name: '144路',
|
|
|
+ nextTransit: '广福道',
|
|
|
+ id: '1'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '144路',
|
|
|
+ nextTransit: '广福道',
|
|
|
+ id: '2'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ transitJson: {
|
|
|
+ start: "响水路",
|
|
|
+ end: "江南交通换乘枢纽",
|
|
|
+ startTime: "06:00",
|
|
|
+ endTime: "19:00",
|
|
|
+ ticketPrice: "2",
|
|
|
+ routeOrder: true//true表示顺序 false逆序
|
|
|
+ },
|
|
|
+ transitRouteList: [
|
|
|
+ {
|
|
|
+ name: '响水路',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '南坪南路',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '四公里立交',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '茶园内环站',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '玉马路',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '江南小区',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '广福大道',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '天福路口',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '广福大道中段',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '广福大道中段',
|
|
|
+ }
|
|
|
+ ,
|
|
|
+ {
|
|
|
+ name: '江南交通换乘枢纽',
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ /* 公交详情end */
|
|
|
};
|
|
|
},
|
|
|
created() {
|
|
|
this.updateTime();
|
|
|
setInterval(this.updateTime, 1000);
|
|
|
this.getSSbj();
|
|
|
+ this.showTransitBoxFun()
|
|
|
},
|
|
|
beforeDestroy() {
|
|
|
this.stopClock();
|
|
|
+ if (this.districtLevelShow)
|
|
|
+ window.removeEventListener("resize", this.getDistrictLevelListHeight);
|
|
|
+ clearInterval(this.transitTime)
|
|
|
},
|
|
|
methods: {
|
|
|
updateTime() {
|
|
@@ -589,11 +890,53 @@
|
|
|
if (this.bjxqList.length) {
|
|
|
this.addKeyFrames(height * this.bjxqList.length);
|
|
|
}
|
|
|
+ },
|
|
|
+ // 区行政服务中心网点分布点击事件
|
|
|
+ showDistrictLevel(num) {
|
|
|
+ this.districtLevelShow = true
|
|
|
+ this.districtLevelNum = num
|
|
|
+ this.districtLevelTitle = { 1: '区级中心', 2: '镇街便民服务中心', 3: '便民服务站', 4: '分中心' }[num]
|
|
|
+ this.districtLevelTotal = { 1: 3, 2: 15, 3: 153, 4: 2 }[num]
|
|
|
+ this.getDistrictLevelListHeight()
|
|
|
+ window.addEventListener("resize", this.getDistrictLevelListHeight);
|
|
|
+ },
|
|
|
+ // 关闭弹窗
|
|
|
+ clearDistrictLevel() {
|
|
|
+ this.districtLevelShow = false
|
|
|
+ window.removeEventListener("resize", this.getDistrictLevelListHeight);
|
|
|
+ },
|
|
|
+ // 控制车辆信息详情展示区域的显示
|
|
|
+ transitContentListClickFun(item) {
|
|
|
+ this.transitShow = true
|
|
|
+ },
|
|
|
+ // 获取网点分布弹窗内容高度
|
|
|
+ getDistrictLevelListHeight() {
|
|
|
+ this.$nextTick(() => {
|
|
|
+ const districtLevelContentHeight = this.$refs.districtLevelContent.offsetHeight;
|
|
|
+ const districtLevelFooterHeight = this.$refs.districtLevelFooter.offsetHeight;
|
|
|
+ this.districtLevelListHeight =
|
|
|
+ (districtLevelContentHeight - this.$refs.districtLevelList.offsetTop - districtLevelFooterHeight - districtLevelContentHeight * 0.1) + 'px'
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 监听控制公交详情显示
|
|
|
+ showTransitBoxFun() {
|
|
|
+ let _this = this
|
|
|
+ this.transitTime = setInterval(() => {
|
|
|
+ if (document.getElementById('transitTitPop').innerText == "true") {
|
|
|
+ _this.transitPopShow = true
|
|
|
+ document.getElementById('transitContent').style.display = "block"
|
|
|
+ }
|
|
|
+ }, 100)
|
|
|
+ },
|
|
|
+ // 关闭公交弹窗
|
|
|
+ transitClearFun() {
|
|
|
+ document.getElementById('transitTitPop').innerText = ""
|
|
|
+ this.transitPopShow = false
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
</script>
|
|
|
-<script>
|
|
|
+<!-- <script>
|
|
|
var chartDom = document.getElementById('pdgdfechart');
|
|
|
var myChart = echarts.init(chartDom);
|
|
|
var option;
|
|
@@ -675,7 +1018,7 @@
|
|
|
};
|
|
|
|
|
|
option && myChart.setOption(option);
|
|
|
-</script>
|
|
|
+</script> -->
|
|
|
<script>
|
|
|
var path = "https://www.cqna.gov.cn/data";
|
|
|
|