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