From fb243f3345c6f3ed7e7c8c2d98c39b5afc782b9a Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期一, 20 十月 2025 10:24:40 +0800
Subject: [PATCH] Merge branch 'master' of http://120.26.58.240:8888/r/flexJobMiniApp
---
packages/components/src/Card/TaskCard.vue | 126 ++++++++++++++++++++++++++++++++++++-----
1 files changed, 110 insertions(+), 16 deletions(-)
diff --git a/packages/components/src/Card/TaskCard.vue b/packages/components/src/Card/TaskCard.vue
index 01186b3..4f071a2 100644
--- a/packages/components/src/Card/TaskCard.vue
+++ b/packages/components/src/Card/TaskCard.vue
@@ -1,23 +1,48 @@
<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
+ v-if="releaseStatus !== EnumTaskReleaseStatus.Stopped"
+ :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鏈圖鏃�') }}鑷硔{ dayjs(endTime).format('YYYY骞碝M鏈圖鏃�') }}
+ </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 +50,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 +176,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 +205,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