From 2b7fccce78fe4d57d73f4cf350cbe16b75a72fd4 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期五, 08 八月 2025 14:34:36 +0800
Subject: [PATCH] fix: 任务详情

---
 apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue |  113 ++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 93 insertions(+), 20 deletions(-)

diff --git a/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue b/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue
index 8986d91..b599bbe 100644
--- a/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue
@@ -1,29 +1,84 @@
 <template>
   <LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch">
     <ContentScrollView style="background-color: transparent">
-      <Cell :title="'瀹㈡埧鏈嶅姟鍛�'" titleSize="large">
+      <Cell :title="detail?.name ?? ''" titleSize="large">
         <template #title-right>
-          <img :src="IconAttentioActive" class="taskDetail-attention-icon" />
+          <img
+            :src="detail.isCollected ? IconAttentioActive : IconAttention"
+            class="taskDetail-attention-icon"
+          />
         </template>
-        <div class="taskDetail-time">2025骞�2鏈�5鏃� 鑷� 2025骞�3鏈�5鏃�</div>
+        <div class="taskDetail-time">
+          {{ dayjs(detail?.beginTime).format('YYYY骞碝M鏈圖D鏃�') }} 鑷�
+          {{ dayjs(detail?.endTime).format('YYYY骞碝M鏈圖D鏃�') }}
+        </div>
         <div class="task-card-welfare-wrapper">
           <div class="task-card-welfare-list">
-            <div class="task-card-welfare-list-item">鏃ョ粨</div>
-            <div class="task-card-welfare-list-item">鐢峰コ涓嶉檺</div>
-            <div class="task-card-welfare-list-item">鍖呬笁椁�</div>
+            <div class="task-card-welfare-list-item">
+              {{ EnumSettlementCycleText[detail.settlementCycle] }}
+            </div>
+            <!-- <div class="task-card-welfare-list-item">
+              {{ TaskUtils.getGenderText(detail.genderLimit) }}
+            </div> -->
           </div>
-          <TaskPrice :value="212" />
+          <TaskPrice
+            :value="detail.serviceFee ?? 0"
+            :unit="BillingMethodEnumUnit[detail.billingMethod]"
+          />
         </div>
         <div class="taskDetail-address-wrapper">
           <div class="taskDetail-address-title-wrapper">
-            <img :src="IconAttentioActive" class="taskDetail-address-title-icon" />
-            <div class="taskDetail-address-title">瀹佹尝鏌忔偊閰掑簵</div>
+            <img :src="IconLocaltion" class="taskDetail-address-title-icon" />
+            <div class="taskDetail-address-title">{{ detail?.addressName ?? '' }}</div>
           </div>
           <div class="taskDetail-address-info-wrapper">
-            <div class="taskDetail-address-info">瀹佹尝甯傞劄宸炲尯涓滈挶婀栧ぇ鍫拌矾188鍙峰畞娉㈡煆鎮﹂厭搴�</div>
-            <RectRight :size="6" class="taskDetail-address-info-icon" />
+            <div class="taskDetail-address-info">{{ detail?.addressDetail ?? '' }}</div>
+            <RectRight :size="8" class="taskDetail-address-info-icon" />
           </div>
         </div>
+      </Cell>
+      <Cell :show-title="false">
+        <CellChunk title="绂忓埄淇℃伅">
+          <div class="taskDetail-welfare-list">
+            <TaskDetailWelfareItem
+              v-for="benefit in detail.benefits"
+              :key="benefit.benefitCode"
+              :icon="IconAttentioActive"
+              :text="benefit.benefitContent"
+            />
+          </div>
+        </CellChunk>
+        <CellChunk title="鎶ュ悕鏉′欢">
+          <div class="taskDetail-limit-list">
+            <div class="taskDetail-limit-list-item">
+              <div class="taskDetail-limit-list-item-label">骞撮緞锛�</div>
+              <div class="taskDetail-limit-list-item-text">
+                {{ detail.ageMinLimit ?? 0 }}-{{ detail.ageMaxLimit ?? 0 }}宀�
+              </div>
+            </div>
+            <div class="taskDetail-limit-list-item">
+              <div class="taskDetail-limit-list-item-label">鎬у埆锛�</div>
+              <div class="taskDetail-limit-list-item-text">
+                {{ TaskUtils.getGenderText(detail.genderLimit) }}
+              </div>
+            </div>
+            <div class="taskDetail-limit-list-item">
+              <template v-if="detail?.credentialLimits?.length > 0">
+                <div class="taskDetail-limit-list-item-label">璧勬牸璇佷功锛�</div>
+                <div class="taskDetail-limit-list-item-text">
+                  {{ TaskUtils.getCredentialLimit(detail?.credentialLimits) }}
+                </div>
+              </template>
+            </div>
+          </div>
+        </CellChunk>
+        <CellChunk title="鍙戝竷鑰呬俊鎭�">
+          <CompanyDesc
+            @click="goCompanyDetail"
+            :enterpriseName="detail?.enterpriseName ?? ''"
+            :taskCount="detail?.taskCount ?? 0"
+          ></CompanyDesc>
+        </CellChunk>
       </Cell>
       <Cell>
         <template #title>
