wupengfei
6 小时以前 f3274a6594094d4419a0538ebc16d4601be4ef9d
feat: 实名
14个文件已修改
171 ■■■■■ 已修改文件
apps/bMiniApp/.eslintrc-auto-import.json 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/auto-imports.d.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/hooks/access.ts 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/mine/mineAgreementSign/InnerPage.vue 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/mine/mineAgreementSign/mineAgreementSign.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/mine/mineAgreementSignDetail/InnerPage.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/wallet/incomeDetail/InnerPage.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/wallet/incomeDetail/incomeDetail.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/wallet/mineWallet/InnerPage.vue 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/wallet/mineWallet/mineWallet.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/wallet/unboundBankCard/InnerPage.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packages/components/src/Card/MineAgreementSignCard.vue 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/bMiniApp/.eslintrc-auto-import.json
@@ -120,6 +120,7 @@
    "EnumTaskStatus": true,
    "EnumUserGender": true,
    "EnumUserStatus": true,
    "EnumUserType": true
    "EnumUserType": true,
    "useAccessAuthentication": true
  }
}
apps/bMiniApp/auto-imports.d.ts
@@ -91,6 +91,7 @@
  const toValue: typeof import('vue')['toValue']
  const triggerRef: typeof import('vue')['triggerRef']
  const unref: typeof import('vue')['unref']
  const useAccessAuthentication: typeof import('./src/hooks/access')['useAccessAuthentication']
  const useAccessLogin: typeof import('./src/hooks/access')['useAccessLogin']
  const useAttrs: typeof import('vue')['useAttrs']
  const useAuth: typeof import('./src/hooks/user')['useAuth']
