Merge branch 'master' of http://120.26.58.240:8888/r/flexJobMiniApp
| | |
| | | "miniprogram": { |
| | | "list": [ |
| | | { |
| | | "name": "公司详情", |
| | | "pathName": "subpackages/task/companyDetail/companyDetail", |
| | | "query": "id=f775538f-985c-4d51-7985-08ddd5c71bbf", |
| | | "launchMode": "default", |
| | | "scene": null |
| | | }, |
| | | { |
| | | "name": "任务详情", |
| | | "pathName": "subpackages/task/taskDetail/taskDetail", |
| | | "query": "id=04c75425-e783-4dbf-0f16-08ddd626b756", |
| | |
| | | import { EnumUserType, EnumClientType } from '@12333/constants'; |
| | | |
| | | export const AppLocalConfig = { |
| | | userType: EnumUserType.Operation, |
| | | userType: EnumUserType.Enterprise, |
| | | clientType: EnumClientType.PcWeb, |
| | | }; |
| | |
| | | <PageLayoutWithBg class="companyDetail-page-wrapper" title="公司详情" :need-auth="false"> |
| | | <LoadingLayout :loading="isLoading" :error="isError" :loadError="refetch"> |
| | | <ContentView> |
| | | <CompanyDesc style="background-color: #fff" :showArrow="false"></CompanyDesc> |
| | | <CompanyDesc |
| | | style="background-color: #fff" |
| | | :showArrow="false" |
| | | :enterpriseName="enterpriseDetail?.enterpriseName ?? ''" |
| | | :taskCount="enterpriseDetail?.taskCount ?? 0" |
| | | ></CompanyDesc> |
| | | </ContentView> |
| | | <ProTabs |
| | | v-model="tab" |
| | |
| | | <CompanyTaskList /> |
| | | </ProTabPane> |
| | | <ProTabPane :title="`企业信息`" pane-key="2"> |
| | | <CompanyInfo /> |
| | | <CompanyInfo :enterpriseId="enterpriseId" /> |
| | | </ProTabPane> |
| | | </ProTabs> |
| | | </LoadingLayout> |
| | |
| | | |
| | | <script setup lang="ts"> |
| | | import Taro from '@tarojs/taro'; |
| | | import { useQuery } from '@tanstack/vue-query'; |
| | | import * as flexWorkerServices from '@12333/services/api/FlexWorker'; |
| | | import CompanyDesc from '../components/CompanyDesc.vue'; |
| | | import CompanyTaskList from '../components/CompanyTaskList.vue'; |
| | | import CompanyInfo from '../components/CompanyInfo.vue'; |
| | | import { ProTabs, ProTabPane } from '@12333/components'; |
| | | import { useEnterpriseDetail } from '@12333/hooks'; |
| | | |
| | | defineOptions({ |
| | | name: 'companyDetail', |
| | | }); |
| | | |
| | | const router = Taro.useRouter(); |
| | | const companyId = router.params?.id ?? ''; |
| | | const enterpriseId = router.params?.id ?? ''; |
| | | |
| | | const tab = ref('1'); |
| | | |
| | | const { |
| | | isLoading, |
| | | isError, |
| | | data: detail, |
| | | refetch, |
| | | } = useQuery({ |
| | | queryKey: ['flexWorkerServices/getOrdeForDetail', companyId], |
| | | queryFn: async () => { |
| | | return await flexWorkerServices.getOrdeForDetail( |
| | | { id: companyId }, |
| | | { |
| | | showLoading: false, |
| | | } |
| | | ); |
| | | }, |
| | | placeholderData: () => ({} as API.OrderInfoDto), |
| | | }); |
| | | const { isLoading, isError, enterpriseDetail, refetch } = useEnterpriseDetail({ id: enterpriseId }); |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | @import '@/styles/common.scss'; |
| | | </style> |
| | |
| | | <div class="taskDetail-company-title">{{ enterpriseName }}</div> |
| | | <RectRight v-if="showArrow" :size="8" class="taskDetail-company-arrow" /> |
| | | </div> |
| | | <div class="taskDetail-company-info"> |
| | | <div class="taskDetail-company-info" v-if="isCertified"> |
| | | <img :src="IconSafe" class="safe-company-info-icon" /> |
| | | <div class="taskDetail-company-info-text">已认证 | {{ taskCount }}个岗位在招</div> |
| | | </div> |
| | | <div class="taskDetail-company-info" v-else> |
| | | <div class="taskDetail-company-info-text danger">未认证</div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | |
| | | |
| | | type Props = { |
| | | showArrow?: boolean; |
| | | isCertified?: boolean; |
| | | enterpriseName?: string; |
| | | taskCount?: number; |
| | | /** |
| | |
| | | flex: 1; |
| | | min-width: 0; |
| | | @include ellipsis; |
| | | |
| | | &.danger { |
| | | color: boleGetCssVar('color', 'danger'); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | <div v-if="isCertified" class="companyInfo-info-wrapper"> |
| | | <div class="companyInfo-info-item"> |
| | | <div class="companyInfo-info-item-label">企业名称</div> |
| | | <div class="companyInfo-info-item-content">江西君润商务服务有限公司</div> |
| | | <div class="companyInfo-info-item-content">{{ enterpriseDetail.enterpriseName }}</div> |
| | | </div> |
| | | <div class="companyInfo-info-item"> |
| | | <div class="companyInfo-info-item-label">统一社会信用代码</div> |
| | | <div class="companyInfo-info-item-content">420902197910211010</div> |
| | | <div class="companyInfo-info-item-content">{{ enterpriseDetail.societyCreditCode }}</div> |
| | | </div> |
| | | <div class="companyInfo-info-item"> |
| | | <div class="companyInfo-info-item-label">注册资本</div> |
| | |
| | | |
| | | <script setup lang="ts"> |
| | | import IconNoCertified from '@/assets/task/icon-no-certified.png'; |
| | | import { useEnterpriseDetail } from '@12333/hooks'; |
| | | |
| | | defineOptions({ |
| | | name: 'CompanyInfo', |
| | | }); |
| | | |
| | | const isCertified = ref(true); |
| | | type Props = { |
| | | enterpriseId?: string; |
| | | }; |
| | | |
| | | const props = withDefaults(defineProps<Props>(), {}); |
| | | |
| | | /** |
| | | * TODO 企业是否认证 注册资本 |
| | | */ |
| | | const isCertified = ref(false); |
| | | |
| | | const { enterpriseDetail } = useEnterpriseDetail({ id: toRef(props, 'enterpriseId') }); |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | |
| | | <template> |
| | | <InfiniteLoading scrollViewClassName="common-infinite-scroll-list" v-bind="infiniteLoadingProps"> |
| | | <template #renderItem="{ item }"> |
| | | <TaskCard @click="goTaskDetail(item)" /> |
| | | <TaskCard @click="goTaskDetail(item)" v-bind="item" /> |
| | | </template> |
| | | </InfiniteLoading> |
| | | </template> |
| | |
| | | |
| | | const { queryState, infiniteLoadingProps } = useTaskList(); |
| | | |
| | | function goTaskDetail(item: API.GetFlexTaskListOutput) { |
| | | function goTaskDetail(item: API.GetTaskInfosQueryResultItem) { |
| | | Taro.navigateTo({ |
| | | url: `${RouterPath.taskDetail}?id=${item.id}`, |
| | | }); |
| | |
| | | <TaskDetailWelfareItem |
| | | v-for="benefit in detail.benefits" |
| | | :key="benefit.benefitCode" |
| | | :icon="IconAttentioActive" |
| | | :icon="setOSSLink(benefit.benefitField2)" |
| | | :text="benefit.benefitContent" |
| | | /> |
| | | </div> |
| | |
| | | import './taskDetail.scss'; |
| | | import CompanyDesc from '../components/CompanyDesc.vue'; |
| | | import dayjs from 'dayjs'; |
| | | import { TaskUtils, toThousand } from '@12333/utils'; |
| | | import { TaskUtils, toThousand, setOSSLink } from '@12333/utils'; |
| | | import { |
| | | EnumSettlementCycleText, |
| | | BillingMethodEnumUnit, |
| | |
| | | }); |
| | | |
| | | const goCompanyDetail = useAccessLogin(() => { |
| | | if (detail.value.enterpriseId) { |
| | | Taro.navigateTo({ |
| | | url: `${RouterPath.companyDetail}?id=${taskId}`, |
| | | url: `${RouterPath.companyDetail}?id=${detail.value.enterpriseId}`, |
| | | }); |
| | | } |
| | | }); |
| | | </script> |
New file |
| | |
| | | import { useQuery, useQueryClient } from '@tanstack/vue-query'; |
| | | import * as enterpriseServices from '@12333/services/apiV2/enterprise'; |
| | | import { MaybeRef, unref } from 'vue'; |
| | | |
| | | type UseEnterpriseDetailOptions = { |
| | | id: MaybeRef<string>; |
| | | }; |
| | | |
| | | export function useEnterpriseDetail({ id }: UseEnterpriseDetailOptions) { |
| | | const { data, refetch, isLoading, isError } = useQuery({ |
| | | queryKey: ['enterpriseServices/getEnterprise', id], |
| | | queryFn: async () => { |
| | | return await enterpriseServices.getEnterprise( |
| | | { id: unref(id) }, |
| | | { |
| | | showLoading: false, |
| | | } |
| | | ); |
| | | }, |
| | | placeholderData: () => ({} as API.GetEnterpriseQueryResult), |
| | | }); |
| | | |
| | | return { |
| | | enterpriseDetail: data, |
| | | refetch, |
| | | isLoading, |
| | | isError, |
| | | }; |
| | | } |
| | |
| | | export * from './dic'; |
| | | export * from './setting'; |
| | | export * from './identify'; |
| | | export * from './enterprise'; |
| | |
| | | id?: string |
| | | quickQuery?: string |
| | | } |
| | | |
| | | interface GetTaskInfoQueryResult{ |
| | | enterpriseName?:string |
| | | } |
| | | } |