From b52bec54f02f5b894d5dde30f8f05b76c71771ba Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期五, 12 九月 2025 15:48:18 +0800
Subject: [PATCH] feat: 支付宝充值

---
 src/views/ServiceChargeManage/ServiceChargeManage.vue |   92 +++++++++++++++++++++++++++++++++++++--------
 1 files changed, 75 insertions(+), 17 deletions(-)

diff --git a/src/views/ServiceChargeManage/ServiceChargeManage.vue b/src/views/ServiceChargeManage/ServiceChargeManage.vue
index 5c3e3c1..6888c19 100644
--- a/src/views/ServiceChargeManage/ServiceChargeManage.vue
+++ b/src/views/ServiceChargeManage/ServiceChargeManage.vue
@@ -21,7 +21,7 @@
               @change="getList()"
             />
           </QueryFilterItem>
-          <QueryFilterItem>
+          <!-- <QueryFilterItem>
             <FieldDatePicker
               v-model="extraParamState.time"
               type="daterange"
@@ -32,7 +32,7 @@
               @change="getList()"
               tooltipContent="鍒涘缓鏃堕棿"
             ></FieldDatePicker>
-          </QueryFilterItem>
+          </QueryFilterItem> -->
           <QueryFilterItem>
             <SearchInput
               v-model="extraParamState.keywords"
@@ -47,7 +47,7 @@
         <template #btn>
           <el-button type="primary" link @click="handleDownloadTemplate()">缁撶畻鍗曟ā鏉�</el-button>
           <el-button type="primary" @click="handleAdd()">涓婁紶缁撶畻鍗�</el-button>
-          <el-button type="primary" @click="handleDownloadTemplate()">瀵煎嚭</el-button>
+          <!-- <el-button type="primary" @click="handleDownloadTemplate()">瀵煎嚭</el-button> -->
         </template>
       </ProTableQueryFilterBar>
       <ProTableV2
@@ -89,6 +89,8 @@
     </AppContainer>
     <UploadStatementDialog v-bind="dialogProps" />
     <SettleDetailDialog v-bind="dialogSettleProps" />
+    <RechargeEnterpriseWalletDialog v-bind="dialogRechargeProps" />
+    <AlipayWalletRecharge v-bind="dialogAlipayWalletProps" />
   </LoadingLayout>
 </template>
 
@@ -115,11 +117,14 @@
   EnumTaskSettlementOrderStatus,
   EnumTaskSettlementStatus,
 } from '@/constants';
-import { downloadFileByUrl } from '@/utils';
+import { downloadFileByUrl, setOssFileName } from '@/utils';
 import * as taskServices from '@/services/api/task';
+import * as enterpriseWalletServices from '@/services/api/enterpriseWallet';
 import { ModelValueType } from 'element-plus';
 import UploadStatementDialog from './components/UploadStatementDialog.vue';
 import SettleDetailDialog from './components/SettleDetailDialog.vue';
+import RechargeEnterpriseWalletDialog from './components/RechargeEnterpriseWalletDialog.vue';
+import AlipayWalletRecharge from './components/AlipayWalletRecharge.vue';
 import { Message } from '@bole-core/core';
 
 defineOptions({
@@ -201,12 +206,14 @@
       onClick: (role) => handleExport(role),
     },
     extraProps: {
-      hide: () => false,
+      hide: () => true,
     },
   },
 ]);
 
 const router = useRouter();
+
+const { userDetail } = useUser();
 
 const eventContext = useGlobalEventContext();
 
@@ -269,6 +276,10 @@
       settlementAmount: { type: 'money' },
       settlementTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
       settlementOrderTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
+      settlementOrderName: {
+        formatter: (row: API.GetSettlementTasksQueryResultItem) =>
+          row.settlementOrderName && setOssFileName(row.settlementOrderName),
+      },
     },
   }
 );
