wupengfei
2025-09-23 0d4707520940affeb4ac1697bbce9cebf5da60f8
feat: 页面
1个文件已删除
1个文件已添加
9个文件已修改
479 ■■■■■ 已修改文件
apps/cMiniApp/src/subpackages/authentication/authenticationFaRen/InnerPage.vue 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/authentication/authenticationJBR/InnerPage.vue 66 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/authentication/hooks/index.ts 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/wallet/bindBankCard/bindBankCard.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/wallet/hooks/index.ts 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/wallet/incomeDetail/InnerPage.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/wallet/incomeDetailInfo/InnerPage.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/wallet/mineWallet/InnerPage.vue 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/wallet/unboundBankCard/unboundBankCard.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/wallet/withdraw/InnerPage.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/wallet/withdrawDetailInfo/InnerPage.vue 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
apps/cMiniApp/src/subpackages/authentication/authenticationFaRen/InnerPage.vue
@@ -1,6 +1,6 @@
<template>
  <ContentScrollView :paddingH="false">
    <nut-form :model-value="form" ref="formRef" :rules="rules">
    <!-- <nut-form :model-value="form" ref="formRef" :rules="rules">
      <nut-form-item label="营业执照:" class="bole-form-item alignTop" prop="licenseUrl" required>
        <Uploader
          v-model:file-list="form.licenseUrl"
@@ -135,17 +135,17 @@
          type="number"
        />
      </nut-form-item>
    </nut-form>
    </nut-form> -->
  </ContentScrollView>
  <PageFooter :isOnlyAction="false">
    <PageFooterBtn type="primary" @click="handleSubmit()" :loading="loading"
    <!-- <PageFooterBtn type="primary" @click="handleSubmit()" :loading="loading"
      >提交认证</PageFooterBtn
    >
    > -->
  </PageFooter>