apps/cMiniApp/src/hooks/access.ts
@@ -24,12 +24,21 @@
  return _fn as T;
}
export function useAccessReal<T extends (...args: any[]) => any>(fn: T) {
type UseAccessRealOptions = {
  message?: string;
};
export function useAccessReal<T extends (...args: any[]) => any>(
  fn: T,
  options: UseAccessRealOptions = { message: '请前往实名认证' }
) {
  const { message } = options;
  console.log('message: ', message);
  const { isCertified } = useUser();
  const _fn = useAccessLogin((...args2) => {
    if (!isCertified.value) {
      Message.confirm({ message: '请前往实名认证' }).then(() => {
      Message.confirm({ message: message }).then(() => {
        Taro.navigateTo({
          url: `${RouterPath.authenticationHome}`,
        });
apps/cMiniApp/src/subpackages/mine/mineAgreementSign/InnerPage.vue
@@ -19,13 +19,7 @@
    :key="queryState.mineAgreementSignType"
  >
    <template #renderItem="{ item }">
      <MineAgreementSignCard @click="goDetail">
        <template #actions>
          <div class="task-card-actions-text" :style="{ color: TaskStatusColor[10] }">
            {{ TaskStatusText[10] }}
          </div>
        </template>
      </MineAgreementSignCard>
      <MineAgreementSignCard @click="goDetail"> </MineAgreementSignCard>
    </template>
  </InfiniteLoading>
</template>
@@ -33,10 +27,10 @@
<script setup lang="ts">
import { MineAgreementSignCard, ProTabs, ProTabPane } from '@12333/components';
import { useUserStore } from '@/stores/modules/user';
import { TaskStatusText, TaskStatusColor, TaskStatus } from '@/constants';
import { TaskStatus } from '@/constants';
import { useInfiniteLoading } from '@12333/hooks';
import { OrderInputType } from '@12333/constants';
import * as flexWorkerServices from '@12333/services/api/FlexWorker';
import { EnumPagedListOrder } from '@12333/constants';
import * as taskServices from '@12333/services/apiV2/task';
import Taro from '@tarojs/taro';
defineOptions({
@@ -55,20 +49,16 @@
      pageModel: {
        rows: 20,
        page: pageParam,
        orderInput: [
          queryState.mineAgreementSignType === TaskStatus.All
            ? { property: 'creationTime', order: OrderInputType.Desc }
            : { property: 'lastShelfTime', order: OrderInputType.Desc },
        ],
        orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
      },
    };
    return flexWorkerServices.getFlexTaskByArrange(params, {
    return taskServices.getPersonalHireTaskInfos(params, {
      showLoading: false,
    });
  },
  {
    queryKey: ['flexWorkerServices/getFlexTaskByArrange', queryState],
    queryKey: ['taskServices/getPersonalHireTaskInfos', queryState],
  }
);
@@ -82,10 +72,7 @@
<style lang="scss">
@import '@/styles/common.scss';
.mineAgreementSign-page-wrapper {
  .task-card-actions-text {
    font-size: 24px;
    line-height: 42px;
  }
}
// .mineAgreementSign-page-wrapper {
//
// }
</style>
apps/cMiniApp/src/subpackages/mine/mineAgreementSign/mineAgreementSign.vue
@@ -1,5 +1,5 @@
<template>
  <PageLayoutWithBg class="mineAgreementSign-page-wrapper" :title="'协议签约'" developing>
  <PageLayoutWithBg class="mineAgreementSign-page-wrapper" :title="'协议签约'">
    <InnerPage></InnerPage>
  </PageLayoutWithBg>
</template>
apps/cMiniApp/src/subpackages/mine/mineAgreementSignDetail/InnerPage.vue
@@ -93,7 +93,7 @@
const userStore = useUserStore();
function goToSign() {}
const goToSign = useAccessReal(() => {});
</script>
<style lang="scss">
apps/cMiniApp/src/subpackages/task/taskCheckDetail/InnerPage.vue
@@ -23,10 +23,10 @@
      </template>
    </InfiniteLoading>
  </ContentScrollView>
  <!-- <div class="taskCheckDetail-tips-wrapper">
  <div class="taskCheckDetail-tips-wrapper" v-if="!isBindBankCard">
    <div class="taskCheckDetail-tips-text">您尚未绑定银行卡,暂时无法结算服务费</div>
    <div class="taskCheckDetail-tips-btn">立即绑定银行卡信息</div>
  </div> -->
    <div class="taskCheckDetail-tips-btn" @click="goBindBankCard">立即绑定银行卡信息</div>
  </div>
</template>
<script setup lang="ts">
@@ -43,6 +43,18 @@
const id = route.params?.id as string;
const { infiniteLoadingProps } = useCheckReceiveTaskUserSubmits({ id: id });
const isBindBankCard = computed(
  () =>
    infiniteLoadingProps.value?.listData?.pages?.[0]?.objectData?.enterpriseEmployeeUser
      ?.isBindBankCard
);
function goBindBankCard() {
  Taro.navigateTo({
    url: `${RouterPath.unboundBankCard}`,
  });
}
</script>
<style lang="scss">
@@ -56,5 +68,19 @@
    margin-bottom: 16px;
    color: boleGetCssVar('text-color', 'primary');
  }
  .taskCheckDetail-tips-wrapper {
    text-align: center;
    font-size: 24px;
    line-height: 32px;
    .taskCheckDetail-tips-text {
      color: boleGetCssVar('text-color', 'secondary');
    }
    .taskCheckDetail-tips-btn {
      color: boleGetCssVar('color', 'primary');
    }
  }
}
</style>
apps/cMiniApp/src/subpackages/task/taskDetail/InnerPage.vue
@@ -121,7 +121,12 @@
        :isFlex="false"
        @click="handleCall"
      ></PageFooterAction>
      <PageFooterBtn v-if="from === 'sign'" type="primary" disabled>
      <PageFooterBtn
        v-if="from === 'sign'"
        type="primary"
        :disabled="detail?.applyButton === GetTaskInfoQueryResultApplyButton.WaitHire"
        @click="handleSign"
      >
        {{ GetTaskInfoQueryResultApplyButtonText[detail.applyButton] }}
      </PageFooterBtn>
      <PageFooterBtn
@@ -176,6 +181,7 @@
  GetPersonalHireTaskInfosQueryStatusColor,
  GetTaskInfoQueryResultHireButtonText,
  GetTaskInfoQueryResultHireButton,
  GetTaskInfoQueryResultApplyButton,
} from '@12333/constants';
import { useAccessLogin } from '@/hooks';
@@ -275,6 +281,11 @@
    url: `${RouterPath.taskSubmitCheck}?id=${id}`,
  });
}
function handleSign() {
  // Taro.navigateTo({
  //   url: `${RouterPath}?id=${id}`,
  // });
}
function goMap() {
  Taro.openLocation({
apps/cMiniApp/src/subpackages/wallet/incomeDetail/InnerPage.vue
@@ -9,6 +9,7 @@
            format="YYYY年M月"
            :max-date="nowDate"
          />
          <IconFont name="triangle-down" class="income-detail-time-picker-icon"></IconFont>
        </div>
      </template>
    </IncomeDetailListItem>
@@ -25,6 +26,7 @@
<script setup lang="ts">
import { List, IncomeDetailListItem, ChooseInputWithDatePicker } from '@12333/components';
import { useUserStore } from '@/stores/modules/user';
import { IconFont } from '@nutui/icons-vue-taro';
import Taro from '@tarojs/taro';
import dayjs from 'dayjs';
@@ -50,9 +52,12 @@
.incomeDetail-page-wrapper {
  .income-detail-time-picker {
    position: relative;
    .nut-input {
      border-bottom: none;
      padding: 0;
      width: 100%;
      .input-text {
        font-size: 20px;
@@ -64,6 +69,12 @@
        display: none;
      }
    }
    .income-detail-time-picker-icon {
      position: absolute;
      top: 12px;
      left: 220px;
    }
  }
}
</style>
apps/cMiniApp/src/subpackages/wallet/incomeDetail/incomeDetail.vue
@@ -1,5 +1,5 @@
<template>
  <PageLayout class="incomeDetail-page-wrapper" :title="'收入明细'" developing>
  <PageLayout class="incomeDetail-page-wrapper" :title="'收入明细'">
    <InnerPage></InnerPage>
  </PageLayout>
</template>
apps/cMiniApp/src/subpackages/wallet/mineWallet/InnerPage.vue
@@ -21,7 +21,7 @@
  name: 'InnerPage',
});
const userStore = useUserStore();
const { isCertified } = useUser();
const isBinding = ref(false);
@@ -30,16 +30,15 @@
    url: `${RouterPath.incomeDetail}`,
  });
}
function goBankBind() {
  // Message.confirm({ message: '完成实名认证后才可进行银行卡绑定' }).then(() => {
  //   Taro.navigateTo({
  //     url: `${RouterPath.authenticationHome}`,
  //   });
  // });
const goBankBind = useAccessReal(
  () => {
  Taro.navigateTo({
    url: `${isBinding.value ? RouterPath.bindBankCard : RouterPath.unboundBankCard}`,
  });
}
  },
  { message: '完成实名认证后才可进行银行卡绑定' }
);
</script>
<style lang="scss">
apps/cMiniApp/src/subpackages/wallet/mineWallet/mineWallet.vue
@@ -1,5 +1,5 @@
<template>
  <PageLayout class="mineWallet-page-wrapper" :title="'我的钱包'" developing>
  <PageLayout class="mineWallet-page-wrapper" :title="'我的钱包'">
    <InnerPage></InnerPage>
  </PageLayout>
</template>
apps/cMiniApp/src/subpackages/wallet/unboundBankCard/InnerPage.vue
@@ -51,10 +51,10 @@
import { VerificationCodeBusinessType } from '@12333/constants';
import * as commonServices from '@12333/services/api/Common';
import Taro from '@tarojs/taro';
import { useQuery } from '@tanstack/vue-query';
import { useQuery, useQueryClient } from '@tanstack/vue-query';
const userResumeServices = {};
const queryClient = useQueryClient();
defineOptions({
  name: 'InnerPage',
});
@@ -124,6 +124,9 @@
          Taro.navigateTo({
            url: `${RouterPath.mineCurriculumVitae}`,
          });
          queryClient.invalidateQueries([
            'taskCheckReceiveServices/getCheckReceiveTaskUserSubmits',
          ]);
        },
      });
    }
