From b37bca8f7a6cdae798e74f14b51936e3a6a9637c Mon Sep 17 00:00:00 2001 From: xuxueyang <xuxy@fengyuntec.com> Date: 星期四, 29 八月 2024 22:42:14 +0800 Subject: [PATCH] update 售后问题 --- sub_pages/partner/delivery/delivery-detail.vue | 315 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 267 insertions(+), 48 deletions(-) diff --git a/sub_pages/partner/delivery/delivery-detail.vue b/sub_pages/partner/delivery/delivery-detail.vue index 423f68b..3fa0e5a 100644 --- a/sub_pages/partner/delivery/delivery-detail.vue +++ b/sub_pages/partner/delivery/delivery-detail.vue @@ -9,19 +9,21 @@ orderNo: '', stationName: '', arriveRemarks: '', + arriveImages: [], }, id: '', form: { id: '', status: '', - checkImageList: [], + pictureList: [], checkRemarks: '', deductAmount: 0, }, - check_status: [{ - label: '退回', - value: 'back' - }, + check_status: [ + // { + // label: '退回', + // value: 'back' + // }, { label: '降级', value: 'reduce' @@ -31,14 +33,34 @@ value: 'lack' }, { + label: '补货', + value: 'replace' + }, + { label: '完成', value: 'ok' } - ] + ], + target_levels: [], }; + }, + async onShow() { + if (this.sign['delivery']) { + await this.$store.dispatch('sign_clear', 'delivery'); + this.refreshList() + } }, async onLoad(options) { this.id = options.id || '' + + this.$http.request('get', '/api/code/value', { + params: { + type: 'FLOWER_LEVEL' + } + }).then(res => { + var data = res.data || [] + this.target_levels = data + }) await this.init() }, @@ -52,44 +74,127 @@ }, async clickCheck(item, status) { + if (status === 'ok') { + //完成质检,不用上传东西 + await this.$message.confirm('确定完成此商品的质检') + this.$message.showLoading() + const { + code, + data + } = await this.$http.request('get', '/api/delivery/check/info/' + status, { + params: { + orderItemId: item.id + } + }) + this.$message.hideLoading() + if (code === 0) { + await this.$message.showToast('操作成功') + this.init() + // setTimeout(() => { + // this.init() + // }, 500) + } + return + } this.form = { - id: item.id || '', + // id: item.id || '', + // status: status, + // statusStr: '', + // checkImageList: item.checkImageList || [], + // checkRemarks: item.checkRemarks || '', + // deductAmount: item.deductAmount || 0, + + orderItemId: item.id || '', + status: status, statusStr: '', - checkImageList: item.checkImageList || [], - checkRemarks: item.checkRemarks || '', - deductAmount: item.deductAmount || 0, + num: 0, + remarks: '', + pictureList: [], + + } + if (status === 'reduce') { + this.form = { + ...this.form, + deductAmount: 0, + targetLevel: '', + pictureList: [], + } + } + + this.check_status.forEach(tmp => { if (tmp.value === this.form.status) { this.form.statusStr = tmp.label } }) - //显示 - this.$refs.popup_form.open() - }, - async submitCheck() { - if (isNaN(parseFloat(this.form.deductAmount)) || this.form.deductAmount < 0) { - this.$message.showToast('扣款金额需要大于等于0') - return - } + //20240819更新一下操作情况 + //先获取详情,再设置参数 this.$message.showLoading() const { - code - } = await this.$http.request('post', '/api/delivery/list/view/check', { - data: { - ...this.form, - deductAmount: parseFloat(this.form.deductAmount) || 0 + code, + data + } = await this.$http.request('get', '/api/delivery/check/info/' + status, { + params: { + orderItemId: item.id } }) this.$message.hideLoading() if (code === 0) { - this.$message.showToast('操作成功') + this.form = { + ...this.form, + ...(data || {}) + } + if (!this.form.pictureList) { + this.form.pictureList = [] + } + //显示 + this.$refs.popup_form.open() + + } + + }, + async submitCheck() { + if (this.form.status == 'reduce') { + if (isNaN(parseFloat(this.form.deductAmount)) || this.form.deductAmount < 0) { + this.$message.showToast('扣款金额需要大于等于0') + return + } + if (isNaN(parseInt(this.form.num)) || this.form.num < 0) { + this.$message.showToast('数量需要大于等于0') + return + } + } + if (this.form.status == 'replace' || this.form.status == 'lack') { + if (isNaN(parseInt(this.form.num)) || this.form.num < 0) { + this.$message.showToast('数量需要大于等于0') + return + } + } + + + // '/api/delivery/list/view/check' + this.$message.showLoading() + const { + code + } = await this.$http.request('post', '/api/delivery/check/info/do/' + this.form.status, { + data: { + ...this.form + } + }) + this.$message.hideLoading() + if (code === 0) { this.$refs.popup_form.close() - setTimeout(() => { - this.init() - }, 200) + await this.$store.dispatch('sign_add', 'delivery') + + await this.$message.showToast('操作成功') + this.init() + + // setTimeout(() => { + // this.init() + // }, 500) } }, async init() { @@ -100,14 +205,24 @@ this.$message.hideLoading() if (data) { + var t = data || {} + if (!t.arriveImages) { + t.arriveImages = [] + } else { + try { + t.arriveImages = JSON.parse(t.arriveImages) || [] + } catch (e) { + console.log('parse arriveImages', e) + } + } this.dto = { ...this.dto, - ...data + ...t } } }, deleteCheckImage(index) { - this.form.checkImageList.splice(index, 1) + this.form.pictureList.splice(index, 1) }, uploadCheckImage() { let that = this @@ -130,7 +245,7 @@ 0] .url || '' that.$message.hideLoading() - that.form.checkImageList.push(pic) + that.form.pictureList.push(pic) console.log('form', that.form) that.$forceUpdate() }).catch(res => { @@ -140,7 +255,15 @@ } } }) + }, + printDeliveryOrder(item) { + // this.$message.showToast('敬请期待') + this.$storage.setItem('cache_delivery_order_print', JSON.stringify(item)) + uni.navigateTo({ + url: '/sub_pages/supplier/print/print-list' + }) } + } } </script> @@ -149,12 +272,20 @@ <view v-if="dto.id"> <view class="delivery-info flex"> <view class="flex1 desc"> - <view>供货商名称:{{ dto.stationName }}</view> - <view>订单号:{{ dto.orderNo }}</view> - <view>供货商备注:{{ dto.arriveRemarks }}</view> + <view>供货商名称:{{ dto.stationName ||''}}</view> + <view>订单号:{{ dto.orderNo ||''}}</view> + <view>供货商备注:{{ dto.arriveRemarks ||''}}</view> + <view>入位时间:{{ dto.arriveTime ||'-'}}</view> </view> <view class="m-l-15 m-r-0 station"> <view>{{ dto.stationName }}</view> + </view> + + </view> + <view class="m-t-12 flex" v-if="dto.arriveImages&&dto.arriveImages.length>0"> + <view class="m-t-12 m-r-10 " v-for="(timg,index) of dto.arriveImages" :key="index"> + <image class="arrive-img" :src="timg" @click.stop="previewImg(timg)"> + </image> </view> </view> <view v-for="(item,index) of dto.items" :key="index" class="delivery-order-item m-t-12"> @@ -182,40 +313,80 @@ <view class="value">{{ item.num || 0 }}</view> </view> + </view> + <view class="each-list"> <view class="each-item"> <view class="label">价格</view> - <view class="value">{{ item.price || '-' }}</view> + <view class="value">¥{{ item.price || '-' }}</view> + + </view> + <view class="each-item"> + <view class="label">降级</view> + <view class="value">{{ item.reduceNum || 0 }}</view> + </view> + <view class="each-item"> + <view class="label">缺货</view> + <view class="value">{{ item.lackNum || 0 }}</view> + + </view> + <view class="each-item"> + <view class="label">补货</view> + <view class="value">{{ item.replaceNum || 0 }}</view> + </view> </view> + </view> + </view> + <view class="line-gray" v-if="item.status == 'ARRIVED'||item.status == 'PENDING'||!item.status||true"> + + </view> + <view class="buttons" v-if="item.status == 'ARRIVED'||item.status == 'PENDING'||!item.status||true"> + <view class="button text-center" v-for="button of check_status" :key="button.value" + @click.stop="clickCheck(item,button.value)">{{ button.label }} </view> </view> <view class="line-gray"> </view> - <view class="buttons"> - <view class="button text-center" v-for="button of check_status" :key="button.value" - @click.stop="clickCheck(item,button.value)">{{ button.label }} - </view> + <view class="buttons m-r-0 m-l-a w-fit"> + <view class="button button-0 " @click="printDeliveryOrder(item)">打印</view> </view> </view> </view> <uni-popup ref="popup_form" type="top" :mask-click="false"> - <view class="popup-check-form"> + <view class="popup-check-form" style="min-height: 880rpx;height: unset;"> <view class="close-parent"> 质检操作-{{ form.statusStr || '-' }} <uni-icons class="close" type="closeempty" @click="closeCheckForm"></uni-icons> </view> <view class="submit form"> - <view class="form-item"> - <view class="form-item-label require"> - 质检备注 + <view class="form-item" v-if="form.status==='reduce'" style="height: unset;"> + <view class="form-item-label require" style="min-width: 120rpx;margin-right: 10rpx;"> + 降级等级 </view> - <view class="form-item-value"> - <input v-model="form.checkRemarks" placeholder="请输入质检备注" class="form-input"></input> + <view class="form-item-value flex "> + <view class="value-item" @click="()=>{ + if(form.targetLevel!==query.value){ + form.targetLevel = each.value + } + }" :class="[form.targetLevel==each.value?'cur':'']" v-for="(each, j) in target_levels" :key="j"> + {{ each.label || '-' }} + </view> + </view> </view> - <view class="form-item"> + <view class="form-item" + v-if="form.status==='reduce' || form.status==='replace' || form.status==='lack'"> + <view class="form-item-label require"> + 数量 + </view> + <view class="form-item-value"> + <input v-model="form.num" placeholder="请输入数量" type="number" class="form-input"></input> + + </view> + </view> + <view class="form-item" v-if="form.status==='reduce'"> <view class="form-item-label require"> 扣款金额 </view> @@ -225,7 +396,16 @@ </view> </view> - <view class="form-item"> + <view class="form-item" + v-if="form.status==='reduce'||form.status==='replace' || form.status==='lack'"> + <view class="form-item-label require"> + 质检备注 + </view> + <view class="form-item-value"> + <input v-model="form.remarks" placeholder="请输入质检备注" class="form-input"></input> + </view> + </view> + <view class="form-item" v-if="form.status==='reduce'"> <view class="form-item-label require"> 图片 </view> @@ -233,8 +413,8 @@ <view class="t-red" @click="uploadCheckImage()">上传</view> </view> </view> - <view class="flex p20" v-if="form.checkImageList&&form.checkImageList.length>0"> - <view class="m-t-12 m-r-10 " v-for="(timg,index) of form.checkImageList" :key="index"> + <view class="flex p20" v-if="form.pictureList&&form.pictureList.length>0"> + <view class="m-t-12 m-r-10 " v-for="(timg,index) of form.pictureList" :key="index"> <image class="check-img" :src="timg" @click.stop="previewImg(timg)"> </image> <view class="t-red text-center" @click.stop="deleteCheckImage(index)">删除</view> @@ -250,6 +430,13 @@ <style lang="scss" scoped> .delivery-detail-page { + .arrive-img { + width: 96rpx; + height: 96rpx; + border-radius: 4rpx; + border: 2rpx dashed #CECECE; + } + .delivery-order-item { .title { font-weight: 600; @@ -279,6 +466,12 @@ font-size: 24rpx; color: #666666; line-height: 34rpx; + } + + .button-0 { + color: #fff; + border: 2rpx solid #20613D; + background: #20613D; } } @@ -347,6 +540,32 @@ height: 36rpx; line-height: 36rpx; } + + .value-item { + min-width: 152rpx; + width: fit-content; + text-align: center; + height: 58rpx; + background: #F1F5F2; + border-radius: 36rpx; + margin-bottom: 18rpx; + font-weight: 400; + font-size: 28rpx; + line-height: 58rpx; + padding: 8rpx 24rpx; + color: #33a868; + margin-left: 16rpx; + margin-right: 16rpx; + border: 2rpx solid #F1F5F2; + } + + .value-item.cur { + background: #E1F0E7; + border-radius: 36rpx; + border: 2rpx solid #20613D; + color: #20613D; + + } } } -- Gitblit v1.9.3