@ -0,0 +1,106 @@ | |||||
<template> | |||||
<view class="grid"> | |||||
<view class="item" style="--color : #5baaff"> | |||||
<!-- <image src="/static/image/activity/h.png" mode=""></image> --> | |||||
<uv-icon size="40rpx" color="#5baaff" name="tags"></uv-icon> | |||||
<view class="text"> | |||||
{{ item.type }} | |||||
</view> | |||||
</view> | |||||
<view class="item" | |||||
style="--color : #f56c6c"> | |||||
<!-- <image src="/static/image/activity/price.png" mode=""></image> --> | |||||
<uv-icon size="40rpx" color="#f56c6c" name="integral"></uv-icon> | |||||
<view class="text" | |||||
v-if="item.price"> | |||||
{{ item.price }}元/人 | |||||
</view> | |||||
<view class="text" | |||||
v-else> | |||||
免费 | |||||
</view> | |||||
</view> | |||||
<view class="item" style="--color : #5ac725"> | |||||
<uv-icon size="40rpx" color="#5ac725" name="account"></uv-icon> | |||||
<view class="text" | |||||
v-if="item.sum"> | |||||
{{ item.num }}/{{ item.sum }}人 | |||||
</view> | |||||
<view class="text" | |||||
v-else> | |||||
{{ item.num }}/不限 | |||||
</view> | |||||
</view> | |||||
<view class="addUser" @click.stop="addUser"> | |||||
<uv-icon size="40rpx" color="#5baaff" name="plus-circle"></uv-icon> | |||||
加入 | |||||
</view> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default { | |||||
props: { | |||||
item: {}, | |||||
}, | |||||
data() { | |||||
return { | |||||
} | |||||
}, | |||||
methods: { | |||||
addUser() { | |||||
uni.makePhoneCall({ | |||||
phoneNumber: this.item.phone, | |||||
}) | |||||
}, | |||||
} | |||||
} | |||||
</script> | |||||
<style scoped lang="scss"> | |||||
.grid { | |||||
display: flex; | |||||
align-items: center; | |||||
justify-content: space-between; | |||||
padding: 20rpx 0; | |||||
image { | |||||
width: 30rpx; | |||||
height: 30rpx; | |||||
} | |||||
.item { | |||||
display: flex; | |||||
align-items: center; | |||||
font-size: 26rpx; | |||||
color: var(--color); | |||||
.text { | |||||
margin-left: 4rpx; | |||||
} | |||||
} | |||||
.addUser { | |||||
display: flex; | |||||
align-items: center; | |||||
font-size: 26rpx; | |||||
color: $uni-color; | |||||
margin-left: 10rpx; | |||||
background: rgba($uni-color, 0.2); | |||||
padding: 10rpx 20rpx; | |||||
border-radius: 20rpx; | |||||
.text { | |||||
margin-left: 4rpx; | |||||
} | |||||
} | |||||
} | |||||
</style> |
@ -0,0 +1,81 @@ | |||||
<template> | |||||
<view> | |||||
<view class="dynamics" v-html="$utils.stringFormatHtml(item.title)"> | |||||
</view> | |||||
<view class="address" | |||||
@click.stop="openLocation(item.latitude, item.longitude)" | |||||
v-if="item.address"> | |||||
<uv-icon size="30rpx" name="map"></uv-icon> | |||||
<view class="text-ellipsis"> | |||||
{{ item.address }} | |||||
</view> | |||||
</view> | |||||
<view class="Artworkimages"> | |||||
<view class="wrokimg" @click.stop="previewImage(images, i)" :key="i" v-for="(img, i) in images"> | |||||
<image :src="img" mode="aspectFill"></image> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default { | |||||
props: { | |||||
item: {}, | |||||
}, | |||||
computed : { | |||||
images(){ | |||||
if(!this.item.image){ | |||||
return [] | |||||
} | |||||
return this.item.image.split(',') | |||||
} | |||||
}, | |||||
data() { | |||||
return { | |||||
} | |||||
}, | |||||
methods: { | |||||
} | |||||
} | |||||
</script> | |||||
<style scoped lang="scss"> | |||||
.dynamics { | |||||
margin-top: 20rpx; | |||||
font-size: 28rpx; | |||||
letter-spacing: 3rpx; | |||||
} | |||||
.address { | |||||
font-size: 24rpx; | |||||
margin: 20rpx 0; | |||||
display: flex; | |||||
align-items: center; | |||||
background-color: #eee; | |||||
padding: 10rpx 20rpx; | |||||
width: fit-content; | |||||
border-radius: 40rpx; | |||||
max-width: calc(100% - 40rpx); | |||||
} | |||||
.Artworkimages { | |||||
display: flex; | |||||
flex-wrap: wrap; | |||||
.wrokimg { | |||||
margin: 10rpx; | |||||
image { | |||||
height: 190rpx; | |||||
width: 190rpx; | |||||
border-radius: 20rpx; | |||||
} | |||||
} | |||||
} | |||||
</style> |
@ -0,0 +1,134 @@ | |||||
<template> | |||||
<view class="box" :style="{'--sexcolor' : sex[item.sex].color}"> | |||||
<view class="headPortraitimg"> | |||||
<image :src="item.userImage" @click.stop="previewImage([item.userImage])" mode="aspectFill"></image> | |||||
</view> | |||||
<view class="YaoduUniversalWall"> | |||||
<view class="heide"> | |||||
<view class="username text-ellipsis"> | |||||
{{ item.userName }} | |||||
</view> | |||||
<view class="inde" v-if="item.sex"> | |||||
<!-- 性别 --> | |||||
{{ item.sex }} | |||||
</view> | |||||
<view class="inde" v-if="item.yearDate"> | |||||
<!-- 年份 --> | |||||
{{ item.yearDate }} | |||||
</view> | |||||
<view class="inde" v-if="item.addId"> | |||||
<!-- 地址 --> | |||||
{{ item.addId }} | |||||
</view> | |||||
<view class="authentication" v-if="item.isContent"> | |||||
<!-- 个人认证 --> | |||||
{{ item.isContent }} | |||||
</view> | |||||
</view> | |||||
<view class="Times"> | |||||
<view class="TimeMonth"> | |||||
<!-- 10-08 --> | |||||
{{ item.createTime }}发布 | |||||
</view> | |||||
<!-- <view class="Month"> | |||||
12:34 | |||||
</view> --> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
import mixinsSex from '@/mixins/sex.js' | |||||
export default { | |||||
mixins: [mixinsSex], | |||||
props: { | |||||
item: {}, | |||||
}, | |||||
data() { | |||||
return { | |||||
} | |||||
}, | |||||
methods: { | |||||
} | |||||
} | |||||
</script> | |||||
<style scoped lang="scss"> | |||||
.box { | |||||
display: flex; | |||||
align-items: center; | |||||
.headPortraitimg { | |||||
width: 100rpx; | |||||
height: 100rpx; | |||||
border-radius: 15rpx; | |||||
overflow: hidden; | |||||
image { | |||||
width: 100%; | |||||
height: 100%; | |||||
} | |||||
} | |||||
.YaoduUniversalWall { | |||||
padding: 0rpx 10rpx; | |||||
.username { | |||||
max-width: 200rpx; | |||||
} | |||||
.heide { | |||||
display: flex; | |||||
justify-content: center; | |||||
align-items: center; | |||||
} | |||||
.inde { | |||||
display: flex; | |||||
justify-content: center; | |||||
align-items: center; | |||||
padding: 0rpx 10rpx; | |||||
margin: 0rpx 5rpx; | |||||
font-size: 20rpx; | |||||
height: 30rpx; | |||||
color: white; | |||||
// background-color: rgb(124, 136, 242); | |||||
background-color: var(--sexcolor); | |||||
border-radius: 7rpx; | |||||
flex-shrink: 0; | |||||
} | |||||
.authentication { | |||||
display: flex; | |||||
justify-content: center; | |||||
align-items: center; | |||||
padding: 0rpx 10rpx; | |||||
margin: 0rpx 5rpx; | |||||
font-size: 20rpx; | |||||
height: 34rpx; | |||||
padding: 0rpx 10rpx; | |||||
color: white; | |||||
background-color: #ffd036; | |||||
border-radius: 7rpx; | |||||
flex-shrink: 0; | |||||
} | |||||
.Times { | |||||
display: flex; | |||||
padding: 5rpx 0rpx; | |||||
font-size: 20rpx; | |||||
margin-top: 10rpx; | |||||
.Month { | |||||
margin: 0rpx 15rpx; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
</style> |
@ -1,22 +1,52 @@ | |||||
<template> | <template> | ||||
<view class="page pageList"> | <view class="page pageList"> | ||||
<navbar title="找车" leftClick @leftClick="$utils.navigateBack" /> | |||||
<view | |||||
style="padding: 10rpx 30rpx;"> | |||||
<uv-search | |||||
bgColor="#fff" | |||||
@search="getData" | |||||
@custom="getData" | |||||
searchIconSize="30rpx" | |||||
placeholder="请输入搜索关键字..." | |||||
v-model="queryParams.title"></uv-search> | |||||
</view> | |||||
<view class="list"> | |||||
<cartItem | |||||
:key="index" | |||||
v-for="(item, index) in list" | |||||
:item="item" | |||||
@click="$utils.navigateTo('/pages_order/car/carListDetail?id=' + item.id)" | |||||
/> | |||||
</view> | |||||
</view> | </view> | ||||
</template> | </template> | ||||
<script> | <script> | ||||
import mixinsList from '@/mixins/list.js' | |||||
import cartItem from '../components/list/cart/cartItem.vue' | |||||
export default { | export default { | ||||
mixins: [mixinsList], | |||||
components : { | |||||
cartItem, | |||||
}, | |||||
data() { | data() { | ||||
return { | return { | ||||
mixinsListApi : 'getCatPage', | |||||
} | } | ||||
}, | }, | ||||
methods: { | methods: { | ||||
} | } | ||||
} | } | ||||
</script> | </script> | ||||
<style scoped lang="scss"> | <style scoped lang="scss"> | ||||
.page{ | |||||
.list{ | |||||
padding: 0 20rpx; | |||||
} | |||||
} | |||||
</style> | </style> |
@ -1,22 +1,162 @@ | |||||
<template> | <template> | ||||
<view class="page pageList"> | |||||
<view class="postDetail"> | |||||
<navbar leftClick @leftClick="$utils.navigateBack" title="详情" /> | |||||
<view class="swipe"> | |||||
<uv-swiper | |||||
:list="[detail.imageTitle]" | |||||
indicator | |||||
height="420rpx"></uv-swiper> | |||||
</view> | |||||
<view class="box"> | |||||
<view class="title"> | |||||
{{ detail.title }} | |||||
</view> | |||||
<view class="createBy"> | |||||
{{ detail.num }}余座 | |||||
{{ detail.startTime }}出发 | |||||
</view> | |||||
<view class="createBy"> | |||||
{{ detail.startAddress }} | |||||
到 | |||||
{{ detail.endAddress }} | |||||
</view> | |||||
<view class="createBy"> | |||||
<view class=""> | |||||
{{ $dayjs(detail.createTime).format('YYYY-MM-DD') }} | |||||
</view> | |||||
<view class="phone" | |||||
v-if="detail.phone" | |||||
@click.stop="callPhone"> | |||||
<image src="/static/image/home/phone.png" mode=""></image> | |||||
联系司机 | |||||
</view> | |||||
</view> | |||||
</view> | |||||
<commentList | |||||
@getData="getData" | |||||
:list="list" | |||||
:params="params" | |||||
/> | |||||
</view> | </view> | ||||
</template> | </template> | ||||
<script> | <script> | ||||
import mixinsList from '@/mixins/list.js' | |||||
import commentList from '../components/list/comment/commentList.vue' | |||||
export default { | export default { | ||||
mixins: [mixinsList], | |||||
components: { | |||||
commentList | |||||
}, | |||||
data() { | data() { | ||||
return { | return { | ||||
detail: {}, | |||||
mixinsListApi : 'getCommentPage', | |||||
params : { | |||||
type : '7', | |||||
orderId : '', | |||||
name : '', | |||||
}, | |||||
id : 0, | |||||
} | } | ||||
}, | }, | ||||
methods: { | |||||
onLoad(options) { | |||||
// this.$route.query的参数 | |||||
console.log(options) | |||||
this.id = options.id | |||||
this.queryParams.type = this.params.type | |||||
this.queryParams.orderId = options.id | |||||
this.params.orderId = options.id | |||||
}, | |||||
onPullDownRefresh(){ | |||||
this.getDetail() | |||||
}, | |||||
onShow() { | |||||
this.getDetail() | |||||
}, | |||||
onShareAppMessage(res) { | |||||
return { | |||||
title: this.detail.title, | |||||
path: '/pages_order/scenicSpot/scenicSpotDetail?id=' + this.id | |||||
} | |||||
}, | |||||
methods: { | |||||
getDetail() { | |||||
this.$api('getCatDetail', { | |||||
id : this.id | |||||
}, res => { | |||||
uni.stopPullDownRefresh() | |||||
if (res.code == 200) { | |||||
this.params.title = res.result.title | |||||
this.detail = res.result | |||||
} | |||||
}) | |||||
}, | |||||
} | } | ||||
} | } | ||||
</script> | </script> | ||||
<style scoped lang="scss"> | |||||
<style lang="scss" scoped> | |||||
.postDetail { | |||||
.box { | |||||
padding: 20rpx; | |||||
width: 100vw; | |||||
background-color: #fff; | |||||
box-sizing: border-box; | |||||
.title { | |||||
font-size: 34rpx; | |||||
font-weight: 600; | |||||
color: #000; | |||||
} | |||||
.createBy { | |||||
display: flex; | |||||
margin-top: auto; | |||||
margin-bottom: 10rpx; | |||||
font-size: 24rpx; | |||||
margin-top: 20rpx; | |||||
color: #555; | |||||
&>view { | |||||
display: flex; | |||||
align-items: center; | |||||
justify-content: center; | |||||
padding-right: 20rpx; | |||||
} | |||||
} | |||||
</style> | |||||
.controls { | |||||
margin-top: 30rpx; | |||||
} | |||||
.content { | |||||
margin-top: 30rpx; | |||||
font-size: 28rpx; | |||||
} | |||||
} | |||||
} | |||||
.phone{ | |||||
background-color: rgba($uni-color, 0.2); | |||||
color: $uni-color; | |||||
padding: 8rpx 16rpx; | |||||
border-radius: 10rpx; | |||||
margin-left: auto; | |||||
image{ | |||||
width: 20rpx; | |||||
height: 20rpx; | |||||
} | |||||
} | |||||
</style> |
@ -0,0 +1,109 @@ | |||||
<template> | |||||
<view class="item" @click="$emit('click')"> | |||||
<image :src="item.imageTitle" | |||||
@click.stop="previewImage([item.imageTitle])" | |||||
mode="aspectFill"></image> | |||||
<view class="text"> | |||||
<view class="title"> | |||||
{{ item.title }} | |||||
</view> | |||||
<view class="createBy"> | |||||
{{ item.num }}余座 | |||||
{{ item.startTime }}出发 | |||||
</view> | |||||
<view class="createBy"> | |||||
{{ item.startAddress }} | |||||
到 | |||||
{{ item.endAddress }} | |||||
</view> | |||||
<view class="createBy"> | |||||
<view class=""> | |||||
{{ $dayjs(item.createTime).format('YYYY-MM-DD') }} | |||||
</view> | |||||
<view class="phone" | |||||
v-if="item.phone" | |||||
@click.stop="callPhone"> | |||||
<image src="/static/image/home/phone.png" mode=""></image> | |||||
联系司机 | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
import mixinsSex from '@/mixins/sex.js' | |||||
export default { | |||||
mixins: [mixinsSex], | |||||
props: ['item'], | |||||
data() { | |||||
return { | |||||
}; | |||||
}, | |||||
methods: { | |||||
callPhone(){ | |||||
uni.makePhoneCall({ | |||||
phoneNumber: this.item.phone | |||||
}) | |||||
}, | |||||
}, | |||||
} | |||||
</script> | |||||
<style lang="scss" scoped> | |||||
.item { | |||||
height: 220rpx; | |||||
width: 100%; | |||||
background-color: #fff; | |||||
overflow: hidden; | |||||
border-radius: 10rpx; | |||||
color: #777; | |||||
display: flex; | |||||
font-size: 24rpx; | |||||
margin: 30rpx 0; | |||||
image { | |||||
width: 50%; | |||||
height: 100%; | |||||
} | |||||
.text { | |||||
display: flex; | |||||
flex-direction: column; | |||||
padding: 16rpx; | |||||
width: 50%; | |||||
.title { | |||||
font-size: 30rpx; | |||||
font-weight: 600; | |||||
color: #000; | |||||
} | |||||
.createBy { | |||||
display: flex; | |||||
margin-top: auto; | |||||
line-height: 40rpx; | |||||
justify-content: space-between; | |||||
&>view { | |||||
display: flex; | |||||
align-items: center; | |||||
justify-content: center; | |||||
} | |||||
.phone{ | |||||
background-color: rgba($uni-color, 0.2); | |||||
color: $uni-color; | |||||
padding: 8rpx 16rpx; | |||||
border-radius: 10rpx; | |||||
margin-left: auto; | |||||
image{ | |||||
width: 20rpx; | |||||
height: 20rpx; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | |||||
</style> |