From 39a0dc276d7a567548b314a94b5f812c6a8b1d17 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期四, 30 十月 2025 16:59:09 +0800
Subject: [PATCH] fix: 3.4.2.10

---
 src/views/BalanceManage/components/ConsumeRecordView.vue  |   34 ++++++++++-
 src/services/api/typings.d.ts                             |    9 +++
 src/components/Dialog/ParkBountyTradeDetailFileDialog.vue |  123 +++++++++++++++++++++++++++++++++++++++++
 src/views/Home/Home.vue                                   |    3 +
 4 files changed, 166 insertions(+), 3 deletions(-)

diff --git a/src/components/Dialog/ParkBountyTradeDetailFileDialog.vue b/src/components/Dialog/ParkBountyTradeDetailFileDialog.vue
new file mode 100644
index 0000000..d6ba211
--- /dev/null
+++ b/src/components/Dialog/ParkBountyTradeDetailFileDialog.vue
@@ -0,0 +1,123 @@
+<template>
+  <ProDialog title="鏂囦欢鍒楄〃" v-model="visible" @close="onDialogClose" destroy-on-close draggable>
+    <ProForm :model="form" ref="dialogForm" label-width="110px" is-read class="audit-file-form">
+      <ProFormItemV2
+        label="骞冲彴瀹℃壒鍑瘉:"
+        prop="selfAuditFileUrl"
+        v-if="form?.selfAuditFileUrl?.length > 0"
+      >
+        <ProFormUpload
+          v-model:file-url="form.selfAuditFileUrl"
+          :limitFileSize="50"
+          accept="doc,docx,pdf,xls,xlsx,jpg/jpeg,png"
+        ></ProFormUpload>
+      </ProFormItemV2>
+      <ProFormItemV2
+        label="鍑鸿处瀹℃壒鍑瘉:"
+        prop="payAuditFileUrl"
+        v-if="form?.payAuditFileUrl?.length > 0"
+      >
+        <ProFormUpload
+          v-model:file-url="form.payAuditFileUrl"
+          :limitFileSize="50"
+          accept="doc,docx,pdf,xls,xlsx,jpg/jpeg,png"
+        ></ProFormUpload>
+      </ProFormItemV2>
+      <ProFormItemV2
+        label="璐㈡斂瀹℃壒鍑瘉:"
+        prop="financeAuditFileUrl"
+        v-if="form?.financeAuditFileUrl?.length > 0"
+      >
+        <ProFormUpload
+          v-model:file-url="form.financeAuditFileUrl"
+          :limitFileSize="50"
+          accept="doc,docx,pdf,xls,xlsx,jpg/jpeg,png"
+        ></ProFormUpload>
+      </ProFormItemV2>
+      <ProFormItemV2 label="鍑鸿处鍑瘉:" prop="payFileUrl" v-if="form?.payFileUrl?.length > 0">
+        <ProFormUpload
+          v-model:file-url="form.payFileUrl"
+          :limitFileSize="50"
+          accept="doc,docx,pdf,xls,xlsx,jpg/jpeg,png"
+        ></ProFormUpload>
+      </ProFormItemV2>
+      <ProFormItemV2 label="淇濆崟鏂囦欢:" prop="insureBillUrl" v-if="form?.insureBillUrl?.length > 0">
+        <ProFormUpload
+          v-model:file-url="form.insureBillUrl"
+          :limitFileSize="50"
+          accept="doc,docx,pdf,xls,xlsx,jpg/jpeg,png"
+        ></ProFormUpload>
+      </ProFormItemV2>
+    </ProForm>
+    <template #footer>
+      <span class="dialog-footer">
+        <el-button @click="emit('onCancel')">鍙� 娑�</el-button>
+        <el-button type="primary" @click="handleConfirm">纭� 瀹�</el-button>
+      </span>
+    </template>
+  </ProDialog>
+</template>
+
+<script setup lang="ts">
+import { FormInstance } from 'element-plus';
+import {
+  ProDialog,
+  ProForm,
+  ProFormItemV2,
+  ProFormText,
+  UploadUserFile,
+  ProFormUpload,
+} from '@bole-core/components';
+
+defineOptions({
+  name: 'ParkBountyTradeDetailFileDialog',
+});
+
+// type Props = {};
+
+// const props = withDefaults(defineProps<Props>(), {});
+
+const visible = defineModel({ type: Boolean });
+
+type Form = {
+  title?: string;
+  payAuditFileUrl: UploadUserFile[];
+  financeAuditFileUrl: UploadUserFile[];
+  selfAuditFileUrl: UploadUserFile[];
+  payFileUrl: UploadUserFile[];
+  insureBillUrl: UploadUserFile[];
+};
+
+const form = defineModel<Form>('form');
+
+const emit = defineEmits<{
+  (e: 'onConfirm'): void;
+  (e: 'onCancel'): void;
+}>();
+
+const dialogForm = ref<FormInstance>();
+
+function onDialogClose() {
+  if (!dialogForm.value) return;
+  dialogForm.value.resetFields();
+}
+
+function handleConfirm() {
+  if (!dialogForm.value) return;
+  dialogForm.value.validate((valid) => {
+    if (valid) {
+      emit('onConfirm');
+    } else {
+      return;
+    }
+  });
+}
+</script>
+
+<style lang="scss" scoped>
+.audit-file-form {
+  .el-form-item {
+    margin-bottom: 22px;
+  }
+}
+</style>
diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts
index a69d6dc..a7161b0 100644
--- a/src/services/api/typings.d.ts
+++ b/src/services/api/typings.d.ts
@@ -680,6 +680,9 @@
     incomeBankName?: string;
     enterpriseId?: string;
     selfAuditStatus?: EnumParkBountyTradeDetailAuditStatus;
