From f8fd104213f6687ae5fcc479526f5ee9347ece6f Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期二, 09 九月 2025 17:00:47 +0800
Subject: [PATCH] fix: bug

---
 src/views/ServiceChargeManage/ServiceChargeDetail.vue |  148 +++++++++++++++++++++++++++++++++++++------------
 1 files changed, 112 insertions(+), 36 deletions(-)

diff --git a/src/views/ServiceChargeManage/ServiceChargeDetail.vue b/src/views/ServiceChargeManage/ServiceChargeDetail.vue
index 8c10aa8..de7d1ff 100644
--- a/src/views/ServiceChargeManage/ServiceChargeDetail.vue
+++ b/src/views/ServiceChargeManage/ServiceChargeDetail.vue
@@ -1,6 +1,6 @@
 <template>
   <LoadingLayout :loading="isLoading">
-    <AppScrollContainer>
+    <AppContainer>
       <ChunkCell title="缁撶畻鍗曡鎯�">
         <ProForm :model="form" ref="formRef" label-width="120px" :is-read="true">
           <ProFormCol>
@@ -34,12 +34,14 @@
           <ProFormCol>
             <ProFormColItem :span="8">
               <ProFormItemV2 label="缁撶畻閲戦:" prop="settlementAmount">
-                <ProFormInputNumber v-model="form.settlementAmount"> </ProFormInputNumber>
+                <ProFormInputNumber v-model="form.settlementAmount" format-value="money">
+                </ProFormInputNumber>
               </ProFormItemV2>
             </ProFormColItem>
             <ProFormColItem :span="8">
               <ProFormItemV2 label="瀹炲彂閲戦:" prop="actualSettlementAmount">
-                <ProFormInputNumber v-model="form.actualSettlementAmount"> </ProFormInputNumber>
+                <ProFormInputNumber v-model="form.actualSettlementAmount" format-value="money">
+                </ProFormInputNumber>
               </ProFormItemV2>
             </ProFormColItem>
           </ProFormCol>
@@ -67,7 +69,7 @@
           </el-steps>
         </div>
       </ChunkCell> -->
-      <ChunkCell title="缁撶畻鍚嶅崟">
+      <ChunkCell title="缁撶畻鍚嶅崟" style="flex: 1" class="settlement-user-list-chunk">
         <ProTableQueryFilterBar @on-reset="reset">
           <template #query>
             <QueryFilterItem>
@@ -84,28 +86,33 @@
         <ProTableV2
           v-bind="proTableProps"
           :columns="SettlementListColumns"
-          :operationBtns="operationBtns"
+          :show-operation-column="false"
           :auto-height="false"
           ref="proTable"
           :tableProps="{
-            maxHeight: '400px',
+            maxHeight: '250px',
           }"
         >
         </ProTableV2>
         <div class="chuck-add-or-edit-actions">
-          <el-button @click="handleBack">鍙栨秷</el-button>
-          <el-button class="chuck-add-or-edit-actions" type="primary" @click="handleSubmit"
+          <el-button class="chuck-add-or-edit-actions" @click="handleBack">鍙栨秷</el-button>
+          <el-button
+            v-if="!isDetail"
+            class="chuck-add-or-edit-actions"
+            type="primary"
+            @click="handleSubmit"
             >纭</el-button
           >
         </div>
       </ChunkCell>
-    </AppScrollContainer>
+    </AppContainer>
     <EditAccountInfoDialog v-bind="dialogProps"></EditAccountInfoDialog>
   </LoadingLayout>
 </template>
 <script setup lang="ts">
 import {
   LoadingLayout,
+  AppContainer,
   AppScrollContainer,
   ChunkCell,
   ProForm,
@@ -122,6 +129,7 @@
   QueryFilterItem,
   ProTableQueryFilterBar,
   useFormDialog,
+  XLSXUtils,
 } from '@bole-core/components';
 import { SettlementListColumns } from './constants';
 import { useQuery } from '@tanstack/vue-query';
@@ -129,7 +137,7 @@
 import * as taskUserServices from '@/services/api/taskUser';
 import EditAccountInfoDialog from './components/EditAccountInfoDialog.vue';
 import { Message } from '@bole-core/core';
-import { paginateList } from '@/utils';
+import { paginateList, setOssFileName, toThousand } from '@/utils';
 
 defineOptions({
   name: 'ServiceChargeDetail',
@@ -150,8 +158,10 @@
 ]);
 
 const route = useRoute();
-const id = (route.query.id as string) ?? '';
+const id = (route.params.id as string) ?? '';
 const url = (route.query.url as string) ?? '';
+
+const isDetail = computed(() => !url);
 
 const form = reactive({
   name: '',
@@ -160,26 +170,82 @@
   code: '',
   settlementOrderName: '',
   settlementOrderTime: '',
+  settlementTaskUsers: [] as API.GetSettlementTaskUsersQueryResultItem[],
 });
 
