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.

509 lines
11 KiB

7 months ago
<template>
<view>
<view class="container">
<u-dropdown title-size="28" :class="['u-dropdown',istop?'u-dropdown-top':'']"
:style="{top:istop?(navHeight-2)+'px':0}">
<u-dropdown-item v-model="value1" :title="options1[value1].label" :options="options1"
@change="handleChange"></u-dropdown-item>
<u-dropdown-item v-model="value3" :title="options3[value3].label" :options="options3"
@change="handleChange"></u-dropdown-item>
</u-dropdown>
<view class="container_li">
<view class="card-menu" v-for="item in waresList" :key="item.uid" @click="msto(item.wxMiNiAppId,item.wxMiNiPath,item.uid)">
<view class="img-container">
<u-image width="686rpx" height="390rpx" border-radius="14rpx 14rpx 0 0"
:src="item.logo==''||item.logo==null?$getimg('noimg.png'):$geturl(item.logo)"></u-image>
<!-- <view class="img-tags" v-if="item.turnFast==1">30秒入住</view> -->
<view class="img-mask">
<image :src="$getimg('icon-juli.png')" mode="widthFix"></image>
<text>{{ item.distance }}</text>
</view>
</view>
<view class="text-container">
<view class="title-container">
<view class="content">
<text class="title">{{ item.name }}</text>
<view class="level" v-if="[1, 2, 3, 4, 5].includes(item.level)">{{ item.level }}</view>
</view>
<!-- <u-icon @click.native.stop="clickOnCollection(item)" name="star-fill" size="35"
:color="item.isCollect ? '#FF540B' : '#e5e5e5'"></u-icon> -->
</view>
<view>
<view class="gradePrice">
<view class="lbradd">{{item.address}}</view>
<!-- <view class="oldPrice" v-if="item.price!=0">{{ item.price}}</view> -->
</view>
</view>
<view class="label-container">
<!-- <tags-list :list="item.labels"></tags-list> -->
<view class="price-container" v-if="item.roomPrice!=0">
<!-- <text class="name">错峰价</text> -->
<text>
<text class="symbol">¥</text>
<text class="price">{{ item.roomPrice}}</text>
<text class="qi"></text>
</text>
<text v-if="item.wxMiNiAppId!=''&& item.wxMiNiPath!=''" class="oldPrice" >立即预订</text>
</view>
</view>
</view>
</view>
</view>
<!-- <u-loadmore v-if="waresList.length > 0" :status="status" :load-text="loadText" /> -->
</view>
<u-toast ref="uToast" />
</view>
</template>
<script>
import back from '@/components/html/back.vue';
var web = require('@/components/utils/request.js');
// import comfortPage from './components/comfort-page';
import tagsList from '@/components/tags-list';
import {
mapGetters
} from 'vuex'
export default {
components: {
back,
tagsList,
// comfortPage
},
data() {
return {
value1: 0,
value2: 0,
value3: 0,
options1: [{
label: '酒店类型',
value: 0,
type:2,
scapeType: ''
}, {
label: '星级酒店',
value: 1,
type:2,
scapeType: '星级酒店'
}, {
label: '精品酒店',
value: 2,
type:2,
scapeType: '精品酒店'
}, {
label: '经济连锁',
value: 3,
type:2,
scapeType: '经济连锁'
}, {
label: '特色民宿',
value: 4,
type:164,
scapeType: ''
}],
options3: [{
label: '智能排序',
value: 0
}, {
label: '等级优先',
value: 1
}, {
label: '低价优先',
value: 2
}, {
label: '高价优先',
value: 3
}, {
label: '距离优先',
value: 4
}],
params: {
pageNo: 1,
pageSize: 100,
// type: 1,
radius: 0,
ctgId:'',
// level: "0",
name: "",
scapeType: "",
orderBy: 0,
},
url: {
list: 'wareInfo/list4.jspx',
collection: 'front/jcCollect/wares_collect'
},
waresList: [],
listpages: 0,
status: 'loading',
loadText: {
// loadmore: '轻轻上拉加载更多数据~~',
loading: '努力加载中~~',
nomore: '已经到底了~~'
},
istop: false,
};
},
mounted() {
this.getList();
},
onReachBottom() {
this.getMore();
},
computed: {
...mapGetters(['navHeight'])
},
onPageScroll(e) {
if (e.scrollTop > 40) {
this.istop = true;
} else {
this.istop = false;
}
},
methods: {
msto(wxMiNiAppId, wxMiNiPath, uid) {
if (wxMiNiAppId && wxMiNiPath) {
if (wxMiNiAppId == 99999999) {
uni.showModal({
title: '提示',
content: '因景区仅提供网页预订,预约地址已复制到剪贴板,请在浏览器中粘贴打开',
showCancel: false,
cancelText: '',
confirmText: '确定',
success: res => {
if (res.confirm) {
uni.setClipboardData({
data: link, //要被复制的内容
success: (e) => { //复制成功的回调函数
console.log(e)
}
});
}
}
});
} else {
this.toOther(wxMiNiAppId, wxMiNiPath)
}
} else {
console.log(2)
uni.navigateTo({
url: `../pages/jqDet?uid=${uid}`
});
}
},
toOther(wxMiNiAppId, wxMiNiPath) {
uni.navigateToMiniProgram({
appId: wxMiNiAppId,
path: wxMiNiPath,
envVersion: 'release',
extraData: {},
success(res) {
console.log("chenggong");
},
fail(e) {
console.log(e);
}
})
},
getList() {
for (var i = 0; i < this.options1.length; i++) {
if (this.value1 == this.options1[i].value) {
this.params.ctgId = this.options1[i].type
this.params.scapeType = this.options1[i].scapeType
}
}
// for (var i = 0; i < this.options2.length; i++) {
// if (this.value2 == this.options2[i].value) {
// this.params.scapeType = this.options2[i].type
// }
// }
this.params.orderBy = this.value3;
this.params.sort = this.value1;
web.httpPost(this, this.url.list, this.params, res => {
let waresList = res.data.results;
let pages = res.data.results.length;
this.listpages = pages;
if (this.params.pageNo == 1) {
this.waresList = waresList;
} else {
this.waresList = this.waresList.concat(waresList);
}
});
},
// getMore() {
// if (this.params.pageNo >= this.listpages) {
// this.status = 'nomore'
// } else if (this.params.pageNo < this.listpages) {
// this.params.pageNo = ++this.params.pageNo;
// this.getList();
// }
// },
handleChange(e) {
this.getList();
},
// goDetail(item) {
// uni.navigateTo({
// url: `../other/hotel-detail/hotel-detail?id=${item.uid}`
// });
// },
getListImg(imgs) {
if (!imgs) return this.$getImg('ouhai_xcx/home/map.png');
return imgs.split(',')[0];
},
// clickOnCollection(item) {
// httpPost(this, this.url.collection, {
// id: item.id
// }, res => {
// this.$refs.uToast.show({
// title: item.isCollect ? '取消收藏' : '已收藏',
// type: 'success',
// icon: 'checkmark-circle'
// });
// item.isCollect = !item.isCollect;
// item.collectNum = item.isCollect ? item.collectNum + 1 : item.collectNum - 1;
// });
// },
// cilckMap() {
// uni.navigateTo({
// url: '../map?id=2'
// })
// }
}
};
</script>
<style lang="scss">
@import "uview-ui/index.scss";
.u-dropdown-top {
position: fixed;
background: #fff;
display: flex;
flex-direction: row;
justify-content: space-between;
width: 750rpx;
top: 120rpx;
z-index: 9;
}
.container {
// padding: 30rpx;
background: #ffffff;
}
.container_li{
padding: 30rpx;
// background: #ffffff;
}
.card-menu {
width: 690rpx;
// height: 610rpx;
background: #ffffff;
border: 1rpx solid #dddddd;
border-radius: 14px;
margin-bottom: 30rpx;
.img-container {
position: relative;
font-family: Microsoft YaHei;
font-weight: 400;
color: #ffffff;
image {
width: 100%;
height: 390rpx;
border-radius: 14px 14px 0px 0px;
}
.img-tags {
position: absolute;
top: 20rpx;
right: 20rpx;
min-width: 180rpx;
height: 48rpx;
background: #fd4818;
border-radius: 10rpx;
font-size: 26rpx;
text-align: center;
line-height: 48rpx;
font-weight: bold;
}
.img-mask {
position: absolute;
bottom: 2rpx;
left: 0;
width: 332rpx;
height: 50rpx;
display: flex;
align-items: center;
padding-left: 25rpx;
background: linear-gradient(right, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.5));
font-size: 26rpx;
image {
width: 30rpx;
height: 30rpx;
}
text {
margin-left: 9rpx;
}
}
}
.text-container {
display: flex;
flex-direction: column;
padding: 30rpx;
.gradePrice {
display: flex;
justify-content: space-between;
align-items: center;
font-family: PingFang SC;
font-weight: 400;
font-size: 24rpx;
margin-top: 30rpx;
.lbradd{
font-size: 24upx;
color: #666666;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
&::before{
content: '';
display: inline-block;
width: 18upx;
height: 22upx;
background: url('https://cs.tour-ma.com/r/cms/www/m/changshu/ra-liebiao-icon-dizhi.png') no-repeat;
background-size: 100%;
margin-right: 12upx;
}
}
.content {
display: flex;
align-items: center;
.review,
.collection {
color: #666666;
text {
font-size: 25rpx;
font-family: DIN;
font-weight: 500;
color: #333333;
margin-right: 10rpx;
}
}
.divider {
width: 3rpx;
height: 17rpx;
background: #cccccc;
margin-left: 15rpx;
margin-right: 13rpx;
}
}
.price {
text-decoration: line-through;
color: #979797;
}
}
}
.label-container {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 10rpx;
}
.price-container {
line-height: 50rpx;
margin-top: 5rpx;
color: #ff540b;
font-size: 24rpx;
.symbol {
margin-right: 5rpx;
}
.price {
font-size: 42rpx;
}
.qi {
color: #666666;
font-size: 20rpx;
margin-left: 10rpx;
}
.price-name {
color: #66666670;
font-size: 22rpx;
font-weight: 400;
}
.oldPrice {
// margin-left: 9rpx;
// margin-left: 54%;
border-color: #ffffff00;
padding: 1rpx 12rpx;
background: #fbe0d4;
position: absolute;
right: 60rpx;
}
}
}
.title-container {
display: flex;
align-items: center;
image {
width: 54rpx;
height: 40rpx;
}
.name {
font-size: 48rpx;
font-family: PingFang SC;
font-weight: bold;
color: #333333;
margin-left: 17rpx;
margin-right: 18rpx;
}
.level {
width: 60rpx;
height: 40rpx;
text-align: center;
background: #fff1eb;
border-radius: 4rpx;
font-size: 28rpx;
font-family: DIN;
font-weight: bold;
color: #ff540b;
margin-left: 10rpx;
}
.content {
display: flex;
align-items: center;
.title {
color: #2a2a2a;
font-weight: bold;
font-size: 36rpx;
font-family: PingFang SC;
}
}
}
</style>