</template>
<script setup lang="ts">
import { useAuthenticationFlow } from '../hooks';
// import { useAuthenticationFlow } from '../hooks';
import {
  UserCertificationModeEnumV2,
  VerificationCodeBusinessType,
@@ -162,35 +162,35 @@
  name: 'InnerPage',
});
const { form, rules, formRef, handleSubmit, loading } = useAuthenticationFlow({
  certificationMode: UserCertificationModeEnumV2.LegalPersonPhoneCertification,
  certificationElement: UserCertificationElementEnum.Identity4,
});
// const { form, rules, formRef, handleSubmit, loading } = useAuthenticationFlow({
//   certificationMode: UserCertificationModeEnumV2.LegalPersonPhoneCertification,
//   certificationElement: UserCertificationElementEnum.Identity4,
// });
async function onGetCaptcha(phoneNumber: string) {
  await commonServices.sendPhoneCertificationVerificationCode(
    {
      name: form.legalPersonName,
      identity: form.legalPersonIdNumber,
      mobile: form.legalPersonContactPhone,
      businessType: VerificationCodeBusinessType.UserCertificationPhoneCertification,
    },
    { showLoading: false }
  );
}
// async function onGetCaptcha(phoneNumber: string) {
//   await commonServices.sendPhoneCertificationVerificationCode(
//     {
//       name: form.legalPersonName,
//       identity: form.legalPersonIdNumber,
//       mobile: form.legalPersonContactPhone,
//       businessType: VerificationCodeBusinessType.UserCertificationPhoneCertification,
//     },
//     { showLoading: false }
//   );
// }
const handleLicenseUrlChange = (response: FileItem) => {
  vatLicense(response, {
    onSuccess(res) {
      let tips: string[] = [];
      res?.name ? (form.enterpriseName = res.name) : tips.push('企业名称');
      res?.societyCode ? (form.societyCreditCode = res.societyCode) : tips.push('统一社会信用代码');
      if (tips.length > 0) {
        Message.error(`未能识别到您上传的图片,请重新上传清晰的图片或手动输入${tips.join('和')}`);
      }
    },
  });
};
// const handleLicenseUrlChange = (response: FileItem) => {
//   vatLicense(response, {
//     onSuccess(res) {
//       let tips: string[] = [];
//       res?.name ? (form.enterpriseName = res.name) : tips.push('企业名称');
//       res?.societyCode ? (form.societyCreditCode = res.societyCode) : tips.push('统一社会信用代码');
//       if (tips.length > 0) {
//         Message.error(`未能识别到您上传的图片,请重新上传清晰的图片或手动输入${tips.join('和')}`);
//       }
//     },
//   });
// };
function handleFrontImgUrlChange(response: FileItem) {
  // userCredentialVerifyOcrIDCard(response, {
apps/cMiniApp/src/subpackages/authentication/authenticationJBR/InnerPage.vue
@@ -1,6 +1,6 @@
<template>
  <ContentScrollView :paddingH="false">
    <nut-form :model-value="form" ref="formRef" :rules="rules">
    <!-- <nut-form :model-value="form" ref="formRef" :rules="rules">
      <nut-form-item label="营业执照:" class="bole-form-item alignTop" prop="licenseUrl" required>
        <Uploader
          v-model:file-list="form.licenseUrl"
@@ -161,17 +161,17 @@
          <span class="primary" @click="downloadPowerAttorneyTemplate">授权书模板下载</span>
        </div>
      </nut-form-item>
    </nut-form>
    </nut-form> -->
  </ContentScrollView>
  <PageFooter :isOnlyAction="false">
    <PageFooterBtn type="primary" @click="handleSubmit()" :loading="loading"
    <!-- <PageFooterBtn type="primary" @click="handleSubmit()" :loading="loading"
      >提交认证</PageFooterBtn
    >
    > -->
  </PageFooter>
</template>
<script setup lang="ts">
import { useAuthenticationFlow, useDownloadPowerAttorneyTemplate } from '../hooks';
// import { useAuthenticationFlow, useDownloadPowerAttorneyTemplate } from '../hooks';
import {
  UserCertificationModeEnumV2,
  VerificationCodeBusinessType,
@@ -188,37 +188,37 @@
  name: 'InnerPage',
});
const { form, rules, formRef, handleSubmit, loading } = useAuthenticationFlow({
  certificationMode: UserCertificationModeEnumV2.ProxyPersonPhoneCertification,
  certificationElement: UserCertificationElementEnum.Identity3,
});
// const { form, rules, formRef, handleSubmit, loading } = useAuthenticationFlow({
//   certificationMode: UserCertificationModeEnumV2.ProxyPersonPhoneCertification,
//   certificationElement: UserCertificationElementEnum.Identity3,
// });
const { downloadPowerAttorneyTemplate } = useDownloadPowerAttorneyTemplate();
// const { downloadPowerAttorneyTemplate } = useDownloadPowerAttorneyTemplate();
async function onGetCaptcha(phoneNumber: string) {
  await commonServices.sendPhoneCertificationVerificationCode(
    {
      name: form.proxyPersonName,
      identity: form.proxyPersonIdNumber,
      mobile: form.proxyPersonContactPhone,
      businessType: VerificationCodeBusinessType.UserCertificationPhoneCertification,
    },
    { showLoading: false }
  );
}
// async function onGetCaptcha(phoneNumber: string) {
//   await commonServices.sendPhoneCertificationVerificationCode(
//     {
//       name: form.proxyPersonName,
//       identity: form.proxyPersonIdNumber,
//       mobile: form.proxyPersonContactPhone,
//       businessType: VerificationCodeBusinessType.UserCertificationPhoneCertification,
//     },
//     { showLoading: false }
//   );
// }
const handleLicenseUrlChange = (response: FileItem) => {
  vatLicense(response, {
    onSuccess(res) {
      let tips: string[] = [];
      res?.name ? (form.enterpriseName = res.name) : tips.push('企业名称');
      res?.societyCode ? (form.societyCreditCode = res.societyCode) : tips.push('统一社会信用代码');
      if (tips.length > 0) {
        Message.error(`未能识别到您上传的图片,请重新上传清晰的图片或手动输入${tips.join('和')}`);
      }
    },
  });
};
// const handleLicenseUrlChange = (response: FileItem) => {
//   vatLicense(response, {
//     onSuccess(res) {
//       let tips: string[] = [];
//       res?.name ? (form.enterpriseName = res.name) : tips.push('企业名称');
//       res?.societyCode ? (form.societyCreditCode = res.societyCode) : tips.push('统一社会信用代码');
//       if (tips.length > 0) {
//         Message.error(`未能识别到您上传的图片,请重新上传清晰的图片或手动输入${tips.join('和')}`);
//       }
//     },
//   });
// };
function handleFrontImgUrlChange(response: FileItem) {
  // userCredentialVerifyOcrIDCard(response, {
apps/cMiniApp/src/subpackages/authentication/hooks/index.ts
File was deleted
apps/cMiniApp/src/subpackages/wallet/bindBankCard/bindBankCard.vue
@@ -1,5 +1,5 @@
<template>
  <PageLayout class="bindBankCard-page-wrapper" :title="'绑定银行卡'" developing>
  <PageLayout class="bindBankCard-page-wrapper" :title="'绑定银行卡'">
    <InnerPage></InnerPage>
  </PageLayout>
</template>
apps/cMiniApp/src/subpackages/wallet/hooks/index.ts
New file
@@ -0,0 +1,34 @@
import { useQuery } from '@tanstack/vue-query';
import * as userServices from '@12333/services/apiV2/user';
import { MaybeRef, unref } from 'vue';
type UsePersonalUserTransactionOptions = {
  id?: MaybeRef<string>;
};
export function useGetPersonalUserTransaction(options: UsePersonalUserTransactionOptions = {}) {
  const { id } = options;
  const {
    isLoading,
    isError,
    data: detail,
    refetch,
  } = useQuery({
    queryKey: ['userServices/getPersonalUserTransaction', id],
    queryFn: async () => {
      return await userServices.getPersonalUserTransaction(
        { id: unref(id) },
        {
          showLoading: false,
        }
      );
    },
    placeholderData: () => ({} as API.GetPersonalUserTransactionQueryResult),
    enabled: computed(() => !!unref(id)),
  });
  return {
    detail,
  };
}
apps/cMiniApp/src/subpackages/wallet/incomeDetail/InnerPage.vue
@@ -1,5 +1,5 @@
<template>
  <!-- <ProTabs
  <ProTabs
    v-model="queryState.type"
    name="home-tab"
    :showPaneContent="false"
@@ -11,7 +11,7 @@
    <ProTabPane :title="`全部`" :pane-key="0"></ProTabPane>
    <ProTabPane :title="`收入`" :pane-key="EnumUserWalletTransactionType.Income"></ProTabPane>
    <ProTabPane :title="`提现`" :pane-key="EnumUserWalletTransactionType.Withdraw"></ProTabPane>
  </ProTabs> -->
  </ProTabs>
  <List>
    <IncomeDetailListItem :item="`收入:¥${toThousand(sumIncome)} `">
      <template #title>
@@ -87,11 +87,10 @@
        page: pageParam,
        orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
      },
      type: EnumUserWalletTransactionType.Income,
    };
    // if (Number(queryState.type)) {
    //   params.type = queryState.type;
    // }
    if (Number(queryState.type)) {
      params.type = queryState.type;
    }
    if (queryState.month) {
      params.createdTimeStart = dayjs(queryState.month).startOf('month').format('YYYY-MM-DD');
      params.createdTimeEnd = dayjs(queryState.month).endOf('month').format('YYYY-MM-DD');
@@ -106,12 +105,16 @@
);
function goIncomeDetailInfo(row: API.GetPersonalUserTransactionsQueryResultItem) {
  if (row.type === EnumUserWalletTransactionType.Income) {
  Taro.navigateTo({
    url: `${RouterPath.incomeDetailInfo}?id=${row.id}`,
  });
  // Taro.navigateTo({
  //   url: `${RouterPath.withdrawDetailInfo}`,
  // });
  }
  if (row.type === EnumUserWalletTransactionType.Withdraw) {
    Taro.navigateTo({
      url: `${RouterPath.withdrawDetailInfo}?id=${row.id}`,
    });
  }
}
</script>
apps/cMiniApp/src/subpackages/wallet/incomeDetailInfo/InnerPage.vue
@@ -38,12 +38,11 @@
<script setup lang="ts">
import { List, ListItem, WithdrawMoneyCard } from '@12333/components';
import { EnumUserWalletTransactionType, EnumUserWalletTransactionTypeText } from '@12333/constants';
import { EnumUserWalletTransactionTypeText } from '@12333/constants';
import Taro from '@tarojs/taro';
import * as userServices from '@12333/services/apiV2/user';
import { useQuery } from '@tanstack/vue-query';
import dayjs from 'dayjs';
import { toThousand } from '@12333/utils';
import { useGetPersonalUserTransaction } from '../hooks';
defineOptions({
  name: 'InnerPage',
@@ -52,25 +51,8 @@
const router = Taro.useRouter();
const id = router.params?.id;
const {
  isLoading,
  isError,
  data: detail,
  refetch,
} = useQuery({
  queryKey: ['userServices/getPersonalUserTransaction', id],
  queryFn: async () => {
    return await userServices.getPersonalUserTransaction(
      { id: id },
      {
        showLoading: false,
      }
    );
  },
  placeholderData: () => ({} as API.GetPersonalUserTransactionQueryResult),
  onSuccess(data) {
    // if (data.isExistTradeChatRecord) setTrue();
  },
const { detail } = useGetPersonalUserTransaction({
  id: id,
});
</script>
apps/cMiniApp/src/subpackages/wallet/mineWallet/InnerPage.vue
@@ -1,17 +1,17 @@
<template>
  <!-- <div class="mine-wallet-balance">
    <WithdrawMoneyCard :money="100" title="账户余额(元)"></WithdrawMoneyCard>
  <div class="mine-wallet-balance">
    <WithdrawMoneyCard :money="userDetail.balance" title="账户余额(元)"></WithdrawMoneyCard>
    <nut-button type="primary" class="mine-wallet-balance-btn" @click="goWithdraw">提现</nut-button>
  </div> -->
  </div>
  <List>
    <ListItem title="收入明细" @click="goIncomeDetail"> </ListItem>
    <!-- <ListItem title="支付宝账户" @click="goWithdraw">
    <ListItem title="银行卡" @click="goBankBind">
      <template #extra>
        <div class="bind-bank-card">
          {{ isBinding ? '已绑定' : '未绑定、立即绑定' }}
        </div>
      </template>
    </ListItem> -->
    </ListItem>
  </List>
</template>
@@ -23,7 +23,7 @@
  name: 'InnerPage',
});
const { isCertified } = useUser();
const { userDetail } = useUser();
const isBinding = ref(false);
@@ -41,14 +41,14 @@
  },
  { message: '完成实名认证后才可提现' }
);
// const goBankBind = useAccessReal(
//   () => {
//     Taro.navigateTo({
//       url: `${isBinding.value ? RouterPath.bindBankCard : RouterPath.unboundBankCard}`,
//     });
//   },
//   { message: '完成实名认证后才可进行银行卡绑定' }
// );
const goBankBind = useAccessReal(
  () => {
    Taro.navigateTo({
      url: `${isBinding.value ? RouterPath.bindBankCard : RouterPath.unboundBankCard}`,
    });
  },
  { message: '完成实名认证后才可进行银行卡绑定' }
);
</script>
<style lang="scss">
apps/cMiniApp/src/subpackages/wallet/unboundBankCard/unboundBankCard.vue
@@ -1,5 +1,5 @@
<template>
  <PageLayout class="unboundBankCard-page-wrapper" title="绑定银行卡" has-border developing>
  <PageLayout class="unboundBankCard-page-wrapper" title="绑定银行卡" has-border>
    <InnerPage></InnerPage>
  </PageLayout>
