123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- <template>
- <div class="body shh_body">
- <div class="header">
- <h1 class="header_title">松花湖景区通</h1>
- <span class="time">{{ currentTime }}</span>
- </div>
- <div id="parkCar" class="shh_part">
- <div class="shh_part_div" v-for="(item,index) in parkingLots" :key="index">
- <img :src="getImgUrl(item.parkId)"/>
- <div class="shh_txt">
- <h1>{{ getParkingLotName(item.parkId) }}</h1>
- <table style="width: 100%;color: white;border-collapse: collapse;">
- <tr>
- <td>总车位数:{{ item.allSpaceNumber }}</td>
- </tr>
- <tr>
- <td>剩余车位:{{ item.remainSpaceNumber }}</td>
- <td style="padding: 0 25px;">已用车位:{{ item.useSpaceNumber }}</td>
- </tr>
- <tr>
- <td>当天出场车辆:{{ item.outParkCount }}</td>
- <td style="padding: 0 25px;">当前在场车辆:{{ item.inParkCount }}</td>
- </tr>
- <tr>
- <td>当天线下支付金额:{{ item.totalOutMoney }}</td>
- <td style="padding: 0 25px;">当天网络支付金额:{{ item.totalPreMoney }}</td>
- </tr>
- </table>
- </div>
- </div>
- </div>
- <div class="selectDate">
- <div class="_moreMenu">
- <ul id="myList" class="listContain">
- </ul>
- </div>
- </div>
- <!--游船视图页面-->
- <div id="map"></div>
- </div>
- </template>
- <script>
- import {getGpsByDid, getShipRoute} from "@/api/ship/shipMapping";
- import {getParkData} from "@/api/park/parkLot";
- export default {
- name: "songhuaIndex",
- data() {
- return {
- dataSource: [],
- parkingLots: [],
- map: [],
- currentTime: ''
- }
- },
- mounted() {
- // 初始加载时间
- this.getCurrentTime();
- // 每秒刷新时间
- setInterval(() => {
- this.getCurrentTime();
- }, 1000);
- setInterval(() => {
- this.fetchParkingLots();
- }, 1000 * 60 * 2);
- },
- created() {
- this.handler();
- this.fetchParkingLots();
- },
- methods: {
- getCurrentTime() {
- const now = new Date();
- const year = now.getFullYear();
- const month = now.getMonth() + 1;
- const date = now.getDate();
- const day = now.getDay();
- const weekDays = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
- const hour = now.getHours();
- const minute = now.getMinutes();
- const second = now.getSeconds();
- const formattedMonth = month < 10 ? `0${month}` : month;
- const formattedDate = date < 10 ? `0${date}` : date;
- const formattedHour = hour < 10 ? `0${hour}` : hour;
- const formattedMinute = minute < 10 ? `0${minute}` : minute;
- const formattedSecond = second < 10 ? `0${second}` : second;
- this.currentTime = `${year}年${formattedMonth}月${formattedDate}日 ${weekDays[day]} ${formattedHour}:${formattedMinute}:${formattedSecond}`;
- },
- fetchParkingLots() {
- getParkData().then(response => {
- this.parkingLots = response.data;
- })
- },
- getImgUrl(parkId) {
- switch (parkId) {
- case "15305":
- return require("@/assets/images/shh_part" + 1 + ".png");
- case "15338":
- return require("@/assets/images/shh_part" + 2 + ".png");
- // 可以继续添加其他停车场的情况
- // default:
- // return "未知停车场";
- }
- },
- getParkingLotName(parkId) {
- // 在这里根据 parkId 返回停车场名称
- switch (parkId) {
- case "15305":
- return "一号松花湖停车场";
- case "15338":
- return "二号松花湖停车场";
- // 可以继续添加其他停车场的情况
- // default:
- // return "未知停车场";
- }
- },
- //地图
- handler() {
- getShipRoute().then(res => {
- let that = this
- if (res.code == 200) {
- that.dataSource = res.data
- let ul;
- let dataList = that.dataSource
- that.map = new BMap.Map('map'); // 创建Map实例
- that.map.centerAndZoom(new BMap.Point(126.85912, 43.671033), 13); // 初始化地图,设置中心点坐标和地图级别
- that.map.enableScrollWheelZoom(true);
- let mapStyle = {
- style: 'midnight',
- };
- that.map.setMapStyle(mapStyle);
- for (let i = 0; i < dataList.length; i++) {
- let pointArray = [];
- for (let j = 0; j < dataList[i].polylinePath.length; j++) {
- pointArray.push(new BMap.Point(dataList[i].polylinePath[j].lng, dataList[i].polylinePath[j].lat))
- }
- // 创建小船图标
- var myIcon = new BMap.Icon(require("@/assets/images/ship.png"), new BMap.Size(52, 26));
- var marker = new BMap.Marker(new BMap.Point(dataList[i].polylinePath[0].lng, dataList[i].polylinePath[0].lat), {icon: myIcon}); // 创建点
- var opts = {
- width: 100, // 信息窗口宽度
- height: 80, // 信息窗口高度
- title: "游船信息", // 信息窗口标题
- }
- // marker添加点击事件
- marker.addEventListener('mouseover', function () {
- this.map.openInfoWindow(new BMap.InfoWindow("游船名称:" + dataList[i].shipName + "</br>" + "游船型号:" + dataList[i].shipType + "</br>" + "驱动类型:" + dataList[i].propulsion + "</br>", opts), new BMap.Point(dataList[i].polylinePath[0].lng, dataList[i].polylinePath[0].lat));
- });
- marker.addEventListener('mouseout', function () {
- this.map.closeInfoWindow();
- });
- this.map.addOverlay(marker);
- }
- ul = document.getElementById('myList');
- // 循环数组中的每个项目
- dataList.concat(dataList).forEach(function (item) {
- // 创建一个新的li元素
- var li = document.createElement('li');
- // 设置li元素的内容
- li.textContent = item.shipName;
- li.style.transform = 'translateX(22px)';
- li.style.cursor = 'pointer';
- // 添加点击事件处理程序
- li.addEventListener('click', (e) => {
- // 在这里添加你想执行的点击事件代码
- that.selectGpsByDid(item.registrationNumber)
- console.log(e.target)
- e.target.style.color = '#fff'
- // 可以进行其他操作,如触发其他函数或改变元素样式等
- });
- // 将li元素添加到ul中
- ul.appendChild(li);
- });
- } else {
- that.$modal.msgError("查询失败");
- }
- })
- },
- selectGpsByDid(val) {
- this.map.clearOverlays();
- let marker;
- let polyline;
- let opts;
- getGpsByDid(val).then(res => {
- if (res.code == 200) {
- let dataList = res.data
- for (let i = 0; i < dataList.length; i++) {
- let pointArray = [];
- for (let j = 0; j < dataList[i].polylinePath.length; j++) {
- pointArray.push(new BMap.Point(dataList[i].polylinePath[j].lng, dataList[i].polylinePath[j].lat))
- }
- polyline = new BMap.Polyline(pointArray, {
- strokeColor: dataList[i].color,
- strokeWeight: 5,
- strokeOpacity: 0.5
- });//创建折线
- // 创建小船图标
- var myIcon = new BMap.Icon(require("@/assets/images/ship.png"), new BMap.Size(52, 26));
- marker = new BMap.Marker(new BMap.Point(dataList[i].polylinePath[0].lng, dataList[i].polylinePath[0].lat), {icon: myIcon}); // 创建点
- opts = {
- width: 100, // 信息窗口宽度
- height: 80, // 信息窗口高度
- title: "游船信息", // 信息窗口标题
- }
- // marker添加点击事件
- marker.addEventListener('mouseover', function () {
- this.map.openInfoWindow(new BMap.InfoWindow("游船名称:" + dataList[i].shipName + "</br>" + "游船型号:" + dataList[i].shipType + "</br>" + "驱动类型:" + dataList[i].propulsion + "</br>", opts), new BMap.Point(dataList[i].polylinePath[0].lng, dataList[i].polylinePath[0].lat));
- });
- marker.addEventListener('mouseout', function () {
- this.map.closeInfoWindow();
- });
- this.map.addOverlay(polyline);
- this.map.addOverlay(marker);
- }
- } else {
- this.$modal.msgError("查询失败");
- }
- })
- }
- },
- }
- </script>
- <style lang="scss" scoped>
- @import "@/assets/styles/shh_body.scss";
- @import "@/assets/styles/shh_index.scss";
- .listContain{
- height: 465px;
- overflow: hidden;
- overflow-y: scroll;
- }
- .listContain::-webkit-scrollbar{
- display: none;
- }
- </style>
|