| | |
| | | <template> |
| | | <div class="task-card-wrapper"> |
| | | <div class="task-card-wrapper" :class="{ 'un-read': !isRead }"> |
| | | <div class="task-card-title-wrapper"> |
| | | <div class="task-card-title">{{ name }}</div> |
| | | <slot name="title-right"> |
| | | <TaskPrice |
| | | v-if="releaseStatus !== EnumTaskReleaseStatus.Stopped" |
| | | :value="toThousand(serviceFee ?? 0)" |
| | | :unit="BillingMethodEnumUnit[billingMethod]" |
| | | :billingMethod="billingMethod" |
| | | /> |
| | | </slot> |
| | | </div> |
| | |
| | | </div> |
| | | </div> |
| | | <div class="task-card-time"> |
| | | {{ dayjs(beginTime).format('YYYY年MM月DD日') }}至{{ |
| | | dayjs(endTime).format('YYYY年MM月DD日') |
| | | }} |
| | | {{ dayjs(beginTime).format('YYYY年MM月D日') }}至{{ dayjs(endTime).format('YYYY年MM月D日') }} |
| | | </div> |
| | | </slot> |
| | | <div class="task-card-footer"> |
| | |
| | | v-if="releaseStatus === EnumTaskReleaseStatus.InProcess" |
| | | type="primary" |
| | | @click="emit('apply', props.id)" |
| | | :disabled="!!hireStatus" |
| | | >报名</nut-button |
| | | > |
| | | </slot> |
| | |
| | | EnumUserGenderText, |
| | | EnumSettlementCycleText, |
| | | BillingMethodEnumUnit, |
| | | EnumTaskUserHireStatus, |
| | | } from '@12333/constants'; |
| | | import TaskPrice from './TaskPrice.vue'; |
| | | import { CommonTaskCardProps } from './card'; |
| | |
| | | recommendStatus?: EnumTaskRecommendStatus; |
| | | /** 创建时间 */ |
| | | createdTime?: string; |
| | | hireStatus?: EnumTaskUserHireStatus; |
| | | |
| | | isRead?: boolean; |
| | | }; |
| | | |
| | | const props = withDefaults(defineProps<Props>(), { |
| | | showActions: true, |
| | | |
| | | isRead: true, |
| | | }); |
| | | |
| | | const emit = defineEmits<{ |
| | |
| | | background-color: #fff; |
| | | border-radius: 12px; |
| | | |
| | | &.un-read { |
| | | position: relative; |
| | | |
| | | &::before { |
| | | content: ''; |
| | | position: absolute; |
| | | width: 12px; |
| | | height: 12px; |
| | | border-radius: 50%; |
| | | background-color: red; |
| | | right: 18px; |
| | | top: 12px; |
| | | } |
| | | } |
| | | |
| | | &:last-child { |
| | | margin-bottom: 0; |
| | | } |