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/pages/home/index.vue | 2 apps/cMiniApp/src/subpackages/task/components/CompanyDesc.vue | 10 + apps/cMiniApp/src/hooks/task.ts | 8 - packages/utils/tsconfig.json | 7 + apps/cMiniApp/project.private.config.json | 7 + packages/services/apiV2/auth.ts | 12 ++ packages/utils/index.ts | 1 apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue | 89 ++++++++++---- packages/components/src/Card/TaskCard.vue | 61 ++++++++- apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue | 8 packages/services/apiV2/typings.d.ts | 68 +++++++++- packages/constants/apiEnum.ts | 14 ++ packages/utils/task.ts | 14 ++ apps/bMiniApp/src/pages/home/index.vue | 8 - 14 files changed, 241 insertions(+), 68 deletions(-) diff --git a/apps/bMiniApp/src/pages/home/index.vue b/apps/bMiniApp/src/pages/home/index.vue index 72f0e72..4a9ae6e 100644 --- a/apps/bMiniApp/src/pages/home/index.vue +++ b/apps/bMiniApp/src/pages/home/index.vue @@ -114,8 +114,8 @@ page: pageParam, orderInput: [ queryState.orderType === HomeOrderType.Recommend - ? { property: 'createdTime', order: EnumPagedListOrder.Desc } - : {}, + ? { property: 'recommendStatus', order: EnumPagedListOrder.Desc } + : { property: 'createdTime', order: EnumPagedListOrder.Desc }, ], }, // keywords: 'string', @@ -127,10 +127,6 @@ // status: 10, releaseStatus: EnumTaskReleaseStatus.InProcess, }; - - if (queryState.orderType === HomeOrderType.Recommend) { - params.recommendStatus = EnumTaskRecommendStatus.Yes; - } return taskServices.getTaskInfos(params, { showLoading: false, diff --git a/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue b/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue index 11d80a6..dbb88a9 100644 --- a/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue +++ b/apps/bMiniApp/src/subpackages/task/publishTask/InnerPage.vue @@ -285,17 +285,17 @@ form.billingMethod = data.billingMethod; form.serviceFee = data.serviceFee; form.settlementCycle = data.settlementCycle; - form.benefits = (data.benefits ?? []).map((item) => item.code); + form.benefits = (data.benefits ?? []).map((item) => item.benefitCode); form.ageMinLimit = data.ageMinLimit; form.ageMaxLimit = data.ageMaxLimit; form.genderLimit = data.genderLimit; - form.credentialLimits = (data.credentialLimits ?? []).map((item) => item.code); + form.credentialLimits = (data.credentialLimits ?? []).map((item) => item.typeCode); form.beginTime = dayjs(data.beginTime).format('YYYY-MM-DD 00:00:00'); form.endTime = dayjs(data.endTime).format('YYYY-MM-DD 23:59:59'); form.addressDetail = data.addressDetail; form.weMapInfo = { - provinceName: data.provinceName, - cityName: data.cityName, + provinceName: data.provinceContent, + cityName: data.cityContent, provinceCode: data.provinceCode, cityCode: data.cityCode, latitude: data.latitude, diff --git a/apps/cMiniApp/project.private.config.json b/apps/cMiniApp/project.private.config.json index 0c6b36b..c7ac5b7 100644 --- a/apps/cMiniApp/project.private.config.json +++ b/apps/cMiniApp/project.private.config.json @@ -9,6 +9,13 @@ "miniprogram": { "list": [ { + "name": "浠诲姟璇︽儏", + "pathName": "subpackages/task/taskDetail/taskDetail", + "query": "id=04c75425-e783-4dbf-0f16-08ddd626b756", + "launchMode": "default", + "scene": null + }, + { "name": "鍩庡競閫夋嫨", "pathName": "subpackages/city/citySelect/citySelect", "query": "", diff --git a/apps/cMiniApp/src/hooks/task.ts b/apps/cMiniApp/src/hooks/task.ts index d8414e1..bdb6b3a 100644 --- a/apps/cMiniApp/src/hooks/task.ts +++ b/apps/cMiniApp/src/hooks/task.ts @@ -50,8 +50,8 @@ page: pageParam, orderInput: [ queryState.orderType === HomeOrderType.Recommend - ? { property: 'createdTime', order: EnumPagedListOrder.Desc } - : {}, + ? { property: 'recommendStatus', order: EnumPagedListOrder.Desc } + : { property: 'createdTime', order: EnumPagedListOrder.Desc }, ], }, keywords: queryState.searchValueTrim, @@ -62,10 +62,6 @@ status: queryMenuState.status, releaseStatus: EnumTaskReleaseStatus.InProcess, }; - - if (queryState.orderType === HomeOrderType.Recommend) { - params.recommendStatus = EnumTaskRecommendStatus.Yes; - } return taskServices.getTaskInfos(params, { showLoading: false, diff --git a/apps/cMiniApp/src/pages/home/index.vue b/apps/cMiniApp/src/pages/home/index.vue index afc2d7b..3fb5639 100644 --- a/apps/cMiniApp/src/pages/home/index.vue +++ b/apps/cMiniApp/src/pages/home/index.vue @@ -57,7 +57,7 @@ :key="queryState.orderType" > <template #renderItem="{ item }"> - <TaskCard @click="goTaskDetail(item)" /> + <TaskCard @click="goTaskDetail(item)" v-bind="item" /> </template> </InfiniteLoading> </PageLayoutWithBg> diff --git a/apps/cMiniApp/src/subpackages/task/components/CompanyDesc.vue b/apps/cMiniApp/src/subpackages/task/components/CompanyDesc.vue index fd14e5c..f3641da 100644 --- a/apps/cMiniApp/src/subpackages/task/components/CompanyDesc.vue +++ b/apps/cMiniApp/src/subpackages/task/components/CompanyDesc.vue @@ -1,12 +1,12 @@ <template> <div class="taskDetail-company-wrapper"> <div class="taskDetail-company-title-wrapper"> - <div class="taskDetail-company-title">瀹佹尝浜哄姏鏃犲咖</div> + <div class="taskDetail-company-title">{{ enterpriseName }}</div> <RectRight v-if="showArrow" :size="8" class="taskDetail-company-arrow" /> </div> <div class="taskDetail-company-info"> <img :src="IconSafe" class="safe-company-info-icon" /> - <div class="taskDetail-company-info-text">宸茶璇� | 4涓矖浣嶅湪鎷�</div> + <div class="taskDetail-company-info-text">宸茶璇� | {{ taskCount }}涓矖浣嶅湪鎷�</div> </div> </div> </template> @@ -21,10 +21,16 @@ type Props = { showArrow?: boolean; + enterpriseName?: string; + taskCount?: number; + /** + * TODO 缂哄皯鏄惁宸茶璇� + */ }; const props = withDefaults(defineProps<Props>(), { showArrow: true, + taskCount: 0, }); </script> diff --git a/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue b/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue index 56f23c6..b599bbe 100644 --- a/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue +++ b/apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue @@ -1,26 +1,38 @@ <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="IconLocaltion" class="taskDetail-address-title-icon" /> - <div class="taskDetail-address-title">瀹佹尝鏌忔偊閰掑簵</div> + <div class="taskDetail-address-title">{{ detail?.addressName ?? '' }}</div> </div> <div class="taskDetail-address-info-wrapper"> - <div class="taskDetail-address-info">瀹佹尝甯傞劄宸炲尯涓滈挶婀栧ぇ鍫拌矾188鍙峰畞娉㈡煆鎮﹂厭搴�</div> + <div class="taskDetail-address-info">{{ detail?.addressDetail ?? '' }}</div> <RectRight :size="8" class="taskDetail-address-info-icon" /> </div> </div> @@ -28,31 +40,44 @@ <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="楂樻俯琛ヨ创" /> + <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">18-45宀�</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">涓嶉檺</div> + <div class="taskDetail-limit-list-item-text"> + {{ TaskUtils.getGenderText(detail.genderLimit) }} + </div> </div> <div class="taskDetail-limit-list-item"> - <div class="taskDetail-limit-list-item-label">璧勬牸璇佷功锛�</div> - <div class="taskDetail-limit-list-item-text">鍋ュ悍璇�</div> + <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"></CompanyDesc> + <CompanyDesc + @click="goCompanyDetail" + :enterpriseName="detail?.enterpriseName ?? ''" + :taskCount="detail?.taskCount ?? 0" + ></CompanyDesc> </CellChunk> </Cell> <Cell> @@ -84,7 +109,7 @@ <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 { useToggle } from 'senin-mini/hooks'; import { TaskPrice, TaskDetailWelfareItem } from '@12333/components'; import IconAttention from '@/assets/task/icon-attention.png'; @@ -96,10 +121,18 @@ 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 ?? ''; @@ -110,32 +143,32 @@ data: detail, refetch, } = useQuery({ - queryKey: ['flexWorkerServices/getOrdeForDetail', taskId], + queryKey: ['taskServices/getTaskInfo', taskId], queryFn: async () => { - return await flexWorkerServices.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}`, }); -} +}); -function goCompanyDetail() { +const goCompanyDetail = useAccessLogin(() => { Taro.navigateTo({ url: `${RouterPath.companyDetail}?id=${taskId}`, }); -} +}); </script> diff --git a/packages/components/src/Card/TaskCard.vue b/packages/components/src/Card/TaskCard.vue index f358afb..098b45c 100644 --- a/packages/components/src/Card/TaskCard.vue +++ b/packages/components/src/Card/TaskCard.vue @@ -1,23 +1,29 @@ <template> <div class="task-card-wrapper"> <div class="task-card-title-wrapper"> - <div class="task-card-title">{{ taskName }}</div> + <div class="task-card-title">{{ name }}</div> <slot name="title-right"> - <TaskPrice :value="212" /> + <TaskPrice :value="serviceFee ?? 0" :unit="BillingMethodEnumUnit[billingMethod]" /> </slot> </div> <slot> <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"> + {{ EnumSettlementCycleText[settlementCycle] }} + </div> + <div class="task-card-welfare-list-item">{{ TaskUtils.getGenderText(genderLimit) }}</div> <div class="task-card-welfare-list-item">鍖呬笁椁�</div> </div> - <div class="task-card-time">涓婄彮鏃堕棿:07:00-15:30</div> + <div class="task-card-time"> + {{ dayjs(beginTime).format('YYYY骞碝M鏈圖D鏃�') }}鑷硔{ + dayjs(endTime).format('YYYY骞碝M鏈圖D鏃�') + }} + </div> </slot> <div class="task-card-footer"> <div class="task-card-left"> <div class="task-card-footer-tag">H</div> - <div class="task-card-footer-address">{{ address }}</div> + <div class="task-card-footer-address">{{ 'address' }}</div> </div> <div class="task-card-actions" v-if="showActions"> <slot name="actions"> @@ -29,8 +35,24 @@ </template> <script setup lang="ts"> +import { + EnumBillingMethod, + EnumSettlementCycle, + EnumTaskCheckReceiveStatus, + EnumTaskRecommendStatus, + EnumTaskReleaseStatus, + EnumTaskSettlementStatus, + EnumTaskStatus, + EnumUserGender, + EnumBillingMethodText, + EnumUserGenderText, + EnumSettlementCycleText, + BillingMethodEnumUnit, +} from '@12333/constants'; import TaskPrice from './TaskPrice.vue'; import { CommonTaskCardProps } from './card'; +import dayjs from 'dayjs'; +import { TaskUtils } from '@12333/utils'; defineOptions({ name: 'TaskCard', @@ -38,9 +60,30 @@ type Props = CommonTaskCardProps & { showActions?: boolean; - - taskName?: string; - address?: string; + /** Id */ + id?: string; + /** 浠诲姟鍚嶇О */ + name: string; + /** 浠诲姟鍗曞彿 */ + code?: string; + billingMethod?: EnumBillingMethod; + /** 鏈嶅姟璐� */ + serviceFee?: number; + settlementCycle?: EnumSettlementCycle; + genderLimit?: EnumUserGender; + /** 鎶ュ悕浜烘暟 */ + userCount?: number; + status?: EnumTaskStatus; + /** 浠诲姟寮�濮嬫椂闂� */ + beginTime?: string; + /** 浠诲姟缁撴潫鏃堕棿 */ + endTime?: string; + releaseStatus?: EnumTaskReleaseStatus; + checkReceiveStatus?: EnumTaskCheckReceiveStatus; + settlementStatus?: EnumTaskSettlementStatus; + recommendStatus?: EnumTaskRecommendStatus; + /** 鍒涘缓鏃堕棿 */ + createdTime?: string; }; const props = withDefaults(defineProps<Props>(), { diff --git a/packages/constants/apiEnum.ts b/packages/constants/apiEnum.ts index f260f44..d4ebf8b 100644 --- a/packages/constants/apiEnum.ts +++ b/packages/constants/apiEnum.ts @@ -125,6 +125,20 @@ AliyunSms = 10, } +/** 鐭俊妯℃澘绫诲瀷 */ +export enum EnumSmsTemplateType { + /**鐧诲綍 */ + Login = 0, + /**娉ㄥ唽 */ + Register = 1, + /**淇敼瀵嗙爜 */ + UpdatePassword = 2, + /**缁戝畾鎵嬫満鍙风爜 */ + BindPhoneNumber = 3, + /**淇敼鎵嬫満鍙风爜 */ + UpdatePhoneNumber = 4, +} + /** 浠诲姟缁撶畻鐘舵�� */ export enum EnumTaskCheckReceiveStatus { /**寰呴獙鏀� */ diff --git a/packages/services/apiV2/auth.ts b/packages/services/apiV2/auth.ts index 543ccd0..00b5ddb 100644 --- a/packages/services/apiV2/auth.ts +++ b/packages/services/apiV2/auth.ts @@ -62,3 +62,15 @@ ...(options || {}), }); } + +/** 鍙戦�侀獙璇佺爜 POST /api/user/auth/sendVerifyCode */ +export async function sendVerifyCode(body: API.SendVerifyCodeCommand, options?: API.RequestConfig) { + return request<string>('/api/user/auth/sendVerifyCode', { + method: 'POST', + headers: { + 'Content-Type': 'application/json-patch+json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/packages/services/apiV2/typings.d.ts b/packages/services/apiV2/typings.d.ts index 98a7d82..5324984 100644 --- a/packages/services/apiV2/typings.d.ts +++ b/packages/services/apiV2/typings.d.ts @@ -122,13 +122,6 @@ ids: string[]; } - interface DictionaryDataQueryModel { - /** 缂栧彿 */ - code?: string; - /** 鍚嶇О */ - name?: string; - } - enum EnumBillingMethod { /**鎸夋湀 */ Month = 10, @@ -240,6 +233,19 @@ enum EnumSmsAccess { /**闃块噷浜戠煭淇� */ AliyunSms = 10, + } + + enum EnumSmsTemplateType { + /**鐧诲綍 */ + Login = 0, + /**娉ㄥ唽 */ + Register = 1, + /**淇敼瀵嗙爜 */ + UpdatePassword = 2, + /**缁戝畾鎵嬫満鍙风爜 */ + BindPhoneNumber = 3, + /**淇敼鎵嬫満鍙风爜 */ + UpdatePhoneNumber = 4, } enum EnumTaskCheckReceiveStatus { @@ -1159,22 +1165,22 @@ serviceFee?: number; settlementCycle?: EnumSettlementCycle; /** 绂忓埄 */ - benefits?: DictionaryDataQueryModel[]; + benefits?: GetTaskInfoQueryResultBenefit[]; /** 骞撮緞鑼冨洿鏈�灏� */ ageMinLimit?: number; /** 骞撮緞鑼冨洿澶� */ ageMaxLimit?: number; genderLimit?: EnumUserGender; /** 璧勬牸璇佷功绫诲瀷 */ - credentialLimits?: DictionaryDataQueryModel[]; + credentialLimits?: GetTaskInfoQueryResultCredentialLimit[]; /** 浠诲姟鍦扮偣鎵�灞炵渷浠界紪鍙� */ provinceCode?: string; /** 浠诲姟鍦扮偣鎵�灞炵渷浠� */ - provinceName?: string; + provinceContent?: string; /** 浠诲姟鍦扮偣鎵�灞炲煄甯傜紪鍙� */ cityCode?: string; /** 浠诲姟鍦扮偣鎵�灞炲煄甯� */ - cityName?: string; + cityContent?: string; /** 浠诲姟鍦扮偣鍚嶇О */ addressName?: string; /** 浠诲姟鍦扮偣璇︾粏鍦板潃 */ @@ -1191,6 +1197,20 @@ createdTime?: string; /** 鏄惁宸叉敹钘� */ isCollected?: boolean; + } + + interface GetTaskInfoQueryResultBenefit { + /** 绂忓埄缂栧彿 */ + benefitCode?: string; + /** 绂忓埄 */ + benefitContent?: string; + } + + interface GetTaskInfoQueryResultCredentialLimit { + /** 璇佷功绫诲瀷缂栧彿 */ + typeCode?: string; + /** 璇佷功绫诲瀷 */ + typeContent?: string; } interface GetTaskInfosQuery { @@ -1223,7 +1243,27 @@ /** 鏈嶅姟璐� */ serviceFee?: number; settlementCycle?: EnumSettlementCycle; + /** 绂忓埄 */ + benefits?: GetTaskInfoQueryResultBenefit[]; genderLimit?: EnumUserGender; + /** 璧勬牸璇佷功绫诲瀷 */ + credentialLimits?: GetTaskInfoQueryResultCredentialLimit[]; + /** 浠诲姟鍦扮偣鎵�灞炵渷浠界紪鍙� */ + provinceCode?: string; + /** 浠诲姟鍦扮偣鎵�灞炵渷浠� */ + provinceContent?: string; + /** 浠诲姟鍦扮偣鎵�灞炲煄甯傜紪鍙� */ + cityCode?: string; + /** 浠诲姟鍦扮偣鎵�灞炲煄甯� */ + cityContent?: string; + /** 浠诲姟鍦扮偣鍚嶇О */ + addressName?: string; + /** 浠诲姟鍦扮偣璇︾粏鍦板潃 */ + addressDetail?: string; + /** 缁忓害 */ + longitude?: number; + /** 绾害 */ + latitude?: number; /** 鎶ュ悕浜烘暟 */ userCount?: number; status?: EnumTaskStatus; @@ -1600,6 +1640,12 @@ data?: any; } + interface SendVerifyCodeCommand { + /** 鎵嬫満鍙风爜 */ + phoneNumber?: string; + templateCode?: EnumSmsTemplateType; + } + interface SetDictionaryDataIsDisabledCommand { ids?: string[]; /** 鏄惁宸茬鐢� */ diff --git a/packages/utils/index.ts b/packages/utils/index.ts index da54574..a626aa0 100644 --- a/packages/utils/index.ts +++ b/packages/utils/index.ts @@ -14,3 +14,4 @@ export * from './media'; export * from './location'; export * from './encrypt'; +export * from './task'; diff --git a/packages/utils/task.ts b/packages/utils/task.ts new file mode 100644 index 0000000..b8e1b09 --- /dev/null +++ b/packages/utils/task.ts @@ -0,0 +1,14 @@ +import { EnumUserGender, EnumUserGenderText } from '@12333/constants'; + +export class TaskUtils { + static getGenderText(gender: EnumUserGender, allGenderText = '鐢峰コ涓嶉檺') { + return gender ? EnumUserGenderText[gender] : allGenderText; + } + + static getCredentialLimit(credentialLimits: API.GetTaskInfoQueryResultCredentialLimit[]) { + if (credentialLimits?.length > 0) { + return credentialLimits[0].typeContent; + } + return ''; + } +} diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json index 247e669..68e2a11 100644 --- a/packages/utils/tsconfig.json +++ b/packages/utils/tsconfig.json @@ -7,7 +7,12 @@ "@12333/*": ["../../packages/*"] }, "composite": true, - "types": ["node", "@12333/services/api/typings.d.ts", "../../types/api.d.ts"] + "types": [ + "node", + "@12333/services/api/typings.d.ts", + "@12333/services/apiV2/typings.d.ts", + "../../types/api.d.ts" + ] }, "exclude": ["node_modules", "dist"], "references": [{ "path": "../constants" }, { "path": "../services" }, { "path": "../components" }] -- Gitblit v1.9.1