From a4907e75088054574d7dce76c9995502779c5eeb Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期四, 14 八月 2025 11:28:00 +0800
Subject: [PATCH] Merge branch 'master' of http://120.26.58.240:8888/r/flexJobMiniApp

---
 apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue |  132 +++++++++++++++++++++++++++++++++++++++----
 1 files changed, 118 insertions(+), 14 deletions(-)

diff --git a/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue b/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue
index b599bbe..fc871cd 100644
--- a/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue
@@ -4,9 +4,24 @@
       <Cell :title="detail?.name ?? ''" titleSize="large">
         <template #title-right>
           <img
+            v-if="from === 'apply'"
             :src="detail.isCollected ? IconAttentioActive : IconAttention"
             class="taskDetail-attention-icon"
+            @click="handleAttention"
           />
+          <div
+            v-if="from === 'sign'"
+            :style="{ color: GetPersonalApplyTaskInfosQueryStatusColor[detail.applyButton] }"
+          >
+            {{ GetTaskInfoQueryResultApplyButtonText[detail.applyButton] }}
+          </div>
+          <div
+            v-if="from === 'hire'"
+            :style="{ color: GetPersonalHireTaskInfosQueryStatusColor[detail.hireButton] }"
+          >
+            {{ GetTaskInfoQueryResultHireButtonText[detail.hireButton] }}
+          </div>
+          <div v-if="from === 'cancel'" :style="{ color: '#999999' }">宸插彇娑�</div>
         </template>
         <div class="taskDetail-time">
           {{ dayjs(detail?.beginTime).format('YYYY骞碝M鏈圖D鏃�') }} 鑷�
@@ -22,7 +37,7 @@
             </div> -->
           </div>
           <TaskPrice
-            :value="detail.serviceFee ?? 0"
+            :value="toThousand(detail.serviceFee ?? 0)"
             :unit="BillingMethodEnumUnit[detail.billingMethod]"
           />
         </div>
@@ -43,7 +58,7 @@
             <TaskDetailWelfareItem
               v-for="benefit in detail.benefits"
               :key="benefit.benefitCode"
-              :icon="IconAttentioActive"
+              :icon="setOSSLink(benefit.benefitField2)"
               :text="benefit.benefitContent"
             />
           </div>
@@ -100,8 +115,36 @@
         :isFlex="false"
         openType="share"
       ></PageFooterAction>