</template>
apps/cMiniApp/src/subpackages/wallet/withdraw/InnerPage.vue
@@ -14,25 +14,27 @@
            <nut-radio label="alipay"> {{ '提现到支付宝' }} </nut-radio>
            <img :src="IconWalletAlipay" class="withdraw-icon" />
          </div>
          <!-- <div class="withdraw-form-item">
          <div class="withdraw-form-item">
            <nut-radio label="wechat"> {{ '提现到微信' }} </nut-radio>
            <img :src="IconWalletWechat" class="withdraw-icon" />
          </div>
          <div class="withdraw-form-item">
            <nut-radio label="bank"> {{ '提现到银行卡' }} </nut-radio>
            <img :src="IconWalletBank" class="withdraw-icon" />
          </div> -->
          </div>
        </nut-radio-group>
      </nut-form-item>
      <template v-if="form.alipay === 'alipay'">
      <nut-form-item label="支付宝户名:" class="bole-form-item" prop="name">
        <nut-input readonly v-model.trim="form.name" placeholder="请输入支付宝户名" />
      </nut-form-item>
      <nut-form-item label="身份证号:" class="bole-form-item" prop="name">
        <!-- <nut-form-item label="身份证号:" class="bole-form-item" prop="name">
        <nut-input readonly v-model.trim="form.name" placeholder="请输入身份证号" />
      </nut-form-item>
      </nut-form-item> -->
      <nut-form-item label="支付宝账号:" class="bole-form-item" prop="phoneNumber">
        <nut-input v-model.trim="form.name" placeholder="请输入支付宝账号/手机号" />
      </nut-form-item>
      </template>
    </nut-form>
  </ContentScrollView>
  <PageFooter>
