detail.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <script setup lang="ts">
  2. import { ref } from "vue";
  3. import { useDetail } from "/@/hooks/core/useDetail";
  4. import { useAsync } from "/@/hooks/core/useAsync";
  5. import { purchpayReliveColumns, purchpayColumns } from "./config/_details";
  6. import BasicDescriptions from "/@/components/BasicDescriptions";
  7. import ReconciliationForm from "/@/components/ReconciliationForm";
  8. import ChooseForm from "./component/choose-form.vue";
  9. import { ReceiptApprovalNode } from "/@/components/ApprovalNode";
  10. import { useRouter } from "vue-router";
  11. import { useUserInfo } from "/@/hooks/core/useUser";
  12. import { usePermission } from "/@/hooks/core/usePermission";
  13. import { httpDetail as httpPayDetail } from "/@/api/purchase/orderPay";
  14. import {
  15. httpDetail,
  16. httpAdd,
  17. httpStatus
  18. } from "/@/api/purchase/purchPayRelive";
  19. const { push } = useRouter();
  20. const pageName = "purchPayReliveDetail";
  21. // { code: "020", name: "买方公司财务审核" },
  22. const { hasPermissionWithCode } = usePermission(pageName);
  23. const { isSuperUser } = useUserInfo();
  24. const formRef = ref<InstanceType<typeof ReconciliationForm> | null>(null);
  25. const { id, isDetail, title, collapses } = useDetail({
  26. baseName: "采购付款解除",
  27. collapseLen: 5
  28. });
  29. const { run: detail, data } = useAsync<Record<string, string>>({
  30. initalData: {},
  31. success: ({ orderCode }) => payDetailRun(httpPayDetail({ DzNo: orderCode }))
  32. });
  33. const { run: payDetailRun, data: payDetailData } = useAsync<
  34. Record<string, string>
  35. >({
  36. initalData: {}
  37. });
  38. const { run: create } = useAsync({
  39. success: () => push("/purchase/purchPay")
  40. });
  41. const { run: approval } = useAsync({
  42. success: () => requesetDetail()
  43. });
  44. const requesetDetail = () => detail(httpDetail({ returnCode: id.value }));
  45. const handleCreate = data => create(httpAdd(data));
  46. const handleApproval = data =>
  47. approval(httpStatus({ returnCode: id.value, ...data }));
  48. if (isDetail.value) requesetDetail();
  49. </script>
  50. <template>
  51. <div class="padding__container">
  52. <ElTabs>
  53. <ElTabPane :label="title">
  54. <ElCollapse v-model="collapses">
  55. <ElCollapseItem name="1" :title="title">
  56. <!-- 解除付款详情 -->
  57. <BasicDescriptions
  58. v-if="isDetail"
  59. class="mb-2"
  60. :columns="purchpayReliveColumns"
  61. :data="data"
  62. />
  63. <!-- 创建:选择付款解除 -->
  64. <ChooseForm v-else @create="handleCreate" />
  65. </ElCollapseItem>
  66. <ElCollapseItem name="4" title="采购付款详情">
  67. <!-- 采购付款详情 -->
  68. <BasicDescriptions
  69. :columns="purchpayColumns"
  70. :data="payDetailData"
  71. />
  72. </ElCollapseItem>
  73. <div v-if="isDetail">
  74. <ElCollapseItem name="2" title="对账详情">
  75. <ReconciliationForm ref="formRef" readonly :id="data.payNo" />
  76. </ElCollapseItem>
  77. <ElCollapseItem
  78. name="3"
  79. title="待审核"
  80. v-if="
  81. String(data.status) === '1' &&
  82. !isSuperUser &&
  83. hasPermissionWithCode('020')
  84. "
  85. >
  86. <ReceiptApprovalNode
  87. no-time
  88. has-remark
  89. approve-value="2"
  90. reject-value="3"
  91. img-prop="returnImg"
  92. @approval="handleApproval"
  93. />
  94. </ElCollapseItem>
  95. </div>
  96. </ElCollapse>
  97. </ElTabPane>
  98. </ElTabs>
  99. </div>
  100. </template>