From 201ca4f20ce2dd1b2e4c5ec0a7f09f377e923195 Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期五, 15 八月 2025 16:32:28 +0800 Subject: [PATCH] Merge branch 'master' of http://120.26.58.240:8888/r/flexJobMiniApp --- packages/components/src/Card/TaskCard.vue | 127 +++++++++++++++++++++++++++++++++++++----- 1 files changed, 111 insertions(+), 16 deletions(-) diff --git a/packages/components/src/Card/TaskCard.vue b/packages/components/src/Card/TaskCard.vue index 01186b3..edbd5fb 100644 --- a/packages/components/src/Card/TaskCard.vue +++ b/packages/components/src/Card/TaskCard.vue @@ -1,23 +1,49 @@ <template> <div class="task-card-wrapper"> <div class="task-card-title-wrapper"> - <div class="task-card-title">瀹㈡埧鏈嶅姟鍛�</div> - <TaskPrice /> + <div class="task-card-title">{{ name }}</div> + <slot name="title-right"> + <TaskPrice + :value="toThousand(serviceFee ?? 0)" + :unit="BillingMethodEnumUnit[billingMethod]" + /> + </slot> </div> - <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> - <div class="task-card-time">涓婄彮鏃堕棿:07:00-15:30</div> + <slot> + <div class="task-card-welfare-list"> + <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"> + {{ 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">瀹佹尝闆疯开妫厭搴�</div> + <div class="task-card-footer-address">{{ addressName }}</div> </div> - <div class="task-card-actions"> + <div class="task-card-actions" v-if="showActions"> <slot name="actions"> - <nut-button type="primary">鎶ュ悕</nut-button> + <nut-button + v-if="releaseStatus === EnumTaskReleaseStatus.InProcess" + type="primary" + @click="emit('apply', props.id)" + :disabled="!!hireStatus" + >鎶ュ悕</nut-button + > </slot> </div> </div> @@ -25,17 +51,86 @@ </template> <script setup lang="ts"> +import { + EnumBillingMethod, + EnumSettlementCycle, + EnumTaskCheckReceiveStatus, + EnumTaskRecommendStatus, + EnumTaskReleaseStatus, + EnumTaskSettlementStatus, + EnumTaskStatus, + EnumUserGender, + EnumBillingMethodText, + EnumUserGenderText, + EnumSettlementCycleText, + BillingMethodEnumUnit, + EnumTaskUserHireStatus, +} 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', }); -type Props = { - title?: string; +type Props = CommonTaskCardProps & { + showActions?: boolean; + /** 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; + hireStatus?: EnumTaskUserHireStatus; }; -const props = withDefaults(defineProps<Props>(), {}); +const props = withDefaults(defineProps<Props>(), { + showActions: true, +}); + +const emit = defineEmits<{ + (e: 'apply', id: string): void; +}>(); </script> <style lang="scss"> @@ -82,7 +177,7 @@ .task-card-time { font-size: 24px; - color: boleGetCssVar('text-color', 'secondary'); + color: boleGetCssVar('text-color', 'regular'); line-height: 36px; margin-bottom: 6px; } @@ -111,7 +206,7 @@ .task-card-footer-address { font-size: 22px; - color: boleGetCssVar('text-color', 'secondary'); + color: boleGetCssVar('text-color', 'regular'); line-height: 36px; flex: 1; min-width: 0; -- Gitblit v1.9.1