-      <PageFooterAction :icon="IconPhone" text="鎵嬫満" :isFlex="false"></PageFooterAction>
-      <PageFooterBtn type="primary">鎶ュ悕锛�5浜哄凡鎶ュ悕锛�</PageFooterBtn>
+      <PageFooterAction
+        :icon="IconPhone"
+        text="鎵嬫満"
+        :isFlex="false"
+        @click="handleCall"
+      ></PageFooterAction>
+      <PageFooterBtn v-if="from === 'sign'" type="primary" disabled>
+        {{ GetTaskInfoQueryResultApplyButtonText[detail.applyButton] }}
+      </PageFooterBtn>
+      <PageFooterBtn
+        v-if="from === 'hire'"
+        type="primary"
+        :disabled="detail?.hireButton !== GetTaskInfoQueryResultHireButton.ApplyCheckReceive"
+        @click="handleHire"
+      >
+        {{ GetTaskInfoQueryResultHireButtonText[detail.hireButton] }}
+      </PageFooterBtn>
+      <template v-if="from === 'apply'">
+        <PageFooterBtn
+          v-if="detail?.releaseStatus === EnumTaskReleaseStatus.InProcess"
+          type="primary"
+          @click="handleApply"
+          :disabled="!!detail?.hireStatus"
+          >{{ `鎶ュ悕锛�${detail?.applyCount ?? 0}浜哄凡鎶ュ悕锛塦 }}</PageFooterBtn
+        >
+
+        <PageFooterBtn v-if="detail.releaseStatus === EnumTaskReleaseStatus.Stopped" color="#999999"
+          >宸插仠姝�</PageFooterBtn
+        >
+      </template>
     </PageFooter>
   </LoadingLayout>
 </template>
@@ -110,6 +153,7 @@
 import Taro from '@tarojs/taro';
 import { useQuery } from '@tanstack/vue-query';
 import * as taskServices from '@12333/services/apiV2/task';
+import * as taskUserServices from '@12333/services/apiV2/taskUser';
 import { useToggle } from 'senin-mini/hooks';
 import { TaskPrice, TaskDetailWelfareItem } from '@12333/components';
 import IconAttention from '@/assets/task/icon-attention.png';
@@ -122,8 +166,17 @@
 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 { TaskUtils, toThousand, setOSSLink, Message } from '@12333/utils';
+import {
+  EnumSettlementCycleText,
+  BillingMethodEnumUnit,
+  EnumTaskReleaseStatus,
+  GetPersonalApplyTaskInfosQueryStatusColor,
+  GetTaskInfoQueryResultApplyButtonText,
+  GetPersonalHireTaskInfosQueryStatusColor,
+  GetTaskInfoQueryResultHireButtonText,
+  GetTaskInfoQueryResultHireButton,
+} from '@12333/constants';
 import { useAccessLogin } from '@/hooks';
 
 defineOptions({
@@ -131,11 +184,12 @@
 });
 
 /**
- * TODO 缂哄皯宸叉姤鍚嶄汉鏁� 鎵嬫満 鎶曡瘔涓炬姤鎺ュ彛
+ * TODO 缂哄皯 鎶曡瘔涓炬姤鎺ュ彛
  */
 
 const router = Taro.useRouter();
-const taskId = router.params?.id ?? '';
+const id = router.params?.id ?? '';
+const from = router.params?.from ?? '';
 
 const {
   isLoading,
@@ -143,10 +197,10 @@
   data: detail,
   refetch,
 } = useQuery({
-  queryKey: ['taskServices/getTaskInfo', taskId],
+  queryKey: ['taskServices/getTaskInfo', id],
   queryFn: async () => {
     return await taskServices.getTaskInfo(
-      { id: taskId },
+      { id: id },
       {
         showLoading: false,
       }
@@ -162,13 +216,63 @@
 
 const goComplaint = useAccessLogin(() => {
   Taro.navigateTo({
-    url: `${RouterPath.complaint}?id=${taskId}`,
+    url: `${RouterPath.complaint}?id=${id}`,
   });
 });
 
 const goCompanyDetail = useAccessLogin(() => {
-  Taro.navigateTo({
-    url: `${RouterPath.companyDetail}?id=${taskId}`,
-  });
+  if (detail.value.enterpriseId) {
+    Taro.navigateTo({
+      url: `${RouterPath.companyDetail}?id=${detail.value.enterpriseId}`,
+    });
+  }
 });
+
+const handleApply = useAccessLogin(async () => {
+  try {
+    let params: API.ApplyTaskCommand = {
+      ids: [id],
+    };
+    let res = await taskUserServices.applyTask(params);
+    if (res) {
+      Message.success('鎶ュ悕鎴愬姛');
+      refetch({ type: 'inactive' });
+    }
+  } catch (error) {}
+});
+
+const handleAttention = useAccessLogin(async () => {
+  try {
+    // await Message.confirm({
+    //   message: `纭畾${detail.value?.isCollected ? '鍙栨秷鏀惰棌' : '鏀惰棌'}鍚楋紵`,
+    // });
+    let params: API.CollectTaskCommand = {
+      ids: [id],
+      isCollect: !detail.value?.isCollected,
+    };
+    let res = await taskUserServices.collectTask(params);
+    if (res) {
+      refetch({ type: 'inactive' });
+      // Message.success('鎿嶄綔鎴愬姛', {
+      //   onClosed() {
+      //     refetch({ type: 'inactive' });
+      //   },
+      // });
+    }
+  } catch (error) {}
+});
+
+const handleCall = useAccessLogin(() => {
+  if (detail.value.contactPhoneNumber) {
+    Taro.makePhoneCall({
+      phoneNumber: detail.value.contactPhoneNumber,
+    });
+  }
+});
+
+function handleHire() {
+  Taro.navigateTo({
+    url: `${RouterPath.taskSubmitCheck}?id=${id}`,
+  });
+}
 </script>

--
Gitblit v1.9.1