@@ -45,7 +100,8 @@
         :isFlex="false"
         openType="share"
       ></PageFooterAction>
-      <PageFooterBtn type="primary">鎶ュ悕</PageFooterBtn>
+      <PageFooterAction :icon="IconPhone" text="鎵嬫満" :isFlex="false"></PageFooterAction>
+      <PageFooterBtn type="primary">鎶ュ悕锛�5浜哄凡鎶ュ悕锛�</PageFooterBtn>
     </PageFooter>
   </LoadingLayout>
 </template>
@@ -53,19 +109,30 @@
 <script setup lang="ts">
 import Taro from '@tarojs/taro';
 import { useQuery } from '@tanstack/vue-query';
-import * as orderServices from '@12333/services/api/Order';
+import * as taskServices from '@12333/services/apiV2/task';
 import { useToggle } from 'senin-mini/hooks';
-import { TaskPrice } from '@12333/components';
+import { TaskPrice, TaskDetailWelfareItem } from '@12333/components';
 import IconAttention from '@/assets/task/icon-attention.png';
 import IconAttentioActive from '@/assets/task/icon-attention-active.png';
 import { RectRight } from '@nutui/icons-vue-taro';
 import IconShare from '@/assets/task/icon-share.png';
+import IconPhone from '@/assets/task/icon-phone.png';
 import IconSafe from '@/assets/task/icon-safe.png';
+import IconLocaltion from '@/assets/task/icon-localtion.png';
 import './taskDetail.scss';
+import CompanyDesc from '../components/CompanyDesc.vue';
+import dayjs from 'dayjs';
+import { TaskUtils } from '@12333/utils';
+import { EnumSettlementCycleText, BillingMethodEnumUnit } from '@12333/constants';
+import { useAccessLogin } from '@/hooks';
 
 defineOptions({
   name: 'InnerPage',
 });
+
+/**
+ * TODO 缂哄皯宸叉姤鍚嶄汉鏁� 鎵嬫満 鎶曡瘔涓炬姤鎺ュ彛
+ */
 
 const router = Taro.useRouter();
 const taskId = router.params?.id ?? '';
@@ -76,26 +143,32 @@
   data: detail,
   refetch,
 } = useQuery({
-  queryKey: ['orderServices/getOrdeForDetail', taskId],
+  queryKey: ['taskServices/getTaskInfo', taskId],
   queryFn: async () => {
-    return await orderServices.getOrdeForDetail(
+    return await taskServices.getTaskInfo(
       { id: taskId },
       {
         showLoading: false,
       }
     );
   },
-  placeholderData: () => ({} as API.OrderInfoDto),
+  placeholderData: () => ({} as API.GetTaskInfoQueryResult),
   onSuccess(data) {
-    if (data.isExistTradeChatRecord) setTrue();
+    // if (data.isExistTradeChatRecord) setTrue();
   },
 });
 
 const { isCollapse, setTrue } = useToggle();
 
-function goComplaint() {
+const goComplaint = useAccessLogin(() => {
   Taro.navigateTo({
     url: `${RouterPath.complaint}?id=${taskId}`,
   });
-}
+});
+
+const goCompanyDetail = useAccessLogin(() => {
+  Taro.navigateTo({
+    url: `${RouterPath.companyDetail}?id=${taskId}`,
+  });
+});
 </script>

--
Gitblit v1.9.1