对比新文件 |
| | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | type: 'customer', |
| | | query: { |
| | | status: '', |
| | | }, |
| | | status: [{ |
| | | name: '全部', |
| | | value: '' |
| | | }, |
| | | { |
| | | name: '待付款', |
| | | value: 'PENDING' |
| | | }, |
| | | { |
| | | name: '待发货', |
| | | value: 'SEND' |
| | | }, |
| | | { |
| | | name: '待收货', |
| | | value: 'RECEIVE' |
| | | }, |
| | | { |
| | | name: '待评价', |
| | | value: 'EVALUATE' |
| | | }, |
| | | { |
| | | name: '已完成', |
| | | value: 'COMPLETED' |
| | | }, |
| | | { |
| | | name: '已退款', |
| | | value: 'REFUND' |
| | | }, |
| | | ] |
| | | }; |
| | | }, |
| | | onLoad(options) { |
| | | this.query.status = options.status || '' |
| | | this.listApi = `/api/customer/order/list` |
| | | this.getList() |
| | | }, |
| | | onReachBottom() { |
| | | this.getMore() |
| | | }, |
| | | async onPullDownRefresh() { |
| | | this.page.current = 1 |
| | | await this.getList() |
| | | uni.stopPullDownRefresh() |
| | | }, |
| | | methods: { |
| | | toDetail(item) { |
| | | // 订单详情页面 |
| | | // console.log(' toDetail item', item) |
| | | uni.navigateTo({ |
| | | url: '/pages/order/order-detail?id=' + item.id |
| | | }) |
| | | }, |
| | | toDetailSale(item) { |
| | | uni.navigateTo({ |
| | | url: '/pages/order/order-detail?showsales=1&id=' + item.id |
| | | }) |
| | | }, |
| | | async buttonClick(item, buttontype) { |
| | | switch (buttontype) { |
| | | case 'refund': { |
| | | await this.$message.confirm('是否确定申请退款') |
| | | // 发送请求 |
| | | this.$message.showLoading() |
| | | const { |
| | | code |
| | | } = await this.$http.request('get', '/api/customer/order/refund', { |
| | | params: { |
| | | id: item.id, |
| | | } |
| | | }) |
| | | this.$message.hideLoading() |
| | | if (code === 0) { |
| | | this.$store.dispatch('sign_add','order') |
| | | this.refreshList() |
| | | } |
| | | } |
| | | break |
| | | case 'confirm': { |
| | | await this.$message.confirm('是否确定收货') |
| | | // 发送请求 |
| | | this.$message.showLoading() |
| | | const { |
| | | code |
| | | } = await this.$http.request('get', '/api/customer/order/receive/confirm', { |
| | | params: { |
| | | id: item.id, |
| | | } |
| | | }) |
| | | this.$message.hideLoading() |
| | | if (code === 0) { |
| | | this.refreshList() |
| | | } |
| | | |
| | | } |
| | | break |
| | | case 'payAgain': { |
| | | await this.$message.confirm('是否确定重新支付') |
| | | // 发送请求 |
| | | this.$message.showLoading() |
| | | const { |
| | | code, |
| | | data |
| | | } = await this.$http.request('get', '/api/customer/order/payAgain', { |
| | | params: { |
| | | id: item.id, |
| | | } |
| | | }) |
| | | this.$message.hideLoading() |
| | | if (code === 0) { |
| | | //微信接口 |
| | | let that = this |
| | | wx.requestPayment({ |
| | | ...data, |
| | | async success(res) { |
| | | console.log('pay success', res) |
| | | that.$message.showToast('支付成功') |
| | | setTimeout(() => { |
| | | that.$store.dispatch('sign_add','order') |
| | | that.refreshList() |
| | | }, 200) |
| | | }, |
| | | fail(err) { |
| | | console.error('pay fail', err) |
| | | that.$message.showToast('支付失败') |
| | | } |
| | | }) |
| | | |
| | | } |
| | | |
| | | } |
| | | break |
| | | case 'evaluate': { |
| | | const res = await this.$message.confirm('', { |
| | | editable: true, |
| | | title: '请输入评价信息' |
| | | }) |
| | | if (res.content && res.confirm) { |
| | | // 发送请求 |
| | | this.$message.showLoading() |
| | | const { |
| | | code |
| | | } = await this.$http.request('post', '/api/customer/order/evaluate', { |
| | | data: { |
| | | id: item.id, |
| | | evaluate: res.content |
| | | } |
| | | }) |
| | | this.$message.hideLoading() |
| | | if (code === 0) { |
| | | this.refreshList() |
| | | } |
| | | } |
| | | } |
| | | break |
| | | // case 'sales': { |
| | | |
| | | |
| | | // }, |
| | | case 'cancelOrder': { |
| | | await this.$message.confirm('是否取消订单') |
| | | // 发送请求 |
| | | this.$message.showLoading() |
| | | const { |
| | | code |
| | | } = await this.$http.request('get', '/api/customer/order/cancel', { |
| | | params: { |
| | | id: item.id, |
| | | } |
| | | }) |
| | | this.$message.hideLoading() |
| | | if (code === 0) { |
| | | this.$store.dispatch('sign_add','order') |
| | | this.refreshList() |
| | | } |
| | | } |
| | | break |
| | | default: |
| | | break |
| | | } |
| | | }, |
| | | |
| | | }, |
| | | } |
| | | </script> |
| | | <template> |
| | | <view class="order-container"> |
| | | <view class="order-top"> |
| | | <view class="title">订单信息</view> |
| | | <view class="flex"> |
| | | <image class="image img100" |
| | | src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/67/67acf980f310460a97d305c6ffc7e811位图@2x (1).png"> |
| | | </image> |
| | | <view>消费订单:¥<span class="m-r-10">{{ '0' }}</span> 总消费:¥<span>{{ '0' }}</span></view> |
| | | </view> |
| | | </view> |
| | | <view class="status-list m-t-12 flex flex-wrap-normal"> |
| | | <view v-for="each of status" :key="each.value" @click.stop="(e)=>{ |
| | | query.status = each.value || ''; |
| | | refreshList(); |
| | | }" class="status-each" :class="[query.status===each.value?'cur':'']"> |
| | | {{ each.name }} |
| | | </view> |
| | | </view> |
| | | <no-data v-if="!list||list.length===0" style="width: 100%;" class="m-t-12"></no-data> |
| | | <view v-for="(dto,index) in list" :key="index" class="m-t-12"> |
| | | <view class="order-item list-item"> |
| | | <view class="title flex"> |
| | | <view> |
| | | 订单:{{ dto.orderNo }} |
| | | </view> |
| | | <view class="status t-red m-l-a m-r-0">¥{{ dto.paymentAmount || dto.totalAmount || '0'}}</view> |
| | | </view> |
| | | <view class="desc flex" v-if="!query.status"> |
| | | <view class="label"> |
| | | 订单状态: |
| | | </view> |
| | | <view class="value">{{ dto.statusBackendStr }}</view> |
| | | </view> |
| | | <view class="flex"> |
| | | <view class="desc flex flex1"> |
| | | <view class="label"> |
| | | 收货人: |
| | | </view> |
| | | <view class="value">{{ dto.customer }}</view> |
| | | </view> |
| | | <view class="desc flex flex1"> |
| | | <view class="label"> |
| | | 收货人手机号码: |
| | | </view> |
| | | <view class="value">{{ dto.customerTel }}</view> |
| | | </view> |
| | | </view> |
| | | <view class="desc flex"> |
| | | <view class="label"> |
| | | 收货地址: |
| | | </view> |
| | | <view class="value">{{ dto.customerAddress }}</view> |
| | | </view> |
| | | <view class="desc flex" v-if="dto.statusBackend!=='PENDING'"> |
| | | <view class="label"> |
| | | 支付时间: |
| | | </view> |
| | | <view class="value">{{ dto.paymentTime }}</view> |
| | | </view> |
| | | <view class="flower-info m-b-5 m-t-8 br-4" v-for="(item,index) of dto.items" :key="index"> |
| | | <view class="line-gray"></view> |
| | | |
| | | <view class="supplier-name "> |
| | | <image class="icon-dp br-4" src="/static/common/icon-dp.png"></image> |
| | | {{ item.supplierName }} |
| | | </view> |
| | | <view class="flex m-t-12 flex-wrap-normal"> |
| | | <image class="flower-img img100 m-r-6" :src="item.flowerCover" @click="previewImg(item.flowerCover)"> |
| | | </image> |
| | | <view class="flex1"> |
| | | <view class=" flex"> |
| | | <view class="title"><span class="level">{{ item.flowerCategory }}</span><span |
| | | class="level">{{ item.flowerLevelStr }}</span>{{ item.flowerName }} |
| | | </view> |
| | | </view> |
| | | <view class="each-list"> |
| | | <view class="each-item"> |
| | | <view class="label">颜色</view> |
| | | <view class="value">{{ item.flowerColor || '-' }}</view> |
| | | |
| | | </view> |
| | | <view class="each-item"> |
| | | <view class="label">规格</view> |
| | | <view class="value">{{ item.flowerUnit || '-' }}</view> |
| | | </view> |
| | | |
| | | <view class="each-item"> |
| | | <view class="label">数量</view> |
| | | <view class="value">{{ item.num || 0 }}</view> |
| | | |
| | | </view> |
| | | <view class="each-item"> |
| | | <view class="label">售价</view> |
| | | <view class="value">¥{{ item.price || 0 }}</view> |
| | | |
| | | </view> |
| | | <view class="each-item"> |
| | | <view class="label">商品总金额</view> |
| | | <view class="value">¥{{ item.total || 0 }}</view> |
| | | |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | <view class="line-gray"></view> |
| | | |
| | | <view class="flex buttons"> |
| | | <view class="button button-0 m-l-a m-r-15" v-if="dto.statusBackend==='PENDING'" |
| | | @click="buttonClick(dto,'cancelOrder')">取消订单</view> |
| | | <view class="button button-1 m-l-15 m-r-15" v-if="dto.statusBackend==='PENDING'" |
| | | @click="buttonClick(dto,'payAgain')">重新支付</view> |
| | | |
| | | <view class="button button-0 m-l-a m-r-15" @click="buttonClick(dto,'refund')" v-if="dto.couldRefund"> |
| | | 申请退款 |
| | | </view> |
| | | <view class="button button-0 m-l-a m-r-15" @click="buttonClick(dto,'confirm')" |
| | | v-if="dto.statusBackend ==='RECEIVE'"> 确认收货 |
| | | </view> |
| | | |
| | | <view class="button button-1 m-l-a m-r-15" @click="toDetailSale(dto)" |
| | | v-if="dto.statusBackend === 'EVALUATE'||item.statusBackend=='COMPLETED'"> 申请售后 |
| | | </view> |
| | | <view class="button button-0 m-l-a m-r-15" @click="buttonClick(dto,'evaluate')" |
| | | v-if="dto.statusBackend === 'EVALUATE'"> 评价 |
| | | </view> |
| | | |
| | | |
| | | |
| | | <view class="button button-1 m-l-a m-r-0" @click="toDetail(dto)">查看详情</view> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | | <style lang="scss" scoped> |
| | | .order-container { |
| | | padding: 24rpx 30rpx; |
| | | |
| | | .order-item { |
| | | margin-bottom: 20rpx; |
| | | padding: 28rpx; |
| | | background-color: #fff; |
| | | border-radius: 8rpx; |
| | | |
| | | .title { |
| | | font-weight: 600; |
| | | font-size: 28rpx; |
| | | color: #000000; |
| | | line-height: 40rpx; |
| | | |
| | | .status { |
| | | font-weight: 400; |
| | | font-size: 28rpx; |
| | | color: #20613D; |
| | | line-height: 40rpx; |
| | | } |
| | | } |
| | | |
| | | .desc { |
| | | font-weight: 400; |
| | | font-size: 24rpx; |
| | | color: #666666; |
| | | line-height: 34rpx; |
| | | } |
| | | |
| | | |
| | | .line { |
| | | height: 2rpx solid #EEEEEE; |
| | | margin-top: 16rpx; |
| | | margin-bottom: 16rpx; |
| | | } |
| | | |
| | | .buttons { |
| | | display: flex; |
| | | margin-left: auto; |
| | | width: fit-content; |
| | | |
| | | .button { |
| | | // width: 216rpx; |
| | | padding: 10rpx 20rpx; |
| | | line-height: 34rpx; |
| | | font-size: 24rpx; |
| | | height: 34rpx; |
| | | background: #20613D; |
| | | text-align: center; |
| | | border-radius: 30rpx; |
| | | min-width: 80rpx; |
| | | |
| | | } |
| | | |
| | | .button-1 { |
| | | background: #fff; |
| | | color: #333; |
| | | border: 2rpx solid #333; |
| | | |
| | | } |
| | | |
| | | .button-0 { |
| | | color: #fff; |
| | | border: 2rpx solid #20613D; |
| | | } |
| | | } |
| | | .flower-info { |
| | | padding: 0rpx; |
| | | |
| | | background: #FFFFFF; |
| | | border-radius: 8rpx; |
| | | |
| | | .supplier-name { |
| | | border-bottom: 2rpx solid #EEEEEE; |
| | | font-weight: 600; |
| | | font-size: 28rpx; |
| | | color: #000000; |
| | | padding-bottom: 10rpx; |
| | | line-height: 40rpx; |
| | | |
| | | .icon-dp { |
| | | width: 27rpx; |
| | | height: 27rpx; |
| | | display: inline-block; |
| | | vertical-align: middle; |
| | | } |
| | | } |
| | | |
| | | .title { |
| | | font-weight: 600; |
| | | font-size: 28rpx; |
| | | color: #000000; |
| | | line-height: 40rpx; |
| | | |
| | | .level { |
| | | font-weight: 400; |
| | | font-size: 28rpx; |
| | | color: #20613D; |
| | | line-height: 40rpx; |
| | | margin-right: 20rpx; |
| | | } |
| | | } |
| | | |
| | | .flower-img { |
| | | width: 128rpx; |
| | | height: 118rpx; |
| | | min-width: 128rpx; |
| | | min-height: 118rpx; |
| | | } |
| | | |
| | | .each-list { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | margin-top: 6rpx; |
| | | |
| | | .each-item { |
| | | min-width: 40%; |
| | | max-width: 50%; |
| | | text-align: center; |
| | | margin-left: 0rpx; |
| | | margin-right: auto; |
| | | display: flex; |
| | | |
| | | .label { |
| | | font-weight: 400; |
| | | font-size: 24rpx; |
| | | color: #666666; |
| | | text-align: left; |
| | | padding-right: 10rpx; |
| | | } |
| | | |
| | | .label::after { |
| | | content: ": " |
| | | } |
| | | |
| | | .value { |
| | | font-weight: 400; |
| | | font-size: 24rpx; |
| | | color: #666666; |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | .status-list { |
| | | overflow-x: scroll; |
| | | |
| | | .status-each { |
| | | font-weight: 400; |
| | | font-size: 28rpx; |
| | | color: #666666; |
| | | line-height: 40rpx; |
| | | margin: 0 auto; |
| | | //min-width: ; |
| | | // padding-left: 10rpx; |
| | | // padding-right: 10rpx; |
| | | width: fit-content; |
| | | min-width: 120rpx; |
| | | text-align: center; |
| | | } |
| | | |
| | | .status-each.cur { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | color: #20613D; |
| | | // line-height: 44rpx; |
| | | } |
| | | |
| | | .status-each:first-child { |
| | | margin-left: 0 |
| | | } |
| | | |
| | | .status-each:last-child { |
| | | margin-right: 0; |
| | | } |
| | | } |
| | | |
| | | .order-top { |
| | | position: relative; |
| | | min-height: 182rpx; |
| | | background: #E1F0E7; |
| | | border-radius: 8rpx; |
| | | padding: 45rpx 35rpx; |
| | | |
| | | .title { |
| | | font-weight: 600; |
| | | font-size: 30rpx; |
| | | color: #000000; |
| | | line-height: 42rpx; |
| | | } |
| | | |
| | | .desc { |
| | | font-weight: 400; |
| | | font-size: 24rpx; |
| | | color: #666666; |
| | | line-height: 34rpx; |
| | | } |
| | | |
| | | .image { |
| | | position: absolute; |
| | | right: 0rpx; |
| | | width: 288rpx; |
| | | height: 148rpx; |
| | | bottom: 0rpx; |
| | | } |
| | | } |
| | | } |
| | | </style> |