From 6244c26cd11f6446b39c0ad50c8223b379e5258a Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期五, 07 十一月 2025 19:05:47 +0800
Subject: [PATCH] fix: bug
---
apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue | 293 +++++++++++++++++++++++++++++++++++++++-------------------
1 files changed, 196 insertions(+), 97 deletions(-)
diff --git a/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue b/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue
index 56f23c6..d7a1d9c 100644
--- a/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue
+++ b/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue
@@ -1,72 +1,54 @@
<template>
<LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch">
<ContentScrollView style="background-color: transparent">
- <Cell :title="'瀹㈡埧鏈嶅姟鍛�'" titleSize="large">
+ <TaskDetailView :detail="detail">
<template #title-right>
- <img :src="IconAttentioActive" class="taskDetail-attention-icon" />
+ <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">2025骞�2鏈�5鏃� 鑷� 2025骞�3鏈�5鏃�</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>
- <TaskPrice :value="212" />
- </div>
- <div class="taskDetail-address-wrapper">
- <div class="taskDetail-address-title-wrapper">
- <img :src="IconLocaltion" class="taskDetail-address-title-icon" />
- <div class="taskDetail-address-title">瀹佹尝鏌忔偊閰掑簵</div>
- </div>
- <div class="taskDetail-address-info-wrapper">
- <div class="taskDetail-address-info">瀹佹尝甯傞劄宸炲尯涓滈挶婀栧ぇ鍫拌矾188鍙峰畞娉㈡煆鎮﹂厭搴�</div>
- <RectRight :size="8" class="taskDetail-address-info-icon" />
- </div>
- </div>
- </Cell>
- <Cell :show-title="false">
- <CellChunk title="绂忓埄淇℃伅">
- <div class="taskDetail-welfare-list">
- <TaskDetailWelfareItem :icon="IconAttentioActive" text="楂樻俯琛ヨ创" />
- <TaskDetailWelfareItem :icon="IconAttentioActive" text="楂樻俯琛ヨ创" />
- <TaskDetailWelfareItem :icon="IconAttentioActive" text="楂樻俯琛ヨ创" />
- <TaskDetailWelfareItem :icon="IconAttentioActive" text="楂樻俯琛ヨ创" />
- <TaskDetailWelfareItem :icon="IconAttentioActive" text="楂樻俯琛ヨ创" />
- </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">18-45宀�</div>
- </div>
- <div class="taskDetail-limit-list-item">
- <div class="taskDetail-limit-list-item-label">鎬у埆锛�</div>
- <div class="taskDetail-limit-list-item-text">涓嶉檺</div>
- </div>
- <div class="taskDetail-limit-list-item">
- <div class="taskDetail-limit-list-item-label">璧勬牸璇佷功锛�</div>
- <div class="taskDetail-limit-list-item-text">鍋ュ悍璇�</div>
- </div>
- </div>
- </CellChunk>
- <CellChunk title="鍙戝竷鑰呬俊鎭�">
- <CompanyDesc @click="goCompanyDetail"></CompanyDesc>
- </CellChunk>
- </Cell>
- <Cell>
- <template #title>
- <div class="safe-cell-title-wrapper">
- <img :src="IconSafe" class="safe-cell-title-icon" />
- <div class="safe-cell-title">瀹夊叏鎻愮ず</div>
- </div>
+ <template #companyDesc>
+ <CellChunk title="鍙戝竷鑰呬俊鎭�">
+ <CompanyDesc
+ @click="goCompanyDetail"
+ :enterpriseName="detail?.enterpriseName ?? ''"
+ :taskCount="detail?.taskCount ?? 0"
+ :isReal="detail?.isReal ?? false"
+ :supplierEnterpriseName="detail?.supplierEnterpriseName ?? ''"
+ ></CompanyDesc>
+ </CellChunk>
</template>
- <div class="safe-cell-content">
- 璇ヤ俊鎭敱鐢ㄦ埛鑷富鍙戝竷锛屽閬囪櫄鍋囦俊鎭�佽瘓楠椼�佷紶閿�绛夎繚娉曡繚瑙勮涓猴紝璇风珛鍗�
- <div class="safe-cell-content-btn" @click="goComplaint">鎶曡瘔涓炬姤</div>
- </div>
- </Cell>
+ <template #footer>
+ <Cell>
+ <template #title>
+ <div class="safe-cell-title-wrapper">
+ <img :src="IconSafe" class="safe-cell-title-icon" />
+ <div class="safe-cell-title">瀹夊叏鎻愮ず</div>
+ </div>
+ </template>
+ <div class="safe-cell-content">
+ 璇ヤ俊鎭敱鐢ㄦ埛鑷富鍙戝竷锛屽閬囪櫄鍋囦俊鎭�佽瘓楠椼�佷紶閿�绛夎繚娉曡繚瑙勮涓猴紝璇风珛鍗�
+ <div class="safe-cell-content-btn" @click="goComplaint">鎶曡瘔涓炬姤</div>
+ </div>
+ </Cell>
+ </template>
+ </TaskDetailView>
</ContentScrollView>
<PageFooter>
<PageFooterAction
@@ -75,8 +57,47 @@
: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' && !!detail?.applyButton"
+ type="primary"
+ :disabled="detail?.applyButton === GetTaskInfoQueryResultApplyButton.WaitHire"
+ @click="handleSign"
+ >
+ {{ GetTaskInfoQueryResultApplyButtonText[detail.applyButton] }}
+ </PageFooterBtn>
+ <PageFooterBtn
+ v-if="
+ from === 'hire' &&
+ !(
+ isContainCheckIn &&
+ detail?.hireButton === GetTaskInfoQueryResultHireButton.ApplyCheckReceive
+ )
+ "
+ 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>
@@ -84,58 +105,136 @@
<script setup lang="ts">
import Taro from '@tarojs/taro';
import { useQuery } from '@tanstack/vue-query';
-import * as flexWorkerServices from '@12333/services/api/FlexWorker';
+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 { TaskDetailView, Cell, CellChunk } 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 { Message } from '@12333/utils';
+import {
+ EnumTaskReleaseStatus,
+ GetPersonalApplyTaskInfosQueryStatusColor,
+ GetTaskInfoQueryResultApplyButtonText,
+ GetPersonalHireTaskInfosQueryStatusColor,
+ GetTaskInfoQueryResultHireButtonText,
+ GetTaskInfoQueryResultHireButton,
+ GetTaskInfoQueryResultApplyButton,
+ EnumTaskCheckReceiveMethod,
+} from '@12333/constants';
+import { useAccessLogin } from '@/hooks';
+import { useTaskInfo } from '@12333/hooks';
+import _ from 'lodash';
defineOptions({
name: 'InnerPage',
});
+/**
+ * TODO 缂哄皯 鎶曡瘔涓炬姤鎺ュ彛
+ */
+const { userDetail } = useUser();
const router = Taro.useRouter();
-const taskId = router.params?.id ?? '';
+const id = router.params?.id ?? '';
+const from = router.params?.from ?? '';
-const {
- isLoading,
- isError,
- data: detail,
- refetch,
-} = useQuery({
- queryKey: ['flexWorkerServices/getOrdeForDetail', taskId],
- queryFn: async () => {
- return await flexWorkerServices.getOrdeForDetail(
- { id: taskId },
- {
- showLoading: false,
- }
- );
- },
- placeholderData: () => ({} as API.OrderInfoDto),
- onSuccess(data) {
- if (data.isExistTradeChatRecord) setTrue();
- },
-});
+const { isLoading, isError, detail, refetch, isContainCheckIn } = useTaskInfo({ id });
const { isCollapse, setTrue } = useToggle();
-function goComplaint() {
+const goComplaint = useAccessLogin(() => {
Taro.navigateTo({
- url: `${RouterPath.complaint}?id=${taskId}`,
+ url: `${RouterPath.complaint}?id=${id}`,
+ });
+});
+
+const goCompanyDetail = useAccessLogin(() => {
+ if (detail.value.enterpriseId) {
+ Taro.navigateTo({
+ url: `${RouterPath.companyDetail}?id=${detail.value.enterpriseId}&supplierEnterpriseId=${
+ detail.value.supplierEnterpriseId ?? ''
+ }`,
+ });
+ }
+});
+
+const handleApply = _.debounce(
+ useAccessReal(
+ async () => {
+ try {
+ let params: API.ApplyTaskCommand = {
+ ids: [id],
+ };
+ let res = await taskUserServices.applyTask(params);
+ if (res) {
+ Message.success('鎶ュ悕鎴愬姛');
+ refetch({ type: 'inactive' });
+ }
+ } catch (error) {}
+ },
+ { message: '瀹炲悕鎴愬姛鍚庢墠鍙姤鍚嶏紝璇峰墠寰�瀹炲悕璁よ瘉' }
+ ),
+ 1000,
+ {
+ leading: true,
+ trailing: false,
+ }
+);
+
+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}`,
+ });
+}
+const handleSign = useAccessReal(() => {
+ Taro.navigateTo({
+ url: `${RouterPath.mineAgreementSignDetail}?id=${detail.value?.enterpriseEmployeeId}`,
+ });
+});
+
+function goMap() {
+ Taro.openLocation({
+ latitude: detail.value?.latitude,
+ longitude: detail.value?.longitude,
+ scale: 18,
});
}
-function goCompanyDetail() {
- Taro.navigateTo({
- url: `${RouterPath.companyDetail}?id=${taskId}`,
- });
-}
+Taro.useDidShow(() => {
+ refetch();
+});
</script>
--
Gitblit v1.9.1