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

---
 src/views/Home/components/DisbursementDialog.vue |  184 ++++++++++++++++++++++++++
 vite.config.ts                                   |    9 
 src/constants/insuranceClaim.ts                  |    7 +
 src/services/api/typings.d.ts                    |   57 ++++++++
 src/services/api/ParkBountyApply.ts              |   30 ++++
 src/views/Home/Home.vue                          |   61 ++++++++
 src/services/api/InsuranceOrder.ts               |   15 ++
 7 files changed, 359 insertions(+), 4 deletions(-)

diff --git a/src/constants/insuranceClaim.ts b/src/constants/insuranceClaim.ts
index 8256abd..f543380 100644
--- a/src/constants/insuranceClaim.ts
+++ b/src/constants/insuranceClaim.ts
@@ -207,3 +207,10 @@
   [InsuranceDetailStatusEnum.Effecting]: '宸茬敓鏁�',
   [InsuranceDetailStatusEnum.OutTimeEffect]: '宸茶繃鏈�',
 };
+
+export const DefaultTaiPingAccountInfo = {
+  incomeCompanyName: '澶钩璐骇淇濋櫓鏈夐檺鍏徃鎶氬窞涓績鏀叕鍙�',
+  incomeBankAccount: '澶钩璐骇淇濋櫓鏈夐檺鍏徃鎶氬窞涓績鏀叕鍙�',
+  incomeBankCardNumber: '1511200129200156069',
+  incomeBankName: '涓浗宸ュ晢閾惰鑲′唤鏈夐檺鍏徃鎶氬窞璧d笢鏀',
+};
diff --git a/src/services/api/InsuranceOrder.ts b/src/services/api/InsuranceOrder.ts
index d1696f9..7cc1407 100644
--- a/src/services/api/InsuranceOrder.ts
+++ b/src/services/api/InsuranceOrder.ts
@@ -166,6 +166,21 @@
   });
 }
 
+/** 鑾峰彇鎶曚繚璁㈠崟璇︽儏 POST /api/InsuranceOrder/GetInsuranceDetail */
+export async function getInsuranceDetail(
+  body: API.GetInsurancePageInput,
+  options?: API.RequestConfig
+) {
+  return request<API.GetInsurancePageOutput>('/api/InsuranceOrder/GetInsuranceDetail', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
 /** 鑾峰彇鎶曚繚浜哄憳瀹℃牳璁板綍 GET /api/InsuranceOrder/GetInsuranceOrderAuditRecord/${param1} */
 export async function getInsuranceOrderAuditRecordId(
   // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
diff --git a/src/services/api/ParkBountyApply.ts b/src/services/api/ParkBountyApply.ts
index 2f27c0b..44fb7c0 100644
--- a/src/services/api/ParkBountyApply.ts
+++ b/src/services/api/ParkBountyApply.ts
@@ -17,6 +17,21 @@
   });
 }
 
+/** 濂栧姳閲�-浼佷笟鑷韩鍑鸿处-瀹℃壒 POST /api/ParkBountyApply/AuditParkBountyApplyTradeBySelf */
+export async function auditParkBountyApplyTradeBySelf(
+  body: API.AuditParkBountyTradeBySelfInput,
+  options?: API.RequestConfig
+) {
+  return request<number>('/api/ParkBountyApply/AuditParkBountyApplyTradeBySelf', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
+
 /** 濂栧姳閲�-鍑鸿处-璐㈠姟瀹℃壒 POST /api/ParkBountyApply/FinanceAuditParkBountyApplyTrade */
 export async function financeAuditParkBountyApplyTrade(
   body: API.AuditParkBountyTradeInput,
@@ -82,3 +97,18 @@
     ...(options || {}),
   });
 }
