<template> <view class="apply-refund"> <view class="apply-refund-form"> <view class="apply-refund-form-item"> <view class="apply-refund-form-label"> 退款金额: </view> <view class="apply-refund-form-content"> <text class="money">{{Number(refundForm.refundAmount).toFixed(2)}}</text>元 </view> </view> <view class="apply-refund-form-item"> <view class="apply-refund-form-label"> 退款原因: </view> <view class="apply-refund-form-content full-width"> <textarea v-model="refundForm.refundReason" maxlength="200" placeholder="请填写申请退款原因" :data-maxnum="refundForm.refundReason.length+'/200'"/> <u-upload :header="{ Authorization: 'Bearer ' + vuex_token }" max-count="3" ref="uUpload" :action="action"></u-upload> </view> </view> </view> <view class="apply-refund-form-submit"> <u-button type="primary" @click="submit">提交</u-button> </view> <view class="refund-tips" v-if="refundTipsContent"> <u-parse :html="refundTipsContent"></u-parse> </view> <u-mask :show="successPop" :zoom="true" :custom-style="{background: 'rgba(255, 255, 255, 0.8)'}"> <view class="pop-warp"> <view class="pop-warp-icon"> <u-icon name="checkbox-mark" color="#fff" size="50"></u-icon> </view> <view class="pop-warp-tips"> <text>提交成功!预计3-7个工作日内处理</text> </view> </view> </u-mask> <u-toast ref="uToast" /> </view> </template> <script> import {mapState, mapMutations} from 'vuex'; import { config } from '@/common/config.js' export default { data() { return { refundForm: { orderId: '', refundAmount: '', refundReason: '', images: [] }, action: config.baseUrl + '/file/tencent/upload', successPop: false, // 退款温馨提示 refundTipsContent: '' } }, computed: { ...mapState(['vuex_token']) }, onLoad(page) { this.refundForm.orderId = page.orderId this.refundForm.refundAmount = Number(page.payAmount) this.getSysterms(4) }, methods: { submit() { let files = []; // 是否有未完成上传的图片标识 let isHas = false this.$refs.uUpload.lists.forEach(item => { if (item.progress === 100 && item.response) { const url = item?.response?.data?.url if (url) { files.push(url) } } else { isHas = true } }) this.refundForm.images = files if (this.refundForm.refundReason && !isHas) { this.$u.api.updateOrderRefund(this.refundForm) .then(res => { this.successPop = true if (res.code === 200) { setTimeout(() => { this.$u.route('pages/applyRefundDetails/applyRefundDetails', { orderId: this.refundForm.orderId }) }, 2000) } else { this.successPop = false this.$refs.uToast.show({ title: res.msg, type: 'error' }) } }) .catch(err => { this.$refs.uToast.show({ title: '操作失败!', type: 'error' }) }) } else if (this.refundForm.refundReason == '') { this.$refs.uToast.show({ title: '请填写申请退款原因', type: 'warning' }) } else if (isHas) { this.$refs.uToast.show({ title: '还有图片未完成上传,请稍等!', type: 'warning' }) } }, /** * 获取收费标准 * */ getSysterms(termsType) { this.$u.api.getSysterms({ termsType: Number(termsType) }) .then(res => { if (res.code === 200) { this.refundTipsContent = res.data?.content } else { this.$refs.uToast.show({ title: res.msg, type: 'error', }) } }) .catch(err => { this.$refs.uToast.show({ title: '系统错误!', type: 'error', }) }) } } } </script> <style lang="scss" scoped> @import './applyRefund.scss'; </style>