12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta name=”SiteName” content=”重庆市南岸区人民政府”>
- <meta name="SiteDomain" content="http://www.cqna.gov.cn" />
- <meta name="SiteIDCode" content="5001080014">
- <meta name="ColumnName" content="政务全景通">
- <meta name="ColumnDescription" content="政务全景通" />
- <meta name="ColumnKeywords" content="政务全景通" />
- <meta name="ColumnType" content="政务全景通" />
- <title>政务全景通-重庆市南岸区人民政府网</title>
- <script src="https://www.cqna.gov.cn/syygapi/naxsb/3ddemo/three.js"></script>
- <script src="https://www.cqna.gov.cn/syygapi/naxsb/3ddemo/Detector.js"></script>
- <script src="https://www.cqna.gov.cn/syygapi/naxsb/3ddemo/examples/js/libs/stats.min.js"></script>
- <script src="https://www.cqna.gov.cn/syygapi/naxsb/3ddemo/examples/js/controls/OrbitControls.js"></script>
- <script src="https://www.cqna.gov.cn/syygapi/naxsb/3ddemo/examples/js/loaders/GLTFLoader.js"></script>
- <script src="https://www.cqna.gov.cn/syygapi/naxsb/3ddemo/examples/js/loaders/DRACOLoader.js"></script>
- <script src="https://www.cqna.gov.cn/syygapi/naxsb/3ddemo/examples/js/renderers/CSS3DRenderer.js"></script>
- <script src="https://www.cqna.gov.cn/syygapi/naxsb/3ddemo/examples/js/renderers/CSS2DRenderer.js"></script>
- <!-- 引入 Vue -->
- <script src="https://www.cqna.gov.cn/syygapi/naxsb/js/vue.min.js"></script>
- <!-- 引入样式 -->
- <link rel="stylesheet" href="https://www.cqna.gov.cn/syygapi/naxsb/css/index.css">
- <link rel="stylesheet" href="css/qjt.css">
- <!-- 引入组件库 -->
- <script src="https://www.cqna.gov.cn/syygapi/naxsb/js/index.js"></script>
- <script src="js/echarts.min.js"></script>
- <script src="https://www.cqna.gov.cn/syygapi/naxsb/js/jquery-3.5.1.min.js"></script>
- <script src="https://www.cqna.gov.cn/syygapi/naxsb/js/urljson.js"></script>
- <style>
- @media screen and (max-width:1600px) {
- html,
- body {
- font-size: 14px;
- }
- .qjttitle {
- height: 95px;
- }
- .nowtime {
- top: 50px;
- }
- }
- @media screen and (max-width:1300px) {
- html,
- body {
- font-size: 10px;
- }
- .qjttitle {
- height: 85px;
- }
- .nowtime {
- top: 45px;
- }
- }
- .building-box {
- cursor: pointer;
- }
- @keyframes blink {
- from {
- opacity: 1;
- }
- to {
- opacity: 0;
- }
- }
- .finger {
- position: absolute;
- top: -60px;
- right: 20px;
- color: #FF8000;
- font-size: 20px;
- }
- .top_t {
- padding: 10px 0;
- border-bottom: 1px solid #5482F9;
- height: 26px;
- justify-content: space-between;
- }
- .top_t,
- .bottom-t {
- width: 100%;
- display: flex;
- font-size: 18px;
- color: #5482F9;
- }
- .bottom-t {
- flex-direction: column;
- overflow-y: scroll;
- }
- .bottom-t::-webkit-scrollbar {
- display: none;
- /* Chrome, Safari 和 Opera */
- -ms-overflow-style: none;
- /* IE 和 Edge */
- scrollbar-width: none;
- /* Firefox */
- }
- .bottom-t .item {
- width: 100%;
- display: flex;
- font-size: 16px;
- padding: 10px 0;
- justify-content: space-between;
- border-bottom: 1px solid #5482F9;
- }
- .t1 {
- width: 70px;
- text-align: center;
- }
- .t1 span {
- background: #1D96E9;
- border: 1px solid #1D96E9;
- padding: 0 5px;
- border-radius: 2px;
- color: #fff;
- }
- .t2 {
- width: 100px;
- text-align: center;
- overflow: hidden;
- word-break: break-all;
- white-space: nowrap;
- text-overflow: ellipsis;
- }
- .t3 {
- width: calc(100% - 230px);
- text-align: center;
- overflow: hidden;
- word-break: break-all;
- white-space: nowrap;
- text-overflow: ellipsis;
- }
- </style>
- </head>
- <body>
- <div style="width:100%;" class="header"></div>
- <div class="container" style="position: relative;">
- <div class="row">
- <div class="col-sm-12">
- <div class="model-container"
- style="background: linear-gradient(180deg, rgb(246, 250, 255) 10%, rgb(214, 224, 235) 70%);">
- <div class="model-view">
- <canvas id="canvas-model-view" style="width: 100%;height: 100%;">您的浏览器不支持canvas!</canvas>
- </div>
- <div id="qjt">
- <div class="qjttitle"></div>
- <div class="nowtime">{{currentTime }}</div>
- <div class="onefloor conList">
- <div class="floortitle">叫号数据</div>
- <div class="floorcontent">
- <div class="list blue">
- <div class="top radio">当前排队人数:</div>
- <div class="bottom">
- <img src="https://www.cqna.gov.cn/syygapi/naxsb/images/floor1.png" alt="">
- <div><span class="number" id="currWaitPeople2">-</span>
- <span>人</span>
- </div>
- </div>
- </div>
- <div class="list yellow">
- <div class="top radio">可办事项数量:</div>
- <div class="bottom">
- <img src="https://www.cqna.gov.cn/syygapi/naxsb/images/floor2.png" alt="">
- <div><span class="number" id="taskNum2">-</span>
- <span>项</span>
- </div>
- </div>
- </div>
- <div class="list green">
- <div class="top radio">平均等待时长:</div>
- <div class="bottom">
- <img src="https://www.cqna.gov.cn/syygapi/naxsb/images/floor3.png" alt="">
- <div><span class="number" id="waitTime2">-</span>
- <span>分钟</span>
- </div>
- </div>
- </div>
- <div class="list purple">
- <div class="top radio">窗口数:</div>
- <div class="bottom">
- <img src="https://www.cqna.gov.cn/syygapi/naxsb/images/floor4.png" alt="">
- <div><span class="number" id="winNum2">-</span>
- <span>个</span>
- </div>
- </div>
- </div>
- </div>
- </div>
- <div class="twofloor conList">
- <div class="floortitle">实时办件详情</div>
- <div class="floorcontent" style="flex-wrap: nowrap;flex-direction: column;padding: 5px;">
- <div class="top_t">
- <div class="t1">状态</div>
- <div class="t2">受理部门</div>
- <div class="t3">办理名称</div>
- </div>
- <div style="width: 100%;height:100%;overflow:hidden;">
- <div class="bottom-t">
- <div class="item" v-for="(item, index) in bjxqList">
- <div class="title t1"><span
- v-if="item.state&&item.state=='在办'">{{item.state}}</span>
- <span style="background: #18A65A;border: 1px solid #18A65A;"
- v-else>{{item.state}}</span>
- </div>
- <div class="date t2" :title="item.acceptedDepartment">
- {{item.acceptedDepartment}}</div>
- <div class="date t3" :title="item.handlingName">
- {{item.handlingName?item.handlingName.split("—")[0]:''}}</div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <div class="blsl conList">
- <div class="floortitle">累计办理数量</div>
- <div class="floorcontent">
- <div class="list">
- <div class="img">
- <img src="https://www.cqna.gov.cn/syygapi/naxsb/images/blsl4.png" alt="">
- </div>
- <div class="right">
- <span>本日办理数量</span>
- <div class="number">
- <span id="currDayTaskNum">324</span>
- <span>件</span>
- </div>
- </div>
- </div>
- <div class="list">
- <div class="img">
- <img src="https://www.cqna.gov.cn/syygapi/naxsb/images/blsl1.png" alt="">
- </div>
- <div class="right">
- <span>本周办理数量</span>
- <div class="number">
- <span id="currWeekTaskNum">7152</span>
- <span>件</span>
- </div>
- </div>
- </div>
- <div class="list">
- <div class="img">
- <img src="https://www.cqna.gov.cn/syygapi/naxsb/images/blsl2.png" alt="">
- </div>
- <div class="right">
- <span>本月办理数量</span>
- <div class="number">
- <span id="currMonthTaskNum">78</span>
- <span>件</span>
- </div>
- </div>
- </div>
- <div class="list">
- <div class="img">
- <img src="https://www.cqna.gov.cn/syygapi/naxsb/images/blsl3.png" alt="">
- </div>
- <div class="right">
- <span>本年办理数量</span>
- <div class="number">
- <span id="currYearTaskNum">78</span>
- <span>件</span>
- </div>
- </div>
- </div>
- </div>
- </div>
- <div class="pdgdf conList">
- <div class="floortitle">区行政服务中心网点分布</div>
- <div class="floorcontent">
- <!-- <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>2</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>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>150</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 districtLevelLists">
- <div class="districtLevelList-col">
- <img :src="`./images/districtLevelList${districtLevelNum}.png`"
- alt="" srcset="">
- <div class="left">
- <span
- class="span-col name">{{index+(current-1)*10+1}}.{{item.dep}}</span>
- <span class="span-col">
- <span class="label">电话:</span>
- <span class="center" :title="item.tel"
- v-if="item.tel&&item.tel.length>28">{{item.tel.slice(0,
- 28)}}...</span>
- <span class="center" v-else>{{item.tel||'--'}}</span>
- </span>
- <span class="span-col">
- <span class="label">地址:</span>
- <span class="center" :title="item.address"
- v-if="item.address&&item.address.length>28">{{item.address.slice(0,
- 28)}}...</span>
- <span class="center" v-else>{{item.address}}</span>
- </span>
- </div>
- </div>
- </el-col>
- </el-row>
- </div>
- <div class="districtLevelFooter" ref="districtLevelFooter">
- <el-pagination :page-size="10" @current-change="currentChangeFun" background
- layout="prev, pager, next" :current-page="current"
- :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>
- </div>
- <div style="width:100%;" class="footer"></div>
- </body>
- <script>
- function isMobileUserAgent() {
- return /iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(
- window.parent.navigator.userAgent.toLowerCase("")
- );
- }
- if (isMobileUserAgent()) {
- window.location = 'https://www.cqna.gov.cn/syygapi/naxsb/mobile/qjtMobile.html'
- }
- </script>
- <script>
- $(function () {
- $(".header").load('https://www.cqna.gov.cn/syygapi/naxsb/top/top_style.html');
- $(".footer").load('https://www.cqna.gov.cn/syygapi/naxsb/footer/footer.html');
- });
- </script>
- <script>
- // 判断浏览器是否支持 webgl
- if (!Detector.webgl) Detector.addGetWebGLMessage();
- let mwidth = window.innerWidth;
- let mheight = window.innerHeight;
- // 初始化场景
- let scene = new THREE.Scene();
- // 初始化摄像机
- let camera = new THREE.PerspectiveCamera(10, mwidth / mheight, 1, 1000000);
- // camera.position.set(90000, 41120, 81120);
- camera.position.set(50000, 71120, 51120);
- camera.lookAt(new THREE.Vector3(0, 0, 0));
- let renderer = new THREE.WebGLRenderer({
- canvas: document.getElementById("canvas-model-view"),
- antialias: true, // 设置抗锯齿
- alpha: true, // 背景透明
- autoClear: true,
- logarithmicDepthBuffer: true
- });
- renderer.setSize(mwidth, mheight);
- renderer.shadowMap.enabled = true;
- // 2D 文字渲染
- let css2Renderer = new THREE.CSS2DRenderer();
- css2Renderer.setSize(mwidth, mheight);
- css2Renderer.domElement.style.position = 'absolute';
- css2Renderer.domElement.style.top = '0px';
- css2Renderer.domElement.style.pointerEvents = 'none';
- document.body.appendChild(css2Renderer.domElement);
- // 四个方向的平行光
- // 环境光
- let ambient = new THREE.AmbientLight(0x404040, 0.1);
- scene.add(ambient);
- // var pointLight = new THREE.PointLight(0xf0e68c, 0.9, 12500);
- // pointLight.position.set(0, 8500, 0);
- // pointLight.castShadow = true;
- // pointLight.shadow.camera.near = 1;
- // pointLight.shadow.camera.far = 15000;
- // pointLight.shadow.mapSize.width = 10240;
- // pointLight.shadow.mapSize.height = 10240;
- // scene.add(pointLight);
- // 加载模型文件
- let gLTFLoader = new THREE.GLTFLoader()
- let dracoLoader = new THREE.DRACOLoader();
- dracoLoader.setDecoderPath('https://www.cqna.gov.cn/syygapi/naxsb/3ddemo/examples/js/libs/draco/gltf/');
- dracoLoader.setDecoderConfig({
- type: 'js'
- });
- gLTFLoader.setDRACOLoader(dracoLoader);
- 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;
- 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.name) {
- // console.log(child, 'child', child.name);
- const div = document.createElement('div');
- div.id = child.uuid;
- div.style = 'color:red;';
- div.setAttribute("data", child.name);
- div.innerHTML = '<p data-name="' + child.name + '"></p>';
- let tag = new THREE.CSS2DObject(div);
- }
- // 一号楼
- if (child.name == 'yihaolou') {
- const div = document.createElement('div');
- div.id = child.uuid;
- let html = '';
- html += '<div class="building-box" style="width: 100px; top: 70px; left: -48px;">';
- html += '<div class="building-text" style="background: #1D96E9;" onclick="handleClick()">';
- html += '<span>1号楼</span><span style="font-size: 10px;">社保大厅、医保大厅</span>';
- html += '</div>';
- 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;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>';
- div.innerHTML = html;
- let tag = new THREE.CSS2DObject(div);
- child.add(tag);
- }
- // 二号楼
- if (child.name == 'erhaolou') {
- const div = document.createElement('div');
- 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="building-text" style="background: #1D96E9;">';
- html += '<span>2号楼</span></span></span><span style="font-size: 10px;">南岸区政务服务中心</span>';
- html += '</div>';
- 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: 72px;"></div>';
- div.innerHTML = html;
- let tag = new THREE.CSS2DObject(div);
- child.add(tag);
- div.style.pointerEvents = 'auto';
- div.addEventListener('click', function (event) {
- window.location.href = 'https://www.cqna.gov.cn/syygapi/naxsb/floorone.html?floorid=' + 2;
- });
- }
- // 三号楼
- if (child.name == 'sanhaolou') {
- const div = document.createElement('div');
- div.id = child.uuid;
- let html = '';
- html += '<div class="building-box" style="width: 50px; top: 73px; left: -23px;">';
- html += '<div class="building-text" style="background: #1D96E9;">';
- html += '<span>3号楼</span><span style="font-size: 10px;"></span>';
- html += '</div>';
- 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: 90px;"></div>';
- div.innerHTML = html;
- let tag = new THREE.CSS2DObject(div);
- child.add(tag);
- }
- // 四号楼
- if (child.name == 'sihaolou-Chrome') {
- const div = document.createElement('div');
- 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="building-text">';
- html += '<span>4号楼</span><span style="font-size: 10px;">商务打印、小卖部、食堂</span>';
- html += '</div>';
- html += '<svg width="10" height="10"><polygon id="triangle" points="0,0 10,0 5,10" fill="#18A65A"/></svg>';
- html += '</div>';
- html += '<div class="building-line"></div>';
- div.innerHTML = html;
- let tag = new THREE.CSS2DObject(div);
- child.add(tag);
- }
- // if (child.name == 'chekuchukou') {
- // // console.log(child, 'child', child.name);
- // const div = document.createElement('div');
- // div.id = child.uuid;
- // let html = '';
- // html += '<div style="font-size: 12px; width: 80px; text-align: center;">';
- // html += '<div class="building-text" style="background: #18A65A; margin-bottom: -2px;">';
- // 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);
- // }
- }
- });
- scene.add(obj.scene);
- const box = new THREE.Box3().setFromObject(obj.scene);
- const center = new THREE.Vector3();
- box.getCenter(center);
- 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) {
- })
- function render() {
- css2Renderer.render(scene, camera)
- renderer.render(scene, camera);
- }
- render();
- let controls = new THREE.OrbitControls(camera, renderer.domElement);
- controls.enableZoom = false
- controls.maxPolarAngle = Math.PI / 2
- controls.minPolarAngle = 0
- controls.addEventListener('change', render);
- let axisHelper = new THREE.AxisHelper(50050);
- </script>
- <script>
- new Vue({
- el: '#qjt',
- data: function () {
- return {
- currentTime: "",
- 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号(上海城嘉发跨贸中心 二楼)南岸区'
- // }
- ],
- districtLevelLists: [],
- districtLevelTotal: 0,
- districtLevelListHeight: "60%",
- current: 0,
- /* 区行政服务中心网点分布 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() {
- const now = new Date();
- const year = String(now.getFullYear()).padStart(4, '0');
- const month = String(now.getMonth() + 1).padStart(2, '0');
- const day = String(now.getDate()).padStart(2, '0');
- const hours = String(now.getHours()).padStart(2, '0');
- const minutes = String(now.getMinutes()).padStart(2, '0');
- const seconds = String(now.getSeconds()).padStart(2, '0');
- const formattedDateTime = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
- this.currentTime = formattedDateTime;
- },
- addKeyFrames(y) {
- let i = 0
- setInterval(function () {
- if (i >= y) return i = 0
- i++
- document.querySelector('.bottom-t').style.marginTop = `-${i}px`
- }, 50);
- },
- getSSbj() {
- let that = this;
- $.ajax({
- url: 'https://data.cqna.gov.cn:8088/kshapi/api/page2/top2',
- type: "get",
- dataType: "json",
- async: false,
- success: function (data) {
- var data = data.data;
- that.bjxqList = data.data;
- }
- });
- var height = document.querySelector('.item') ? document.querySelector('.item').clientHeight - 20 : 0;
- if (this.bjxqList.length) {
- this.addKeyFrames(height * this.bjxqList.length);
- }
- },
- // 区行政服务中心网点分布点击事件
- showDistrictLevel(num) {
- let _this = this
- if (num != '1' && num != '4') {
- 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);
- $.ajax({
- url: `https://www.cqna.gov.cn/data/mapdata/getMapdataToType?id=${num == 2 ? 26 : 27}&matchingValue=`,
- type: "get",
- dataType: "json",
- async: false,
- success: function (data) {
- _this.current = 1
- _this.districtLevelTotal = data.data.length
- _this.districtLevelList = data.data
- _this.districtLevelLists = _this.districtLevelList.slice(0, 10)
- }
- });
- }
- },
- // 分页事件
- currentChangeFun(num) {
- this.current = num
- let numstar = num - 1, endNum = num
- this.districtLevelLists = this.districtLevelList.slice(10 * numstar, 10 * num)
- },
- // 关闭弹窗
- 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>
- var chartDom = document.getElementById('pdgdfechart');
- var myChart = echarts.init(chartDom);
- var option;
- option = {
- color: ['#80FFA5'],
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'cross',
- label: {
- backgroundColor: '#6a7985'
- }
- }
- },
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true
- },
- xAxis: [
- {
- type: 'category',
- boundaryGap: false,
- data: ['8:00', '9:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:30'],
- axisLabel: {
- color: 'rgba(26,149,235,0.5);' // 这里设置刻度字的颜色为蓝色
- }
- }
- ],
- yAxis: [
- {
- type: 'value',
- name: '人次',
- nameTextStyle: {
- color: "#2A6594",
- fontSize: '14'
- },
- axisTick: {
- show: true // 显示Y轴刻度线
- },
- axisLine: {
- show: true
- },
- axisLabel: {
- color: 'rgba(26,149,235,0.5);' // 这里设置刻度字的颜色为蓝色
- }
- }
- ],
- series: [
- {
- name: '大厅取号高低峰指数',
- type: 'line',
- stack: 'Total',
- smooth: true,
- lineStyle: {
- width: 0
- },
- areaStyle: {
- opacity: 0.8,
- color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
- {
- offset: 0,
- color: 'rgb(17 126 202)'
- },
- {
- offset: 1,
- color: 'rgb(192 215 231)'
- }
- ])
- },
- emphasis: {
- focus: 'series'
- },
- data: [14, 72, 138, 150, 26, 2, 60, 154, 100, 44]
- }
- ]
- };
- option && myChart.setOption(option);
- </script> -->
- <script>
- var path = "https://www.cqna.gov.cn/data";
- function handlingNumber(area, timeType) {
- var data1 = ''
- $.ajax({
- url: path + "/department/getOfficeNumberByAreaInfo",
- dataType: "json",
- type: "get",
- cache: false,
- async: false,
- data: {
- "area": area,
- "timeType": timeType
- },
- success: function (data) {
- data1 = data.data
- },
- error: function () {
- alert('网络错误,请稍后再试!');
- }
- });
- return data1;
- }
- function animateValue(obj, start, end, duration) {
- let startTimestamp = null;
- const step = (timestamp) => {
- if (!startTimestamp) startTimestamp = timestamp;
- const progress = Math.min((timestamp - startTimestamp) / duration, 1);
- obj.innerHTML = Math.floor(progress * (end - start) + start);
- if (progress < 1) {
- window.requestAnimationFrame(step);
- } else {
- obj.classList.remove('animate');
- }
- };
- obj.classList.add('animate');
- window.requestAnimationFrame(step);
- }
- const time = 2 * 1000;
- let that = this;
- function getCurrentPerson() {
- $.ajax({
- url: conpath + "/qjt/",
- type: "get",
- dataType: "json",
- async: false,
- success: function (data) {
- const waitTime2 = document.getElementById('waitTime2');
- animateValue(waitTime2, 0, data.data[0], time);
- const currWaitPeople2 = document.getElementById('currWaitPeople2');
- animateValue(currWaitPeople2, 0, data.data[1], time);
- }
- })
- }
- getCurrentPerson();
- var intervalId = setInterval(getCurrentPerson, 1800000);
- function getCurrentItem() {
- $.ajax({
- url: conpath + "/solveAffairs/",
- type: "get",
- dataType: "json",
- async: false,
- success: function (data) {
- var data = data.data;
- const currDayTaskNumElement = document.getElementById('currDayTaskNum');
- animateValue(currDayTaskNumElement, 0, data[0], time);
- const currWeekTaskNumElement = document.getElementById('currWeekTaskNum');
- animateValue(currWeekTaskNumElement, 0, data[1], time);
- const currMonthTaskNumElement = document.getElementById('currMonthTaskNum');
- animateValue(currMonthTaskNumElement, 0, data[2], time);
- const currYearTaskNumElement = document.getElementById('currYearTaskNum');
- animateValue(currYearTaskNumElement, 0, data[3], time);
- }
- })
- }
- getCurrentItem();
- var intervalId1 = setInterval(getCurrentItem, 300000);
- window.addEventListener('beforeunload', function () {
- clearInterval(intervalId);
- clearInterval(intervalId1);
- });
- const taskNumElement2 = document.getElementById('taskNum2');
- animateValue(taskNumElement2, 0, 798, time);
- const winNumElement2 = document.getElementById('winNum2');
- animateValue(winNumElement2, 0, 78, time);
- </script>
- </html>
|