wupengfei
8 天以前 bddfec7e062404ea563299b75c91d9b172339d0a
Merge branch 'master' of http://120.26.58.240:8888/r/flexJobMiniApp
1个文件已添加
9个文件已修改
119 ■■■■■ 已修改文件
apps/cMiniApp/project.private.config.json 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/constants/app.ts 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/task/companyDetail/companyDetail.vue 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/task/components/CompanyDesc.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/task/components/CompanyInfo.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/task/components/CompanyTaskList.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/hooks/enterprise.ts 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/hooks/index.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
types/api.d.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/project.private.config.json
@@ -9,6 +9,13 @@
        "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",
apps/cMiniApp/src/constants/app.ts
@@ -1,6 +1,6 @@
import { EnumUserType, EnumClientType } from '@12333/constants';
export const AppLocalConfig = {
  userType: EnumUserType.Operation,
  userType: EnumUserType.Enterprise,
  clientType: EnumClientType.PcWeb,
};
apps/cMiniApp/src/subpackages/task/companyDetail/companyDetail.vue
@@ -2,7 +2,12 @@
  <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"
@@ -17,7 +22,7 @@
          <CompanyTaskList />
        </ProTabPane>
        <ProTabPane :title="`企业信息`" pane-key="2">
          <CompanyInfo />
          <CompanyInfo :enterpriseId="enterpriseId" />
        </ProTabPane>
      </ProTabs>
    </LoadingLayout>
@@ -26,41 +31,20 @@
<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>
apps/cMiniApp/src/subpackages/task/components/CompanyDesc.vue
@@ -4,9 +4,12 @@
      <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>
@@ -21,6 +24,7 @@
type Props = {
  showArrow?: boolean;
  isCertified?: boolean;
  enterpriseName?: string;
  taskCount?: number;
  /**
@@ -80,6 +84,10 @@
      flex: 1;
      min-width: 0;
      @include ellipsis;
      &.danger {
        color: boleGetCssVar('color', 'danger');
      }
    }
  }
}
apps/cMiniApp/src/subpackages/task/components/CompanyInfo.vue
@@ -3,11 +3,11 @@
    <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>
@@ -43,12 +43,24 @@
<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">
apps/cMiniApp/src/subpackages/task/components/CompanyTaskList.vue
@@ -1,7 +1,7 @@
<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>
@@ -17,7 +17,7 @@
const { queryState, infiniteLoadingProps } = useTaskList();
function goTaskDetail(item: API.GetFlexTaskListOutput) {
function goTaskDetail(item: API.GetTaskInfosQueryResultItem) {
  Taro.navigateTo({
    url: `${RouterPath.taskDetail}?id=${item.id}`,
  });
apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue
@@ -43,7 +43,7 @@
            <TaskDetailWelfareItem
              v-for="benefit in detail.benefits"
              :key="benefit.benefitCode"
              :icon="IconAttentioActive"
              :icon="setOSSLink(benefit.benefitField2)"
              :text="benefit.benefitContent"
            />
          </div>
@@ -127,7 +127,7 @@
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,
@@ -176,8 +176,10 @@
});
const goCompanyDetail = useAccessLogin(() => {
  if (detail.value.enterpriseId) {
  Taro.navigateTo({
    url: `${RouterPath.companyDetail}?id=${taskId}`,
      url: `${RouterPath.companyDetail}?id=${detail.value.enterpriseId}`,
  });
  }
});
</script>
packages/hooks/enterprise.ts
New file
@@ -0,0 +1,29 @@
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,
  };
}
packages/hooks/index.ts
@@ -4,3 +4,4 @@
export * from './dic';
export * from './setting';
export * from './identify';
export * from './enterprise';
types/api.d.ts
@@ -49,4 +49,8 @@
    id?: string
    quickQuery?: string
  }
  interface GetTaskInfoQueryResult{
    enterpriseName?:string
  }
}