| | |
| | | return { |
| | | id: '', |
| | | dto: {}, |
| | | showSales: false, |
| | | submitForm: {}, |
| | | type: '', |
| | | // #ifdef PUB_CUSTOMER |
| | | type: 'customer', |
| | |
| | | if (this.id) { |
| | | |
| | | await this.getDetail() |
| | | this.getItemList() |
| | | await this.getItemList() |
| | | } |
| | | this.showSales = options.showsales && true || false |
| | | }, |
| | | methods: { |
| | | copyTxt(txt) { |
| | | uni.setClipboardData({ |
| | | data: txt, //要被复制的内容 |
| | | success: () => { //复制成功的回调函数 |
| | | uni.showToast({ //提示 |
| | | title: '复制成功' |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | async getDetail() { |
| | | this.$message.showLoading() |
| | | const { |
| | |
| | | } |
| | | break |
| | | case 'payAgain': { |
| | | await this.$message.confirm('是否确定重新') |
| | | await this.$message.confirm('是否确定重新支付') |
| | | // 发送请求 |
| | | this.$message.showLoading() |
| | | const { |
| | |
| | | } |
| | | break |
| | | case 'evaluate': { |
| | | const res = await this.$message.confirm('请输入评价信息', { |
| | | editable: true |
| | | const res = await this.$message.confirm('', { |
| | | editable: true, |
| | | title: '请输入评价信息' |
| | | }) |
| | | if (res.content && res.confirm) { |
| | | // 发送请求 |
| | |
| | | } |
| | | } |
| | | break |
| | | case 'couldRefund': { |
| | | case 'sales': { |
| | | //新增售后单 |
| | | //去新的页面加上这些选择? |
| | | this.submitForm = { |
| | | orderId: this.id, |
| | | imageList: [], |
| | | videoList: [], |
| | | reason: [], |
| | | orderItems: [], |
| | | } |
| | | this.showSales = true |
| | | |
| | | } |
| | | default: |
| | | break |
| | | } |
| | | } |
| | | }, |
| | | changeSalesOrderItem(dto) { |
| | | if (this.submitForm.orderItems.indexOf(dto.id) < 0) { |
| | | this.submitForm.orderItems.push(dto.id) |
| | | } else { |
| | | this.submitForm.orderItems.splice(this.submitForm.orderItems.indexOf(dto.id), 1) |
| | | } |
| | | }, |
| | | deleteCheckImage(key, index) { |
| | | this.submitForm[key].splice(index, 1) |
| | | this.$forceUpdate() |
| | | }, |
| | | uploadIcon(key) { |
| | | console.log('that dto key', key) |
| | | const that = this |
| | | if (key === 'video') { |
| | | uni.chooseVideo({ |
| | | maxDuration: 30, |
| | | sourceType: ['camera', 'album'], |
| | | success: function(res) { |
| | | if (res.size > 1024 * 1024 * 50) { |
| | | that.$message.confirm('视频最多支持50M大小,超出大小限制') |
| | | return |
| | | } |
| | | if (res.tempFilePath) { |
| | | console.log('res.tempFilePath', res.tempFilePath) |
| | | that.$message.showLoading() |
| | | that.$http.upload(res.tempFilePath).then(async res => { |
| | | var pic = res.data && res.data.length > 0 && res.data[ |
| | | 0] |
| | | .url || '' |
| | | that.$message.hideLoading() |
| | | that.submitForm.videoList.push(pic || '') |
| | | |
| | | that.$forceUpdate() |
| | | }).catch(res => { |
| | | that.$message.hideLoading() |
| | | console.error(res) |
| | | }) |
| | | } |
| | | } |
| | | }); |
| | | } else { |
| | | |
| | | uni.chooseImage({ |
| | | count: 1, // 最多可以选择的图片张数,默认9 |
| | | sizeType: ['compressed'], //original 原图,compressed 压缩图,默认二者都有 |
| | | sourceType: ['camera', 'album'], //album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项 |
| | | success: function(res) { |
| | | let errMsg = res.errMsg |
| | | let tempFiles = res.tempFiles |
| | | if (errMsg === 'chooseImage:ok') { |
| | | // console.log(tempFiles[0]) |
| | | if (tempFiles[0].size > 1024 * 1024 * 5) { |
| | | that.$message.confirm('图片最多支持5M大小,超出大小限制') |
| | | return |
| | | } |
| | | that.$message.showLoading() |
| | | that.$http.upload(tempFiles[0].path).then(async res => { |
| | | console.log('res1', res) |
| | | var pic = res.data && res.data.length > 0 && res.data[ |
| | | 0] |
| | | .url || '' |
| | | that.$message.hideLoading() |
| | | that.submitForm.imageList.push(pic) |
| | | |
| | | that.$forceUpdate() |
| | | }).catch(res => { |
| | | that.$message.hideLoading() |
| | | console.error(res) |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | |
| | | async submitSales() { |
| | | if (this.submitForm.orderItems.length < 1) { |
| | | this.$message.showToast('未选择需要售后的商品') |
| | | return |
| | | } |
| | | await this.$message.confirm('确定申请售后吗') |
| | | this.$message.showLoading() |
| | | const { |
| | | code, |
| | | data |
| | | } = await this.$http.request('post', '/api/customer/sales/add', { |
| | | data: { |
| | | ...this.submitForm |
| | | } |
| | | }) |
| | | this.$message.hideLoading() |
| | | if (code == 0) { |
| | | this.$message.showToast('提交成功') |
| | | this.showSales = false |
| | | } |
| | | }, |
| | | }, |
| | | } |
| | | </script> |
| | | |
| | | <template> |
| | | <view class="order-detail-page"> |
| | | <view class="top-tip flex "> |
| | | <view class="top-tip flex " v-if="!showSales"> |
| | | <image src="/static/common/icon-order-status-SEND.png" class="icon-car m-r-6 img100"></image> |
| | | <view> |
| | | <view>{{ |
| | |
| | | <view class="desc-gray">支付时间:{{dto.paymentTime}}</view> |
| | | </view> |
| | | </view> |
| | | <view class="address-container bg-white br-4 m-t-12"> |
| | | <view class="address-container bg-white br-4 m-t-12" v-if="!showSales"> |
| | | <view class="flex"> |
| | | <view class="icon-loc m-r-10"> |
| | | <image src="/static/common/icon-loc.png" class="image"></image> |
| | | </view> |
| | | <image src="/static/common/icon-loc.png" class="image m-r-10"></image> |
| | | |
| | | <view class="info"> |
| | | <view class="title"> |
| | | {{ dto.customer }} |
| | |
| | | {{ item.supplierName }} |
| | | </view> |
| | | <view class="flex m-t-12"> |
| | | <radio :checked="submitForm.orderItems.indexOf(item.id)>=0" @click="changeSalesOrderItem(item)"></radio> |
| | | |
| | | <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 class="title"><span class="level">{{ item.flowerCategory }}</span><span |
| | | class="level">{{ item.flowerLevelStr }}</span>{{ item.flowerName }} |
| | | </view> |
| | | <!-- <view class="m-l-a m-r-0">--> |
| | | <!-- {{item.flowerCategory || '-'}}--> |
| | | <!-- </view>--> |
| | | </view> |
| | | <view class="each-list"> |
| | | <view class="each-item"> |
| | |
| | | </view> |
| | | |
| | | </view> |
| | | <view class="info-container bg-white br-4"> |
| | | <view class="info-container bg-white br-4" v-if="!showSales"> |
| | | <view class="form-item"> |
| | | <view class="label">订单编号:</view> |
| | | <view class="value">{{ dto.orderNo || '-' }}</view> |
| | |
| | | </view> |
| | | <view class="form-item"> |
| | | <view class="label">特殊需求:</view> |
| | | <view class="value">{{ dto.specialNeeds || '-' }}</view> |
| | | <view class="value">{{ dto.specialNeedsStr || '-' }}</view> |
| | | </view> |
| | | <view class="form-item"> |
| | | <view class="label">买家留言:</view> |
| | | <view class="value">{{ dto.remarks || '-' }}</view> |
| | | </view> |
| | | </view> |
| | | <view class="info-container bg-white br-4 m-t-12"> |
| | | <view class="info-container bg-white br-4 m-t-12" v-if="!showSales"> |
| | | <view class="form-item"> |
| | | <view class="label">订单金额:</view> |
| | | <view class="value">{{ dto.totalAmount || '-' }}</view> |
| | |
| | | |
| | | </view> |
| | | |
| | | <view class="info-container bg-white br-4 m-t-12"> |
| | | <view class="info-container bg-white br-4 m-t-12" v-if="!showSales"> |
| | | <view class="icon-view"> |
| | | <image src="/static/common/icon-kf.png" class="icon-kf m-r-10 img100 icon"></image> |
| | | 我的客服 |
| | |
| | | |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="info-container form bg-white br-4 m-t-12" v-if="showSales"> |
| | | <!-- 表单更新 --> |
| | | <view class="form-item"> |
| | | <view class="form-item-label"> |
| | | 理由 |
| | | </view> |
| | | <view class="form-item-value"> |
| | | <input v-model="submitForm.reason" clearable placeholder="请输入理由" class="form-input"></input> |
| | | </view> |
| | | </view> |
| | | <view class="form-item"> |
| | | <view class="form-item-label"> |
| | | 图片 |
| | | </view> |
| | | <view class="form-item-value m-l-a m-r-0"> |
| | | <view class="t-red" @click="uploadIcon('image')">上传</view> |
| | | </view> |
| | | </view> |
| | | <view class="flex p20" v-if="submitForm.imageList&&submitForm.imageList.length>0"> |
| | | <view class="m-t-12 m-r-10 " v-for="(timg,index) of submitForm.imageList" :key="index"> |
| | | <image class="check-img" :src="timg" @click.stop="previewImg(timg)"> |
| | | </image> |
| | | <view class="t-red text-center" @click.stop="deleteCheckImage('imageList',index)">删除</view> |
| | | </view> |
| | | </view> |
| | | <view class="form-item"> |
| | | <view class="form-item-label"> |
| | | 视频 |
| | | </view> |
| | | <view class="form-item-value m-l-a m-r-0"> |
| | | <view class="t-red" @click="uploadIcon('video')">上传</view> |
| | | </view> |
| | | </view> |
| | | <view class="flex p20" v-if="submitForm.videoList&&submitForm.videoList.length>0"> |
| | | <view class="m-t-12 m-r-10 " v-for="(timg,index) of submitForm.videoList" :key="index"> |
| | | <video :src="timg" style="display: block;margin: 0 auto;"></video> |
| | | |
| | | <view class="t-red text-center" @click.stop="deleteCheckImage('videoList',index)">删除</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <!-- #ifdef PUB_CUSTOMER --> |
| | | |
| | | |
| | | <view class="button-space"></view> |
| | | <view class="buttons-bottom flex"> |
| | | <view class="buttons-bottom flex" v-if="!showSales"> |
| | | <view class="button button-1" @click="buttonClick('refund')" v-if="dto.couldRefund">申请退款 |
| | | </view> |
| | | <view class="button button-1" @click="buttonClick('confirm')" v-if="dto.status ==='RECEIVE'"> 确认收货 |
| | |
| | | </view> |
| | | <view class="button button-1" @click="buttonClick('evaluate')" v-if=" dto.status === 'EVALUATE'"> 评价 |
| | | </view> |
| | | <view class="button button-1" @click="buttonClick('evaluate')" v-if=" dto.status === 'EVALUATE'"> 评价 |
| | | <view class="button button-1" @click="buttonClick('sales')" |
| | | v-if=" dto.status === 'EVALUATE'||dto.status=='COMPLETED'"> 申请售后 |
| | | </view> |
| | | <!-- <view class="button button-1" @click="buttonClick('couldRefund')" |
| | | v-if="dto.couldRefund"> 退款 |
| | | </view> --> |
| | | |
| | | </view> |
| | | <view v-if="showSales"> |
| | | <view style="min-height:200rpx"> |
| | | </view> |
| | | <view class="bottom-price flex"> |
| | | <view class="button-green-1 m-l-a m-r-0" style="min-width: 240rpx" @click="submitSales"> |
| | | 提交售后申请({{submitForm.orderItems&&submitForm.orderItems.length||0}}) |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <!-- #endif --> |
| | | <!-- |
| | |
| | | background: #F7F7F7; |
| | | padding: 30rpx; |
| | | |
| | | .info-container { |
| | | .button-space { |
| | | min-height: 140rpx; |
| | | .check-img { |
| | | width: 96rpx; |
| | | height: 96rpx; |
| | | border-radius: 4rpx; |
| | | border: 2rpx dashed #CECECE; |
| | | } |
| | | |
| | | .bottom-price { |
| | | position: fixed; |
| | | background-color: #ffffff; |
| | | left: 0rpx; |
| | | padding: 20rpx; |
| | | padding-bottom: 40rpx; |
| | | right: 0rpx; |
| | | bottom: 0rpx; |
| | | |
| | | .button-green-1 { |
| | | min-width: 400rpx; |
| | | padding-left: 20rpx; |
| | | padding-right: 20rpx; |
| | | } |
| | | } |
| | | |
| | | .button-space { |
| | | min-height: 140rpx; |
| | | } |
| | | |
| | | .buttons-bottom { |
| | | position: fixed; |
| | | left: 0; |
| | | bottom: 0; |
| | | right: 0; |
| | | height: 120rpx; |
| | | background-color: #FFFFFF; |
| | | box-shadow: 0 2rpx 30rpx rgba(0, 0, 0, .3); |
| | | |
| | | .button { |
| | | border-radius: 42rpx; |
| | | border: 2rpx solid #CECECE; |
| | | font-weight: 400; |
| | | font-size: 30rpx; |
| | | color: #999999; |
| | | text-align: center; |
| | | line-height: 60rpx; |
| | | height: 60rpx; |
| | | padding: 10rpx 30rpx; |
| | | background-color: #FFFFFF; |
| | | margin: 0 auto; |
| | | display: inline-block; |
| | | vertical-align: middle; |
| | | margin-top: 20rpx; |
| | | min-width: 120rpx; |
| | | } |
| | | |
| | | .button-1 {} |
| | | } |
| | | |
| | | .info-container { |
| | | |
| | | |
| | | .icon-kf { |
| | | width: 44rpx; |
| | |
| | | } |
| | | } |
| | | |
| | | .buttons-bottom { |
| | | position: fixed; |
| | | left: 0; |
| | | bottom: 0; |
| | | right: 0; |
| | | height: 120rpx; |
| | | |
| | | .button { |
| | | border-radius: 42rpx; |
| | | border: 2rpx solid #CECECE; |
| | | font-weight: 400; |
| | | font-size: 28rpx; |
| | | color: #999999; |
| | | text-align: center; |
| | | line-height: 76rpx; |
| | | } |
| | | |
| | | .button-1 {} |
| | | } |
| | | } |
| | | |
| | | .info-container { |
| | |
| | | .address-container { |
| | | padding: 28rpx; |
| | | |
| | | .icon-loc { |
| | | width: 48rpx; |
| | | height: 48rpx; |
| | | background: #20613D; |
| | | .image { |
| | | // background-color: #20613D; |
| | | border-radius: 50%; |
| | | |
| | | .image { |
| | | margin-top: 8rpx; |
| | | margin-left: 8rpx; |
| | | width: 32rpx; |
| | | height: 32rpx; |
| | | } |
| | | margin-top: 8rpx; |
| | | margin-left: 8rpx; |
| | | width: 32rpx; |
| | | height: 32rpx; |
| | | // padding: 8rpx; |
| | | } |
| | | |
| | | .info { |