+
+/** 濂栧姳閲�-绾夸笅鎶曚繚 浼佷笟鑷韩鎻愬嚭鍑鸿处鐢宠 POST /api/ParkBountyApply/ParkBountyApplyTradeBySelf */
+export async function parkBountyApplyTradeBySelf(
+  body: API.CreateParkBountyTradeInput,
+  options?: API.RequestConfig
+) {
+  return request<number>('/api/ParkBountyApply/ParkBountyApplyTradeBySelf', {
+    method: 'POST',
+    headers: {
+      'Content-Type': 'application/json',
+    },
+    data: body,
+    ...(options || {}),
+  });
+}
diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts
index 819658b..7769d30 100644
--- a/src/services/api/typings.d.ts
+++ b/src/services/api/typings.d.ts
@@ -466,6 +466,16 @@
     values?: Record<string, any>;
   }
 
+  interface AuditParkBountyTradeBySelfInput {
+    /** 鍑鸿处璁板綍Id */
+    id?: string;
+    selfAuditStatus?: EnumParkBountyTradeDetailAuditStatus;
+    /** 瀹℃牳澶囨敞 */
+    selfAuditRemark?: string;
+    /** 瀹℃牳鍑瘉 */
+    selfAuditFileUrl?: string;
+  }
+
   interface AuditParkBountyTradeInput {
     /** 鍑鸿处璁板綍Id */
     id?: string;
@@ -654,7 +664,6 @@
   }
 
   interface CreateParkBountyTradeInput {
-    enterpriseId?: string;
     /** 鏈�杩戝嚭璐﹂噾棰� */
     tradeAmount?: number;
     /** 鍑鸿处鍑瘉 */
@@ -662,6 +671,18 @@
     /** 娑堣垂绫诲瀷 */
     payRemark?: string;
     access?: ParkBountyTradeAccessEnum;
+    /** 杩涜处鍗曚綅 */
+    incomeCompanyName?: string;
+    /** 淇濆崟鍙� */
+    insureBillNo?: string;
+    /** 鏀舵鍗曚綅鍚嶇О */
+    incomeBankAccount?: string;
+    /** 鏀舵鍗曚綅璐﹀彿 */
+    incomeBankCardNumber?: string;
+    /** 寮�鎴疯 */
+    incomeBankName?: string;
+    enterpriseId?: string;
+    selfAuditStatus?: EnumParkBountyTradeDetailAuditStatus;
   }
 
   interface CreateTempTokenInput {
@@ -971,6 +992,8 @@
     payStatus?: InsurancePolicyListPayStatusEnum;
     /** 浠绘剰鍒嗘壒鏀粯瀹屾垚 */
     anyPayComplete?: boolean;
+    /** 濂栧姳閲戜綑棰� */
+    remianAmount?: number;
   }
 
   interface GetInsurancePageOutputPageOutput {
@@ -1080,8 +1103,14 @@
     transferTimeBegin?: string;
     /** 鍑鸿处缁撴潫鏃ユ湡 */
     transferTimeEnd?: string;
+    /** 鐢宠璧峰鏃ユ湡 */
+    creationTimeBegin?: string;
+    /** 鐢宠缁撴潫鏃ユ湡 */
+    creationTimeEnd?: string;
+    financeType?: FinanceTypeEnum;
     enterpriseId?: string;
     auditStatus?: EnumParkBountyTradeDetailAuditStatus;
+    selfAuditStatus?: EnumParkBountyTradeDetailAuditStatus;
   }
 
   interface GetParkBountyTradeDetailOutput {
@@ -1107,6 +1136,8 @@
     /** 濂栧姳閲戜綑棰� */
     remianAmount?: number;
     financeType?: FinanceTypeEnum;
+    /** 瀹℃牳鏃堕棿 */
+    financeAuditTime?: string;
     auditStatus?: EnumParkBountyTradeDetailAuditStatus;
     /** 瀹℃牳澶囨敞 */
     auditRemark?: string;
@@ -1114,6 +1145,25 @@
     auditTime?: string;
     /** 瀹℃牳鍑瘉 */
     payAuditFileUrl?: string;
+    /** 杩涜处鍗曚綅 */
+    incomeCompanyName?: string;
+    /** 淇濆崟鍙� */
+    insureBillNo?: string;
+    /** 鏀舵鍗曚綅鍚嶇О */
+    incomeBankAccount?: string;
+    /** 鏀舵鍗曚綅璐﹀彿 */
+    incomeBankCardNumber?: string;
+    /** 寮�鎴疯 */
+    incomeBankName?: string;
+    selfAuditStatus?: EnumParkBountyTradeDetailAuditStatus;
+    /** 浼佷笟鑷韩鍑鸿处瀹℃牳澶囨敞 */
+    selfAuditRemark?: string;
+    /** 浼佷笟鑷韩鍑鸿处瀹℃牳鏃堕棿 */
+    selfAuditTime?: string;
+    /** 浼佷笟鑷韩瀹℃牳鍑瘉 */
+    selfAuditFileUrl?: string;
+    creationTime?: string;
+    bountyAmount?: number;
   }
 
   interface GetParkBountyTradeDetailOutputPageOutput {
@@ -1130,6 +1180,11 @@
     transferTimeBegin?: string;
     /** 鍑鸿处缁撴潫鏃ユ湡 */
     transferTimeEnd?: string;
+    /** 鐢宠璧峰鏃ユ湡 */
+    creationTimeBegin?: string;
+    /** 鐢宠缁撴潫鏃ユ湡 */
+    creationTimeEnd?: string;
+    financeType?: FinanceTypeEnum;
   }
 
   interface GetParkBountyTradeOutput {
diff --git a/src/views/Home/Home.vue b/src/views/Home/Home.vue
index b9b7bf6..3af683d 100644
--- a/src/views/Home/Home.vue
+++ b/src/views/Home/Home.vue
@@ -114,6 +114,7 @@
     <UploadStampFileDialog v-bind="dialogStampFileProps" />
     <InsureInstructionsDialog v-bind="dialogInstructionsProps" />
     <InsureLineModeSelectDialog v-bind="dialogLineModeSelectProps" />
+    <DisbursementDialog v-bind="dialogDisbursementProps" />
   </LoadingLayout>
 </template>
 
@@ -135,6 +136,7 @@
   useDialog,
 } from '@bole-core/components';
 import * as insuranceOrderServices from '@/services/api/InsuranceOrder';
