From e2cbcd64dd60014d82bd898ae51fd827e01e9c18 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期日, 19 十月 2025 16:28:39 +0800
Subject: [PATCH] feat: 1.2.0.1

---
 apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue |  188 ++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 171 insertions(+), 17 deletions(-)

diff --git a/apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue b/apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue
index bdc50ab..c62350c 100644
--- a/apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue
+++ b/apps/bMiniApp/src/subpackages/payrollManage/payrollManageDetail/InnerPage.vue
@@ -2,9 +2,48 @@
   <LoadingLayout>
     <ContentView>
       <div class="payroll-manage-detail-top">
-        <div class="payroll-manage-detail-top-title"></div>
+        <div class="payroll-manage-detail-top-title">浠诲姟淇℃伅</div>
         <div class="payroll-manage-detail-top-content">
-          <div class="payroll-manage-detail-top-content-item"></div>
+          <div class="payroll-manage-detail-top-content-item">
+            <div class="payroll-manage-detail-top-content-item-label">浠诲姟鍚嶇О锛�</div>
+            <div class="payroll-manage-detail-top-content-item-text">{{ form.name }}</div>
+          </div>
+          <div class="payroll-manage-detail-top-content-item">
+            <div class="payroll-manage-detail-top-content-item-label">鏈嶅姟璐归噾棰濓細</div>
+            <div class="payroll-manage-detail-top-content-item-text">
+              {{ `${form.serviceFee ?? 0}${EnumBillingMethodText[form.billingMethod]}` }}
+            </div>
+          </div>
+          <div class="payroll-manage-detail-top-content-item">
+            <div class="payroll-manage-detail-top-content-item-label">缁撶畻浜烘暟锛�</div>
+            <div class="payroll-manage-detail-top-content-item-text">
+              {{ `${form.settlementCount ?? 0}浜篳 }}
+            </div>
+          </div>
+          <div class="payroll-manage-detail-top-content-item">
+            <div class="payroll-manage-detail-top-content-item-label">缁撶畻閲戦锛�</div>
+            <div class="payroll-manage-detail-top-content-item-text">
+              {{ `${toThousand(form.settlementAmount ?? 0)}鍏僠 }}
+            </div>
+          </div>
+          <div
+            class="payroll-manage-detail-top-content-item"
+            v-if="form.auditStatus !== EnumTaskSettlementAuditStatus.Wait"
+          >
+            <div class="payroll-manage-detail-top-content-item-label">瀹℃牳鏃堕棿锛�</div>
+            <div class="payroll-manage-detail-top-content-item-text">
+              {{ dayjs(form.auditTime).format('YYYY-MM-DD') }}
+            </div>
+          </div>
+          <div
+            class="payroll-manage-detail-top-content-item"
+            v-if="form.settlementStatus === EnumTaskSettlementStatus.Completed"
+          >
+            <div class="payroll-manage-detail-top-content-item-label">缁撶畻鏃堕棿锛�</div>
+            <div class="payroll-manage-detail-top-content-item-text">
+              {{ dayjs(form.settlementTime).format('YYYY-MM-DD') }}
+            </div>
+          </div>
         </div>
       </div>
       <ChunkTitle title="浜哄憳鍒楄〃" />
@@ -19,22 +58,40 @@
           :name="item.name"
           :gender="item.gender"
           :isReal="item.isReal"
-          :contactPhoneNumber="item.contactPhoneNumber"
-          :checkReceiveStatus="item.checkReceiveStatus"
+          :totalWorkHours="item.totalWorkHours"
+          :settlementAmount="item.settlementAmount"
         />
       </template>
     </InfiniteLoading>
+    <PageFooter v-if="form.">
+      <PageFooterBtn type="primary" @click="auditTaskSettlement(EnumTaskSettlementAuditStatus.Pass)"
+        >瀹℃牳閫氳繃</PageFooterBtn
+      >
+      <PageFooterBtn
+        type="primary"
+        plain
+        @click="auditTaskSettlement(EnumTaskSettlementAuditStatus.Fail)"
+        >椹冲洖</PageFooterBtn
+      >
+    </PageFooter>
   </LoadingLayout>
 </template>
 
 <script setup lang="ts">
 import Taro from '@tarojs/taro';
-import * as taskCheckReceiveServices from '@12333/services/apiV2/taskCheckReceive';
-import { useCheckReceiveTaskUserSubmits, useInfiniteLoading } from '@12333/hooks';
+import * as taskUserServices from '@12333/services/apiV2/taskUser';
+import * as taskServices from '@12333/services/apiV2/task';
+import { useInfiniteLoading } from '@12333/hooks';
+import {
+  EnumBillingMethodText,
+  EnumTaskSettlementAuditStatus,
+  EnumTaskSettlementStatus,
+} from '@12333/constants';
 import PayrollManageDetailCard from '../components/PayrollManageDetailCard.vue';
