wupengfei
2 天以前 0cf1b417c68013df89504088c471fd113676391a
Merge branch 'master' of http://120.26.58.240:8888/r/flexJobMiniApp
17个文件已修改
221 ■■■■ 已修改文件
apps/bMiniApp/src/custom-tab-bar/index.tsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/hooks/user.ts 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/pages/home/index.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/pages/mine/index.vue 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/stores/modules/user.ts 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/mine/mineContactRecord/InnerPage.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/mine/mineFavorites/InnerPage.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/subpackages/task/batchTaskList/InnerPage.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/utils/storage/auth.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/custom-tab-bar/index.tsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/hooks/user.ts 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/pages/mine/index.vue 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/stores/modules/user.ts 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/utils/storage/auth.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/Card/FlexJobCard.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
types/api.d.ts 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/src/custom-tab-bar/index.tsx
@@ -112,6 +112,7 @@
    }
    return () => {
      const _router = Taro.useRouter();
      return (
        <View
          class="bottom-tab"
@@ -124,7 +125,7 @@
            icon="../assets/tabbar/icon-home.png"
            activeIcon="../assets/tabbar/icon-home-active.png"
            pagePath={TabBarPageRouter.Home}
            currentPath={router.path}
            currentPath={_router.path}
            index={0}
            active={system.activeTab === 0}
            className="home"
@@ -135,7 +136,7 @@
            icon="../assets/tabbar/icon-task.png"
            activeIcon="../assets/tabbar/icon-task-active.png"
            pagePath={TabBarPageRouter.Workbenches}
            currentPath={router.path}
            currentPath={_router.path}
            active={system.activeTab === 1}
            className="task"
            onClick={switchTab}
@@ -146,7 +147,7 @@
            icon="../assets/tabbar/icon-mine.png"
            activeIcon="../assets/tabbar/icon-mine-active.png"
            pagePath={TabBarPageRouter.Mine}
            currentPath={router.path}
            currentPath={_router.path}
            active={system.activeTab === 2}
            className="mine"
            onClick={switchTab}
apps/bMiniApp/src/hooks/user.ts
@@ -11,9 +11,9 @@
  const { userDetail, userInfo, locationCity } = storeToRefs(userStore);
  // function updateUserInfo() {
  //   return userStore.getCurrentUserInfo();
  // }
  function updateUserInfo() {
    return userStore.getCurrentUserInfo();
  }
  // const isCompanyAudited = computed(() => {
  //   return userDetail.value?.openHRSiteStatus === ParkOrHRStatus.Running;
@@ -31,13 +31,13 @@
  // });
  const isCertified = computed(() => {
    return false;
    return userDetail.value?.isReal;
  });
  return {
    user: userInfo,
    userDetail: userDetail,
    // updateUserInfo,
    updateUserInfo,
    // isCompletePersonalInfo,
    // isCompanyAudited,
    isCertified,
@@ -67,7 +67,7 @@
  Taro.useReady(async () => {
    if (isLogin.value && userStore.firstGetUserDetail) {
      // userStore.getCurrentUserInfo();
      userStore.getCurrentUserInfo();
    }
    if (needAuth && !isLogin.value) {
      Taro.navigateTo({
apps/bMiniApp/src/pages/home/index.vue
@@ -121,7 +121,7 @@
});
const queryState = reactive({
  orderType: HomeOrderType.Recommend,
  orderType: HomeOrderType.LastShelfTime,
});
const { infiniteLoadingProps } = useInfiniteLoading(
@@ -140,12 +140,17 @@
      userCredentials: queryMenuState.certificateType ? [queryMenuState.certificateType] : null,
    };
    return userResumeServices.getUserResumes(params, {
    return userResumeServices.getOpenUserResumes(params, {
      showLoading: false,
    });
  },
  {
    queryKey: ['userResumeServices/getUserResumes', queryState, queryMenuState, queryPositionState],
    queryKey: [
      'userResumeServices/getOpenUserResumes',
      queryState,
      queryMenuState,
      queryPositionState,
    ],
  }
);
apps/bMiniApp/src/pages/mine/index.vue
@@ -17,17 +17,25 @@
            <UserAvatar :size="60" class="mine-avatar" />
            <div class="user-info" v-if="isLogin">
              <div class="user-info-item">
                <div class="user-info-item-name">{{ userDetail?.userName ?? '123' }}</div>
                <div class="user-info-item-name">{{ userDetail?.name ?? '' }}</div>
                <div class="user-info-item-gender">
                  <img v-if="1" :src="IconMale" class="user-info-item-gender-icon" />
                  <img v-else :src="IconFemale" class="user-info-item-gender-icon" />
                  <img
                    v-if="userDetail?.gender === EnumUserGender.Male"
                    :src="IconMale"
                    class="user-info-item-gender-icon"
                  />
                  <img
                    v-else-if="userDetail?.gender === EnumUserGender.Female"
                    :src="IconFemale"
                    class="user-info-item-gender-icon"
                  />
                </div>
                <div class="user-info-item-position">管理员</div>
                <div class="user-info-item-position">{{ (userDetail?.roles ?? []).join(',') }}</div>
              </div>
              <div class="user-info-item">
                <template v-if="isCertified">
                  <div class="user-info-certified-text">
                    {{ userDetail?.customerName ?? '123' }}
                    {{ userDetail?.enterpriseName ?? '' }}
                  </div>
                  <div class="user-info-certified-btn">已认证</div>
                </template>
@@ -112,6 +120,7 @@
import { useUserStore } from '@/stores/modules/user';
import { useQueryClient } from '@tanstack/vue-query';
import { TaskDetailWelfareItem } from '@12333/components';
import { EnumUserGender } from '@12333/constants';
const userStore = useUserStore();
const queryClient = useQueryClient();
@@ -144,9 +153,9 @@
Taro.useShareAppMessage((res) => {
  return {
    title: `${userDetail.value?.contacter}名片`,
    title: `${userDetail.value?.name}名片`,
    // path: `${RouterPath.userHomePage}?userId=${userDetail.value?.userId}`,
    imageUrl: userDetail.value?.avatarUrl,
    imageUrl: userDetail.value?.avatar,
  };
});
apps/bMiniApp/src/stores/modules/user.ts
@@ -31,7 +31,7 @@
  userInfo?: Nullable<API.LoginCommandCallback>;
  token?: Nullable<string>;
  refreshToken?: Nullable<string>;
  userDetail?: Nullable<API.UserInfoV2>;
  userDetail?: Nullable<API.GetEnterpriseLoginInfoQueryResult>;
  firstGetUserDetail?: boolean;
  locationCity?: string;
@@ -83,6 +83,10 @@
    accountInfo(): Partial<AccountInfo> {
      return getAccountInfoFromAccessToken(this.userInfo?.accessToken);
    },
    userId: (state) => {
      return state.userDetail?.id;
    },
    // matchMakingIdentity(state): MatchMakingIdentityEnum {
@@ -152,7 +156,7 @@
      try {
        this.setUserInfoAction(res);
        this.setTokenAction(res);
        // await this.getCurrentUserInfo();
        await this.getCurrentUserInfo();
      } catch (error) {}
    },
@@ -187,21 +191,21 @@
      // } catch (error) {}
    },
    // async getCurrentUserInfo() {
    //   try {
    //     let res = await userServices.getUserInfo({ showLoading: false });
    //     if (res) {
    //       res.frontStatus = getUserCertificationFrontStatusAdapter(
    //         res.userCertificationStatus,
    //         res.userCertificationAuditStatus
    //       );
    //       res.originalAvatarUrl = res.avatarUrl;
    //       res.avatarUrl = res.avatarUrl ? setOSSLink(res.avatarUrl) : DefaultAvatar;
    //       this.setUserDetail(res);
    //       this.firstGetUserDetail = false;
    //     }
    //   } catch (error) {}
    // },
    async getCurrentUserInfo() {
      try {
        let res = await authServices.getEnterpriseLoginInfo({}, { showLoading: false });
        if (res) {
          // res.frontStatus = getUserCertificationFrontStatusAdapter(
          //   res.userCertificationStatus,
          //   res.userCertificationAuditStatus
          // );
          res.originalAvatar = res.avatar;
          res.avatar = res.avatar ? setOSSLink(res.avatar) : DefaultAvatar;
          this.setUserDetail(res);
          this.firstGetUserDetail = false;
        }
      } catch (error) {}
    },
    setTokenAction(tokenInfo: API.IdentityModelTokenCacheItem) {
      this.token = tokenInfo?.accessToken;
@@ -213,7 +217,7 @@
      setUserInfo(info);
    },
    setUserDetail(detail: API.UserInfoV2) {
    setUserDetail(detail: API.GetEnterpriseLoginInfoQueryResult) {
      this.userDetail = detail;
      setUserDetail(detail);
    },
@@ -232,7 +236,7 @@
     */
    logout() {
      this.resetState();
      myClient.removeQueries();
      // myClient.removeQueries();
      goAuthorization();
    },
apps/bMiniApp/src/subpackages/jobApplicationManage/components/SignList.vue
@@ -22,7 +22,7 @@
          </div>
        </template>
        <template #footerRight>
          <nut-button type="primary" @click="goToJobDetail(item)">查看详情</nut-button>
          <nut-button type="primary" @click.stop="goToJobDetail(item)">查看详情</nut-button>
        </template>
      </FlexJobCard>
    </template>
apps/bMiniApp/src/subpackages/mine/mineContactRecord/InnerPage.vue
@@ -13,7 +13,7 @@
        :isRealName="item.isRealName"
        :arrangeCount="item.arrangeCount"
        :educationalLevel="item.educationalLevel"
        @contact="handleContact"
        @click="goFlexJobDetail(item)"
      >
      </FlexJobCard>
    </template>
@@ -26,6 +26,7 @@
import { useInfiniteLoading } from '@12333/hooks';
import { OrderInputType } from '@12333/constants';
import * as flexWorkerServices from '@12333/services/api/FlexWorker';
import Taro from '@tarojs/taro';
defineOptions({
  name: 'InnerPage',
@@ -52,9 +53,9 @@
  }
);
function handleContact() {}
function goFlexJobDetail(item: API.GetUserResumesQueryResultItem) {
  Taro.navigateTo({
    url: `${RouterPath.flexJobDetail}?userId=${item.id}`,
  });
}
</script>
<style lang="scss">
@import '@/styles/common.scss';
</style>
apps/bMiniApp/src/subpackages/mine/mineFavorites/InnerPage.vue
@@ -12,7 +12,7 @@
        :isRealName="item.isRealName"
        :arrangeCount="item.arrangeCount"
        :educationalLevel="item.educationalLevel"
        @contact="handleContact"
        @click="goFlexJobDetail(item)"
        @cancel-collection="handleCancelCollection(item)"
      >
      </FlexJobCard>
@@ -27,6 +27,7 @@
import { OrderInputType } from '@12333/constants';
import * as flexWorkerServices from '@12333/services/api/FlexWorker';
import { Message } from '@12333/utils';
import Taro from '@tarojs/taro';
defineOptions({
  name: 'InnerPage',
@@ -53,7 +54,12 @@
  }
);
function handleContact() {}
function goFlexJobDetail(item: API.GetUserResumesQueryResultItem) {
  Taro.navigateTo({
    url: `${RouterPath.flexJobDetail}?userId=${item.id}`,
  });
}
async function handleCancelCollection(item: API.GetNewestWorkerListOutput) {
  try {
    let params: API.APIcancelUserResumeCollectParams = {
apps/bMiniApp/src/subpackages/task/batchTaskList/InnerPage.vue
@@ -19,7 +19,7 @@
        :showFooterLeft="false"
      >
        <template #footerRight>
          <nut-button v-if="showQueryState" type="primary" @click="handleArrange(item)"
          <nut-button v-if="showQueryState" type="primary" @click.stop="handleArrange(item)"
            >安排</nut-button
          >
          <div v-else class="batch-task-card-status">已安排</div>
apps/bMiniApp/src/utils/storage/auth.ts
@@ -29,10 +29,10 @@
}
export function getUserDetail() {
  return storageLocal.getItem<API.UserInfoV2>(StorageKey.USER_DETAIL_KEY);
  return storageLocal.getItem<API.GetEnterpriseLoginInfoQueryResult>(StorageKey.USER_DETAIL_KEY);
}
export function setUserDetail(userDetail: API.UserInfoV2) {
export function setUserDetail(userDetail: API.GetEnterpriseLoginInfoQueryResult) {
  return storageLocal.setItem(StorageKey.USER_DETAIL_KEY, userDetail);
}
apps/cMiniApp/src/custom-tab-bar/index.tsx
@@ -112,6 +112,7 @@
    }
    return () => {
      const _router = Taro.useRouter();
      return (
        <View
          class="bottom-tab"
@@ -124,7 +125,7 @@
            icon="../assets/tabbar/icon-home.png"
            activeIcon="../assets/tabbar/icon-home-active.png"
            pagePath={TabBarPageRouter.Home}
            currentPath={router.path}
            currentPath={_router.path}
            index={0}
            active={system.activeTab === 0}
            className="home"
@@ -136,7 +137,7 @@
            icon="../assets/tabbar/icon-task.png"
            activeIcon="../assets/tabbar/icon-task-active.png"
            pagePath={TabBarPageRouter.Task}
            currentPath={router.path}
            currentPath={_router.path}
            active={system.activeTab === 1}
            className="task"
            onClick={switchTab}
@@ -147,7 +148,7 @@
            icon="../assets/tabbar/icon-mine.png"
            activeIcon="../assets/tabbar/icon-mine-active.png"
            pagePath={TabBarPageRouter.Mine}
            currentPath={router.path}
            currentPath={_router.path}
            active={system.activeTab === 2}
            className="mine"
            onClick={switchTab}
apps/cMiniApp/src/hooks/user.ts
@@ -33,7 +33,7 @@
  });
  const isCertified = computed(() => {
    return false;
    return userDetail.value?.isReal;
  });
  return {
apps/cMiniApp/src/pages/mine/index.vue
@@ -16,7 +16,7 @@
          <div class="mine-avatar-wrapper" @click="goLogin">
            <UserAvatar :size="52" class="mine-avatar" />
            <div class="user-info" v-if="isLogin">
              <div class="user-info-item">{{ detail?.name ?? '' }}</div>
              <div class="user-info-item">{{ userDetail?.name ?? '' }}</div>
              <div class="user-info-auth">
                <div class="user-info-auth-item">
                  <div class="user-info-unCertified" v-if="isCertified">
@@ -67,7 +67,7 @@
          <nut-badge
            class="mine-order-list-item"
            top="8"
            :value="detail?.taskCount ?? 0"
            :value="userDetail?.taskCount ?? 0"
            @click="goMineSign"
          >
            <img :src="IconOrderSign" class="mine-order-list-icon" />
@@ -76,7 +76,7 @@
          <nut-badge
            class="mine-order-list-item"
            top="8"
            :value="detail?.hirePassTaskCount ?? 0"
            :value="userDetail?.hirePassTaskCount ?? 0"
            @click="goMineHire"
          >
            <img :src="IconOrderHire" class="mine-order-list-icon" />
@@ -85,7 +85,7 @@
          <nut-badge
            class="mine-order-list-item"
            top="8"
            :value="detail?.hireRefuseTaskCount ?? 0"
            :value="userDetail?.hireRefuseTaskCount ?? 0"
            @click="goMineCancel"
          >
            <img :src="IconOrderCancel" class="mine-order-list-icon" />
@@ -124,35 +124,15 @@
import { useQuery } from '@tanstack/vue-query';
import * as authServices from '@12333/services/apiV2/auth';
const { userDetail, isCertified } = useUser();
console.log('isCertified: ', isCertified);
const { userDetail, isCertified, updateUserInfo } = useUser();
const isLogin = useIsLogin();
const systemStore = useSystemStore();
const { goLoginFn } = useGoLogin();
const bgHeight = computed(() => 133 + systemStore.navHeight);
const {
  isLoading,
  isError,
  data: detail,
  refetch,
} = useQuery({
  queryKey: ['authServices/getPersonalLoginInfo'],
  queryFn: async () => {
    return await authServices.getPersonalLoginInfo(
      {},
      {
        showLoading: false,
      }
    );
  },
  placeholderData: () => ({} as API.GetPersonalLoginInfoQueryResult),
  enabled: isLogin,
});
Taro.useDidShow(() => {
  refetch();
  updateUserInfo();
});
function goLogin() {
apps/cMiniApp/src/stores/modules/user.ts
@@ -31,7 +31,7 @@
  userInfo?: Nullable<API.LoginCommandCallback>;
  token?: Nullable<string>;
  refreshToken?: Nullable<string>;
  userDetail?: Nullable<API.UserInfoV2>;
  userDetail?: Nullable<API.GetPersonalLoginInfoQueryResult>;
  firstGetUserDetail?: boolean;
  locationCity?: string;
@@ -86,7 +86,7 @@
    },
    userId: (state) => {
      return state.userInfo?.id ?? '';
      return state.userDetail?.id ?? '';
    },
  },
  actions: {
@@ -188,19 +188,19 @@
    },
    async getCurrentUserInfo() {
      // try {
      //   let res = await userServices.getUserInfo({ showLoading: false });
      //   if (res) {
      //     res.frontStatus = getUserCertificationFrontStatusAdapter(
      //       res.userCertificationStatus,
      //       res.userCertificationAuditStatus
      //     );
      //     res.originalAvatarUrl = res.avatarUrl;
      //     res.avatarUrl = res.avatarUrl ? setOSSLink(res.avatarUrl) : DefaultAvatar;
      //     this.setUserDetail(res);
      //     this.firstGetUserDetail = false;
      //   }
      // } catch (error) {}
      try {
        let res = await authServices.getPersonalLoginInfo({}, { showLoading: false });
        if (res) {
          // res.frontStatus = getUserCertificationFrontStatusAdapter(
          //   res.userCertificationStatus,
          //   res.userCertificationAuditStatus
          // );
          res.originalAvatar = res.avatar;
          res.avatar = res.avatar ? setOSSLink(res.avatar) : DefaultAvatar;
          this.setUserDetail(res);
          this.firstGetUserDetail = false;
        }
      } catch (error) {}
    },
    setTokenAction(tokenInfo: API.LoginCommandCallback) {
@@ -216,7 +216,7 @@
      setUserInfo(this.userInfo);
    },
    setUserDetail(detail: API.UserInfoV2) {
    setUserDetail(detail: API.GetPersonalLoginInfoQueryResult) {
      this.userDetail = detail;
      setUserDetail(detail);
    },
@@ -235,7 +235,7 @@
     */
    logout() {
      this.resetState();
      myClient.removeQueries();
      // myClient.removeQueries();
      goAuthorization();
    },
apps/cMiniApp/src/utils/storage/auth.ts
@@ -29,10 +29,10 @@
}
export function getUserDetail() {
  return storageLocal.getItem<API.UserInfoV2>(StorageKey.USER_DETAIL_KEY);
  return storageLocal.getItem<API.GetPersonalLoginInfoQueryResult>(StorageKey.USER_DETAIL_KEY);
}
export function setUserDetail(userDetail: API.UserInfoV2) {
export function setUserDetail(userDetail: API.GetPersonalLoginInfoQueryResult) {
  return storageLocal.setItem(StorageKey.USER_DETAIL_KEY, userDetail);
}
packages/components/src/Card/FlexJobCard.vue
@@ -30,7 +30,7 @@
      <div class="flexJob-card-footer-right" v-if="showFooterRight">
        <slot name="footerRight">
          <nut-button type="primary" @click.stop="emit('contact')">立即联系</nut-button>
          <nut-button type="primary">立即联系</nut-button>
        </slot>
      </div>
    </div>
@@ -71,7 +71,6 @@
const emit = defineEmits<{
  (e: 'cancelCollection'): void;
  (e: 'contact'): void;
}>();
</script>
types/api.d.ts
@@ -20,13 +20,22 @@
     */
    frontStatus?: number
  }
  interface UserInfoV2 {
  interface GetEnterpriseLoginInfoQueryResult {
    /**
     * 前端用于判断状态的status
     */
    frontStatus?: number
    /**接口返回的原始头像 */
    originalAvatarUrl?: string
    originalAvatar?: string
  }
  interface GetPersonalLoginInfoQueryResult {
    /**
     * 前端用于判断状态的status
     */
    frontStatus?: number
    /**接口返回的原始头像 */
    originalAvatar?: string
  }
  interface SelectQueryResultOptionGuidGetDictionaryCategorySelectQueryOptionMap{