| | |
| | | dto: {}, |
| | | showSales: false, |
| | | submitForm: {}, |
| | | timer: undefined, |
| | | type: '', |
| | | // #ifdef PUB_CUSTOMER |
| | | type: 'customer', |
| | |
| | | // #ifdef PUB_PARTNER |
| | | type: 'partner', |
| | | // #endif |
| | | salesTypeDef: 0, |
| | | salesTypeList: [], |
| | | }; |
| | | }, |
| | | onUnload() { |
| | | this.timer && clearTimeout(this.timer) |
| | | }, |
| | | async onLoad(options) { |
| | | console.log('options', options) |
| | |
| | | await this.getItemList() |
| | | this.submitForm = { |
| | | orderId: this.id, |
| | | imageList: [], |
| | | // imageList: [], |
| | | videoList: [], |
| | | salesType: '', |
| | | reason: '', |
| | | orderItems: [] |
| | | // orderItems: [], |
| | | orderItemId: options.flowerId || '', |
| | | num: 0, |
| | | pictureList: [] |
| | | } |
| | | this.showSales = options.showsales && true || false |
| | | |
| | | if (this.dto.statusBackend === 'PENDING' || this.dto.status === 'PENDING') { |
| | | |
| | | |
| | | this.timer = setInterval(() => { |
| | | //倒计时 |
| | | var nowdate = new Date().getTime() - 1000 * 60 * 5 |
| | | var change = false |
| | | |
| | | //计算倒计时 |
| | | var diff = new Date(this.dto.createTime).getTime() - nowdate |
| | | console.log('diff', diff) |
| | | if (diff <= 2000 && true) { |
| | | //超过了5分钟 |
| | | this.dto.statusBackend = 'CANCEL' |
| | | this.dto.statusBackendStr = '已取消' |
| | | this.dto.status = 'CANCEL' |
| | | this.dto.statusStr = '已取消' |
| | | |
| | | this.dto.bctime = '' |
| | | // console.log('change cancel', this.dto) |
| | | change = true |
| | | clearInterval(this.timer) |
| | | this.timer = undefined |
| | | } else { |
| | | //相差 |
| | | var alltime = parseInt(diff / 1000) |
| | | var tt = 0 |
| | | if (alltime > 60) { |
| | | tt = alltime - parseInt(alltime / 60) * 60 |
| | | } else { |
| | | tt = alltime |
| | | } |
| | | this.dto.bctime = `0${parseInt(alltime / 60)}:${tt<10?'0':''}${tt}` |
| | | change = true |
| | | |
| | | } |
| | | |
| | | |
| | | if (change) |
| | | this.$forceUpdate() |
| | | }, 1000) |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | this.$http.request('get', '/api/code/value', { |
| | | params: { |
| | | type: 'after_sale_type' |
| | | } |
| | | }).then(res => { |
| | | var data = res.data; |
| | | |
| | | let tmpData = data.map(item => ({ |
| | | value: item.value, |
| | | label: item.label |
| | | })); |
| | | |
| | | // 将 '全部' 选项插入到 tmpData 的开头 |
| | | this.salesTypeList = tmpData; |
| | | this.salesTypeList.unshift({ |
| | | label: '全部', |
| | | value: '' |
| | | }); |
| | | |
| | | }) |
| | | |
| | | }, |
| | | methods: { |
| | | salesTypeChange(e) { |
| | | this.submitForm.salesType = e.value |
| | | }, |
| | | |
| | | async getDetail() { |
| | | this.$message.showLoading() |
| | |
| | | if (code === 0) { |
| | | this.dto = { |
| | | ...this.dto, |
| | | ...data |
| | | ...data, |
| | | // pointGoodsList: [{ |
| | | // name: '1', |
| | | // num: 1, |
| | | // description: 'descriptiondescriptiondescriptiondescriptiondescription' |
| | | // }] |
| | | } |
| | | if (this.dto.statusBackend === 'PENDING') { |
| | | //先判断要不要字节变成已取消 |
| | | var nowdate = new Date().getTime() - 1000 * 60 * 5 |
| | | var diff = new Date(this.dto.createTime).getTime() - nowdate |
| | | |
| | | if (diff <= 2000 && true) { |
| | | //超过了5分钟 |
| | | this.dto.statusBackend = 'CANCEL' |
| | | this.dto.statusBackendStr = '已取消' |
| | | this.dto.status = 'CANCEL' |
| | | this.dto.statusStr = '已取消' |
| | | this.dto.bctime = '' |
| | | this.$forceUpdate() |
| | | } |
| | | } |
| | | |
| | | } |
| | | }, |
| | | async callTel() { |
| | |
| | | break |
| | | case 'confirm': { |
| | | await this.$message.confirm('是否确定收货') |
| | | // 发送请求 |
| | | this.$message.showLoading() |
| | | const { |
| | | code |
| | | } = await this.$http.request('get', '/api/customer/order/receive/confirm', { |
| | | params: { |
| | | id: this.id, |
| | | |
| | | var tryCallWx = false |
| | | // #ifdef MP |
| | | let tmp = this |
| | | if (wx.openBusinessView && tmp.dto && tmp.dto.paymentTrId) { |
| | | tryCallWx = true |
| | | wx.openBusinessView({ |
| | | businessType: 'weappOrderConfirm', |
| | | extraData: { |
| | | // merchant_id: '', |
| | | // merchant_trade_no: '', |
| | | merchant_id: '1661512517', |
| | | merchant_trade_no: tmp.id || '', |
| | | transaction_id: tmp.dto && tmp.dto.paymentTrId || '' |
| | | }, |
| | | async success(info) { |
| | | console.log('info', info) |
| | | //dosomething |
| | | // 发送请求 |
| | | tmp.$message.showLoading() |
| | | const { |
| | | code |
| | | } = await tmp.$http.request('get', |
| | | '/api/customer/order/receive/confirm', { |
| | | params: { |
| | | id: tmp.id, |
| | | } |
| | | }) |
| | | tmp.$message.hideLoading() |
| | | if (code === 0) { |
| | | tmp.getDetail() |
| | | tmp.$store.dispatch('getCurrentInfo') |
| | | } |
| | | }, |
| | | fail(e) { |
| | | //dosomething |
| | | console.log('error fail', e) |
| | | tmp.$message.showToast('收货失败') |
| | | }, |
| | | complete() { |
| | | //dosomething |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // #endif |
| | | |
| | | if (!tryCallWx) { |
| | | |
| | | // 发送请求 |
| | | this.$message.showLoading() |
| | | const { |
| | | code |
| | | } = await this.$http.request('get', '/api/customer/order/receive/confirm', { |
| | | params: { |
| | | id: this.id, |
| | | } |
| | | }) |
| | | this.$message.hideLoading() |
| | | if (code === 0) { |
| | | this.getDetail() |
| | | } |
| | | }) |
| | | this.$message.hideLoading() |
| | | if (code === 0) { |
| | | this.getDetail() |
| | | } |
| | | |
| | | } |
| | |
| | | id: this.id, |
| | | } |
| | | }) |
| | | |
| | | this.$message.hideLoading() |
| | | if (code === 0) { |
| | | //微信接口 |
| | |
| | | ...data, |
| | | async success(res) { |
| | | console.log('pay success', res) |
| | | that.$message.showToast('支付成功') |
| | | setTimeout(() => { |
| | | that.getDetail() |
| | | }, 200) |
| | | await that.$message.showToast('支付成功') |
| | | that.getDetail() |
| | | }, |
| | | fail(err) { |
| | | console.error('pay fail', err) |
| | |
| | | } |
| | | } |
| | | break |
| | | case 'sales': { |
| | | //新增售后单 |
| | | //去新的页面加上这些选择? |
| | | this.submitForm = { |
| | | orderId: this.id, |
| | | imageList: [], |
| | | videoList: [], |
| | | reason: '', |
| | | orderItems: [], |
| | | } |
| | | this.showSales = true |
| | | // case 'sales': { |
| | | // //新增售后单 |
| | | // //去新的页面加上这些选择? |
| | | // this.submitForm = { |
| | | // orderId: this.id, |
| | | // imageList: [], |
| | | // videoList: [], |
| | | // reason: '', |
| | | // orderItems: [], |
| | | // } |
| | | // this.showSales = true |
| | | |
| | | } |
| | | // } |
| | | default: |
| | | break |
| | | } |
| | |
| | | 0] |
| | | .url || '' |
| | | that.$message.hideLoading() |
| | | that.submitForm.imageList.push(pic) |
| | | that.submitForm.pictureList.push(pic) |
| | | |
| | | that.$forceUpdate() |
| | | }).catch(res => { |
| | |
| | | }, |
| | | |
| | | async submitSales() { |
| | | if (this.submitForm.orderItems.length < 1) { |
| | | this.$message.showToast('未选择需要售后的商品') |
| | | // if (this.submitForm.orderItems.length < 1) { |
| | | // this.$message.showToast('未选择需要售后的商品') |
| | | // return |
| | | // } |
| | | // if (this.submitForm.orderItems.length < 1) { |
| | | // this.$message.showToast('未选择需要售后的商品') |
| | | // return |
| | | // } |
| | | if (isNaN(parseFloat(this.submitForm.num)) || this.submitForm.num <= 0) { |
| | | this.$message.showToast('售后数量需要大于0') |
| | | return |
| | | } |
| | | if (!this.submitForm.salesType) { |
| | | this.$message.showToast('未填写售后类型') |
| | | return |
| | | } |
| | | if (!this.submitForm.reason) { |
| | | this.$message.showToast('未填写理由') |
| | | return |
| | | } |
| | | if (!this.submitForm.pictureList || this.submitForm.pictureList.length < 1) { |
| | | this.$message.showToast('未上传图片') |
| | | return |
| | | } |
| | | await this.$message.confirm('确定申请售后吗') |
| | |
| | | }) |
| | | this.$message.hideLoading() |
| | | if (code == 0) { |
| | | this.$message.showToast('提交成功') |
| | | this.showSales = false |
| | | this.$forceUpdate() |
| | | await this.$message.showToast('提交成功') |
| | | uni.navigateBack() |
| | | // this.showSales = false |
| | | // this.$forceUpdate() |
| | | // setTimeout(() => { |
| | | // uni.navigateBack() |
| | | // }, 1200) |
| | | } |
| | | }, |
| | | }, |
| | |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="flower-info m-b-20 m-t-12 br-4" v-for="(item,index) of list" :key="index"> |
| | | <view class="supplier-name "> |
| | | <image class="icon-dp" src="/static/common/icon-dp.png"></image> |
| | | {{ item.supplierName || ''}} |
| | | </view> |
| | | <view class="flex m-t-12"> |
| | | <radio v-if="showSales" :checked="submitForm.orderItems.indexOf(item.id)>=0" |
| | | @click="changeSalesOrderItem(item)"></radio> |
| | | <view v-for="(item,index) of list" :key="index"> |
| | | <view class="flower-info m-b-20 m-t-12 br-4" |
| | | v-if="!showSales||showSales&&(submitForm.orderItemId == item.id)"> |
| | | <view class="supplier-name "> |
| | | <image class="icon-dp" src="/static/common/icon-dp.png"></image> |
| | | {{ item.supplierName || ''}} |
| | | </view> |
| | | <!-- submitForm.orderItemId:{{submitForm.orderItemId}} --> |
| | | <!-- itemId:{{item.id}} --> |
| | | <view class="flex m-t-12"> |
| | | <!-- <radio v-if="showSales" disabled :checked="submitForm.orderItemId == item.id"></radio> --> |
| | | <!-- @click="changeSalesOrderItem(item)" --> |
| | | <!-- :checked="submitForm.orderItems.indexOf(item.id)>=0" --> |
| | | |
| | | <image class="flower-img img100 br-4 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.warehouseLocationCode || dto.warehouseLocationCode || '-' }} |
| | | <image class="flower-img img100 br-4 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.warehouseLocationCode || dto.warehouseLocationCode || '-' }} |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="each-item"> |
| | | <view class="label">颜色</view> |
| | | <view class="value">{{ item.flowerColor || '-' }}</view> |
| | | <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> |
| | | <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 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 || '-' }}</view> |
| | | </view> |
| | | <view class="each-item"> |
| | | <view class="label">总金额</view> |
| | | <view class="value t-red">¥{{ item.total || '-' }}</view> |
| | | </view> |
| | | <view class="each-item"> |
| | | <view class="label">售价</view> |
| | | <view class="value">¥{{ item.price || '-' }}</view> |
| | | </view> |
| | | <view class="each-item"> |
| | | <view class="label">总金额</view> |
| | | <view class="value t-red">¥{{ item.total || '-' }}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="info-container bg-white br-4" v-if="!showSales"> |
| | | <view class="form-item"> |
| | | <view class="label">订单编号:</view> |
| | |
| | | </view> |
| | | <view class="form-item"> |
| | | <view class="label">下单日期:</view> |
| | | <view class="value">{{ dto.paymentTime || '-' }}</view> |
| | | <view class="value">{{ dto.createTime || '-' }}</view> |
| | | </view> |
| | | <view class="form-item" v-if="dto.cancelTime&&(dto.status==='CANCEL'||dto.status==='REFUND')"> |
| | | <view class="label">取消时间:</view> |
| | |
| | | </view> |
| | | </view> |
| | | <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 class="form-item flex"> |
| | | <view class="label">商品金额:</view> |
| | | <view class="value m-l-a m-r-0 text-right">+{{ dto.flowerAmount || '0' }}</view> |
| | | </view> |
| | | <view class="form-item"> |
| | | <view class="form-item flex"> |
| | | <view class="label">运费:</view> |
| | | <view class="value m-l-a m-r-0 text-right">+{{ dto.transportFee || '0' }}</view> |
| | | </view> |
| | | <view class="form-item flex"> |
| | | <view class="label">打包费:</view> |
| | | <view class="value m-l-a m-r-0 text-right">+{{ dto.packingFee || '0' }}</view> |
| | | </view> |
| | | <view class="form-item flex t-red"> |
| | | <view class="label">优惠:</view> |
| | | <view class="value m-l-a m-r-0 text-right">-{{ dto.memberCouponAmount || '0' }}</view> |
| | | </view> |
| | | <view class="form-item flex t-red"> |
| | | <view class="label">实际支付:</view> |
| | | <view class="value m-l-a m-r-0 text-right">¥{{ dto.paymentAmount || '0' }}</view> |
| | | </view> |
| | | |
| | | |
| | | <!-- <view class="form-item"> |
| | | <view class="label">支付金额:</view> |
| | | <view class="value">{{ dto.paymentAmount || '-' }}</view> |
| | | </view> |
| | |
| | | <view class="label">商品金额:</view> |
| | | <view class="value">{{ dto.flowerAmount || '-' }}</view> |
| | | </view> |
| | | |
| | | <view class="form-item"> |
| | | <view class="label">运费:</view> |
| | | <view class="value">{{ dto.transportFee || '-' }}</view> |
| | | <view class="label">折扣类型:</view> |
| | | <view class="value">{{ dto.memberDiscountTypeStr || '-' }}</view> |
| | | </view> |
| | | <view class="form-item"> |
| | | <view class="label">优惠金额(每扎):</view> |
| | | <view class="value">¥{{ dto.memberDiscountAmount || '-' }}</view> |
| | | </view> |
| | | <view class="form-item"> |
| | | <view class="label">优惠券:</view> |
| | | <view class="value">{{ dto.memberCouponName || '-' }}</view> |
| | | </view> --> |
| | | <!-- <view class="form-item"> |
| | | <view class="label">优惠金额:</view> |
| | | <view class="value">{{ dto.memberCouponAmount || '-' }}</view> |
| | | </view> --> |
| | | </view> |
| | | <view class="info-container bg-white br-4 m-t-12" |
| | | v-if="!showSales&& dto.pointGoodsList&& dto.pointGoodsList.length>0"> |
| | | <view v-for="(item,j) of dto.pointGoodsList" :key="j" class="m-b-12"> |
| | | <view class="flower-info br-4"> |
| | | <view class="flex flex-wrap-normal"> |
| | | <image class="flower-img img100 br-4 m-r-6" :src="item.cover" @click="previewImg(item.cover)"> |
| | | </image> |
| | | <view class="flex1"> |
| | | <view class=" flex"> |
| | | <view class="title"> |
| | | {{ item.name || ''}} |
| | | </view> |
| | | </view> |
| | | <view class="each-list" style="display: contents;"> |
| | | <view class="each-item"> |
| | | <view class="label">数量</view> |
| | | <view class="value">{{ item.num || 0 }}</view> |
| | | |
| | | </view> |
| | | <view class="each-item" style="min-width: unset;max-width: unset;"> |
| | | <view class="label" style="min-width: 55rpx;">描述</view> |
| | | <view class="value" style="word-break: break-all;text-align: left;"> |
| | | {{ item.description || '-' }} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | </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 class="form-item-label require"> |
| | | 售后数量 |
| | | </view> |
| | | <view class="form-item-value"> |
| | | <input v-model="submitForm.num" clearable placeholder="请输入售后数量" type="number" |
| | | class="form-input"></input> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="form-item"> |
| | | <view class="form-item-label require"> |
| | | 售后类型 |
| | | </view> |
| | | <view class="form-item-value"> |
| | | <um-dropdown @change="salesTypeChange" :defaultIndex="salesTypeDef" rangeKey="label" |
| | | :optionList="salesTypeList" placeholder="售后类型"></um-dropdown> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="form-item"> |
| | | <view class="form-item-label require"> |
| | | 理由 |
| | | </view> |
| | | <view class="form-item-value"> |
| | |
| | | </view> |
| | | </view> |
| | | <view class="form-item"> |
| | | <view class="form-item-label"> |
| | | <view class="form-item-label require"> |
| | | 图片 |
| | | </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"> |
| | | <view class="flex p20" v-if="submitForm.pictureList&&submitForm.pictureList.length>0"> |
| | | <view class="m-t-12 m-r-10 " v-for="(timg,index) of submitForm.pictureList" :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 class="t-red text-center" @click.stop="deleteCheckImage('pictureList',index)">删除</view> |
| | | </view> |
| | | </view> |
| | | <view class="form-item"> |
| | |
| | | </view> |
| | | <view class="button button-1" @click="buttonClick('confirm')" v-if="dto.status ==='RECEIVE'"> 确认收货 |
| | | </view> |
| | | <view class="button button-1" @click="buttonClick('payAgain')" v-if=" dto.status === 'PENDING'"> 重新支付 |
| | | <view class="button button-1" @click="buttonClick('payAgain')" v-if=" dto.status === 'PENDING'"> 重新支付<span |
| | | v-if="dto.bctime">({{dto.bctime}})</span> |
| | | </view> |
| | | <view class="button button-1" @click="buttonClick('evaluate')" v-if=" dto.status === 'EVALUATE'"> 评价 |
| | | </view> |
| | | <!-- ||dto.status=='COMPLETED' --> |
| | | <view class="button button-1" @click="buttonClick('sales')" |
| | | v-if=" dto.status === 'RECEIVE'"> 申请售后 |
| | | </view> |
| | | <!-- 在外面申请了,里面不允许了 --> |
| | | <!-- <view class="button button-1" @click="buttonClick('sales')" v-if=" dto.status === 'RECEIVE'"> 申请售后 |
| | | </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}}) |
| | | 提交售后申请 |
| | | <!-- ({{submitForm.orderItems&&submitForm.orderItems.length||0}}) --> |
| | | </view> |
| | | </view> |
| | | </view> |