@ -1,112 +0,0 @@ | |||||
<template> | |||||
<view class="list"> | |||||
<view class="item" | |||||
v-for="(item, index) in 10" | |||||
@click="$utils.navigateTo('/pages_order/product/productDetail?id=123')" | |||||
:key="index"> | |||||
<image | |||||
class="image" | |||||
src="https://img95.699pic.com/photo/50058/1378.jpg_wh860.jpg" mode=""></image> | |||||
<view class="info"> | |||||
<view class="title"> | |||||
桌布租赁 | |||||
</view> | |||||
<view class="price"> | |||||
<text>¥58</text>元/起 | |||||
</view> | |||||
<view class="favorable"> | |||||
<view class="t"> | |||||
限时优惠 | |||||
</view> | |||||
<view class="p"> | |||||
¥48 | |||||
</view> | |||||
</view> | |||||
<view class="num"> | |||||
已售卖5000+件 | |||||
</view> | |||||
</view> | |||||
<view class="btn"> | |||||
<uv-icon name="shopping-cart" | |||||
color="#fff"></uv-icon> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default { | |||||
name:"productList", | |||||
data() { | |||||
return { | |||||
}; | |||||
}, | |||||
methods : { | |||||
}, | |||||
} | |||||
</script> | |||||
<style scoped lang="scss"> | |||||
.list{ | |||||
display: flex; | |||||
flex-wrap: wrap; | |||||
.item{ | |||||
position: relative; | |||||
width: 300rpx; | |||||
padding: 20rpx; | |||||
background-color: #fff; | |||||
border-radius: 20rpx; | |||||
margin-top: 20rpx; | |||||
&:nth-child(odd){ | |||||
margin-right: 20rpx; | |||||
} | |||||
.image{ | |||||
width: 300rpx; | |||||
height: 250rpx; | |||||
border-radius: 20rpx; | |||||
} | |||||
.info{ | |||||
font-size: 26rpx; | |||||
.title{ | |||||
font-size: 30rpx; | |||||
} | |||||
.price{ | |||||
color: #D03F25; | |||||
margin-top: 6rpx; | |||||
text{ | |||||
font-size: 34rpx; | |||||
font-weight: 900; | |||||
} | |||||
} | |||||
.favorable{ | |||||
display: flex; | |||||
background-image: url(/static/image/product/favorable.png); | |||||
background-size: 100% 100%; | |||||
width: fit-content; | |||||
padding: 5rpx 10rpx; | |||||
font-size: 18rpx; | |||||
margin-top: 6rpx; | |||||
.p{ | |||||
color: #fff; | |||||
margin-left: 10rpx; | |||||
} | |||||
} | |||||
.num{ | |||||
margin-top: 6rpx; | |||||
font-size: 22rpx; | |||||
color: #888; | |||||
} | |||||
} | |||||
.btn{ | |||||
position: absolute; | |||||
right: 20rpx; | |||||
bottom: 20rpx; | |||||
padding: 10rpx; | |||||
border-radius: 50%; | |||||
background-color: $uni-color; | |||||
} | |||||
} | |||||
} | |||||
</style> |
@ -1,130 +0,0 @@ | |||||
<template> | |||||
<view class="commission"> | |||||
<image src="/static/image/center/10.png" mode=""></image> | |||||
<view class="price"> | |||||
<view class="title"> | |||||
总佣金(元) | |||||
</view> | |||||
<view class="num"> | |||||
7890.34元 | |||||
</view> | |||||
</view> | |||||
<view class="font-menu" | |||||
v-if="purse"> | |||||
<view @click="toRunningWater(index)" | |||||
v-for="(item, index) in list" | |||||
:key="index">{{ item.name }}</view> | |||||
</view> | |||||
<view class="btn" | |||||
v-if="!purse" | |||||
@click="toPurse"> | |||||
提现 | |||||
</view> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default { | |||||
name: "userShopCommission", | |||||
props : { | |||||
purse : { | |||||
default : false, | |||||
}, | |||||
}, | |||||
data() { | |||||
return { | |||||
list : [ | |||||
{ | |||||
name : '余额记录', | |||||
}, | |||||
{ | |||||
name : '提现记录', | |||||
}, | |||||
{ | |||||
name : '佣金记录', | |||||
}, | |||||
], | |||||
}; | |||||
}, | |||||
methods : { | |||||
// 跳转到钱包提现 | |||||
toPurse(){ | |||||
uni.navigateTo({ | |||||
url:'/pages_order/mine/purse' | |||||
}) | |||||
}, | |||||
// 跳转到记录页面 | |||||
toRunningWater(index){ | |||||
uni.navigateTo({ | |||||
url:'/pages_order/mine/runningWater?status=' + index | |||||
}) | |||||
}, | |||||
} | |||||
} | |||||
</script> | |||||
<style scoped lang="scss"> | |||||
.commission { | |||||
width: 700rpx; | |||||
height: 300rpx; | |||||
position: relative; | |||||
margin: 20rpx auto; | |||||
color: #fff; | |||||
image { | |||||
width: 700rpx; | |||||
height: 300rpx; | |||||
position: absolute; | |||||
border-radius: 20rpx; | |||||
} | |||||
.price { | |||||
position: absolute; | |||||
left: 50rpx; | |||||
top: 80rpx; | |||||
font-weight: 900; | |||||
.title { | |||||
font-size: 32rpx; | |||||
} | |||||
.num { | |||||
font-size: 44rpx; | |||||
margin-top: 20rpx; | |||||
} | |||||
} | |||||
.font-menu { | |||||
font-size: 24rpx; | |||||
font-family: PingFang SC, PingFang SC-Regular; | |||||
font-weight: 500; | |||||
text-align: center; | |||||
color: #ffffff; | |||||
line-height: 24rpx; | |||||
width: 710rpx; | |||||
position: absolute; | |||||
left: 0; | |||||
bottom: 25rpx; | |||||
display: flex; | |||||
view{ | |||||
width: 160rpx; | |||||
} | |||||
} | |||||
.btn { | |||||
position: absolute; | |||||
right: 50rpx; | |||||
bottom: 50rpx; | |||||
background-color: #FDC440; | |||||
width: 160rpx; | |||||
height: 60rpx; | |||||
display: flex; | |||||
justify-content: center; | |||||
align-items: center; | |||||
border-radius: 30rpx; | |||||
} | |||||
} | |||||
</style> |
@ -1,244 +0,0 @@ | |||||
<template> | |||||
<scroll-view | |||||
scroll-y="true" | |||||
:style="{height: height}" | |||||
@scrolltolower="moreAddress"> | |||||
<uv-radio-group v-model="selectAddress" | |||||
@change="editDefault" | |||||
v-if="addressList.length > 0"> | |||||
<view v-for="item in addressList" :key="item.id" class="address-item"> | |||||
<view class="address-item-top" | |||||
@click="select(item)"> | |||||
<view class="img-box"> | |||||
<image src="../../static/address/icon.png" mode="aspectFill"></image> | |||||
</view> | |||||
<view class="address-info"> | |||||
<view class="user-info"> | |||||
<text class="user-name">{{ item.name }}</text> | |||||
<text class="user-phone">{{ item.phone }}</text> | |||||
<text v-if="item.defaultFlag == 1" class="is-default">默认</text> | |||||
</view> | |||||
<view class="address-detail"> | |||||
{{ item.address + " " + item.addressDetail }} | |||||
</view> | |||||
</view> | |||||
</view> | |||||
<view class="controls" | |||||
v-if="controls"> | |||||
<view class="default-checkbox"> | |||||
<uv-radio | |||||
:name="item.id" | |||||
label-disabled | |||||
size="30rpx" | |||||
icon-size="30rpx"> | |||||
默认地址 | |||||
</uv-radio> | |||||
</view> | |||||
<view class="edit-btn"> | |||||
<uv-icon name="edit-pen"></uv-icon> | |||||
<text @click="editAddress(item)" class="control-title">编辑</text> | |||||
</view> | |||||
<view class="del-btn"> | |||||
<uv-icon name="trash"></uv-icon> | |||||
<text class="control-title" @click="deleteAddress(item.id)">删除</text> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</uv-radio-group> | |||||
<view | |||||
style="padding: 100rpx 0;" | |||||
v-else> | |||||
<uv-empty | |||||
mode="history" | |||||
textSize="28rpx" | |||||
iconSize="100rpx"/> | |||||
</view> | |||||
</scroll-view> | |||||
</template> | |||||
<script> | |||||
export default { | |||||
props : { | |||||
controls : { | |||||
default : false, | |||||
type : Boolean, | |||||
}, | |||||
height : { | |||||
default : 'calc(90vh - 180rpx)' | |||||
} | |||||
}, | |||||
data() { | |||||
return { | |||||
selectAddress : 0, | |||||
queryParams: { | |||||
pageNo: 1, | |||||
pageSize: 10, | |||||
}, | |||||
addressList: [], | |||||
total : 0, | |||||
} | |||||
}, | |||||
methods: { | |||||
//获取地址列表 | |||||
getAddressList() { | |||||
return new Promise((success, fail) => { | |||||
this.$api('addressPage', this.queryParams, res => { | |||||
if (res.code == 200) { | |||||
this.addressList = res.result.records || []; | |||||
this.total = res.result.total || 0; | |||||
res.result.records.forEach(n => { //筛选默认地址 | |||||
if (n.defaultFlag == 1) { | |||||
this.selectAddress = n.id | |||||
} | |||||
}) | |||||
success(res.result) | |||||
} | |||||
}) | |||||
}) | |||||
}, | |||||
// 加载更多 | |||||
moreAddress(){ | |||||
if(this.queryParams.pageSize > this.total){ | |||||
return | |||||
} | |||||
this.queryParams.pageSize += 10 | |||||
this.getAddressList() | |||||
}, | |||||
// 删除地址 | |||||
deleteAddress(e){ | |||||
this.$emit('deleteAddress', e) | |||||
}, | |||||
// 修改地址 | |||||
editAddress(e){ | |||||
this.$emit('editAddress', e) | |||||
}, | |||||
// 切换默认地址 | |||||
editDefault(e){ | |||||
this.$emit('editDefault', e) | |||||
}, | |||||
// 选择了地址 | |||||
select(e){ | |||||
this.$emit('select', e) | |||||
}, | |||||
} | |||||
} | |||||
</script> | |||||
<style scoped lang="scss"> | |||||
.address-item { | |||||
background: white; | |||||
border-radius: 20rpx; | |||||
overflow: hidden; | |||||
margin-bottom: 20rpx; | |||||
padding: 15rpx 15rpx 0rpx 15rpx; | |||||
width: 680rpx; | |||||
.address-item-top { | |||||
border-bottom: 1px dashed #D3D1D1; | |||||
display: flex; | |||||
align-items: center; | |||||
padding: 0rpx 0rpx 15rpx 0rpx; | |||||
.img-box { | |||||
width: 120rpx; | |||||
height: 120rpx; | |||||
image { | |||||
width: 75%; | |||||
height: 75%; | |||||
display: block; | |||||
margin: 12.5% auto; | |||||
} | |||||
} | |||||
.address-info { | |||||
width: calc(100% - 120rpx); | |||||
height: 100%; | |||||
display: flex; | |||||
flex-direction: column; | |||||
justify-content: space-between; | |||||
.user-info { | |||||
display: flex; | |||||
align-items: center; | |||||
text { | |||||
display: block; | |||||
line-height: 40rpx; | |||||
margin-right: 20rpx; | |||||
} | |||||
.user-name, | |||||
.user-phone { | |||||
font-size: 30rpx; | |||||
} | |||||
.is-default { | |||||
display: flex; | |||||
align-items: center; | |||||
justify-content: center; | |||||
background: #FEB773; | |||||
color: white; | |||||
width: 80rpx; | |||||
height: 35rpx; | |||||
border-radius: 20rpx; | |||||
font-size: 22rpx; | |||||
} | |||||
} | |||||
.address-detail { | |||||
color: #4a4a4a; | |||||
font-size: 26rpx; | |||||
overflow: hidden; | |||||
display: -webkit-box; | |||||
-webkit-box-orient: vertical; | |||||
-webkit-line-clamp: 2; | |||||
text-overflow: ellipsis; | |||||
} | |||||
} | |||||
} | |||||
.controls { | |||||
display: flex; | |||||
align-items: center; | |||||
justify-content: space-between; | |||||
align-items: center; | |||||
font-size: 26rpx; | |||||
padding: 15rpx 15rpx 25rpx 15rpx; | |||||
.default-checkbox { | |||||
display: flex; | |||||
text { | |||||
margin-left: 8rpx; | |||||
} | |||||
} | |||||
.control-title { | |||||
height: 30rpx; | |||||
line-height: 30rpx; | |||||
color: #666666; | |||||
} | |||||
view { | |||||
display: flex; | |||||
align-items: center; | |||||
} | |||||
image { | |||||
width: 23rpx; | |||||
height: 23rpx; | |||||
vertical-align: middle; | |||||
margin-right: 8rpx; | |||||
} | |||||
} | |||||
} | |||||
</style> |
@ -1,220 +0,0 @@ | |||||
<template> | |||||
<uv-popup round="40rpx" ref="addressPopup" :customStyle="{ height: 'auto' , width : '100%' , padding : '20rpx'}"> | |||||
<view class="redact-address"> | |||||
<view class="redact-address-title">{{title}}</view> | |||||
<uv-form label-width="210rpx" :model="addressDetail" ref="form"> | |||||
<uv-form-item label="联系人" prop="name"> | |||||
<uv-input v-model="addressDetail.name" placeholder="请输入联系人姓名" border="none"> | |||||
</uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="手机号" prop="phone"> | |||||
<uv-input v-model="addressDetail.phone" placeholder="请输入手机号" border="none"> | |||||
</uv-input> | |||||
</uv-form-item> | |||||
<uv-form-item label="所在地区" prop="address"> | |||||
<uv-input v-model="addressDetail.address" placeholder="请选择所在地区" border="none"> | |||||
</uv-input> | |||||
<template #right> | |||||
<view style="padding-right: 40rpx;color: #FBAB32;" @click.stop="selectAddr"> | |||||
<image src="../../static/address/selectIcon.png" mode="aspectFit"></image>定位 | |||||
</view> | |||||
</template> | |||||
</uv-form-item> | |||||
<uv-form-item label="详细地址" prop="addressDetail"> | |||||
<uv-input v-model="addressDetail.addressDetail" placeholder="请输入详细地址" border="none"> | |||||
</uv-input> | |||||
</uv-form-item> | |||||
</uv-form> | |||||
<view @click="onSubmit" class="save">{{ addressDetail.id ? '修改地址' : '新增地址'}}</view> | |||||
</view> | |||||
</uv-popup> | |||||
</template> | |||||
<script> | |||||
import Position from '@/utils/position.js' | |||||
export default { | |||||
data() { | |||||
return { | |||||
addressDetail: {} | |||||
} | |||||
}, | |||||
props: { | |||||
title: { | |||||
type: String, | |||||
default: '新增地址' | |||||
} | |||||
}, | |||||
methods: { | |||||
open(addressDetail) { | |||||
this.addressDetail = addressDetail | |||||
this.$refs.addressPopup.open('bottom') | |||||
}, | |||||
close(){ | |||||
this.$refs.addressPopup.close() | |||||
}, | |||||
//新增和修改地址 | |||||
onSubmit() { | |||||
let isOk = this.parameterVerification(this.addressDetail) | |||||
if (isOk && !isOk.auth) { | |||||
return uni.showToast({ | |||||
icon: 'none', | |||||
title: isOk.title, | |||||
'zIndex': 10000 | |||||
}) | |||||
} | |||||
this.$emit('saveOrUpdate', this.addressDetail) | |||||
}, | |||||
//验证用户参数合法性 | |||||
parameterVerification(addressDetaila) { | |||||
let { | |||||
name, | |||||
phone, | |||||
address, | |||||
addressDetail | |||||
} = addressDetaila | |||||
if (name.trim() == '') { | |||||
return { | |||||
title: '请填写联系人', | |||||
auth: false | |||||
} | |||||
} else if (phone.trim() == '') { | |||||
return { | |||||
title: '请填写手机号', | |||||
auth: false | |||||
} | |||||
} else if (address.trim() == '') { | |||||
return { | |||||
title: '请填写所在地区', | |||||
auth: false | |||||
} | |||||
} else if (addressDetail.trim() == '') { | |||||
return { | |||||
title: '请填写详细地址', | |||||
auth: false | |||||
} | |||||
} else if (phone.trim() != '') { | |||||
if (!this.$utils.verificationPhone(phone)) { | |||||
return { | |||||
title: '手机号格式不合法', | |||||
auth: false | |||||
} | |||||
} | |||||
} | |||||
return { | |||||
title: '验证通过', | |||||
auth: true | |||||
} | |||||
}, | |||||
//地图上选择地址 | |||||
selectAddr() { | |||||
Position.getLocation(res => { | |||||
Position.selectAddress(res.longitude, res.latitude, success => { | |||||
this.setAddress(success) | |||||
}) | |||||
}) | |||||
}, | |||||
//提取用户选择的地址信息复制给表单数据 | |||||
setAddress(res) { | |||||
//经纬度信息 | |||||
this.addressDetail.latitude = res.latitude | |||||
this.addressDetail.longitude = res.longitude | |||||
if (!res.address && res.name) { //用户直接选择城市的逻辑 | |||||
return this.addressDetail.address = res.name | |||||
} | |||||
if (res.address || res.name) { | |||||
return this.addressDetail.address = res.address + res.name | |||||
} | |||||
this.addressDetail.address = '' //用户啥都没选就点击勾选 | |||||
}, | |||||
} | |||||
} | |||||
</script> | |||||
<style lang="scss" scoped> | |||||
.redact-address { | |||||
box-sizing: border-box; | |||||
.redact-address-title { | |||||
height: 80rpx; | |||||
line-height: 80rpx; | |||||
font-size: 30rpx; | |||||
color: #333333; | |||||
font-weight: 600; | |||||
} | |||||
.save { | |||||
display: flex; | |||||
align-items: center; | |||||
justify-content: center; | |||||
width: 90%; | |||||
height: 80rpx; | |||||
border-radius: 40rpx; | |||||
color: white; | |||||
font-size: 28rpx; | |||||
margin: 0rpx auto; | |||||
background: $uni-color; | |||||
margin-top: 150rpx; | |||||
} | |||||
image { | |||||
width: 25rpx; | |||||
height: 25rpx; | |||||
} | |||||
//修改组件默认样式 | |||||
.uv-form { | |||||
padding: 30rpx 0rpx; | |||||
} | |||||
&::v-deep .uv-cell { | |||||
padding: 0rpx 0rpx; | |||||
font-size: 26rpx; | |||||
&::after { | |||||
border: none !important; | |||||
} | |||||
.uv-field__label { | |||||
display: flex; | |||||
align-items: center; | |||||
height: 80rpx; | |||||
} | |||||
.uv-field__control, | |||||
.uv-field__right-icon { | |||||
height: 80rpx; | |||||
font-size: 26rpx; | |||||
border-bottom: 2rpx solid #cbc8c8; | |||||
} | |||||
.uv-field__right-icon { | |||||
display: flex; | |||||
align-items: center; | |||||
height: 78rpx; | |||||
color: #5FCC9F; | |||||
} | |||||
.uv-cell__value { | |||||
height: 120rpx; | |||||
} | |||||
} | |||||
&::v-deep .uv-field__error-message { | |||||
color: #5AC796; | |||||
font-size: 20rpx; | |||||
margin-top: 10rpx; | |||||
} | |||||
} | |||||
</style> |
@ -1,77 +0,0 @@ | |||||
<template> | |||||
<view class="submit"> | |||||
<view class="" | |||||
@click="$emit('share')"> | |||||
<uv-icon | |||||
size="40rpx" | |||||
name="share-square"></uv-icon> | |||||
<view class=""> | |||||
分享 | |||||
</view> | |||||
</view> | |||||
<view class="" | |||||
@click="$utils.navigateTo('/index/cart')"> | |||||
<uv-icon | |||||
size="40rpx" | |||||
name="shopping-cart"></uv-icon> | |||||
<view class=""> | |||||
购物车 | |||||
</view> | |||||
</view> | |||||
<view class="btn" | |||||
@click="$emit('submit')"> | |||||
{{ submiitTitle }} | |||||
</view> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default { | |||||
name:"submit", | |||||
props : { | |||||
submiitTitle : { | |||||
default : '立即租赁', | |||||
type : String, | |||||
} | |||||
}, | |||||
data() { | |||||
return { | |||||
} | |||||
}, | |||||
methods: { | |||||
} | |||||
} | |||||
</script> | |||||
<style lang="scss" scoped> | |||||
.submit{ | |||||
position: fixed; | |||||
bottom: 0; | |||||
left: 0; | |||||
width: 100vw; | |||||
background-color: #fff; | |||||
height: 100rpx; | |||||
display: flex; | |||||
justify-content: center; | |||||
align-items: center; | |||||
font-size: 24rpx; | |||||
.btn{ | |||||
background: $uni-color; | |||||
width: 600rpx; | |||||
height: 80rpx; | |||||
color: #fff; | |||||
border-radius: 40rpx; | |||||
font-size: 28rpx; | |||||
} | |||||
view{ | |||||
width: 100rpx; | |||||
margin: 0 10rpx; | |||||
display: flex; | |||||
justify-content: center; | |||||
align-items: center; | |||||
flex-direction: column; | |||||
} | |||||
} | |||||
</style> |
@ -1,367 +0,0 @@ | |||||
<template> | |||||
<uv-popup ref="popup" | |||||
:round="30" | |||||
bgColor="#f7f7f7"> | |||||
<view class="content"> | |||||
<!-- 地址 --> | |||||
<view class="address" | |||||
@click="openAddress"> | |||||
<image src="../../static/address/selectIcon.png" mode=""></image> | |||||
<view class=""> | |||||
{{ address.name }} | |||||
</view> | |||||
<view class=""> | |||||
{{ address.addressDetail }} | |||||
</view> | |||||
<view class="icon"> | |||||
<uv-icon | |||||
size="30rpx" | |||||
name="arrow-right"></uv-icon> | |||||
</view> | |||||
</view> | |||||
<!-- 商品信息和数量 --> | |||||
<view class="submit-info"> | |||||
<view class="title"> | |||||
桌布租赁 | |||||
</view> | |||||
<view class="box"> | |||||
<image | |||||
class="image" | |||||
:src="unit.pic" | |||||
mode=""></image> | |||||
<view class="info"> | |||||
<view class="price"> | |||||
¥<text>{{ unit.depositPrice }}</text>元 | |||||
</view> | |||||
<view class="unit"> | |||||
请选择规格 | |||||
</view> | |||||
<view class=""> | |||||
<uv-number-box v-model="num"></uv-number-box> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
<!-- 规格 --> | |||||
<view class="submit-unit"> | |||||
<view class="title"> | |||||
规格选择 | |||||
</view> | |||||
<view class="list"> | |||||
<view :class="{act : unitIndex == index}" | |||||
v-for="(item, index) in detail.hotelGoodsSkuList" | |||||
@click="selectUnit(item, index)" | |||||
:key="index"> | |||||
{{ item.title }} | |||||
</view> | |||||
</view> | |||||
</view> | |||||
<!-- 费用明细 --> | |||||
<view class="expense-detail"> | |||||
<view class="title"> | |||||
费用明细 | |||||
</view> | |||||
<view class="detail"> | |||||
押金:¥{{ unit.depositPrice }} | |||||
</view> | |||||
</view> | |||||
<!-- 提交按钮 --> | |||||
<view class="submit-btn"> | |||||
<view class="l" | |||||
@click="addCart"> | |||||
加入租赁车 | |||||
</view> | |||||
<view class="r" | |||||
@click="orderPay"> | |||||
{{ submiitTitle }} | |||||
</view> | |||||
</view> | |||||
</view> | |||||
<uv-popup ref="addressPopup" :round="30"> | |||||
<addressList | |||||
ref="addressList" | |||||
height="60vh" | |||||
@select="selectAddress" | |||||
/> | |||||
</uv-popup> | |||||
</uv-popup> | |||||
</template> | |||||
<script> | |||||
import addressList from '../address/addressList.vue' | |||||
export default { | |||||
components : { | |||||
addressList, | |||||
}, | |||||
props : { | |||||
submiitTitle : { | |||||
default : '立即租赁', | |||||
type : String, | |||||
}, | |||||
detail : { | |||||
default : {} | |||||
} | |||||
}, | |||||
data() { | |||||
return { | |||||
unitIndex : 0, | |||||
address : { | |||||
name : '请选择联系人', | |||||
addressDetail : '', | |||||
}, | |||||
num : 1, | |||||
unit : {}, | |||||
addressTotal : 0, | |||||
} | |||||
}, | |||||
methods: { | |||||
// 打开 | |||||
open(){ | |||||
this.$refs.popup.open('bottom') | |||||
if(!this.unit.id){ | |||||
this.selectUnit(this.detail.hotelGoodsSkuList[0], 0) | |||||
} | |||||
// 获取地址列表 | |||||
this.$refs.addressList.getAddressList().then(res => { | |||||
this.addressTotal = res.total | |||||
if(this.addressTotal != 0){ | |||||
this.address = res.records[0] | |||||
} | |||||
}) | |||||
}, | |||||
// 关闭 | |||||
close(){ | |||||
this.$refs.popup.close() | |||||
}, | |||||
// 打开选择地址 | |||||
openAddress(){ | |||||
if (this.addressTotal == 0) { | |||||
this.$refs.popup.close() | |||||
return uni.navigateTo({ | |||||
url: '/pages_order/mine/address?type=back' | |||||
}) | |||||
} | |||||
this.$refs.addressPopup.open('bottom') | |||||
}, | |||||
// 选择地址 | |||||
selectAddress(e){ | |||||
this.address = e | |||||
this.$refs.addressPopup.close() | |||||
}, | |||||
// 选择规格 | |||||
selectUnit(item, index){ | |||||
this.unit = item | |||||
this.unitIndex = index | |||||
}, | |||||
addCart(){ | |||||
this.$api('cartAdd', { | |||||
id : this.detail.id, | |||||
skuId : this.unit.id, | |||||
}, res => { | |||||
if(res.code == 200){ | |||||
uni.showToast({ | |||||
title: '添加成功', | |||||
}); | |||||
this.$refs.popup.close() | |||||
} | |||||
}) | |||||
}, | |||||
orderPay(){ | |||||
let data = { | |||||
id : this.detail.id,//商品id | |||||
skuId : this.unit.id,//规格id | |||||
addressId : this.address.id,//地址id | |||||
sku : this.unit.title,//规格 | |||||
num : this.num, | |||||
} | |||||
if(this.$utils.verificationAll(data, { | |||||
skuId : '请选择规格', | |||||
addressId : '请选择地址', | |||||
})){ | |||||
return | |||||
} | |||||
this.$api('orderPay', data, res => { | |||||
if(res.code == 200){ | |||||
uni.redirectTo({ | |||||
url: '/pages/index/order' | |||||
}) | |||||
// uni.requestPayment({ | |||||
// provider: 'wxpay', // 服务提提供商 | |||||
// timeStamp: res.result.timeStamp, // 时间戳 | |||||
// nonceStr: res.result.nonceStr, // 随机字符串 | |||||
// package: res.result.packageValue, | |||||
// signType: res.result.signType, // 签名算法 | |||||
// paySign: res.result.paySign, // 签名 | |||||
// success: function (res) { | |||||
// console.log('支付成功',res); | |||||
// uni.redirectTo({ | |||||
// url: '/pages/index/order' | |||||
// }) | |||||
// }, | |||||
// fail: function (err) { | |||||
// console.log('支付失败',err); | |||||
// uni.showToast({ | |||||
// icon:'none', | |||||
// title:"支付失败" | |||||
// }) | |||||
// } | |||||
// }); | |||||
} | |||||
}) | |||||
}, | |||||
} | |||||
} | |||||
</script> | |||||
<style scoped lang="scss"> | |||||
.content{ | |||||
max-height: 80vh; | |||||
overflow: hidden; | |||||
overflow-y: auto; | |||||
.address{ | |||||
display: flex; | |||||
padding: 20rpx; | |||||
background-color: #fff; | |||||
image{ | |||||
width: 30rpx; | |||||
height: 30rpx; | |||||
margin: 20rpx; | |||||
} | |||||
view{ | |||||
margin: 20rpx; | |||||
overflow:hidden; //超出的文本隐藏 | |||||
text-overflow:ellipsis; //溢出用省略号显示 | |||||
white-space:nowrap; //溢出不换行 | |||||
} | |||||
.icon{ | |||||
margin-left: auto; | |||||
} | |||||
} | |||||
.submit-info{ | |||||
background-color: #fff; | |||||
padding: 30rpx; | |||||
margin-top: 20rpx; | |||||
.title{ | |||||
font-size: 30rpx; | |||||
padding: 10rpx; | |||||
font-weight: 600; | |||||
} | |||||
.box{ | |||||
display: flex; | |||||
margin-top: 10rpx; | |||||
.image{ | |||||
width: 200rpx; | |||||
height: 200rpx; | |||||
border-radius: 20rpx; | |||||
margin-right: 20rpx; | |||||
} | |||||
.info{ | |||||
flex: 1; | |||||
.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; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | |||||
.submit-unit{ | |||||
padding: 30rpx; | |||||
background-color: #fff; | |||||
.title{ | |||||
font-size: 28rpx; | |||||
font-weight: 600; | |||||
} | |||||
.list{ | |||||
display: flex; | |||||
flex-wrap: wrap; | |||||
font-size: 22rpx; | |||||
.act{ | |||||
color: $uni-color; | |||||
border: 1px solid $uni-color; | |||||
background-color: #F9E7DE; | |||||
} | |||||
view{ | |||||
border-radius: 15rpx; | |||||
width: 320rpx; | |||||
background-color: #F3F3F3; | |||||
border: 1px solid #F3F3F3; | |||||
margin: 10rpx; | |||||
display: flex; | |||||
justify-content: center; | |||||
padding: 15rpx 0; | |||||
} | |||||
} | |||||
} | |||||
.expense-detail{ | |||||
padding: 30rpx; | |||||
background-color: #fff; | |||||
font-size: 28rpx; | |||||
.title{ | |||||
font-weight: 600; | |||||
} | |||||
.detail{ | |||||
background-color: #F6F6F6; | |||||
color: #717171; | |||||
margin: 10rpx 0; | |||||
padding: 10rpx 20rpx; | |||||
} | |||||
} | |||||
.submit-btn{ | |||||
width: 600rpx; | |||||
height: 80rpx; | |||||
color: #fff; | |||||
border-radius: 40rpx; | |||||
font-size: 28rpx; | |||||
margin: 20rpx auto; | |||||
display: flex; | |||||
justify-content: center; | |||||
align-items: center; | |||||
border: 1rpx solid $uni-color; | |||||
overflow: hidden; | |||||
.l{ | |||||
flex: 1; | |||||
display: flex; | |||||
justify-content: center; | |||||
align-items: center; | |||||
color: $uni-color; | |||||
} | |||||
.r{ | |||||
background: $uni-color; | |||||
flex: 1; | |||||
height: 100%; | |||||
display: flex; | |||||
justify-content: center; | |||||
align-items: center; | |||||
} | |||||
} | |||||
} | |||||
</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> |
@ -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,353 +0,0 @@ | |||||
<template> | |||||
<view class="refundsOrExchange"> | |||||
<navbar :title="title[titleIndex]" leftClick @leftClick="$utils.navigateBack" /> | |||||
<view class="frame"> | |||||
<!-- 商品简介 --> | |||||
<view class="itme1" @click="openSpPopup"> | |||||
<view class="left"> | |||||
<img src="../../static/image/center/1.png" alt="" style="width: 100%;height: 100%;"> | |||||
</view> | |||||
<view class="center"> | |||||
<view>{{ commodity.title }}</view> | |||||
<view>{{ commodity.smallTitle }}</view> | |||||
</view> | |||||
<view class="right">×{{ commodity.total }}</view> | |||||
</view> | |||||
<!--<commoditySelect ></commoditySelect>--> | |||||
<!-- 申请类型&申请原因 --> | |||||
<view class="item2"> | |||||
<view class="type"> | |||||
<span>申请类型</span> | |||||
<span>退货退款</span> | |||||
</view> | |||||
<uv-line></uv-line> | |||||
<view class="reason"> | |||||
<view>申请原因</view> | |||||
<view> | |||||
<uv-input placeholder="请输入申请原因" border="none" clearable></uv-input> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
<!-- 退货数量&申请金额--> | |||||
<view class="item3"> | |||||
<view class="type"> | |||||
<span>{{ titleIndex == 0 ? '退货数量' : '换货数量' }}</span> | |||||
<span> | |||||
<uv-number-box :min="1" :max="100"></uv-number-box> | |||||
</span> | |||||
</view> | |||||
<uv-line v-if='titleIndex == 0 ? true :false'></uv-line> | |||||
<view class="reason" v-if='titleIndex == 0 ? true :false'> | |||||
<view>申请原因</view> | |||||
<view> | |||||
<uv-input disabled placeholder="$" border="none" clearable></uv-input> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
<!-- 申请说明 --> | |||||
<view class="item4"> | |||||
<view>申请说明(选填)</view> | |||||
<view> | |||||
<uv-input placeholder="请您详细填写申请说明" border="none" clearable></uv-input> | |||||
</view> | |||||
<view> | |||||
<uv-upload :fileList="fileList" :maxCount="5" multiple width="150rpx" height="150rpx" | |||||
@delete="deleteImage" @afterRead="afterRead" :previewFullImage="true"></uv-upload> | |||||
</view> | |||||
</view> | |||||
<!-- 联系电话 --> | |||||
<view class="item5"> | |||||
<view class="phone"> | |||||
<view>联系电话</view> | |||||
<view> | |||||
<uv-input placeholder="请输入联系电话" border="none" clearable></uv-input> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
</view> | |||||
<!-- 底部按钮 --> | |||||
<!--商品选择--> | |||||
<uv-popup ref="spPopup" :round="30"> | |||||
</uv-popup> | |||||
</view> | |||||
</template> | |||||
<script> | |||||
export default { | |||||
onLoad(option) { | |||||
this.titleIndex = option.index | |||||
}, | |||||
components: { | |||||
}, | |||||
data() { | |||||
return { | |||||
titleIndex: 0, | |||||
title: ['申请换货', '申请退货'], | |||||
fileList: [], | |||||
bottomBtnStyle: { | |||||
color: '#FFF', | |||||
backgroundColor: '#fd5100', | |||||
fontSize: '34rpx', | |||||
text: '提交申请', | |||||
width: '400rpx', | |||||
height: '80rpx', | |||||
borderRadius: '100rpx', | |||||
bottom: '40rpx' | |||||
}, | |||||
commodityList: [{ | |||||
title: '商品名称', | |||||
smallTitle: '产品规格:120*4*75【桌子尺寸】', | |||||
total: 1, | |||||
}, | |||||
{ | |||||
title: '商品名称1', | |||||
smallTitle: '产品规格:120*4*75【桌子尺寸】', | |||||
total: 1, | |||||
}, | |||||
{ | |||||
title: '商品名称2', | |||||
smallTitle: '产品规格:120*4*75【桌子尺寸】', | |||||
total: 1, | |||||
} | |||||
], | |||||
commodity: { | |||||
title: '商品名称', | |||||
smallTitle: '产品规格:120*4*75【桌子尺寸】', | |||||
total: 1, | |||||
}, | |||||
} | |||||
}, | |||||
mounted() { | |||||
}, | |||||
methods: { | |||||
openSpPopup() { | |||||
this.$refs.spPopup.open('bottom'); | |||||
}, | |||||
// 选择退换货商品回调 | |||||
selectCommodity(e) { | |||||
console.log(e, "selectCommodity--e") | |||||
this.commodity = e | |||||
this.$refs.spPopup.close() | |||||
}, | |||||
confirm() { | |||||
console.log("==="); | |||||
}, | |||||
deleteImage(e) { | |||||
this.fileList.splice(e.index, 1) | |||||
}, | |||||
afterRead(e) { | |||||
let self = this | |||||
e.file.forEach(file => { | |||||
self.$Oss.ossUpload(file.url).then(url => { | |||||
self.fileList.push({ | |||||
url | |||||
}) | |||||
}) | |||||
}) | |||||
}, | |||||
} | |||||
} | |||||
</script> | |||||
<style lang="scss" scoped> | |||||
* { | |||||
box-sizing: border-box; | |||||
} | |||||
.refundsOrExchange { | |||||
.frame { | |||||
display: flex; | |||||
flex-direction: column; | |||||
gap: 30rpx; | |||||
width: 100%; | |||||
padding-top: 40rpx; | |||||
background-color: #f5f5f5; | |||||
.itme1 { | |||||
display: flex; | |||||
height: 200rpx; | |||||
background-color: #ffffff; | |||||
.left { | |||||
padding: 40rpx; | |||||
width: 20%; | |||||
border-radius: 10rpx; | |||||
background-color: #ffffff; | |||||
} | |||||
.center { | |||||
display: flex; | |||||
flex-direction: column; | |||||
justify-content: center; | |||||
gap: 20rpx; | |||||
width: 60%; | |||||
padding: 0rpx 0 0 20rpx; | |||||
background-color: #ffffff; | |||||
// 给第一个 view 设置样式 | |||||
>view:first-of-type { | |||||
font-size: 36rpx; | |||||
color: #333; | |||||
} | |||||
// 给第二个 view 设置样式 | |||||
>view:nth-of-type(2) { | |||||
font-size: 28rpx; | |||||
color: #666666; | |||||
} | |||||
} | |||||
.right { | |||||
display: flex; | |||||
justify-content: center; | |||||
align-items: center; | |||||
width: 10%; | |||||
color: #666666; | |||||
background-color: #ffffff; | |||||
} | |||||
} | |||||
.item2 { | |||||
width: 100vw; | |||||
.type { | |||||
display: flex; | |||||
align-items: center; | |||||
background-color: #FFF; | |||||
height: 80rpx; | |||||
padding: 0 0 0 20rpx; | |||||
>span:nth-of-type(1) { | |||||
width: 30%; | |||||
} | |||||
>span:nth-of-type(2) { | |||||
width: 70%; | |||||
} | |||||
} | |||||
.reason { | |||||
display: flex; | |||||
align-items: center; | |||||
background-color: #FFF; | |||||
height: 80rpx; | |||||
// margin: 10rpx 0 0 0; | |||||
padding: 10rpx 0 0 20rpx; | |||||
>view:nth-of-type(1) { | |||||
width: 30%; | |||||
} | |||||
>view:nth-of-type(2) { | |||||
width: 70%; | |||||
padding: 0 20rpx 0 0; | |||||
} | |||||
} | |||||
} | |||||
.item3 { | |||||
width: 100vw; | |||||
.type { | |||||
display: flex; | |||||
align-items: center; | |||||
background-color: #FFF; | |||||
height: 80rpx; | |||||
padding: 0 0 0 20rpx; | |||||
>span:nth-of-type(1) { | |||||
width: 70%; | |||||
} | |||||
>span:nth-of-type(2) { | |||||
width: 30%; | |||||
} | |||||
} | |||||
.reason { | |||||
display: flex; | |||||
align-items: center; | |||||
background-color: #FFF; | |||||
height: 80rpx; | |||||
// margin: 10rpx 0 0 0; | |||||
padding: 10rpx 0 0 20rpx; | |||||
>view:nth-of-type(1) { | |||||
width: 30%; | |||||
} | |||||
>view:nth-of-type(2) { | |||||
width: 70%; | |||||
padding: 0 20rpx 0 0; | |||||
} | |||||
} | |||||
} | |||||
.item4 { | |||||
display: flex; | |||||
flex-direction: column; | |||||
padding: 10rpx 0 0 20rpx; | |||||
background-color: #FFF; | |||||
>view:nth-of-type(1) { | |||||
background-color: #FFF; | |||||
} | |||||
>view:nth-of-type(2) { | |||||
margin: 10rpx 0 10rpx 0; | |||||
background-color: #FFF; | |||||
} | |||||
} | |||||
.item5 { | |||||
display: flex; | |||||
flex-direction: column; | |||||
padding: 0 0 0 20rpx; | |||||
background-color: #FFF; | |||||
.phone { | |||||
display: flex; | |||||
align-items: center; | |||||
background-color: #FFF; | |||||
height: 80rpx; | |||||
// margin: 10rpx 0 0 0; | |||||
padding: 10rpx 0 0 20rpx; | |||||
>view:nth-of-type(1) { | |||||
width: 30%; | |||||
} | |||||
>view:nth-of-type(2) { | |||||
width: 70%; | |||||
padding: 0 20rpx 0 0; | |||||
} | |||||
} | |||||
} | |||||
} | |||||
} | |||||
</style> |