+    auditType?: EnumParkBountyTradeDetailAuditType;
+    /** 姹熺淇濊嚜涓诲嚭璐﹀叧鑱斾繚鍗昳d */
+    insurancePolicyId?: string;
   }
 
   interface CreateTempTokenInput {
@@ -756,6 +759,8 @@
   type EnumAmountUpdateType = 10 | 20;
 
   type EnumParkBountyTradeDetailAuditStatus = 10 | 20 | 30;
+
+  type EnumParkBountyTradeDetailAuditType = 10 | 100;
 
   interface ExportInsuranceStaffListInput {
     status?: InsuranceDetailStatusEnum;
@@ -1226,6 +1231,10 @@
     selfAuditFileUrl?: string;
     creationTime?: string;
     bountyAmount?: number;
+    /** 瀹℃牳鍑瘉 */
+    financeAuditFileUrl?: string;
+    /** 姹熺淇濅笂浼犵殑淇濆崟鏂囦欢 */
+    insureBillUrl?: string;
   }
 
   interface GetParkBountyTradeDetailOutputPageOutput {
diff --git a/src/views/BalanceManage/components/ConsumeRecordView.vue b/src/views/BalanceManage/components/ConsumeRecordView.vue
index 087967e..bb9c7d4 100644
--- a/src/views/BalanceManage/components/ConsumeRecordView.vue
+++ b/src/views/BalanceManage/components/ConsumeRecordView.vue
@@ -2,14 +2,15 @@
   <LoadingLayout :loading="state.loading">
     <AppContainer>
       <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
-        <template #operationBtn-checkBtn="{ data, row }">
+        <!-- <template #operationBtn-checkBtn="{ data, row }">
           <PreviewBtnV2
             class="pro-table-operation-btn"
             :url="convertApi2FormUrlBySeparator(row.payFileUrl ?? '')"
             preview-btn-text="鏌ョ湅鍑瘉"
           />
-        </template>
+        </template> -->
       </ProTableV2>
+      <ParkBountyTradeDetailFileDialog v-bind="dialogProps" />
     </AppContainer>
   </LoadingLayout>
 </template>
@@ -21,10 +22,16 @@
   PreviewBtnV2,
   ProTableV2,
   defineOperationBtns,
+  useFormDialog,
+  UploadUserFile,
 } from '@bole-core/components';
 import { OrderInputType } from '@bole-core/core';
 import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
-import { convertApi2FormUrlBySeparator } from '@/utils';
+import {
+  convertApi2FormUrlBySeparator,
+  convertApi2FormUrlObjectBySeparator,
+  convertApi2FormUrlOnlyOne,
+} from '@/utils';
 import { FinanceTypeEnumText } from '@/constants';
 
 defineOptions({
@@ -64,6 +71,7 @@
       enCode: 'checkBtn',
       name: '鏌ョ湅鍑瘉',
     },
+    emits: { onClick: (role) => openDialog(role) },
   },
 ]);
 
@@ -116,6 +124,26 @@
   await getList();
   state.loading = false;
 });
+
+function openDialog(row: API.GetParkBountyTradeDetailOutput) {
+  handleAdd({
+    payAuditFileUrl: convertApi2FormUrlObjectBySeparator(row.payAuditFileUrl),
+    financeAuditFileUrl: convertApi2FormUrlObjectBySeparator(row.financeAuditFileUrl),
+    selfAuditFileUrl: convertApi2FormUrlObjectBySeparator(row.selfAuditFileUrl),
+    payFileUrl: convertApi2FormUrlObjectBySeparator(row.payFileUrl),
+    insureBillUrl: convertApi2FormUrlObjectBySeparator(row.insureBillUrl),
+  });
+}
+
+const { dialogProps, handleAdd } = useFormDialog({
+  defaultFormParams: {
+    payAuditFileUrl: [] as UploadUserFile[],
+    financeAuditFileUrl: [] as UploadUserFile[],
+    selfAuditFileUrl: [] as UploadUserFile[],
+    payFileUrl: [] as UploadUserFile[],
+    insureBillUrl: [] as UploadUserFile[],
+  },
+});
 </script>
 
 <style lang="scss" scoped>
diff --git a/src/views/Home/Home.vue b/src/views/Home/Home.vue
index 748ed15..0a9f426 100644
--- a/src/views/Home/Home.vue
+++ b/src/views/Home/Home.vue
@@ -735,6 +735,7 @@
 function handleParkBountyApplyTradeBySelf(row: API.GetInsurancePageOutput) {
   handleDisbursementAdd({
     remianAmount: row.remianAmount,
+    insurancePolicyId: row.id,
   });
 }
 
@@ -745,6 +746,7 @@
 } = useFormDialog({
   onConfirm: parkBountyApplyTradeBySelf,
   defaultFormParams: {
+    insurancePolicyId: '',
     payRemark: '',
     tradeAmount: 0,
     remianAmount: 0,
@@ -769,6 +771,7 @@
       incomeBankAccount: editDisbursementForm.incomeBankAccount,
       incomeBankCardNumber: editDisbursementForm.incomeBankCardNumber,
       incomeBankName: editDisbursementForm.incomeBankName,
+      insurancePolicyId: editDisbursementForm.insurancePolicyId,
     };
     let res = await parkBountyApplyServices.parkBountyApplyTradeBySelf(params);
     if (res) {

--
Gitblit v1.9.1