From 5694090781fb8badc7ab31d9a4a38de1856d5eda Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期五, 08 八月 2025 16:30:54 +0800 Subject: [PATCH] feat: 接口对接 --- packages/components/src/Card/TaskCard.vue | 104 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 92 insertions(+), 12 deletions(-) diff --git a/packages/components/src/Card/TaskCard.vue b/packages/components/src/Card/TaskCard.vue index f358afb..687f7f6 100644 --- a/packages/components/src/Card/TaskCard.vue +++ b/packages/components/src/Card/TaskCard.vue @@ -1,27 +1,48 @@ <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="toThousand(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">鍖呬笁椁�</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" + v-if="benefits?.length > 0" + v-for="item in benefits" + :key="item.benefitCode" + > + {{ item.benefitContent }} + </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">{{ addressName }}</div> </div> <div class="task-card-actions" v-if="showActions"> <slot name="actions"> - <nut-button type="primary" @click.stop="handleSign">鎶ュ悕</nut-button> + <nut-button + v-if="releaseStatus === EnumTaskReleaseStatus.InProcess" + type="primary" + @click.stop="emit('apply', id)" + >鎶ュ悕</nut-button + > </slot> </div> </div> @@ -29,8 +50,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, toThousand } from '@12333/utils'; defineOptions({ name: 'TaskCard', @@ -38,16 +75,59 @@ type Props = CommonTaskCardProps & { showActions?: boolean; - - taskName?: string; - address?: string; + /** Id */ + id?: string; + /** 浠诲姟鍚嶇О */ + name: string; + /** 浠诲姟鍗曞彿 */ + code?: string; + billingMethod?: EnumBillingMethod; + /** 鏈嶅姟璐� */ + serviceFee?: number; + settlementCycle?: EnumSettlementCycle; + /** 绂忓埄 */ + benefits?: API.GetTaskInfoQueryResultBenefit[]; + genderLimit?: EnumUserGender; + /** 璧勬牸璇佷功绫诲瀷 */ + credentialLimits?: API.GetTaskInfoQueryResultCredentialLimit[]; + /** 浠诲姟鍦扮偣鎵�灞炵渷浠界紪鍙� */ + provinceCode?: string; + /** 浠诲姟鍦扮偣鎵�灞炵渷浠� */ + provinceContent?: string; + /** 浠诲姟鍦扮偣鎵�灞炲煄甯傜紪鍙� */ + cityCode?: string; + /** 浠诲姟鍦扮偣鎵�灞炲煄甯� */ + cityContent?: string; + /** 浠诲姟鍦扮偣鍚嶇О */ + addressName?: string; + /** 浠诲姟鍦扮偣璇︾粏鍦板潃 */ + addressDetail?: string; + /** 缁忓害 */ + longitude?: number; + /** 绾害 */ + latitude?: number; + /** 鎶ュ悕浜烘暟 */ + userCount?: number; + status?: EnumTaskStatus; + /** 浠诲姟寮�濮嬫椂闂� */ + beginTime?: string; + /** 浠诲姟缁撴潫鏃堕棿 */ + endTime?: string; + releaseStatus?: EnumTaskReleaseStatus; + checkReceiveStatus?: EnumTaskCheckReceiveStatus; + settlementStatus?: EnumTaskSettlementStatus; + recommendStatus?: EnumTaskRecommendStatus; + /** 鍒涘缓鏃堕棿 */ + createdTime?: string; }; const props = withDefaults(defineProps<Props>(), { showActions: true, }); -function handleSign() {} +const emit = defineEmits<{ + (e: 'apply', id: string): void; +}>(); </script> <style lang="scss"> -- Gitblit v1.9.1