You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

977 lines
25 KiB

1 year ago
<template>
<div>
<div id="mapContainer" class="mapContainer"></div>
3 months ago
3 months ago
<!-- 搜索框 -->
3 months ago
<van-popup v-model="isSearch" position="top">
<div class="search-box flex-around">
<input type="text" v-model="keyword" placeholder="请输入搜索关键字">
<div class="search-text" @click="search">搜索</div>
</div>
<div class="search-result" v-if="isSearch && searchList.length > 0">
<div class="search-item" v-for="(item,index) in searchList" @click="searchClick(item)">
{{item.name}}
</div>
</div>
</van-popup>
1 year ago
<!-- 点位分类 -->
1 year ago
<div class="type-box" v-if="typeShow">
3 months ago
<div class="search" @click="keyword = ''; searchList = []; isSearch = true">
3 months ago
<img src="https://static.ticket.sz-trip.com/changshu/images/map/search.png" alt="" />
搜索
</div>
1 year ago
<div :class="['type-item',{'type-active': index == typeIndex}]" v-for="(item,index) in mapType"
@click="getSpotsByCategory(index)">{{item.name}}</div>
</div>
1 year ago
<div class="area-box" v-if="typeShow">
1 year ago
<!-- 区域分类 -->
<div>
<div class="area-item area-items" @click="areaMore = !areaMore">
<img :src="'https://static.ticket.sz-trip.com/yandu/images/map/'+ (areaMore ? 'topIcon.png' : 'bottomIcon.png')"
alt="" />
{{areaMore ? '收起' : '展开'}}
</div>
<div v-if="areaMore">
<div v-for="(item,index) in areaList" :key="index"
:class="['area-item',{'area-active':index == areaIndex}]" @click="changeArea(index)">
{{item.name}}
</div>
</div>
</div>
<!-- 行程线路 -->
3 months ago
<!-- <div>
1 year ago
<div class="area-item area-items" @click="addLine" v-if="isMyLine">
<img src="https://static.ticket.sz-trip.com/yandu/images/map/myLine.png" alt="" />
我的<br>行程
</div>
<div class="area-item area-items" @click="addLine" v-else>
1 year ago
<img src="https://static.ticket.sz-trip.com/yandu/images/map/addLine.png" alt="" />
添加<br>行程
</div>
<div class="area-item area-items" @click="gotoLine">
<img src="https://static.ticket.sz-trip.com/yandu/images/map/line.png" alt="" />
线路<br>推荐
</div>
3 months ago
</div> -->
1 year ago
</div>
<!-- 详情弹框 -->
<van-popup v-model="detailShow" @close="audioPause" :overlay-style="{'background-color': 'rgba(0, 0, 0, 0)'}"
position="bottom" round>
<ProductDetail ref="detailRef" :type="productType" :info="detailInfo" :audioSrc="audioSrc"
3 months ago
:genreType="genreType" :content="detailContent" :imgList="imgList" :isCanBuy="isCanBuy" :tel="tel" />
1 year ago
</van-popup>
<!-- 输入线路信息弹框 -->
<van-popup v-model="addLineShow" position="center" round>
<div class="addLine-box">
添加行程
<div class="addLine-item">
线路名称: <input type="text" v-model="lineName" placeholder="请输入线路名称" />
</div>
<div class="addLine-item">
开始时间: <input type="text" v-model="lineDate" placeholder="请选择出发时间" readonly
@click="lineDateShow = true" />
<img src="https://static.ticket.sz-trip.com/yandu/images/map/dateRight.png" alt="">
</div>
<div class="addLine-btn flex-around">
<div @click="addLineShow = false">取消</div>
<div @click="lineClick">下一步</div>
</div>
</div>
</van-popup>
<!-- 日期选择 -->
<van-popup v-model="lineDateShow" round position="bottom">
<van-datetime-picker v-model="currentDate" type="date" title="选择年月日" @confirm="lineDateConfirm"
@cancel="lineDateShow = false" />
1 year ago
</van-popup>
<!-- 添加线路行程弹框 -->
<van-popup v-model="lineRouteShow" round position="bottom">
<LineRoute :lineItem="addLineInfo" ref="lineRouteRef" />
1 year ago
</van-popup>
<!-- 线路详情弹框 -->
<van-popup v-model="lineDetailShow" :overlay="false" :overlay-style="{'background-color': 'rgba(0, 0, 0, 0)'}"
round position="bottom" @close="closeLine" class="linePopup">
1 year ago
<div class="close-LineBtn" @click="closeLine">
退出线路
</div>
<LineDetail @changeCenter="changeMapCenter" />
1 year ago
</van-popup>
</div>
</template>
<script>
import {
getStore
} from '@/libs/storage'
1 year ago
import moment from 'moment'
import ProductDetail from './compoents/productDetail'
import LineRoute from './compoents/lineRoute'
1 year ago
import LineDetail from './compoents/lineDetail'
1 year ago
export default {
components: {
ProductDetail,
1 year ago
LineRoute,
LineDetail
1 year ago
},
data() {
return {
mapObj: null,
mapMarker: null,
basics: {},
mapType: [],
1 year ago
typeShow: true,
1 year ago
typeIndex: -1,
areaList: [],
areaIndex: 0,
areaMore: true,
detailShow: false, // 详情弹框
1 year ago
productType: true,
1 year ago
addLineShow: false, // 输入线路名称和日期弹框
lineName: '',
lineDate: '',
lineDateShow: false, // 选择日期弹框
currentDate: new Date(),
lineRouteShow: false, // 添加线路行程弹框
lineAddStatus: false, // 点击添加行程时为true,地图景点图标改变为加号
1 year ago
addLineInfo: '',
1 year ago
maps: [], //热点
1 year ago
lineDetailShow: false, // 线路弹框
lineInfo: {},
detailInfo: {},
audioSrc: '',
genreType: '',
isMyLine: false, // 是否有我的线路
3 months ago
detailContent: '',
imgList: '',
isCanBuy: false,
3 months ago
tel: '',
keyword: '',
isSearch: false,
searchList: []
1 year ago
};
},
mounted() {
this.getAreaList()
if (this.$route.query.token) this.$store.commit('changeUserInfo', {
token: this.$route.query.token
})
1 year ago
// 如果从我的行程里点击添加线路
if (sessionStorage.getItem('addUserLine')) {
1 year ago
this.lineName = ''
this.lineDate = ''
this.addLineShow = true
sessionStorage.removeItem("addUserLine")
}
1 year ago
},
activated() {
1 year ago
},
methods: {
// 获取全部区域
getAreaList() {
this.post({}, '/api/emap/get_map_list').then(res => {
this.areaList = res.data
if (res.data.length > 0) {
this.getAreaDetail()
this.getCategory()
3 months ago
// this.getMyLine()
1 year ago
}
})
},
// 更改地图区域
changeArea(index) {
this.areaIndex = index
1 year ago
// 销毁地图
this.mapObj.destroy()
1 year ago
this.getAreaDetail()
1 year ago
this.getCategory()
3 months ago
// this.getMyLine()
1 year ago
},
// 根据code获取当前区域信息
getAreaDetail() {
this.post({
code: this.areaList[this.areaIndex].code
}, '/api/emap/get_init').then(res => {
this.basics = res.data
this.basics.center_poi = JSON.parse(this.basics.center_poi)
this.basics.lb_poi = JSON.parse(this.basics.lb_poi)
this.basics.rt_poi = JSON.parse(this.basics.rt_poi)
this.$nextTick(() => {
this.initMap()
})
})
},
// 根据code获取热点分类
getCategory() {
this.post({
code: this.areaList[this.areaIndex].code
}, '/api/emap/getByCategory').then(res => {
1 year ago
this.mapType = res.data
if (this.mapType.length > 0) this.getSpotsByCategory(0)
1 year ago
})
},
// 根据code、热点分类获取热点
getSpotsByCategory(index) {
3 months ago
if (index > -1) this.typeIndex = index
1 year ago
this.post({
code: this.areaList[this.areaIndex].code,
category_id: this.mapType[this.typeIndex].id
1 year ago
}, '/api/emap/getSpotsByCategory').then(res => {
1 year ago
this.maps = res.data
1 year ago
this.lineAddStatus = false
1 year ago
// 如果是从线路列表过来的,就不需要打点了
if (this.$store.state.user.lineDetail && this.$store.state.user.lineDetail.points.length > 0) {
1 year ago
return;
}
1 year ago
// 移除原先点位
this.clearMarkers()
1 year ago
if (this.maps.length > 0) this.setMarkers()
})
},
3 months ago
// 搜索
search() {
this.post({
code: this.areaList[this.areaIndex].code,
category_id: this.mapType[this.typeIndex].id,
keyword: this.keyword
}, '/api/emap/getSpotsByCategory').then(res => {
this.searchList = res.data
})
},
// 点击搜索结果
searchClick(item) {
this.isSearch = false
// 设置地图中心
this.changeMapCenter(JSON.parse(item.poi))
// 查找当前搜索结果对应的点位数据
const markerData = this.maps.find(marker => {
// 根据id或name匹配对应的点位(根据实际数据结构调整)
return marker.id === item.id || marker.name === item.name;
});
if (markerData) {
// 构造模拟的标记点点击事件数据
const mockEvent = {
geometry: {
id: markerData.goods ? markerData.goods.id : '',
genre: markerData.goods ? markerData.goods.genre : '',
name: markerData.name,
address: markerData.address,
audioSrc: markerData.audio_file,
spotId: markerData.id,
detailContent: markerData.detail_content,
imgList: markerData.album_images,
tel: markerData.tel,
position: new TMap.LatLng(
JSON.parse(markerData.poi)[1],
JSON.parse(markerData.poi)[0]
)
}
};
// 触发标记点点击事件
this.markerClick(mockEvent);
}
},
1 year ago
// 查询是否有我的线路
getMyLine() {
this.post({
type: 1,
code: this.areaList[this.areaIndex].code
}, '/api/emap/getLineByCode').then(res => {
if (res.data && res.data.length > 0) {
1 year ago
this.isMyLine = true
} else {
1 year ago
this.isMyLine = false
}
1 year ago
})
},
initMap() {
let centerLat = this.basics.center_poi[1]
let centerLon = this.basics.center_poi[0]
var center = new TMap.LatLng(this.basics.center_poi[1], this.basics.center_poi[0]) //设置中心点坐标
var sw = new TMap.LatLng(this.basics.rt_poi[1], this.basics.rt_poi[0]); //东北角坐标,
var ne = new TMap.LatLng(this.basics.lb_poi[1], this.basics.lb_poi[0]); //西南角坐标,
var latlngBounds = new TMap.LatLngBounds(ne, sw);
// 初始化地图
this.mapObj = new TMap.Map("mapContainer", {
center: center,
1 year ago
boundary: latlngBounds,
1 year ago
zoom: this.basics.zoom, // 地图默认缩放级别
minZoom: this.basics.min_zoom,
maxZoom: this.basics.max_zoom,
1 year ago
showControl: true, // 是否显示地图上的控件
viewMode: '2D', // 地图视图模式,支持2D和3D,默认为3D。2D模式下俯仰角和旋转角度始终为0
1 year ago
rotatable: false, // 禁止旋转
1 year ago
rotation: 0, //设置地图旋转角度
1 year ago
pitchable: false, // 禁止俯视
baseMap: {
type: 'vector', // 矢量地图底图模式
features: this.basics.bg_tile == 1 ? ['base'] : []
// features: [
// 'base', // 路面
// 'building3d', //三维建筑
// 'point', // POI文字
// 'label' // 道路文字
// ]
1 year ago
}
1 year ago
});
this.mapObj.removeControl(TMap.constants.DEFAULT_CONTROL_ID.ZOOM); // 移除缩放控件
this.mapObj.removeControl(TMap.constants.DEFAULT_CONTROL_ID.ROTATION); // 移除旋转控件
// 初始化瓦片
// 瓦片图需要切好每个位置的图
// x,y,z 为上图的坐标
3 months ago
let imageTile = new TMap.ImageTileLayer({
getTileUrl: (x, y, z) => {
1 year ago
//拼接瓦片URL
1 year ago
let url = this.basics.tile_image_formatter + z + "/" + x +
"/" + y + ".png";
1 year ago
return url;
},
tileSize: 256, //瓦片像素尺寸
1 year ago
minZoom: this.basics.min_zoom, //显示自定义瓦片的最小级别
maxZoom: this.basics.max_zoom, //显示自定义瓦片的最大级别
1 year ago
visible: true, //是否可见
zIndex: 5000, //层级高度(z轴)
opacity: 1, //图层透明度:1不透明,0为全透明
map: this.mapObj, //设置图层显示到哪个地图实例中
});
1 year ago
// 瓦片等级最高设置
// this.$nextTick(()=>{
// var layerId = imageTile.getId() // 获取图层ID
// // 根据输入 LAYER_LEVEL 常量调整 layerId 对应图层的渲染层级 ,其中layerId可以通过图层getId方法获取。
// // TMap.constants.LAYER_LEVEL 代表图层级别常量,见帮助文档(https://lbs.qq.com/webApi/javascriptGL/glDoc/docIndexMap)
// this.mapObj.moveLayer(layerId, TMap.constants.LAYER_LEVEL.TEXT)
// })
1 year ago
// 判断是否是线路列表过来的
if (this.$store.state.user.lineDetail && this.$store.state.user.lineDetail.points.length > 0) {
1 year ago
this.$nextTick(() => {
this.showLineDetail()
})
}
1 year ago
// 创建点聚合实例
// this.markerCluster = new TMap.MarkerCluster({
// id: "cluster",
// map: this.mapObj,
// enableDefaultStyle: true, // 是否启用默认样式
// minimumClusterSize: 5, // 形成聚合簇的最小个数
// geometries: [], // 点数组
// zoomOnClick: true,
// gridSize: 60,
// averageCenter: true,
// });
},
// 地图打点
setMarkers() {
// 聚合点点位
// this.markerCluster.setGeometries([
// {
// position: new TMap.LatLng(33.332682, 120.16451)
// },
// {
// position: new TMap.LatLng(33.329281, 120.161117)
// }
// ]);
let markers = []
let labels = []
this.maps.forEach(item => {
markers.push({
"styleId": 'marker',
3 months ago
id: item.goods ? item.goods.id : '', // 产品id
1 year ago
genre: item.goods ? item.goods.genre : '', // 产品类型
name: item.name, // 产品名称
3 months ago
address: item.address, // 详情地址,
1 year ago
audioSrc: item.audio_file, // 音频路径
spotId: item.id, // 点位id
3 months ago
detailContent: item.detail_content, // 简介
imgList: item.album_images, // 图片
tel: item.tel, // 电话
position: new TMap.LatLng(JSON.parse(item.poi)[1], JSON.parse(item.poi)[0])
1 year ago
})
1 year ago
1 year ago
labels.push({
id: 'label', // 点图形数据的标志信息
styleId: 'label', // 样式id
3 months ago
position: new TMap.LatLng(JSON.parse(item.poi)[1], JSON.parse(item.poi)[
0]), // 标注点位置
1 year ago
content: item.name, // 标注文本
properties: {
// 标注点的属性数据
title: 'label',
},
})
})
1 year ago
1 year ago
// 添加marker点
this.multiMarker = new TMap.MultiMarker({
id: 'marker-layer',
map: this.mapObj,
styles: {
"marker": new TMap.MarkerStyle({
1 year ago
"width": 27,
"height": 33,
3 months ago
"src": 'https://static.ticket.sz-trip.com/changshu/images/map/scenic.png',
1 year ago
"src": this.util.showImg(this.mapType.find(i => {
return i.id == this.maps[0].category_id
}).icon_image)
1 year ago
})
},
// 点数组
geometries: markers,
})
// 标记点点击事件
this.multiMarker.on("click", this.markerClick)
// 文本标记
this.multiLabel = new TMap.MultiLabel({
id: 'label-layer',
map: this.mapObj,
collisionOptions: {
sameSource: true,
}, //开启图层内部的文本标注碰撞
styles: {
label: new TMap.LabelStyle({
color: '#FFF', // 颜色属性
size: 13, // 文字大小属性
offset: {
x: 0,
y: 15
}, // 文字偏移属性单位为像素
angle: 0, // 文字旋转属性
alignment: 'center', // 文字水平对齐属性
verticalAlignment: 'middle', // 文字垂直对齐属性
backgroundColor: 'rgba(0, 0, 0, .5)',
borderRadius: 7,
padding: '2px 8px',
}),
},
geometries: labels,
})
// 标记文本点击事件
// this.multiLabel.on("click", this.markerClick)
},
// 移除点位
clearMarkers() {
if (this.multiMarker) {
this.multiMarker.setMap(null);
this.multiMarker = null;
}
1 year ago
if (this.multiLabel) {
1 year ago
this.multiLabel.setMap(null);
this.multiLabel = null;
}
},
// 改变地图中心
1 year ago
changeMapCenter(item) {
this.mapObj.panTo(new TMap.LatLng(item[1], item[0]));
1 year ago
},
// 标记点点击事件
markerClick(evt) {
1 year ago
console.log(evt.geometry)
1 year ago
if (this.lineAddStatus) {
//添加行程时
this.$dialog.confirm({
title: '',
1 year ago
message: '是否将' + evt.geometry.name + '加入行程?'
1 year ago
}).then(() => {
1 year ago
this.addLineInfo = evt.geometry
1 year ago
}).catch(() => {
})
} else {
1 year ago
this.audioSrc = evt.geometry.audioSrc
this.genreType = evt.geometry.genre
3 months ago
this.detailContent = evt.geometry.detailContent
this.imgList = evt.geometry.imgList
this.tel = evt.geometry.tel
3 months ago
3 months ago
if (['ticket'].includes(evt.geometry.genre)) {
// 景点 酒景
1 year ago
this.get({
3 months ago
id: evt.geometry.id,
customBaseURL: 'https://api.cloud.sz-trip.com'
}, '/api/product/get_product_detail').then(res => {
if (res.data) {
3 months ago
// 酒店类型展示购买按钮
3 months ago
if (evt.geometry.genre == 'ticket') {
3 months ago
this.isCanBuy = true
this.productType = true
}
3 months ago
1 year ago
this.detailInfo = res.data
1 year ago
this.detailInfo.genre = evt.geometry.genre
1 year ago
this.detailShow = true
}
})
3 months ago
}
// else if (evt.geometry.genre == 'food') {
// this.get({
// goods_id: evt.geometry.id
// }, '/api/goods/getGoodDetail').then(res => {
// if (res.data) {
// this.productType = true
// this.detailInfo = res.data
// this.detailShow = true
// }
// })
// }
else {
1 year ago
// 停车场 卫生间等
this.detailInfo = {
title: evt.geometry.name,
address: evt.geometry.address,
lon: evt.geometry.position.lng,
lat: evt.geometry.position.lat
}
1 year ago
console.log(this.detailInfo)
3 months ago
this.productType = true
1 year ago
this.detailShow = true
}
1 year ago
}
},
// 路线规划
gotoLine() {
this.$router.push({
path: '/lineList',
query: {
code: this.areaList[this.areaIndex].code
}
})
},
// 关闭弹框后暂停音频
audioPause() {
this.$refs.detailRef.audioPlay(false)
},
// 添加线路
addLine() {
1 year ago
this.$store.commit('changeLineDetail', {})
if (this.isMyLine) {
1 year ago
// 已有我的行程
this.$router.push({
path: '/lineList',
query: {
code: this.areaList[this.areaIndex].code,
type: '1'
}
})
} else {
1 year ago
this.lineName = ''
this.lineDate = ''
this.addLineShow = true
}
1 year ago
},
// 确认日期
lineDateConfirm() {
this.lineDate = moment(this.currentDate).format('YYYY-MM-DD')
this.lineDateShow = false
},
// 输入线路名称和时间,下一步
lineClick() {
if (this.lineName.trim().length == 0 || this.lineDate.trim().length == 0) {
this.$toast('请输入行程信息')
} else {
1 year ago
sessionStorage.setItem('lineName', this.lineName)
sessionStorage.setItem('lineDate', this.lineDate)
sessionStorage.setItem('lineCode', this.areaList[this.areaIndex].id)
1 year ago
this.addLineShow = false
this.lineRouteShow = true
1 year ago
this.$nextTick(() => {
this.$refs.lineRouteRef.upData()
})
1 year ago
}
},
// 点击添加行程、关闭添加行程弹框,改变景点标识图标
addlineRoute(status) {
this.lineRouteShow = false
if (status) {
1 year ago
// 点击添加行程重新绘制热点,只展示景点 酒店 餐饮三类
this.post({
code: this.areaList[this.areaIndex].code,
}, '/api/emap/getUserSpotsByCategory').then(res => {
if (res.code == 1) {
1 year ago
this.maps = res.data
// 添加行程时为true
this.lineAddStatus = true
// 添加行程时隐藏上方分类和右方区域选择
this.typeShow = false
// 移除原先点位
this.clearMarkers()
if (this.maps.length > 0) this.setMarkers()
1 year ago
// 点击添加行程更换marker样式
this.multiMarker.setStyles({
"marker": new TMap.MarkerStyle({
1 year ago
"width": 27,
"height": 33,
1 year ago
"src": 'https://static.ticket.sz-trip.com/yandu/images/map/add.png'
})
})
}
1 year ago
})
} else {
1 year ago
// 移除原先点位
this.clearMarkers()
this.typeShow = true
this.lineAddStatus = false
this.setMarkers()
1 year ago
}
1 year ago
},
// 线路详情弹框
showLineDetail() {
// 移除原先点位
this.clearMarkers()
// 隐藏上方分类
this.typeShow = false
1 year ago
this.lineDetailShow = true
1 year ago
let data = this.$store.state.user.lineDetail
1 year ago
let paths = []
let labels = []
data.points.forEach((item, index) => {
1 year ago
paths.push(
new TMap.LatLng(item.lonlat[1], item.lonlat[0])
)
1 year ago
labels.push({
id: 'label', // 点图形数据的标志信息
styleId: 'label', // 样式id
position: new TMap.LatLng(item.lonlat[1], item.lonlat[0]), // 标注点位置
content: (index == 0 ? '起' : (index + 1 == data.points.length ? '终' : (index + 1)
.toString())), // 标注文本
1 year ago
properties: {
// 标注点的属性数据
title: 'label',
},
})
})
console.log('paths', paths)
console.log('labels', labels)
1 year ago
// 文本标记
this.multiLabel = new TMap.MultiLabel({
id: 'label-layer',
map: this.mapObj,
collisionOptions: {
sameSource: true,
}, //开启图层内部的文本标注碰撞
styles: {
label: new TMap.LabelStyle({
color: '#FF7F00', // 颜色属性
size: 16, // 文字大小属性
offset: {
x: 0,
y: 0
1 year ago
}, // 文字偏移属性单位为像素
angle: 0, // 文字旋转属性
alignment: 'center', // 文字水平对齐属性
verticalAlignment: 'middle', // 文字垂直对齐属性
backgroundColor: '#fff',
borderRadius: 50,
padding: '8px',
width: 23,
height: 23
}),
},
geometries: labels,
})
1 year ago
// 线路
this.MultiPolyline = new TMap.MultiPolyline({
id: 'polyline-layer',
map: this.mapObj,
styles: {
"style_blue": new TMap.PolylineStyle({
"width": 4,
'color': '#3777FF', //线填充色
'borderWidth': 2, //边线宽度
'borderColor': '#FFF', //边线颜色
'lineCap': 'butt' //线端头方式
})
},
// 折线数据定义
geometries: [{
"id": 'style_blue',
"styleId": 'style_blue',
"paths": paths
}]
})
1 year ago
setTimeout(() => {
1 year ago
this.$store.commit('changeLineDetail', {})
}, 1000)
1 year ago
},
// 退出线路
closeLine() {
this.lineDetailShow = false
1 year ago
this.$store.commit('changeLineDetail', {})
1 year ago
// 移除原先点位
this.clearMarkers()
// 移除路线
if (this.MultiPolyline) {
this.MultiPolyline.setMap(null);
this.MultiPolyline = null;
}
// 显示上方分类
this.typeShow = true
// 地图打点
this.setMarkers()
1 year ago
}
},
1 year ago
// beforeRouteEnter(to, from, next) {
// console.log(to,from)
// if() {
// next(vm => {
1 year ago
// })
// }
1 year ago
// }
1 year ago
};
</script>
<style scoped lang="scss">
div {
box-sizing: border-box;
}
.mapContainer {
width: 100%;
height: 100vh;
}
3 months ago
3 months ago
.search-box {
width: 750px;
height: 93px;
background: #FFFFFF;
3 months ago
input {
width: 593px;
height: 60px;
background: #F2F2F2;
border-radius: 13px;
font-weight: 500;
font-size: 27px;
color: #999999;
border: none;
padding: 0 20px;
}
.search-text {
font-weight: bold;
font-size: 27px;
color: #00AEA0;
margin-right: 10px;
}
}
.search-result {
width: 100%;
padding: 0 28px;
.search-item {
font-weight: 500;
font-size: 27px;
color: #111111;
margin: 30px 0;
}
3 months ago
}
1 year ago
.type-box {
position: fixed;
z-index: 2000;
3 months ago
width: 750px;
top: 0;
left: 0;
1 year ago
display: flex;
overflow-x: auto;
3 months ago
padding: 16px;
background-color: #fff;
1 year ago
.type-item {
padding: 0 26px;
line-height: 53px;
3 months ago
background: #F2F2F2;
1 year ago
border-radius: 13px;
font-weight: 500;
font-size: 27px;
3 months ago
color: #333333;
1 year ago
margin-right: 27px;
flex-shrink: 0;
}
.type-active {
3 months ago
background: #00AEA0;
color: #fff;
}
3 months ago
3 months ago
.search {
padding-right: 21px;
1 year ago
font-weight: bold;
3 months ago
font-size: 27px;
color: #00AEA0;
border-right: 1px solid #CCCCCC;
display: flex;
align-items: center;
margin-right: 18px;
white-space: nowrap;
3 months ago
3 months ago
img {
width: 25px;
height: 25px;
margin-right: 8px;
}
1 year ago
}
}
.type-box::-webkit-scrollbar {
display: none;
}
.area-box {
position: fixed;
z-index: 2000;
top: 153px;
right: 17px;
&>div {
width: 87px;
height: auto;
background: #FFFFFF;
border-radius: 43px;
border: 2px solid #FFFFFF;
overflow: hidden;
}
&>div:last-child {
margin-top: 24px;
.area-items {
height: 133px !important;
}
}
.area-item {
height: 93px;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
border-top: 1px solid #D8D8D8;
font-weight: 500;
font-size: 22px;
color: #666666;
}
.area-items {
flex-direction: column;
justify-content: space-around;
height: 100px;
img {
width: 38px;
height: 38px;
}
}
.area-active {
background: linear-gradient(130deg, #9EE4FE, #7FD491);
color: #000000;
font-weight: bold;
}
}
// 线路弹框
.addLine-box {
width: 673px;
height: 413px;
background: #FFFFFF;
border-radius: 27px;
padding: 32px 33px 0 37px;
font-weight: bold;
font-size: 40px;
color: #000000;
.addLine-item {
font-weight: 400;
font-size: 29px;
margin-top: 40px;
input {
outline: none;
border: none;
height: 27px;
width: 380px;
margin-left: 30px;
}
input::placeholder {
color: #BEBEBE;
}
img {
width: 20px;
height: 20px;
}
}
.addLine-btn {
margin-top: 50px;
div {
width: 233px;
line-height: 67px;
background: #EAEAEA;
border-radius: 13px;
text-align: center;
font-weight: 500;
font-size: 29px;
color: #000000;
}
div:last-child {
background: #71B580;
color: #FFFFFF;
}
}
}
1 year ago
.linePopup {
overflow: visible;
1 year ago
.close-LineBtn {
width: 147px;
line-height: 67px;
background: rgba(0, 0, 0, .56);
border-radius: 13px;
text-align: center;
font-weight: 500;
font-size: 27px;
color: #FFFFFF;
position: absolute;
right: 20px;
top: -100px;
}
}
1 year ago
</style>