apps/cMiniApp/src/subpackages/wallet/withdrawDetailInfo/InnerPage.vue
@@ -1,24 +1,24 @@
<template>
  <WithdrawMoneyCard :money="100" :title="`提现-${'支付宝'}提现`"></WithdrawMoneyCard>
  <WithdrawMoneyCard
    :money="detail?.amount"
    :title="EnumUserWalletTransactionTypeText[detail.type]"
  ></WithdrawMoneyCard>
  <List>
    <ListItem title="提现单号" :show-arrow="false">
      <template #extra>
        <div class="income-detail-info-value">{{ '5893485943859843095843' }}</div>
        <div class="income-detail-info-value">{{ detail?.code }}</div>
      </template>
    </ListItem>
    <ListItem title="提现金额" :show-arrow="false">
      <template #extra>
        <div class="income-detail-info-value">{{ '宁波人力无忧' }}</div>
        <div class="income-detail-info-value">{{ toThousand(detail?.amount) }}</div>
      </template>
    </ListItem>
    <ListItem title="提现方式" :show-arrow="false">
      <template #extra>
        <div class="income-detail-info-value">{{ '2024.11.13' }}</div>
      </template>
    </ListItem>
    <ListItem title="服务费" :show-arrow="false">
      <template #extra>
        <div class="income-detail-info-value">{{ '33.33元' }}</div>
        <div class="income-detail-info-value">
          {{ detail.type ? EnumUserWalletTransactionTypeText[detail.type] : '' }}
        </div>
      </template>
    </ListItem>
    <ListItem title="支付宝户名" :show-arrow="false">