+import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
 import { Message, OrderInputType, downloadFileByUrl } from '@bole-core/core';
 import { columns, InsureLineMode } from './constants';
 import UploadInsurePersonDialog from './components/UploadInsurePersonDialog.vue';
@@ -168,6 +170,7 @@
 import _ from 'lodash';
 import InsureInstructionsDialog from './components/InsureInstructionsDialog.vue';
 import InsureLineModeSelectDialog from './components/InsureLineModeSelectDialog.vue';
+import DisbursementDialog from './components/DisbursementDialog.vue';
 import { useInsureProductSchemeAllList, useUserInsureProductSetting } from '@/hooks';
 // import { Recorder } from '@/utils/record';
 
@@ -289,6 +292,18 @@
     extraProps: {
       hide: (row: API.GetInsurancePageOutput) =>
         row.auditStatus != InsurancePolicyAuditStatusEnum.WaitAdd,
+    },
+  },
+  {
+    data: {
+      enCode: 'applyTradeBySelfBtn',
+      name: '鍑鸿处鐢宠',
+    },
+    emits: {
+      onClick: (role) => handleParkBountyApplyTradeBySelf(role),
+    },
+    extraProps: {
+      hide: (row: API.GetInsurancePageOutput) => row.productOnline,
     },
   },
 ]).filter(Boolean);
@@ -713,4 +728,50 @@
     }
   } catch (error) {}
 }
