detail.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <script setup lang="ts">
  2. import { computed, onMounted, ref } from "vue";
  3. import { useRoute, useRouter } from "vue-router";
  4. import CreateRefund from "./components/create-refund/index.vue";
  5. import RefundDetail from "./components/refund-detail/index.vue";
  6. import { approval_process } from "./components/approval-process";
  7. import { useResponseHandle } from "/@/hooks";
  8. import { httpStatus, httpDetail } from "/@/api/InvoiceSales/refund";
  9. const { query } = useRoute();
  10. const { push } = useRouter();
  11. const returnCode = computed(() => query.id);
  12. const collapses = ref(["1", "2"]);
  13. const isCreate = computed(() => !returnCode.value);
  14. const refundDetail = ref<Record<string, string>>({});
  15. const responseHandle = useResponseHandle();
  16. const currentProcess = computed(() => {
  17. const { status } = refundDetail.value;
  18. return approval_process[status];
  19. });
  20. const hiddenRerturnImg = computed(() => {
  21. return refundDetail.value.type === "2";
  22. });
  23. //退款详情
  24. async function requesetRefundDetail() {
  25. const { code, message, data } = await httpDetail({
  26. returnCode: returnCode.value
  27. });
  28. responseHandle({
  29. code,
  30. message,
  31. handler: () => (refundDetail.value = data)
  32. });
  33. }
  34. //退票申请管理
  35. async function requesetRefundStatus(otherParmas) {
  36. const { code, message } = await httpStatus({
  37. returnCode: returnCode.value,
  38. ...otherParmas
  39. });
  40. responseHandle({
  41. code,
  42. message,
  43. handler: () => push("/InvoiceSales/refund")
  44. });
  45. }
  46. function initalData() {
  47. if (isCreate.value) return;
  48. requesetRefundDetail();
  49. }
  50. onMounted(() => initalData());
  51. </script>
  52. <template>
  53. <div class="refund__content" bg-white>
  54. <!-- 创建退款单 -->
  55. <CreateRefund v-if="isCreate" />
  56. <ElTabs v-else>
  57. <ElTabPane label="详情">
  58. <!-- 详情 -->
  59. <ElCollapse v-model="collapses">
  60. <!-- 退款单详情 -->
  61. <ElCollapseItem title="退款单详情" name="1">
  62. <RefundDetail :detail="refundDetail" />
  63. </ElCollapseItem>
  64. <!-- 审核 -->
  65. <ElCollapseItem
  66. name="2"
  67. v-if="currentProcess"
  68. :title="currentProcess.title"
  69. >
  70. <component
  71. :hiddenRerturnImg="hiddenRerturnImg"
  72. :is="currentProcess.component"
  73. @change-status="requesetRefundStatus"
  74. />
  75. </ElCollapseItem>
  76. </ElCollapse>
  77. </ElTabPane>
  78. <ElTabPane label="审批记录" />
  79. </ElTabs>
  80. </div>
  81. </template>
  82. <style lang="scss" scoped>
  83. .refund__content {
  84. padding: 20px !important;
  85. }
  86. </style>