|
|
@@ -301,28 +301,27 @@
|
|
|
</span>
|
|
|
</view>
|
|
|
<!-- 周边列表区域 -->
|
|
|
- <view class="rim_body">
|
|
|
+ <view class="rim_body" v-if="rimList.length">
|
|
|
<!-- 每一个盒子区域 -->
|
|
|
- <view class="rim_box" v-for="item in rimList" :key="item.id" @click="GoRimDetail">
|
|
|
- <img mode="aspectFill" :src="item.url" />
|
|
|
+ <view class="rim_box" v-for="item in rimList" :key="item.id" @click="GoRimDetail(item)">
|
|
|
+ <img mode="aspectFill" :src="item.first_img" />
|
|
|
<view class="box_info">
|
|
|
- <view class="info_top">{{ item.name }}</view>
|
|
|
- <view class="info_center">{{ item.leave }}</view>
|
|
|
- <view class="info_bottom">
|
|
|
- <view class="bottom_rate">{{ item.rate }}分</view>
|
|
|
+ <view class="info_top">{{ item.rname }}</view>
|
|
|
+ <view class="info_center" v-if="item.distance">距您{{ item.distance }}km</view>
|
|
|
+ <!-- <view class="info_bottom">
|
|
|
+ <view class="bottom_rate">4.8分</view>
|
|
|
<view class="bottom_num">{{ item.num }}条评论</view>
|
|
|
<view class="bottom_price">
|
|
|
- ¥{{ item.price }}
|
|
|
+ ¥220
|
|
|
<text>起</text>
|
|
|
</view>
|
|
|
- </view>
|
|
|
+ </view> -->
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
- <!-- 查看全部 -->
|
|
|
- <view class="rim_more" @click="test">
|
|
|
- 查看全部
|
|
|
- <img src="../../static/index/right.png" />
|
|
|
+ <view class="noData" v-else>
|
|
|
+ <img src="../../static/images/noData.png" />
|
|
|
+ 暂无数据
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
@@ -387,48 +386,21 @@ export default {
|
|
|
// 是否是全屏状态
|
|
|
isFullScreen: false,
|
|
|
// 周边列表数组
|
|
|
- rimList: [
|
|
|
- {
|
|
|
- id: 1726150980,
|
|
|
- url: 'https://chtech.ncjti.edu.cn/hotelReservation/fileload/download/16311442750812_8.jpg',
|
|
|
- name: '九岭山房民宿',
|
|
|
- leave: '金宿',
|
|
|
- rate: 4.8,
|
|
|
- num: 109,
|
|
|
- price: 180
|
|
|
- },
|
|
|
- {
|
|
|
- id: 1102488098,
|
|
|
- url: 'https://chtech.ncjti.edu.cn/hotelReservation/fileload/download/1933617026前台.jpg',
|
|
|
- name: '云上九岭',
|
|
|
- leave: '白金',
|
|
|
- rate: 4.5,
|
|
|
- num: 21,
|
|
|
- price: 880
|
|
|
- },
|
|
|
- {
|
|
|
- id: 1147515780,
|
|
|
- url: 'https://chtech.ncjti.edu.cn/hotelReservation/fileload/download/1922593201民宿图片2.jpg',
|
|
|
- name: '靖安三闲居民宿',
|
|
|
- leave: '白金',
|
|
|
- rate: 4.6,
|
|
|
- num: 89,
|
|
|
- price: 680
|
|
|
- },
|
|
|
- {
|
|
|
- id: 1851521611,
|
|
|
- url: 'https://chtech.ncjti.edu.cn/hotelReservation/fileload/download/14323863982h0k15000000ym7ji8285_W_1080_808_R5_D.jpg',
|
|
|
- name: '野塘隐夏民宿',
|
|
|
- leave: '白金',
|
|
|
- rate: 4.7,
|
|
|
- num: 81,
|
|
|
- price: 650
|
|
|
- }
|
|
|
- ],
|
|
|
+ rimList: [],
|
|
|
// 周边分段器当前索引
|
|
|
rimActiveIndex: 0,
|
|
|
// 周边分段器数组
|
|
|
- rimHeaderList: ['民宿', '美食', '景点', '洗浴', '健身', 'KTV', '电影院', '酒店']
|
|
|
+ rimHeaderList: ['民宿', '美食', '景点', '洗浴', '健身', 'KTV', '电影院', '停车场', '酒吧', '加油站', '其他'],
|
|
|
+ // 周边列表当前页
|
|
|
+ page: 1,
|
|
|
+ // 周边列表每页多少条
|
|
|
+ rows: 10,
|
|
|
+ // 周边列表总条数
|
|
|
+ rimTotal: null,
|
|
|
+ // 用户定位经度
|
|
|
+ myLng: 0,
|
|
|
+ // 用户定位纬度
|
|
|
+ myLat: 0
|
|
|
}
|
|
|
},
|
|
|
mounted() {
|
|
|
@@ -449,6 +421,21 @@ export default {
|
|
|
this.getEvaData()
|
|
|
}
|
|
|
})
|
|
|
+ uni.getLocation({
|
|
|
+ type: 'gcj02',
|
|
|
+ success: (res) => {
|
|
|
+ this.myLat = res.latitude
|
|
|
+ this.myLng = res.longitude
|
|
|
+ // this.rimList.forEach((ele) => {
|
|
|
+ // let lat = ele.jingwei.split(',')[1]
|
|
|
+ // let lng = ele.jingwei.split(',')[0]
|
|
|
+ // ele.distance = this.calculateDistance(lat, lng)
|
|
|
+ // })
|
|
|
+ },
|
|
|
+ complete: () => {
|
|
|
+ this.getRimList()
|
|
|
+ }
|
|
|
+ })
|
|
|
},
|
|
|
onPageScroll(e) {
|
|
|
if (!this.queryDom) {
|
|
|
@@ -474,17 +461,44 @@ export default {
|
|
|
this.activeIndex = 0
|
|
|
}
|
|
|
},
|
|
|
- methods: {
|
|
|
- test() {
|
|
|
+ onReachBottom() {
|
|
|
+ if (this.rimList < this.rimTotal) {
|
|
|
+ this.page++
|
|
|
+ this.getRimList()
|
|
|
+ } else {
|
|
|
uni.showToast({
|
|
|
- title: '功能开发中',
|
|
|
- icon: 'none',
|
|
|
- mask: true
|
|
|
+ title: '没有更多数据了',
|
|
|
+ icon: 'none'
|
|
|
})
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ async getRimList() {
|
|
|
+ const res = await this.$myRequest({
|
|
|
+ url: '/mhotel/applistAround.action',
|
|
|
+ data: {
|
|
|
+ page: this.page,
|
|
|
+ rows: this.rows,
|
|
|
+ rtype: this.rimHeaderList[this.rimActiveIndex]
|
|
|
+ }
|
|
|
+ })
|
|
|
+ // console.log(res)
|
|
|
+ if (res.code === 200) {
|
|
|
+ this.rimList = [...this.rimList, ...res.rows]
|
|
|
+ this.rimTotal = res.total
|
|
|
+ if (this.distance && this.rimList.length) {
|
|
|
+ this.rimList.forEach((ele) => {
|
|
|
+ let lat = ele.jingwei.split(',')[1]
|
|
|
+ let lng = ele.jingwei.split(',')[0]
|
|
|
+ ele.distance = this.calculateDistance(lat, lng)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
},
|
|
|
- GoRimDetail() {
|
|
|
+ GoRimDetail(item) {
|
|
|
+ let info = encodeURIComponent(JSON.stringify(item))
|
|
|
uni.navigateTo({
|
|
|
- url: '/pages/rimDetail/rimDetail'
|
|
|
+ url: `/pages/rimDetail/rimDetail?info=${info}`
|
|
|
})
|
|
|
},
|
|
|
// 进入全屏和退出全屏时触发的回调
|
|
|
@@ -597,6 +611,9 @@ export default {
|
|
|
},
|
|
|
onClickItemRim(index) {
|
|
|
this.rimActiveIndex = index
|
|
|
+ this.pgae = 1
|
|
|
+ this.rimList = []
|
|
|
+ this.getRimList()
|
|
|
},
|
|
|
monthSwitch(e) {
|
|
|
let time = e.year + '-' + e.month.toString().padStart(2, 0) + '-01'
|
|
|
@@ -760,6 +777,7 @@ export default {
|
|
|
let today = new Date()
|
|
|
// 明天
|
|
|
let tomorrow = new Date(today.getTime() + 24 * 60 * 60 * 1000)
|
|
|
+
|
|
|
let late = new Date(today.getTime() + 24 * 60 * 60 * 1000 * 14)
|
|
|
|
|
|
this.startTime = `${today.getFullYear()}-${(today.getMonth() + 1).toString().padStart(2, 0)}-${today.getDate().toString().padStart(2, 0)}`
|
|
|
@@ -804,6 +822,21 @@ export default {
|
|
|
urls: temList,
|
|
|
current
|
|
|
})
|
|
|
+ },
|
|
|
+ // 计算两个点之间的距离
|
|
|
+ calculateDistance(lat, lng) {
|
|
|
+ let centerLat = lat
|
|
|
+ let centerLng = lng
|
|
|
+
|
|
|
+ let red1 = (this.myLat * Math.PI) / 180.0
|
|
|
+ let red2 = (centerLat * Math.PI) / 180.0
|
|
|
+ let a = red1 - red2
|
|
|
+ let b = (this.myLng * Math.PI) / 180.0 - (centerLng * Math.PI) / 180.0
|
|
|
+ let R = 6378137
|
|
|
+ let distance = R * 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(red1) * Math.cos(red2) * Math.pow(Math.sin(b / 2), 2)))
|
|
|
+ let res = (distance / 1000).toFixed(2) * 1
|
|
|
+
|
|
|
+ return res
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -1603,6 +1636,20 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ .noData {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ padding-bottom: 60rpx;
|
|
|
+
|
|
|
+ img {
|
|
|
+ margin-top: 160rpx;
|
|
|
+ width: 500rpx;
|
|
|
+ height: 500rpx;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
.rim_more {
|
|
|
display: flex;
|
|
|
justify-content: center;
|
|
|
@@ -1710,4 +1757,4 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-</style>
|
|
|
+</style>
|