@ -1,259 +0,0 @@ | |||
<template> | |||
<view class="page"> | |||
<navbar/> | |||
<view class="user"> | |||
<uv-checkbox-group | |||
shape="circle" | |||
v-model="checkboxValue"> | |||
<uv-swipe-action> | |||
<view | |||
v-for="(item, index) in list" | |||
:key="index"> | |||
<view style="margin-top: 20rpx;"></view> | |||
<uv-swipe-action-item | |||
:options="options"> | |||
<view class="item"> | |||
<view class="checkbox"> | |||
<uv-checkbox | |||
:name="item.id" | |||
activeColor="#FA5A0A" | |||
size="40rpx" | |||
icon-size="35rpx" | |||
></uv-checkbox> | |||
</view> | |||
<image | |||
class="image" | |||
src="https://img95.699pic.com/photo/50058/1378.jpg_wh860.jpg" | |||
mode=""></image> | |||
<view class="info"> | |||
<view class="title"> | |||
<view class=""> | |||
{{ item.title }} | |||
</view> | |||
<view class=""> | |||
<uv-number-box v-model="item.num" | |||
@change="valChange"></uv-number-box> | |||
</view> | |||
</view> | |||
<view class="unit"> | |||
规格:{{ item.unit }} | |||
<uv-icon name="arrow-down"></uv-icon> | |||
</view> | |||
<view class="price"> | |||
¥<text>{{ item.price }}</text>元 | |||
</view> | |||
</view> | |||
</view> | |||
</uv-swipe-action-item> | |||
</view> | |||
</uv-swipe-action> | |||
</uv-checkbox-group> | |||
<view class="action"> | |||
<view class="icon"> | |||
<image src="/static/image/cart/1.png" mode=""></image> | |||
<view class="num"> | |||
{{ checkboxValue.length }} | |||
</view> | |||
</view> | |||
<view class="price"> | |||
<view class="count"> | |||
合计 | |||
<view class=""> | |||
¥<text>{{ totalPrice }}</text> | |||
</view> | |||
</view> | |||
<view class="text"> | |||
共{{ checkboxValue.length }}件,已享受更低优惠 | |||
</view> | |||
</view> | |||
<view class="btn"> | |||
去结算 | |||
</view> | |||
</view> | |||
</view> | |||
<tabber select="3" /> | |||
</view> | |||
</template> | |||
<script> | |||
import tabber from '@/components/base/tabbar.vue' | |||
export default { | |||
components: { | |||
tabber, | |||
}, | |||
data() { | |||
return { | |||
value : 0, | |||
checkboxValue : [], | |||
options: [ | |||
{ | |||
text: '删除', | |||
style: { | |||
backgroundColor: '#FA5A0A' | |||
} | |||
}, | |||
], | |||
list : [ | |||
{ | |||
id : 1, | |||
title : '桌布租赁', | |||
num : 1, | |||
price : 299, | |||
unit : '120*40*75【桌子尺寸】', | |||
}, | |||
{ | |||
id : 2, | |||
title : '桌布租赁', | |||
num : 1, | |||
price : 299, | |||
unit : '120*40*75【桌子尺寸】', | |||
}, | |||
], | |||
} | |||
}, | |||
computed: { | |||
totalPrice(){ | |||
if (!this.checkboxValue.length) { | |||
return 0 | |||
} | |||
let price = 0 | |||
this.list.forEach(n => { | |||
if(this.checkboxValue.includes(n.id)){ | |||
price += n.price * n.num | |||
} | |||
}) | |||
return price | |||
}, | |||
}, | |||
methods: { | |||
valChange(){ | |||
}, | |||
} | |||
} | |||
</script> | |||
<style scoped lang="scss"> | |||
.page { | |||
padding-bottom: 200rpx; | |||
/deep/ .uv-swipe-action{ | |||
width: 100%; | |||
} | |||
} | |||
.user { | |||
.item{ | |||
background-color: #fff; | |||
display: flex; | |||
padding: 30rpx; | |||
.checkbox{ | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
} | |||
.image{ | |||
width: 200rpx; | |||
height: 200rpx; | |||
border-radius: 20rpx; | |||
} | |||
.info{ | |||
flex: 1; | |||
.title{ | |||
display: flex; | |||
padding: 10rpx 20rpx; | |||
justify-content: space-between; | |||
} | |||
.unit{ | |||
font-size: 24rpx; | |||
padding: 10rpx 20rpx; | |||
color: #717171; | |||
display: flex; | |||
align-items: center; | |||
} | |||
.price{ | |||
color: $uni-color; | |||
font-size: 28rpx; | |||
padding: 10rpx 20rpx; | |||
text{ | |||
font-size: 36rpx; | |||
font-weight: 900; | |||
} | |||
} | |||
} | |||
} | |||
.action{ | |||
width: 700rpx; | |||
position: fixed; | |||
bottom: 220rpx; | |||
left: 25rpx; | |||
background-color: #fff; | |||
height: 100rpx; | |||
border-radius: 50rpx; | |||
box-shadow: 0 0 6rpx 6rpx #00000010; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
overflow: hidden; | |||
.icon{ | |||
position: relative; | |||
width: 80rpx; | |||
height: 80rpx; | |||
margin: 0 20rpx; | |||
image{ | |||
width: 80rpx; | |||
height: 80rpx; | |||
} | |||
.num{ | |||
position: absolute; | |||
right: 10rpx; | |||
top: 0rpx; | |||
background-color: $uni-color; | |||
color: #fff; | |||
font-size: 18rpx; | |||
border-radius: 50%; | |||
height: 30rpx; | |||
width: 30rpx; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
} | |||
} | |||
.price{ | |||
.count{ | |||
display: flex; | |||
font-size: 26rpx; | |||
align-items: center; | |||
view{ | |||
color: $uni-color; | |||
margin-left: 10rpx; | |||
text{ | |||
font-size: 32rpx; | |||
font-weight: 900; | |||
} | |||
} | |||
} | |||
.text{ | |||
font-size: 20rpx; | |||
color: #717171; | |||
} | |||
} | |||
.btn{ | |||
margin-left: auto; | |||
background-color: $uni-color; | |||
height: 100%; | |||
padding: 0 50rpx; | |||
color: #fff; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
} | |||
} | |||
} | |||
</style> |
@ -1,181 +0,0 @@ | |||
<template> | |||
<view class="page"> | |||
<navbar/> | |||
<view class="category"> | |||
<uv-vtabs | |||
:chain="chain" | |||
:list="category" | |||
height="1000px" | |||
:barItemBadgeStyle="{right:'20px',top:'12px'}" | |||
@change="change"> | |||
<uv-vtabs-item> | |||
<view class="category-title"> | |||
租赁 | |||
</view> | |||
<view class="list"> | |||
<view class="item" v-for="(item,index) in list" :key="index" | |||
@click="$utils.navigateTo('/pages_order/product/productDetail?id=123')"> | |||
<view class="item-image"> | |||
<image | |||
:src="item.image" | |||
mode="aspectFill"></image> | |||
</view> | |||
<view class="item-unit"> | |||
<text class="text">{{item.unit}}</text> | |||
</view> | |||
</view> | |||
</view> | |||
</uv-vtabs-item> | |||
</uv-vtabs> | |||
</view> | |||
<tabber select="1" /> | |||
</view> | |||
</template> | |||
<script> | |||
import tabber from '@/components/base/tabbar.vue' | |||
export default { | |||
components: { | |||
tabber, | |||
}, | |||
data() { | |||
return { | |||
category: [ | |||
{ | |||
name : '桌布' | |||
}, | |||
{ | |||
name : '桌布' | |||
}, | |||
{ | |||
name : '桌布' | |||
}, | |||
], | |||
list : [ | |||
{ | |||
unit : '100*50*60', | |||
image : 'https://img95.699pic.com/photo/50058/1378.jpg_wh860.jpg', | |||
}, | |||
{ | |||
unit : '100*50*60', | |||
image : 'https://img95.699pic.com/photo/50058/1378.jpg_wh860.jpg', | |||
}, | |||
{ | |||
unit : '100*50*60', | |||
image : 'https://img95.699pic.com/photo/50058/1378.jpg_wh860.jpg', | |||
}, | |||
{ | |||
unit : '100*50*60', | |||
image : 'https://img95.699pic.com/photo/50058/1378.jpg_wh860.jpg', | |||
}, | |||
{ | |||
unit : '100*50*60', | |||
image : 'https://img95.699pic.com/photo/50058/1378.jpg_wh860.jpg', | |||
}, | |||
{ | |||
unit : '100*50*60', | |||
image : 'https://img95.699pic.com/photo/50058/1378.jpg_wh860.jpg', | |||
}, | |||
{ | |||
unit : '100*50*60', | |||
image : 'https://img95.699pic.com/photo/50058/1378.jpg_wh860.jpg', | |||
}, | |||
{ | |||
unit : '100*50*60', | |||
image : 'https://img95.699pic.com/photo/50058/1378.jpg_wh860.jpg', | |||
}, | |||
{ | |||
unit : '100*50*60', | |||
image : 'https://img95.699pic.com/photo/50058/1378.jpg_wh860.jpg', | |||
}, | |||
], | |||
chain: false, | |||
value: 0 | |||
} | |||
}, | |||
computed: { | |||
list2() { | |||
const _list = this.list[this.value]?.childrens; | |||
return _list ? _list : []; | |||
} | |||
}, | |||
onReady() { | |||
}, | |||
methods: { | |||
change(index) { | |||
console.log('选项改变:', index) | |||
this.value = index; | |||
} | |||
} | |||
} | |||
</script> | |||
<style scoped lang="scss"> | |||
.category { | |||
font-size: 30rpx; | |||
color: #333; | |||
min-height: 100vh; | |||
.category-title{ | |||
position: relative; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
height: 120rpx; | |||
&::before, | |||
&::after { | |||
position: absolute; | |||
top: 50%; | |||
content: ''; | |||
width: 10%; | |||
border-top: 2rpx solid black; | |||
} | |||
&::before { | |||
left: 25%; | |||
} | |||
&::after { | |||
right: 25%; | |||
} | |||
} | |||
.list{ | |||
display: flex; | |||
flex-wrap: wrap; | |||
margin: 0 auto; | |||
width: 490rpx; | |||
.item { | |||
padding: 10rpx 20rpx; | |||
display: flex; | |||
flex-direction: column; | |||
justify-content: center; | |||
align-items: center; | |||
margin-bottom: 20rpx; | |||
.item-image { | |||
width: 120rpx; | |||
height: 120rpx; | |||
image{ | |||
height: 100%; | |||
width: 100%; | |||
border-radius: 50%; | |||
} | |||
} | |||
.item-unit { | |||
font-size: 24rpx; | |||
margin-top: 15rpx; | |||
color: #555; | |||
} | |||
} | |||
.gap { | |||
padding: 0 30rpx; | |||
} | |||
} | |||
} | |||
</style> |
@ -1,263 +0,0 @@ | |||
<template> | |||
<view class="page"> | |||
<navbar | |||
title="订单中心" | |||
/> | |||
<uv-tabs :list="tabs" | |||
:activeStyle="{color : '#FD5100', fontWeight : 600}" | |||
lineColor="#FD5100" | |||
lineHeight="8rpx" | |||
lineWidth="50rpx" | |||
@click="clickTabs"></uv-tabs> | |||
<view v-if="orderList.length > 0" class="list"> | |||
<view class="item" | |||
v-for="(item, index) in orderList.records" | |||
@click="toOrderDetail(item.id)" | |||
:key="index"> | |||
<view class="top"> | |||
<view class="service"> | |||
<text>{{item.projectId_dictText}}</text> | |||
<text>{{item.type_dictText}}</text> | |||
</view> | |||
<view class="status"> | |||
<text> {{item.state_dictText}}</text> | |||
</view> | |||
</view> | |||
<view class="content"> | |||
<view class="left"> | |||
<image mode="aspectFill" :src="item.image"></image> | |||
</view> | |||
<view class="right"> | |||
<view class="text-hidden-1"> | |||
客户姓名:{{item.name}} | |||
</view> | |||
<view class="text-hidden-1"> | |||
产品规格:{{item.unit}} | |||
</view> | |||
<view class="text-hidden-1"> | |||
租赁地址:{{item.address}} | |||
</view> | |||
<!-- <view class="text-hidden-1"> | |||
总计时间:{{item.useTime}}分钟 | |||
</view> --> | |||
</view> | |||
</view> | |||
<view class="bottom"> | |||
<view class="price"> | |||
总价格:<text class="num">{{item.money}}元</text> | |||
</view> | |||
<view class="b1"> | |||
查看物流 | |||
</view> | |||
<!-- <view @click.stop="toPayOrder(item)" class="b2" v-if="item.state == 0"> | |||
立即付款 | |||
</view> | |||
<view class="b1" @click.stop="moreOrder(item.projectId,toPlaceorder)" v-if="item.state == 3"> | |||
再来一单 | |||
</view> | |||
<view class="b2" @click.stop="toEvaluate(item.id,item.projectId,item.technicianId)" v-if="item.state == 3"> | |||
立即评价 | |||
</view> | |||
<view class="b2" @click.stop="moreOrder(item.projectId,toPlaceorder)" v-if="item.state == 4"> | |||
再来一单 | |||
</view> --> | |||
</view> | |||
</view> | |||
</view> | |||
<tabber select="2"/> | |||
</view> | |||
</template> | |||
<script> | |||
import tabber from '@/components/base/tabbar.vue' | |||
import { mapGetters } from 'vuex' | |||
export default { | |||
components : { | |||
tabber, | |||
}, | |||
computed : { | |||
...mapGetters(['userShop']), | |||
}, | |||
data() { | |||
return { | |||
tabs: [{ | |||
name: '全部' | |||
}, | |||
{ | |||
name: '租赁押金' | |||
}, | |||
{ | |||
name: '水洗租赁' | |||
}, | |||
{ | |||
name: '破损换货' | |||
}, | |||
{ | |||
name: '退货退款' | |||
} | |||
], | |||
queryParams: { | |||
pageNo: 1, | |||
pageSize: 10 | |||
}, | |||
// orderList: [ | |||
// { | |||
// money : 99.99, | |||
// address : '广东省广州市越秀区城南故事C3栋2802', | |||
// name : '李**', | |||
// phone : '150*****091', | |||
// unit : '120*40*75【桌子尺寸】', | |||
// image : 'https://img95.699pic.com/photo/50058/1378.jpg_wh860.jpg', | |||
// state_dictText : '已完成', | |||
// } | |||
// ], //订单列表数据 | |||
orderList : { | |||
records : [], | |||
total : 0, | |||
}, | |||
state : -1, | |||
} | |||
}, | |||
onShow() { | |||
this.orderPage() | |||
}, | |||
//滚动到屏幕底部 | |||
onReachBottom() { | |||
if(this.queryParams.pageSize < this.orderList.total){ | |||
this.queryParams.pageSize += 10 | |||
this.orderPage() | |||
} | |||
}, | |||
methods: { | |||
orderPage(){ | |||
let queryParams = { | |||
...this.queryParams, | |||
} | |||
if(this.state != -1){ | |||
queryParams.state = this.state | |||
} | |||
this.$api('orderPage', queryParams, res => { | |||
if(res.code == 200){ | |||
this.orderList = res.result | |||
} | |||
}) | |||
}, | |||
//点击tab栏 | |||
clickTabs(index) { | |||
if (index == 0) { | |||
this.state = -1; | |||
} else { | |||
this.state = index - 1; | |||
} | |||
this.queryParams.pageSize = 10 | |||
this.orderPage() | |||
}, | |||
//跳转订单详情页面 | |||
toOrderDetail(id) { | |||
uni.navigateTo({ | |||
url: '/pages_order/order/orderDetail?id=' + id | |||
}) | |||
}, | |||
getOrderList(){ | |||
}, | |||
} | |||
} | |||
</script> | |||
<style scoped lang="scss"> | |||
.page{ | |||
} | |||
.list { | |||
.item { | |||
width: calc(100% - 40rpx); | |||
background-color: #fff; | |||
margin: 20rpx; | |||
box-sizing: border-box; | |||
border-radius: 16rpx; | |||
padding: 30rpx; | |||
.top { | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
font-size: 30rpx; | |||
.service {} | |||
.status { | |||
font-size: 26rpx; | |||
font-weight: 600; | |||
} | |||
} | |||
.content { | |||
display: flex; | |||
margin: 10rpx 0; | |||
.left { | |||
width: 150rpx; | |||
height: 150rpx; | |||
border-radius: 10rpx; | |||
image { | |||
width: 150rpx; | |||
height: 150rpx; | |||
border-radius: 10rpx; | |||
} | |||
} | |||
.right { | |||
width: calc(100% - 160rpx); | |||
color: #777; | |||
font-size: 24rpx; | |||
padding-left: 20rpx; | |||
line-height: 40rpx; | |||
background-color: #F8F8F8; | |||
} | |||
} | |||
.bottom { | |||
display: flex; | |||
justify-content: space-between; | |||
font-size: 25rpx; | |||
.price { | |||
font-weight: 900; | |||
text { | |||
color: #ff780099; | |||
font-size: 30rpx; | |||
} | |||
} | |||
.b1 { | |||
border: 1px solid #777; | |||
color: #777; | |||
box-sizing: border-box; | |||
} | |||
.b2 { | |||
background: linear-gradient(178deg, #4FD3BC, #60C285); | |||
color: #fff; | |||
} | |||
view { | |||
margin: 12rpx; | |||
border-radius: 28rpx; | |||
padding: 8rpx 28rpx; | |||
margin-bottom: 0; | |||
} | |||
} | |||
} | |||
} | |||
</style> |
@ -1,213 +0,0 @@ | |||
<template> | |||
<view class="address"> | |||
<navbar title="地址管理" leftClick @leftClick="leftClick" /> | |||
<view class="address-list"> | |||
<addressList | |||
controls | |||
ref="addressList" | |||
@deleteAddress="deleteAddress" | |||
@editAddress="editAddress" | |||
@editDefault="editDefault"/> | |||
</view> | |||
<redactAddress | |||
ref="addressPopup" | |||
:addressDetail="addressDetail" | |||
@saveOrUpdate="saveOrUpdate" | |||
:title="title"></redactAddress> | |||
<view class="add-btn"> | |||
<view @click="addBtn" class="btn"> | |||
新增地址 | |||
</view> | |||
</view> | |||
</view> | |||
</template> | |||
<script> | |||
import redactAddress from '../components/address/redactAddress.vue' | |||
import addressList from '../components/address/addressList.vue' | |||
export default { | |||
components: { | |||
redactAddress, | |||
addressList | |||
}, | |||
data() { | |||
return { | |||
title: '新增地址', | |||
type : '', | |||
} | |||
}, | |||
onLoad(args) { | |||
this.type = args.type | |||
if(this.type == 'back'){ | |||
this.addBtn() | |||
} | |||
}, | |||
onShow() { | |||
this.getAddressList() | |||
}, | |||
methods: { | |||
//获取地址列表 | |||
getAddressList() { | |||
this.$refs.addressList.getAddressList() | |||
}, | |||
//获取地址详情 | |||
editAddress(address) { | |||
this.$refs.addressPopup.open({...address}) | |||
}, | |||
//返回个人中心 | |||
leftClick() { | |||
uni.navigateBack(-1) | |||
}, | |||
//添加和修改地址 | |||
saveOrUpdate(addressDetail) { | |||
let data = { | |||
name: addressDetail.name, | |||
phone: addressDetail.phone, | |||
address: addressDetail.address, | |||
addressDetail: addressDetail.addressDetail, | |||
defaultId: addressDetail.defaultId || '0', | |||
latitude: addressDetail.latitude, | |||
longitude: addressDetail.longitude | |||
} | |||
if (addressDetail.id) { | |||
data.id = addressDetail.id | |||
} | |||
this.$api(data.id ? 'addressEdit' : 'addressAdd', data, res => { | |||
if (res.code == 200) { | |||
this.$refs.addressPopup.close() | |||
this.getAddressList() | |||
if(this.type == 'back'){ | |||
uni.navigateBack(-1) | |||
} | |||
uni.showToast({ | |||
title: '操作成功', | |||
icon: 'none' | |||
}) | |||
} | |||
}) | |||
}, | |||
//修改默认地址 | |||
editDefault(id) { | |||
this.$api('addressDefault', { | |||
id: id, | |||
}, res => { | |||
if (res.code == 200) { | |||
this.$refs.addressPopup.close() | |||
uni.showToast({ | |||
title: '操作成功', | |||
icon: 'none' | |||
}) | |||
this.getAddressList() | |||
} | |||
}) | |||
}, | |||
//删除地址 | |||
deleteAddress(id) { | |||
let self = this | |||
uni.showModal({ | |||
title: '删除地址', | |||
content: '确认删除此地址?删除后数据不可恢复', | |||
success(e) { | |||
if(e.confirm){ | |||
self.$api('addressDelete', { | |||
id | |||
}, res => { | |||
if (res.code == 200) { | |||
uni.showToast({ | |||
title: '删除成功', | |||
icon: 'none' | |||
}) | |||
self.getAddressList() | |||
} | |||
}) | |||
} | |||
} | |||
}) | |||
}, | |||
//点击新增按钮 | |||
addBtn() { | |||
this.title = '新增地址' | |||
this.$refs.addressPopup.open({ //初始化数据 | |||
name: '', | |||
phone: '', | |||
address: '', | |||
addressDetail: '', | |||
defaultId: '', | |||
latitude: '', | |||
longitude: '' | |||
}) | |||
}, | |||
} | |||
} | |||
</script> | |||
<style lang="scss" scoped> | |||
.address { | |||
width: 750rpx; | |||
margin: 0rpx auto; | |||
background: #F5F5F5; | |||
box-sizing: border-box; | |||
min-height: 100vh; | |||
.address-list { | |||
padding: 40rpx 20rpx 120rpx 20rpx; | |||
} | |||
.add-btn { | |||
position: fixed; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
left: 0; | |||
bottom: 0; | |||
width: 750rpx; | |||
height: 100rpx; | |||
background: white; | |||
.btn { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
width: 85%; | |||
height: 80rpx; | |||
border-radius: 40rpx; | |||
color: white; | |||
text-align: center; | |||
font-size: 28rpx; | |||
background: $uni-color; | |||
} | |||
} | |||
} | |||
@media all and (min-width: 961px) { | |||
.add-btn { | |||
left: 50% !important; | |||
transform: translateX(-50%); | |||
} | |||
} | |||
//选择位置地图样式 | |||
:deep(.uni-system-choose-location) { | |||
z-index: 99999 !important; | |||
} | |||
</style> |
@ -1,567 +0,0 @@ | |||
<template> | |||
<view> | |||
<navbar | |||
title="订单详情" | |||
leftClick | |||
@leftClick="$utils.navigateBack" | |||
/> | |||
<!-- 水洗店 --> | |||
<view class="" | |||
v-if="userShop"> | |||
<view class="controls"> | |||
<view class="title"> | |||
<image src="../static/order/icon.png" mode=""></image> | |||
服务完成 | |||
</view> | |||
<view class="tips"> | |||
待送回 | |||
</view> | |||
<view class="btns"> | |||
<view class="btn1"> | |||
快递寄回 | |||
</view> | |||
<view class="btn2"> | |||
线下配送 | |||
</view> | |||
</view> | |||
</view> | |||
<view class="steps"> | |||
<uv-steps | |||
activeColor="#FD5100" | |||
:current="stepsCurrent" dot> | |||
<uv-steps-item :title="item" | |||
:key="index" | |||
v-for="(item, index) in steps"></uv-steps-item> | |||
</uv-steps> | |||
</view> | |||
</view> | |||
<!-- 酒店和水洗店 --> | |||
<view class="info"> | |||
<view class="flex" | |||
style="display: flex;"> | |||
<view style="width: 8rpx;height: 30rpx; | |||
background: #FD5100;border-radius: 6rpx;" /> | |||
<view class="head-title">服务项目</view> | |||
</view> | |||
<view class="flex"> | |||
<view class="server-item"> | |||
<view class="img-box"> | |||
<image :src="msgShop.image" mode="aspectFill"></image> | |||
</view> | |||
<view class="server-info"> | |||
<view class="server-title"> | |||
{{msgOrder.projectName}} | |||
<!-- <view class="coupon">领券立减</view> --> | |||
</view> | |||
<view class="current-price"> | |||
<text class="unit">¥</text>{{msgOrder.money}} | |||
</view> | |||
<view class="sales-volume" style="margin-top: 5px;"> | |||
<view class="desc">规格:{{msgOrder.unit}}</view> | |||
</view> | |||
<view class="time-coupon"> | |||
<!-- <view class="flex"> | |||
<image src="@/static/home/time-icon.png"></image> | |||
<view class="time">{{msgOrder.useTime}}分钟</view> | |||
</view> --> | |||
<!-- <view class="sales-volume"> | |||
<image src="@/static/icons/icon1.png"></image> | |||
<view class="desc">已售出{{msgShop.payNum}}+单</view> | |||
</view> --> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
<!-- <view class="line min_tips"> | |||
<view class="head-div flex"> | |||
<view style="width: 118rpx;height: 118rpx;border-radius: 50%;overflow: hidden;"> | |||
<image style="width: 118rpx;" :src="msgTechnician.image" mode="widthFix"></image> | |||
</view> | |||
<view style="padding: 10rpx 34rpx;display: flex;flex-direction: column;justify-content: space-around;"> | |||
<view class="nickname"> | |||
{{msgTechnician.title}} | |||
<view v-if="msgTechnician.isVip" class="tag"> | |||
<image src="@/static/order/s.png" mode="aspectFit"></image> | |||
<view class="auth">官方认证</view> | |||
</view> | |||
</view> | |||
<view class="days"> | |||
<van-rate v-model="msgTechnician.score" :size="10" readonly color="#ffb54c" void-icon="star" | |||
void-color="#eee" /> | |||
<view class=""> | |||
好评{{msgTechnician.pinNum}} | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
<view @click="gototechnicianDetail(msgTechnician)" class="btn-x"> | |||
服务技师 | |||
</view> | |||
</view> --> | |||
<view class="line address"> | |||
<view class="address-top"> | |||
<!-- <view class=""> | |||
服务地址 | |||
</view> --> | |||
<view class="copy"> | |||
<image @click="copy(msgOrder.name + ' ' + msgOrder.phone + ' ' + msgOrder.address)" src="/static/order/copy.png"></image> | |||
</view> | |||
</view> | |||
<view class="addressDetail"> | |||
<view class="">{{msgOrder.name}} {{msgOrder.phone}}</view> | |||
<view class="">{{msgOrder.address}}</view> | |||
</view> | |||
</view> | |||
<view class="line"> | |||
<view class="t min_tips"> | |||
<view class=""> | |||
实付款 | |||
</view> | |||
<view class="current-price"> | |||
¥{{ msgOrder.money }} | |||
</view> | |||
</view> | |||
<view class="min_tips"> | |||
<view class=""> | |||
租赁费用 | |||
</view> | |||
<view class=""> | |||
¥{{ msgOrder.price }} | |||
</view> | |||
</view> | |||
<view class="min_tips"> | |||
<view class=""> | |||
水洗费用 | |||
</view> | |||
<view class=""> | |||
¥{{ msgOrder.price}} | |||
</view> | |||
</view> | |||
<view class="min_tips"> | |||
<view class=""> | |||
押金 | |||
</view> | |||
<view class=""> | |||
¥{{ msgOrder.price }} | |||
</view> | |||
</view> | |||
</view> | |||
<!-- 订单信息 --> | |||
<view class="line"> | |||
<view class="t min_tips"> | |||
<view class=""> | |||
订单信息 | |||
</view> | |||
</view> | |||
<view class="min_tips"> | |||
<view class=""> | |||
订单编号 | |||
</view> | |||
<view class=""> | |||
{{msgOrder.id}} | |||
</view> | |||
</view> | |||
<view class="min_tips"> | |||
<view class=""> | |||
下单时间 | |||
</view> | |||
<view class=""> | |||
{{msgOrder.createTime}} | |||
</view> | |||
</view> | |||
</view> | |||
<!-- 下单须知 --> | |||
<view class="line"> | |||
<view class="t min_tips"> | |||
<view class=""> | |||
下单须知 | |||
</view> | |||
</view> | |||
<view class="min_tips" style="line-height: 40rpx;"> | |||
{{msgShop.projectExplain}} | |||
</view> | |||
<view class="btns"> | |||
<view @click="clickService" class="btn"> | |||
联系客服 | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</view> | |||
</template> | |||
<script> | |||
import { mapGetters } from 'vuex' | |||
export default { | |||
computed : { | |||
...mapGetters(['userShop']), | |||
}, | |||
data() { | |||
return { | |||
stepsCurrent : 0, | |||
steps : [ | |||
'接单', | |||
'检查', | |||
'开始清洗', | |||
'服务完成', | |||
], | |||
msgShop : { | |||
money : 99.99, | |||
image : 'https://img95.699pic.com/photo/50058/1378.jpg_wh860.jpg', | |||
projectExplain : '1.xxxxxxxxxx xxxxxxxxxx。2.xxxxxx xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxx xxxxxxxxxxxxxxxx。3.。', | |||
}, | |||
msgOrder : { | |||
money : 99.99, | |||
address : '广东省广州市越秀区城南故事C3栋2802', | |||
name : '李**', | |||
phone : '150*****091', | |||
unit : '120*40*75【桌子尺寸】', | |||
state_dictText : '已完成', | |||
price : 199.99, | |||
id : '020644568964457', | |||
createTime : '2024-01-18 15:39', | |||
projectName : '桌布租赁' | |||
}, | |||
} | |||
}, | |||
methods: { | |||
} | |||
} | |||
</script> | |||
<style scoped lang="scss"> | |||
.order { | |||
background: linear-gradient(#4899a6, #6fc6ad, #6fc6ad); | |||
padding-bottom: 10px; | |||
} | |||
.controls{ | |||
margin: 20rpx; | |||
background-color: #fff; | |||
height: 400rpx; | |||
display: flex; | |||
flex-direction: column; | |||
width: 710rpx; | |||
border-radius: 20rpx; | |||
justify-content: center; | |||
align-items: center; | |||
.title{ | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
font-size: 40rpx; | |||
image{ | |||
width: 100rpx; | |||
height: 100rpx; | |||
margin-right: 20rpx; | |||
} | |||
} | |||
.tips{ | |||
font-size: 26rpx; | |||
color: #FD5100; | |||
margin-top: 10rpx; | |||
} | |||
.btns{ | |||
margin-top: 50rpx; | |||
display: flex; | |||
view{ | |||
margin: 0 20rpx; | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
color: #fff; | |||
background-color: $uni-color; | |||
padding: 15rpx 40rpx; | |||
border-radius: 40rpx; | |||
} | |||
.btn2{ | |||
background-color: #FFFFFF; | |||
border: 1px solid #A7A7A7; | |||
color: #A7A7A7; | |||
} | |||
} | |||
} | |||
.steps{ | |||
margin: 20rpx; | |||
background-color: #fff; | |||
display: flex; | |||
flex-direction: column; | |||
width: 710rpx; | |||
border-radius: 20rpx; | |||
padding: 70rpx 0; | |||
/deep/ .uv-text__value{ | |||
font-size: 22rpx !important; | |||
} | |||
} | |||
.box { | |||
padding: 20px; | |||
.btns { | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
margin-top: 10px; | |||
.btn { | |||
color: #fff; | |||
padding: 10rpx 50rpx; | |||
background-color: #ffb300; | |||
border-radius: 30rpx; | |||
font-size: 25rpx; | |||
margin-right: 10rpx; | |||
} | |||
.btc{ | |||
background: #ccc; | |||
} | |||
} | |||
} | |||
.info { | |||
margin: 10px; | |||
padding: 20rpx; | |||
background-color: #fff; | |||
width: calc(100% - 40px); | |||
border-radius: 10px; | |||
.head-title { | |||
font-family: PingFang SC, PingFang SC-Bold; | |||
color: #2f2e2e; | |||
line-height: 30rpx; | |||
margin-left: 10rpx; | |||
} | |||
.server-item { | |||
display: flex; | |||
flex-wrap: wrap; | |||
align-items: center; | |||
justify-content: space-between; | |||
background: white; | |||
border-radius: 15rpx; | |||
box-sizing: border-box; | |||
margin: 20rpx 0rpx; | |||
width: 100%; | |||
.img-box { | |||
width: 150rpx; | |||
height: 150rpx; | |||
border-radius: 10rpx; | |||
overflow: hidden; | |||
image { | |||
width: 100%; | |||
height: 100%; | |||
} | |||
} | |||
.server-info { | |||
display: flex; | |||
flex-direction: column; | |||
justify-content: space-around; | |||
width: calc(100% - 180rpx); | |||
box-sizing: border-box; | |||
padding: 10rpx 15rpx; | |||
.server-title { | |||
display: flex; | |||
margin-bottom: 10rpx; | |||
} | |||
.coupon { | |||
display: flex; | |||
justify-content: center; | |||
align-items: center; | |||
background: #F29E45; | |||
color: white; | |||
width: 120rpx; | |||
height: 40rpx; | |||
border-radius: 10rpx; | |||
margin-left: 10rpx; | |||
font-size: 22rpx; | |||
} | |||
.time-coupon, | |||
.price { | |||
display: flex; | |||
flex-wrap: wrap; | |||
align-items: center; | |||
} | |||
.time-coupon { | |||
margin: 10rpx 0rpx; | |||
font-size: 26rpx; | |||
justify-content: space-between; | |||
width: 100%; | |||
.flex { | |||
justify-content: center; | |||
align-items: center; | |||
} | |||
image { | |||
width: 25rpx; | |||
height: 25rpx; | |||
} | |||
.time { | |||
color: #B8B8B8; | |||
margin-left: 6rpx; | |||
} | |||
} | |||
.sales-volume { | |||
display: flex; | |||
align-items: center; | |||
color: #B8B8B8; | |||
font-size: 24rpx; | |||
image { | |||
width: 25rpx; | |||
height: 25rpx; | |||
} | |||
} | |||
} | |||
} | |||
.address { | |||
.address-top{ | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
image{ | |||
width: 30rpx; | |||
height: 30rpx; | |||
} | |||
} | |||
.addressDetail { | |||
color: #777; | |||
font-size: 22rpx; | |||
padding: 5px 0; | |||
} | |||
text { | |||
background-color: #F29E45; | |||
padding: 8rpx 10rpx; | |||
color: #fff; | |||
font-size: 20rpx; | |||
margin-left: 10px; | |||
border-radius: 5px; | |||
} | |||
} | |||
.min_tips { | |||
font-size: 22rpx; | |||
color: #777; | |||
display: flex; | |||
justify-content: space-between; | |||
padding: 5px 0; | |||
align-items: center; | |||
} | |||
.current-price { | |||
font-size: 30rpx; | |||
color: #FD5100; | |||
} | |||
.line { | |||
border-top: 2px dotted #00000011; | |||
padding: 20rpx 0; | |||
.t { | |||
padding: 5px 0; | |||
color: #000; | |||
font-size: 26rpx; | |||
} | |||
} | |||
.head-div { | |||
.nickname { | |||
font-size: 30rpx; | |||
font-weight: 600; | |||
text-align: left; | |||
line-height: 42rpx; | |||
display: flex; | |||
align-items: center; | |||
.tag { | |||
position: relative; | |||
display: flex; | |||
align-items: center; | |||
image { | |||
height: 45rpx; | |||
width: 90rpx; | |||
vertical-align: middle; | |||
} | |||
.auth { | |||
position: absolute; | |||
white-space: nowrap; | |||
color: #FF6200; | |||
left: 23rpx; | |||
font-size: 17rpx; | |||
} | |||
} | |||
} | |||
.days { | |||
font-size: 20rpx; | |||
font-weight: 400; | |||
text-align: left; | |||
line-height: 56rpx; | |||
display: flex; | |||
align-items: center; | |||
view { | |||
padding-left: 5px; | |||
} | |||
} | |||
} | |||
.btn-x { | |||
color: #6fc6ad; | |||
border: 1px solid #6fc6ad; | |||
padding: 10rpx 20rpx; | |||
border-radius: 30rpx; | |||
} | |||
.btns { | |||
display: flex; | |||
justify-content: center; | |||
.btn { | |||
color: #6fc6ad; | |||
border: 1px solid #6fc6ad; | |||
padding: 10rpx 20rpx; | |||
border-radius: 30rpx; | |||
} | |||
} | |||
} | |||
</style> |
@ -1,169 +0,0 @@ | |||
<template> | |||
<view class="page"> | |||
<navbar title="商品详情" leftClick @leftClick="$utils.navigateBack" /> | |||
<view class="swipe"> | |||
<uv-swiper | |||
:list="productDetail.image.split(',')" | |||
indicator | |||
height="350rpx"></uv-swiper> | |||
</view> | |||
<view class="info"> | |||
<view class="title"> | |||
桌布租赁 | |||
</view> | |||
<view class="info-line"> | |||
<view class="price"> | |||
¥<text>45.9</text>起 | |||
</view> | |||
<view class="num"> | |||
已售1000+ | |||
<image src="../static/product/like.png" mode=""></image> | |||
</view> | |||
</view> | |||
<view class="tips"> | |||
<view class="tip"> | |||
专业设备 | |||
</view> | |||
<view class="tip"> | |||
科学流程 | |||
</view> | |||
<view class="tip"> | |||
质量保证 | |||
</view> | |||
</view> | |||
</view> | |||
<view class="info-unit"> | |||
<uv-cell title="是否有桌布" isLink> | |||
<template #icon> | |||
<text class="text">桌布</text> | |||
</template> | |||
</uv-cell> | |||
<uv-cell title="请选择规格" isLink> | |||
<template #icon> | |||
<text class="text">规格</text> | |||
</template> | |||
</uv-cell> | |||
<uv-cell> | |||
<template #icon> | |||
<text>上门取件·送货上门</text> | |||
</template> | |||
</uv-cell> | |||
</view> | |||
<view class="content"> | |||
<view class="title"> | |||
商品详情 | |||
</view> | |||
<uv-parse :content="productDetail.content"></uv-parse> | |||
</view> | |||
<!-- 分享和租赁按钮 --> | |||
<submit | |||
@submit="$refs.submitUnitSelect.open()" | |||
@share="share"/> | |||
<!-- 选择规格 --> | |||
<submitUnitSelect ref="submitUnitSelect"/> | |||
</view> | |||
</template> | |||
<script> | |||
import submit from '../components/product/submit.vue' | |||
import submitUnitSelect from '../components/product/submitUnitSelect.vue' | |||
export default { | |||
components : { | |||
submit, | |||
submitUnitSelect | |||
}, | |||
data() { | |||
return { | |||
productDetail : { | |||
image : 'https://cdn.uviewui.com/uview/swiper/swiper3.png,https://cdn.uviewui.com/uview/swiper/swiper2.png', | |||
content : '', | |||
} | |||
} | |||
}, | |||
onLoad(args) { | |||
console.log(args); | |||
}, | |||
methods: { | |||
// 分享商品 | |||
share(){ | |||
}, | |||
// 选择完成规格立即租赁下单 | |||
submit(){ | |||
} | |||
} | |||
} | |||
</script> | |||
<style scoped lang="scss"> | |||
.page{ | |||
.swipe{ | |||
} | |||
.info{ | |||
padding: 30rpx; | |||
background-color: #fff; | |||
.title{ | |||
font-size: 34rpx; | |||
font-weight: 900; | |||
} | |||
.info-line{ | |||
display: flex; | |||
justify-content: space-between; | |||
align-items: center; | |||
margin-top: 30rpx; | |||
.price{ | |||
font-size: 28rpx; | |||
color: $uni-color; | |||
text{ | |||
font-size: 34rpx; | |||
} | |||
} | |||
.num{ | |||
font-size: 24rpx; | |||
image{ | |||
width: 24rpx; | |||
height: 24rpx; | |||
} | |||
} | |||
} | |||
.tips{ | |||
display: flex; | |||
font-size: 20rpx; | |||
margin-top: 30rpx; | |||
.tip{ | |||
margin-right: 40rpx; | |||
} | |||
} | |||
} | |||
.info-unit{ | |||
margin-top: 20rpx; | |||
padding: 30rpx; | |||
background-color: #fff; | |||
/deep/ text{ | |||
font-size: 26rpx; | |||
} | |||
/deep/ .text{ | |||
color: #7C7C7C; | |||
margin-right: 20rpx; | |||
font-size: 26rpx; | |||
} | |||
} | |||
.content{ | |||
background-color: #fff; | |||
margin-top: 20rpx; | |||
.title{ | |||
padding: 30rpx; | |||
} | |||
} | |||
} | |||
</style> |