@@ -284,7 +295,7 @@
 });
 
 async function handleAddOrEdit() {
-  goDetail(editForm.id, editForm.settlementUrl[0]?.url);
+  goDetail(editForm.id, editForm.settlementUrl[0]?.path);
 }
 
 const {
@@ -298,7 +309,7 @@
     name: '',
     code: '',
     settlementUserCount: 0,
-    settlementAmount: 0,
+    actualSettlementAmount: 0,
   },
 });
 
@@ -307,10 +318,51 @@
     let params: API.SureTaskSettlementCommand = {
       taskInfoId: settleEditForm.id,
     };
-    let res = await taskServices.sureTaskSettlement(params);
+    let res = await taskServices.sureTaskSettlement(params, {
+      skipErrorHandler: true,
+    });
     if (res) {
       Message.successMessage('鎿嶄綔鎴愬姛');
       getList(paginationState.pageIndex);
+    }
+  } catch (error) {
+    if (error?.info?.errorCode == 's510') {
+      handleRechargeAdd();
+    }
+  }
+}
+
+const {
+  dialogProps: dialogRechargeProps,
+  handleAdd: handleRechargeAdd,
+  editForm: rechargeEditForm,
+} = useFormDialog({
+  onConfirm: rechargeEnterpriseWallet,
+  defaultFormParams: {
+    amount: null as number,
+    remark: '',
+  },
+});
+
+const { dialogProps: dialogAlipayWalletProps, handleAdd: handleAlipayWalletAdd } = useFormDialog({
+  onConfirm: rechargeEnterpriseWallet,
+  defaultFormParams: {
+    alipayUrl: '',
+  },
+});
+
+async function rechargeEnterpriseWallet() {
+  try {
+    let params: API.RechargeEnterpriseWalletCommand = {
+      access: EnumEnterpriseWalletAccess.Alipay,
+      amount: rechargeEditForm.amount,
+      remark: rechargeEditForm.remark,
+    };
+    let res = await enterpriseWalletServices.rechargeEnterpriseWallet(params);
+    if (res) {
+      handleAlipayWalletAdd({
+        alipayUrl: res.payUrl,
+      });
     }
   } catch (error) {}
 }
@@ -320,14 +372,14 @@
     id: row.id,
     name: row.name,
     code: row.code,
-    settlementUserCount: row.settlementUserCount,
-    settlementAmount: row.settlementAmount,
+    settlementUserCount: row.settlementUserCount ?? 0,
+    actualSettlementAmount: row.actualSettlementAmount ?? 0,
   });
 }
 
 async function handleRecall(row: API.GetSettlementTasksQueryResultItem) {
   try {
-    Message.tipMessage('纭瑕佹挙鍥炲悧锛�');
+    await Message.tipMessage('纭瑕佹挙鍥炲悧锛�');
     let params: API.RevokeTaskSettlementOrderCommand = {
       taskInfoId: row.id,
     };
@@ -343,19 +395,22 @@
   response: UploadUserFile & { file: File & { uid: number } },
   row: API.GetSettlementTasksQueryResultItem
 ) {
-  if (response.url) {
-    goDetail(row.id, response.url);
+  if (response.path) {
+    goDetail(row.id, response.path);
   }
 }
 
-function goDetail(id: string, url?: string) {
-  router.push({
+async function goDetail(id: string, url?: string) {
+  await router.push({
     name: 'ServiceChargeDetail',
-    query: {
+    params: {
       id: id,
+    },
+    query: {
       url: url ? url : '',
     },
   });
+  editForm.settlementUrl = [] as UploadUserFile[];
 }
 
 function handleExport(val) {
@@ -363,6 +418,9 @@
 }
 
 function handleDownloadTemplate() {
-  downloadFileByUrl('', '缁撶畻鍗曟ā鏉�');
+  downloadFileByUrl(
+    'https://parkmanagement.oss-cn-hangzhou.aliyuncs.com/FlexJob/temp/%E7%BB%93%E7%AE%97%E5%8D%95%E6%A8%A1%E6%9D%BF.xlsx',
+    '缁撶畻鍗曟ā鏉�'
+  );
 }
 </script>

--
Gitblit v1.9.1