confirm-refund-dialog.vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <template>
  2. <ele-modal :width="400" v-model="visible" title="确定后退款将立即退到买家账户" :body-style="{ padding: '30px 40px' }">
  3. <div class="text-base text-gray-700 mb-6">
  4. 同意申请并退款 ¥{{ refundAmount }} 给买家吗?
  5. </div>
  6. <template #footer>
  7. <div class="flex justify-end gap-3">
  8. <el-button @click="visible = false" class="rounded-full px-6">取消</el-button>
  9. <el-button type="primary" :loading="loading" @click="handleSubmit" class="rounded-full px-6">同意退款</el-button>
  10. </div>
  11. </template>
  12. </ele-modal>
  13. </template>
  14. <script setup>
  15. import { ref } from 'vue';
  16. import { EleMessage } from 'ele-admin-plus/es';
  17. import request from '@/utils/request';
  18. const visible = ref(false);
  19. const loading = ref(false);
  20. const currentRefundOrderId = ref('');
  21. const refundAmount = ref('0.00');
  22. const emit = defineEmits(['success']);
  23. const open = (refundOrderId, amount) => {
  24. currentRefundOrderId.value = refundOrderId;
  25. refundAmount.value = amount || '0.00';
  26. visible.value = true;
  27. };
  28. const handleSubmit = () => {
  29. loading.value = true;
  30. request.post('/shop/shopOrder/refund/refundMoney', {
  31. refundOrderId: currentRefundOrderId.value
  32. })
  33. .then(res => {
  34. if (res.data.code === 200) {
  35. EleMessage.success('退款成功');
  36. visible.value = false;
  37. emit('success');
  38. } else {
  39. EleMessage.error(res.data.msg || '退款失败');
  40. }
  41. })
  42. .catch(e => {
  43. console.error(e);
  44. EleMessage.error('网络错误');
  45. })
  46. .finally(() => {
  47. loading.value = false;
  48. });
  49. };
  50. defineExpose({
  51. open
  52. });
  53. </script>