-import { EnumTaskCheckReceiveStatus } from '@12333/constants';
-import { setOSSLink } from '@12333/utils';
+import { Message, paginateList, setOSSLink, toThousand } from '@12333/utils';
+import { useQuery } from '@tanstack/vue-query';
 import dayjs from 'dayjs';
+import { goBack } from '@/utils';
 
 defineOptions({
   name: 'InnerPage',
@@ -42,27 +99,124 @@
 
 const router = Taro.useRouter();
 const id = router.params?.id ?? '';
-const date = router.params?.date ?? '';
-const checkReceiveStatus = Number(router.params?.checkReceiveStatus);
+const operatorToken = router.params?.operatorToken ?? '';
 
-const { infiniteLoadingProps } = useInfiniteLoading(
+const form = reactive({
+  name: '',
+  serviceFee: 0,
+  settlementCount: 0,
+  settlementAmount: 0,
+  settlementTime: '',
+  auditTime: '',
+  auditStatus: 0,
+  billingMethod: 0,
+  settlementStatus: 0,
+});
+
+const {
+  isLoading,
+  isError,
+  data: detail,
+  refetch,
+} = useQuery({
+  queryKey: ['taskUserServices/getSettlementTaskUsers', id, operatorToken],
+  queryFn: async () => {
+    let res = await taskUserServices.getSettlementTaskUsers(
+      { id: id, operatorToken: operatorToken },
+      {
+        showLoading: false,
+      }
+    );
+    if (res) {
+      form.name = res.detail?.name;
+      form.serviceFee = res.detail?.serviceFee;
+      form.settlementCount = res.data?.length;
+      form.settlementAmount = res.detail?.settlementAmount;
+      form.settlementTime = res.detail?.settlementTime;
+      form.auditTime = res.detail?.auditTime;
+      form.auditStatus = res.detail?.auditStatus;
+      form.settlementStatus = res.detail?.settlementStatus;
+      form.billingMethod = res.detail?.billingMethod;
+    }
+    return res;
+  },
+  placeholderData: () => ({} as API.GetSettlementTaskUsersQueryResult),
+});
+
+const { infiniteLoadingProps, invalidateQueries } = useInfiniteLoading(
   ({ pageParam }) => {
     let params: API.GetCheckReceiveTaskQuery = {
       pageModel: {
         rows: 20,
         page: pageParam,
       },
-      taskInfoId: id,
-      date: dayjs(date).format('YYYY-MM-DD'),
-      checkReceiveStatus: 30,
     };
 
-    return taskCheckReceiveServices.getCheckReceiveTask(params, {
-      showLoading: false,
+    return Promise.resolve({
+      pageModel: {
+        rows: 20,
+        page: pageParam,
+        totalCount: detail.value?.data.length,
+      },
+      data: paginateList(detail.value?.data, pageParam, 20),
     });
   },
   {
-    queryKey: ['taskCheckReceiveServices/getCheckReceiveTask'],
+    enabled: computed(() => !!detail.value?.data),
   }
 );
+
+async function auditTaskSettlement(auditStatus: EnumTaskSettlementAuditStatus) {
+  try {
+    let params: API.AuditTaskSettlementCommand = {
+      id: id,
+      operatorToken: operatorToken,
+      auditStatus: auditStatus,
+    };
+    let res = await taskServices.auditTaskSettlement(params);
+    if (res) {
+      Message.success('鎿嶄綔鎴愬姛', {
+        onClosed() {
+          goBack();
+        },
+      });
+    }
+  } catch (error) {}
+}
 </script>
+
+<style lang="scss">
+@import '@/styles/common.scss';
+
+.payrollManageDetail-page-wrapper {
+  .payroll-manage-detail-top {
+    padding: 24px 32px;
+    margin-bottom: 24px;
+    background-color: #fff;
+    border-radius: 12px;
+
+    .payroll-manage-detail-top-title {
+      font-size: 32px;
+      font-weight: bold;
+      margin-bottom: 14px;
+    }
+
+    .payroll-manage-detail-top-content {
+      .payroll-manage-detail-top-content-item {
+        font-size: 24px;
+        line-height: 40px;
+
+        .payroll-manage-detail-top-content-item-label {
+          display: inline-flex;
+          color: boleGetCssVar('text-color', 'primary');
+        }
+
+        .payroll-manage-detail-top-content-item-text {
+          display: inline-flex;
+          color: boleGetCssVar('text-color', 'regular');
+        }
+      }
+    }
+  }
+}
+</style>

--
Gitblit v1.9.1