+
+function handleParkBountyApplyTradeBySelf(row: API.GetInsurancePageOutput) {
+  handleDisbursementAdd({
+    remianAmount: row.remianAmount,
+  });
+}
+
+const {
+  dialogProps: dialogDisbursementProps,
+  handleAdd: handleDisbursementAdd,
+  editForm: editDisbursementForm,
+} = useFormDialog({
+  onConfirm: parkBountyApplyTradeBySelf,
+  defaultFormParams: {
+    payRemark: '',
+    tradeAmount: 0,
+    remianAmount: 0,
+    payFileUrl: [] as UploadUserFile[],
+
+    incomeCompanyName: '',
+    insureBillNo: '',
+    incomeBankAccount: '',
+    incomeBankCardNumber: '',
+    incomeBankName: '',
+  },
+});
+
+async function parkBountyApplyTradeBySelf() {
+  try {
+    let params: API.CreateParkBountyTradeInput = {
+      tradeAmount: editDisbursementForm.tradeAmount,
+      payFileUrl: editDisbursementForm.payFileUrl.map((item) => item.url).join('|'),
+      payRemark: editDisbursementForm.payRemark,
+      incomeCompanyName: editDisbursementForm.incomeCompanyName,
+      insureBillNo: editDisbursementForm.insureBillNo,
+      incomeBankAccount: editDisbursementForm.incomeBankAccount,
+      incomeBankCardNumber: editDisbursementForm.incomeBankCardNumber,
+      incomeBankName: editDisbursementForm.incomeBankName,
+    };
+    let res = await parkBountyApplyServices.parkBountyApplyTradeBySelf(params);
+    if (res) {
+      Message.successMessage('鎿嶄綔鎴愬姛');
+      getList(paginationState.pageIndex);
+    }
+  } catch (error) {}
+}
 </script>