@@ -31,9 +31,14 @@
        <div class="income-detail-info-value">{{ '5893485943859843095843' }}</div>
      </template>
    </ListItem>
    <ListItem title="服务费" :show-arrow="false">
      <template #extra>
        <div class="income-detail-info-value">{{ toThousand(detail?.serviceFee) }}</div>
      </template>
    </ListItem>
    <ListItem title="实际到账" :show-arrow="false">
      <template #extra>
        <div class="income-detail-info-value">{{ '33.33元' }}</div>
        <div class="income-detail-info-value">{{ toThousand(detail?.actualAmount) }}</div>
      </template>
    </ListItem>
  </List>
@@ -41,13 +46,21 @@
<script setup lang="ts">
import { List, ListItem, WithdrawMoneyCard } from '@12333/components';
import { useUserStore } from '@/stores/modules/user';
import { EnumUserWalletTransactionTypeText } from '@12333/constants';
import Taro from '@tarojs/taro';
import { useGetPersonalUserTransaction } from '../hooks';
import { toThousand } from '@12333/utils';
defineOptions({
  name: 'InnerPage',
});
const userStore = useUserStore();
const router = Taro.useRouter();
const id = router.params?.id;
const { detail } = useGetPersonalUserTransaction({
  id: id,
});
</script>
<style lang="scss">