packages/components/src/Card/MineAgreementSignCard.vue
@@ -4,20 +4,17 @@
      <div class="task-card-title">宁波人力无忧人力资源有限公司</div>
    </div>
    <div class="task-card-footer">
      <div class="task-card-left">
        <div class="task-card-time">2024.11.20 - 2025.11.19</div>
      <div class="task-card-actions" :style="{ color: '#FF4D4F' }">
        {{ '待签约' }}
      </div>
      <div class="task-card-actions">
        <slot name="actions">
          <nut-button type="primary">报名</nut-button>
        </slot>
      </div>
      <img :src="IconArrow" class="task-card-arrow" />
    </div>
  </div>
</template>
<script setup lang="ts">
import { CommonTaskCardProps } from './card';
import IconArrow from '@/assets/setting/icon-arrow.png';
defineOptions({
  name: 'MineAgreementSignCard',
@@ -54,30 +51,18 @@
    }
  }
  .task-card-time {
    font-size: 24px;
    color: boleGetCssVar('text-color', 'secondary');
    line-height: 36px;
    margin-bottom: 6px;
  }
  .task-card-footer {
    display: flex;
    align-items: center;
    .task-card-left {
      flex: 1;
      min-width: 0;
      display: flex;
      align-items: center;
    }
    justify-content: space-between;
    .task-card-actions {
      --nut-button-default-font-size: 24px;
      .nut-button {
        height: 26px;
      font-size: 24px;
      }
    .task-card-arrow {
      width: 24px;
      height: 24px;
    }
  }
}