diff --git a/src/views/Home/components/DisbursementDialog.vue b/src/views/Home/components/DisbursementDialog.vue
new file mode 100644
index 0000000..ba45f8f
--- /dev/null
+++ b/src/views/Home/components/DisbursementDialog.vue
@@ -0,0 +1,184 @@
+<template>
+  <ProDialog
+    title="娑堣垂"
+    v-model="innerVisible"
+    destroy-on-close
+    draggable
+    bodyNoPaddingBottom
+    @close="onDialogClose"
+    width="600px"
+  >
+    <ProForm :model="innerForm" ref="dialogForm" label-width="120px">
+      <ProFormItemV2
+        label="杈撳叆鍑鸿处閲戦:"
+        prop="tradeAmount"
+        :check-rules="[{ message: '璇疯緭鍏ュ嚭璐﹂噾棰�', type: 'number' }]"
+      >
+        <ProFormInputNumber
+          :max="innerForm.remianAmount"
+          v-model.trim="innerForm.tradeAmount"
+          :controls="false"
+          :min="0"
+          :precision="2"
+          unit="鍏�"
+        />
+      </ProFormItemV2>
+      <ProFormItemV2
+        label="娑堣垂绫诲瀷:"
+        prop="payRemark"
+        :check-rules="[{ message: '璇烽�夋嫨娑堣垂绫诲瀷' }]"
+      >
+        <ProFormSelect
+          placeholder="璇烽�夋嫨娑堣垂绫诲瀷"
+          :value-enum="[
+            {
+              value: '淇濋櫓浜у搧璐拱',
+              label: '淇濋櫓浜у搧璐拱',
+            },
+          ]"
+          clearable
+          v-model="innerForm.payRemark"
+        ></ProFormSelect>
+      </ProFormItemV2>
+      <ProFormItemV2
+        label="杩涜处鍗曚綅:"
+        prop="incomeCompanyName"
+        :check-rules="[{ message: '璇疯緭鍏ヨ繘璐﹀崟浣�' }]"
+      >
+        <ProFormText v-model.trim="innerForm.incomeCompanyName" placeholder="璇疯緭鍏ヨ繘璐﹀崟浣�">
+        </ProFormText>
+      </ProFormItemV2>
+      <ProFormItemV2
+        label="淇濆崟鍙�:"
+        prop="insureBillNo"
+        :check-rules="[{ message: '璇疯緭鍏ヤ繚鍗曞彿' }]"
+      >
+        <ProFormText v-model.trim="innerForm.insureBillNo" placeholder="璇疯緭鍏ヤ繚鍗曞彿">
+        </ProFormText>
+      </ProFormItemV2>
+      <ProFormItemV2
+        label="鏀舵鍗曚綅鍚嶇О:"
+        prop="incomeBankAccount"
+        :check-rules="[{ message: '璇疯緭鍏ユ敹娆惧崟浣嶅悕绉�' }]"
+      >
+        <ProFormText v-model.trim="innerForm.incomeBankAccount" placeholder="璇疯緭鍏ユ敹娆惧崟浣嶅悕绉�">
+        </ProFormText>
+      </ProFormItemV2>
+      <ProFormItemV2
+        label="鏀舵鍗曚綅璐﹀彿:"
+        prop="incomeBankCardNumber"
+        :check-rules="[{ message: '璇疯緭鍏ユ敹娆惧崟浣嶈处鍙�', type: 'bankCard' }]"
+      >
+        <ProFormText v-model.trim="innerForm.incomeBankCardNumber" placeholder="璇疯緭鍏ユ敹娆惧崟浣嶈处鍙�">
+        </ProFormText>
+      </ProFormItemV2>
+      <ProFormItemV2
+        label="寮�鎴疯:"
+        prop="incomeBankName"
+        :check-rules="[{ message: '璇疯緭鍏ュ紑鎴疯' }]"
+      >
+        <ProFormText v-model.trim="innerForm.incomeBankName" placeholder="璇疯緭鍏ュ紑鎴疯">
+        </ProFormText>
+      </ProFormItemV2>
+      <ProFormItemV2
+        label="涓婁紶鍑鸿处鍑瘉:"
+        prop="payFileUrl"
+        :check-rules="[{ message: '璇蜂笂浼犲嚭璐﹀嚟璇�', type: 'upload' }]"
+      >
+        <ProFormUpload
+          v-model:file-url="innerForm.payFileUrl"
+          :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 {
+  ProDialog,
+  UploadUserFile,
+  ProForm,
+  ProFormItemV2,
+  ProFormSelect,
+  ProFormInputNumber,
+  ProFormUpload,
+  ProFormText,
+} from '@bole-core/components';
+import { FormInstance } from 'element-plus';
+
+defineOptions({
+  name: 'DisbursementDialog',
+});
+
+type Props = {
+  modelValue: boolean;
+  form?: {
+    tradeAmount: number;
+    remianAmount: number;
+    payRemark: string;
+    payFileUrl: UploadUserFile[];
+
+    incomeCompanyName: string;
+    insureBillNo: string;
+    incomeBankAccount: string;
+    incomeBankCardNumber: string;
+    incomeBankName: string;
+  };
+};
+
+const props = withDefaults(defineProps<Props>(), {
+  modelValue: false,
+});
+
+const emit = defineEmits<{
+  (e: 'update:modelValue', value: boolean): void;
+  (e: 'update:form', value: Props['form']): void;
+  (e: 'onConfirm'): void;
+  (e: 'onCancel'): void;
+}>();
+
+const innerVisible = computed({
+  get() {
+    return props.modelValue;
+  },
+  set(val) {
+    emit('update:modelValue', val);
+  },
+});
+
+const innerForm = computed({
+  get() {
+    return props.form;
+  },
+  set(val) {
+    emit('update:form', val);
+  },
+});
+
+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>
diff --git a/vite.config.ts b/vite.config.ts
index f2a9eca..8702299 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -97,9 +97,12 @@
       __INTLIFY_PROD_DEVTOOLS__: false,
     },
     build: {
-      outDir: `dist/${dayjs().format(
-        'YYYY-MM-DD'
-      )}/dist-jybfront-${VITE_AppType}-${mode}-${dayjs().format('YYYYMMDD')}`,
+      outDir:
+        mode === 'staging'
+          ? `dist/dist-jybfront-${VITE_AppType}-${mode}`
+          : `dist/${dayjs().format(
+              'YYYY-MM-DD'
+            )}/dist-jybfront-${VITE_AppType}-${mode}-${dayjs().format('YYYYMMDD')}`,
     },
     optimizeDeps: {
       include: [

--
Gitblit v1.9.1