| @ -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> | |||