+const BaseState = {
+  loading: true,
+};
+
+const state = reactive({ ...BaseState });
+
+// onMounted(async () => {
+//   await getList();
+//   state.loading = false;
+// });
+
+// const { isLoading } = useQuery({
+//   queryKey: ['taskServices/getSettlementTask', id],
+//   queryFn: async () => {
+//     return await taskServices.getSettlementTask(
+//       { id: id },
+//       {
+//         showLoading: false,
+//       }
+//     );
+//   },
+//   placeholderData: () => ({} as API.GetSettlementTaskQueryResult),
+//   onSuccess(data) {
+//     form.name = data.name;
+//     form.settlementAmount = data.settlementAmount ?? 0;
+//     form.actualSettlementAmount = data.actualSettlementAmount ?? 0;
+//     form.code = data.code;
+//     form.settlementOrderName = setOssFileName(data.settlementOrderName);
+//     form.settlementOrderTime = data.settlementOrderTime ?? '';
+//   },
+//   enabled: !!id,
+// });
 const { isLoading } = useQuery({
-  queryKey: ['taskServices/getSettlementTask', id],
+  queryKey: ['taskUserServices/getSettlementTaskUsers', id, url],
   queryFn: async () => {
-    return await taskServices.getSettlementTask(
-      { id: id },
+    return await taskUserServices.getSettlementTaskUsers(
+      { taskInfoId: id, settlementOrderUrl: url },
       {
         showLoading: false,
       }
     );
   },
-  placeholderData: () => ({} as API.GetSettlementTaskQueryResult),
-  onSuccess(data) {
-    form.name = data.name;
-    form.settlementAmount = data.settlementAmount;
-    form.actualSettlementAmount = data.actualSettlementAmount;
-    form.code = data.code;
-    form.settlementOrderName = data.settlementOrderName;
-    form.settlementOrderTime = data.settlementOrderTime;
+  placeholderData: () => ({} as API.GetSettlementTaskUsersQueryResult),
+  onSuccess(res) {
+    form.settlementTaskUsers = res?.data ?? [];
+    if (res?.detail) {
+      form.name = res?.detail?.name;
+      form.settlementAmount = res?.detail?.settlementAmount ?? 0;
+      form.actualSettlementAmount = res?.detail?.actualSettlementAmount ?? 0;
+      form.code = res?.detail?.code;
+      form.settlementOrderName = setOssFileName(res?.detail?.settlementOrderName);
+      form.settlementOrderTime = res?.detail?.settlementOrderTime ?? '';
+    }
+    if (res?.errors?.length > 0) {
+      Message.tipMessage('瀛樺湪瀵煎叆閿欒鐨勬暟鎹紝鏄惁瀵煎嚭锛�').then(() => {
+        XLSXUtils.exportToXLSX({
+          workbookDataList: res.errors,
+          fileName: '缁撶畻瀵煎叆-閿欒鏁版嵁',
+          workbookHeaderMap: {
+            name: '濮撳悕',
+            identity: '韬唤璇佸彿',
+            taskName: '浠诲姟鍚嶇О',
+            settlementAmount: '缁撶畻閲戦',
+            actualSettlementAmount: '瀹炲彂閲戦',
+            receiveAccount: '鏀舵璐︽埛',
+            bank: '鎵�灞為摱琛�',
+            bankBranch: '寮�鎴锋敮琛屽悕绉�',
+            errorMessage: '閿欒淇℃伅',
+          },
+        });
+      });
+    }
+    getList();
   },
   enabled: !!id,
 });
@@ -193,13 +259,9 @@
 } = useTable(
   async ({ pageIndex, pageSize }, extraParamState) => {
     try {
-      let params: API.APIgetSettlementTaskUsersParams = {
-        taskInfoId: id,
-        settlementOrderUrl: url,
-      };
-      let res = await taskUserServices.getSettlementTaskUsers(params);
+      let list = [...form.settlementTaskUsers];
       if (extraParamState.keywords) {
-        res.data = res.data.filter((item) => {
+        list = list?.filter((item) => {
           return (
             item.name.includes(extraParamState.keywords) ||
             item.contactPhoneNumber.includes(extraParamState.keywords) ||
@@ -207,13 +269,14 @@
           );
         });
       }
+
       return Promise.resolve({
         pageModel: {
           rows: pageSize,
           page: pageIndex,
-          totalCount: res.data.length,
+          totalCount: list.length,
         },
-        data: paginateList(res.data, pageIndex, pageSize),
+        data: paginateList(list, pageIndex, pageSize),
       });
     } catch (error) {
       console.log('error: ', error);
@@ -225,7 +288,11 @@
       orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
     },
     queryKey: ['taskUserServices/getSettlementTaskUsers'],
-    columnsRenderProps: {},
+    columnsRenderProps: {
+      settlementTime: { type: 'date' },
+      settlementAmount: { type: 'money' },
+      actualSettlementAmount: { type: 'money' },
+    },
   }
 );
 
@@ -253,7 +320,12 @@
     let params: API.SureTaskSettlementOrderCommand = {
       taskInfoId: id,
       settlementOrderUrl: url,
-      taskInfoUsers: [],
+      taskInfoUsers:
+        proTableProps.value.tableData?.length > 0
+          ? proTableProps.value.tableData.map(
+              (x) => ({ ...x } as API.SureTaskSettlementOrderCommandUser)
+            )
+          : [],
     };
     let res = await taskServices.sureTaskSettlementOrder(params);
     if (res) {
@@ -269,10 +341,6 @@
     name: 'ServiceChargeManageList',
   });
 }
-
-onMounted(() => {
-  getList();
-});
 </script>
 
 <style lang="scss" scoped>
@@ -282,6 +350,14 @@
   margin: 0 auto;
   padding: 24px 0;
 }
+
+.settlement-user-list-chunk {
+  :deep() {
+    .no-data img {
+      width: 280px;
+    }
+  }
+}
 </style>
 <style lang="scss">
 .text-over-tooltip-content {

--
Gitblit v1.9.1