zhengyiming
6 天以前 34e523d5ed7f25a0bc20532577ccde90386352aa
Merge branch 'dev-2.2.3' of http://120.26.58.240:8888/r/JYBIndependentFront into dev-2.2.3
2个文件已添加
8个文件已修改
784 ■■■■■ 已修改文件
src/constants/customerConsume.ts 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/hooks/useUser.ts 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/ParkBountyApply.ts 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/typings.d.ts 303 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/BalanceManage/BalanceManage.vue 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/BalanceManage/components/PaymentRecordView.vue 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/BalanceManage/components/RechargeRecordView.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/BalanceManage/components/RewardGrantRecordView.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/BalanceManage/components/WithdrawalRecordView.vue 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Home/Home.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/customerConsume.ts
@@ -18,3 +18,63 @@
  [FinanceTypeEnum.Recharge]: '预充值金额',
  [FinanceTypeEnum.PlatReward]: '平台奖励',
};
export enum TransferToStatusEnum {
  /** 待发放*/
  WaitingForTransfer = 1,
  /** 已发放*/
  HasTransfer = 2,
}
export const TransferToStatusEnumText = {
  [TransferToStatusEnum.WaitingForTransfer]: '待发放',
  [TransferToStatusEnum.HasTransfer]: '已发放',
};
export enum FinanceStatusEnum {
  /** 拨付待登记*/
  WaitForSettle = 1,
  /** 拨付已登记*/
  HasSettle = 2,
  /** 已上传凭证*/
  HasBill = 3,
}
export const FinanceStatusEnumText = {
  [FinanceStatusEnum.WaitForSettle]: '待拨付',
  [FinanceStatusEnum.HasSettle]: '已拨付',
  [FinanceStatusEnum.HasBill]: '已拨付',
};
export enum EnterpriseRechargeStatusEnum {
  /** 待审核*/
  WaitCheck = 10,
  /** 审核通过*/
  CheckPassed = 20,
  /** 审核未通过*/
  CheckReject = 30,
}
export const EnterpriseRechargeStatusEnumText = {
  [EnterpriseRechargeStatusEnum.WaitCheck]: '待审核',
  [EnterpriseRechargeStatusEnum.CheckPassed]: '审核通过',
  [EnterpriseRechargeStatusEnum.CheckReject]: '审核未通过',
};
export const EnterpriseRechargeStatusEnumTextWithdrawal = {
  [EnterpriseRechargeStatusEnum.WaitCheck]: '待审核',
  [EnterpriseRechargeStatusEnum.CheckPassed]: '已拨付',
  [EnterpriseRechargeStatusEnum.CheckReject]: '审核未通过',
};
export enum EnterprisePrechargeInComeStatusEnum {
  /** 未入账*/
  NotInCome = 10,
  /** 已入账*/
  HasInCome = 20,
}
export const EnterprisePrechargeInComeStatusEnumText = {
  [EnterprisePrechargeInComeStatusEnum.NotInCome]: '未入账',
  [EnterprisePrechargeInComeStatusEnum.HasInCome]: '已入账',
};
src/hooks/useUser.ts
@@ -2,6 +2,7 @@
import { UserUtils } from '@bole-core/core';
// import * as userRoleServices from '@/services/api/UserRole';
import * as userServices from '@/services/api/User';
import * as ParkBountyApplyServices from '@/services/api/ParkBountyApply';
import { useQuery, useQueryClient } from '@tanstack/vue-query';
export function useIsSystemAdmin() {
@@ -16,8 +17,17 @@
  const { userId, userInfo } = storeToRefs(userStore);
  const { data: userDetail } = useQuery({
    queryKey: ['ParkBountyApplyServices/get818UserInfo'],
    queryFn: async () => {
      return await ParkBountyApplyServices.get818UserInfo();
    },
    placeholderData: () => ({} as API.UserInfoV2),
  });
  return {
    user: userInfo,
    userId: userId,
    userDetail: userDetail,
  };
}
src/services/api/ParkBountyApply.ts
@@ -4,7 +4,7 @@
/** 奖励金-出账 POST /api/ParkBountyApply/AuditParkBountyApplyTrade */
export async function auditParkBountyApplyTrade(
  body: API.AuditParkBountyTradeInput,
  body: API.SyncAuditParkBountyTradeInput,
  options?: API.RequestConfig
) {
  return request<number>('/api/ParkBountyApply/AuditParkBountyApplyTrade', {
@@ -34,7 +34,7 @@
/** 奖励金-出账-财务审批 POST /api/ParkBountyApply/FinanceAuditParkBountyApplyTrade */
export async function financeAuditParkBountyApplyTrade(
  body: API.AuditParkBountyTradeInput,
  body: API.SyncFinanceAuditParkBountyTradeInput,
  options?: API.RequestConfig
) {
  return request<number>('/api/ParkBountyApply/FinanceAuditParkBountyApplyTrade', {
@@ -45,6 +45,47 @@
    data: body,
    ...(options || {}),
  });
}
/** 此处后端没有提供注释 GET /api/ParkBountyApply/Get818UserInfo */
export async function get818UserInfo(options?: API.RequestConfig) {
  return request<API.UserInfoV2>('/api/ParkBountyApply/Get818UserInfo', {
    method: 'GET',
    ...(options || {}),
  });
}
/** 此处后端没有提供注释 POST /api/ParkBountyApply/GetEnterpriseDrawWithList */
export async function getEnterpriseDrawWithList(
  body: API.GetEnterpriseDrawWithListInput,
  options?: API.RequestConfig
) {
  return request<API.GetEnterpriseDrawWithListOutputPageOutput>(
    '/api/ParkBountyApply/GetEnterpriseDrawWithList',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 此处后端没有提供注释 POST /api/ParkBountyApply/GetEnterprisePrechargeList */
export async function getEnterprisePrechargeList(body: API.PageInput, options?: API.RequestConfig) {
  return request<API.GetEnterprisePrechargeListOutputPageOutput>(
    '/api/ParkBountyApply/GetEnterprisePrechargeList',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 运营端-奖励进出账详情 POST /api/ParkBountyApply/GetParkBountyTradeDetailList */
@@ -83,6 +124,42 @@
  );
}
/** 此处后端没有提供注释 POST /api/ParkBountyApply/GetParkCustomerBountyFinanceList */
export async function getParkCustomerBountyFinanceList(
  body: API.QueryParkCustomerBountyApplyInput,
  options?: API.RequestConfig
) {
  return request<API.GetParkCustomerBountyFinanceOutputPageOutput>(
    '/api/ParkBountyApply/GetParkCustomerBountyFinanceList',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 园区客户管理奖励金发放记录 POST /api/ParkBountyApply/GetParkCustomerBountySettleList */
export async function getParkCustomerBountySettleList(
  body: API.QueryParkCustomerBountyApplyInput,
  options?: API.RequestConfig
) {
  return request<API.GetParkCustomerBountySettleOutputPageOutput>(
    '/api/ParkBountyApply/GetParkCustomerBountySettleList',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 运营端—奖励金-出账 POST /api/ParkBountyApply/ParkBountyApplyTrade */
export async function parkBountyApplyTrade(
  body: API.CreateParkBountyTradeInput,
src/services/api/typings.d.ts
@@ -469,21 +469,13 @@
  interface AuditParkBountyTradeBySelfInput {
    /** 出账记录Id */
    id?: string;
    /** 818出账记录Id */
    parkBountyApplyDetailId?: string;
    selfAuditStatus?: EnumParkBountyTradeDetailAuditStatus;
    /** 审核备注 */
    selfAuditRemark?: string;
    /** 审核凭证 */
    selfAuditFileUrl?: string;
  }
  interface AuditParkBountyTradeInput {
    /** 出账记录Id */
    id?: string;
    auditStatus?: EnumParkBountyTradeDetailAuditStatus;
    /** 审核备注 */
    auditRemark?: string;
    /** 审核凭证 */
    payAuditFileUrl?: string;
  }
  interface BaseAuthorizeDto {
@@ -531,6 +523,8 @@
  interface BatchSyncUserAmountInput {
    items?: SyncUserAmountInput[];
  }
  type BountyCheckStatusEnum = 10 | 20 | 30 | -10;
  interface ChangePasswordInput {
    currentPassword?: string;
@@ -745,6 +739,12 @@
    downsizingInsuranceList?: string[];
  }
  type EnterprisePrechargeInComeStatusEnum = 10 | 20;
  type EnterpriseRechargeStatusEnum = 10 | 20 | 30;
  type EnterpriseTypeEnum = 10 | 20 | 30 | 40;
  interface EntityExtensionDto {
    properties?: Record<string, any>;
    configuration?: Record<string, any>;
@@ -852,11 +852,67 @@
    url?: string;
  }
  type FinanceStatusEnum = 1 | 2 | 3;
  type FinanceTypeEnum = 10 | 20;
  type GenderTypeEnum = 1 | 2;
  interface GetEffectingStaffListInput {
    claimDateTime?: string;
    idNumber?: string;
  }
  interface GetEnterpriseDrawWithListInput {
    pageModel?: Pagination;
    keyWord?: string;
    beginDateTime?: string;
    endDateTime?: string;
    enterpriseId?: string;
    checkStatus?: EnterpriseRechargeStatusEnum;
  }
  interface GetEnterpriseDrawWithListOutput {
    drawWithId?: string;
    enterpriseId?: string;
    enterpriseName?: string;
    societyCreditCode?: string;
    creationTime?: string;
    enterpriseType?: string;
    parkName?: string;
    parkType?: string;
    amount?: number;
    remainAmount?: number;
    checkStatus?: EnterpriseRechargeStatusEnum;
    checkTime?: string;
    checkRemark?: string;
    checkFileUrl?: string;
  }
  interface GetEnterpriseDrawWithListOutputPageOutput {
    pageModel?: Pagination;
    objectData?: any;
    data?: GetEnterpriseDrawWithListOutput[];
  }
  interface GetEnterprisePrechargeListOutput {
    id?: string;
    /** 充值金额 */
    prechargeAmount?: number;
    /** 充值凭证 */
    rechargeVoucherFileUrl?: string;
    /** 审核备注 */
    checkRemark?: string;
    checkStatus?: EnterpriseRechargeStatusEnum;
    inComeStatus?: EnterprisePrechargeInComeStatusEnum;
    /** 提交日期 */
    creationTime?: string;
  }
  interface GetEnterprisePrechargeListOutputPageOutput {
    pageModel?: Pagination;
    objectData?: any;
    data?: GetEnterprisePrechargeListOutput[];
  }
  interface GetFeatureListResultDto {
@@ -1124,6 +1180,7 @@
    /** 社会统一信用代码 */
    societyCreditCode?: string;
    id?: string;
    parkBountyApplyDetailId?: string;
    /** 最近出账金额 */
    tradeAmount?: number;
    /** 出账凭证 */
@@ -1209,6 +1266,63 @@
    pageModel?: Pagination;
    objectData?: any;
    data?: GetParkBountyTradeOutput[];
  }
  interface GetParkCustomerBountyFinanceOutput {
    id?: string;
    /** 申请批次号 */
    batchNo?: string;
    /** 申报月份 */
    applyMonth?: string;
    /** 申报总额 */
    applySumAmount?: number;
    /** 财政拨付金额 */
    financeToAmount?: number;
    /** 财政拨付入账时间 */
    financeToTime?: string;
    /** 财政拨付发放日期 */
    financeTime?: string;
    financeToStatus?: FinanceStatusEnum;
    /** 拨付入账凭证 */
    financeToFileUrl?: string;
    inCheckStatus?: BountyCheckStatusEnum;
    outCheckStatus?: BountyCheckStatusEnum;
  }
  interface GetParkCustomerBountyFinanceOutputPageOutput {
    pageModel?: Pagination;
    objectData?: any;
    data?: GetParkCustomerBountyFinanceOutput[];
  }
  interface GetParkCustomerBountySettleOutput {
    id?: string;
    /** 申请批次号 */
    batchNo?: string;
    /** 申报月份 */
    applyMonth?: string;
    /** 申报总额 */
    applySumAmount?: number;
    /** 平台充值入账时间 */
    transferToTime?: string;
    transferToStatus?: TransferToStatusEnum;
    /** 平台充值金额 */
    transferToAmount?: number;
    /** 平台充值入账凭证 */
    transferToFileUrl?: string;
    /** 财政拨付金额 */
    financeToAmount?: number;
    /** 平台充值发放日期 */
    settleTime?: string;
    financeToStatus?: FinanceStatusEnum;
    inCheckStatus?: BountyCheckStatusEnum;
    outCheckStatus?: BountyCheckStatusEnum;
  }
  interface GetParkCustomerBountySettleOutputPageOutput {
    pageModel?: Pagination;
    objectData?: any;
    data?: GetParkCustomerBountySettleOutput[];
  }
  interface GetPermissionListResultDto {
@@ -1487,6 +1601,8 @@
    /** 导入失败列表 */
    errorList?: ImportInsStaffAnalysisList[];
  }
  type IndustrialParkStatusEnum = 10 | -10;
  type InsuranceClaimAttachmentBusinessTypeEnum = 10 | 20 | 30 | 40 | 50;
@@ -1911,6 +2027,8 @@
  type InsureProductSettingStatusEnum = 10 | -10;
  type InvoicingStatusEnum = 0 | 10 | 20;
  interface IStringValueType {
    name?: string;
    properties?: Record<string, any>;
@@ -1944,6 +2062,8 @@
    name?: string;
    resource?: string;
  }
  type MatchMakingIdentityEnum = 10 | 20;
  interface MethodParameterApiDescriptionModel {
    name?: string;
@@ -2493,6 +2613,11 @@
    importChannel?: string;
  }
  interface QueryParkCustomerBountyApplyInput {
    pageModel?: Pagination;
    id?: string;
  }
  interface QueryUserPageInput {
    pageModel?: Pagination;
    searchKey?: string;
@@ -2647,6 +2772,34 @@
    modules: ModuleTypeInfo[];
  }
  interface SyncAuditParkBountyTradeInput {
    /** 出账记录Id */
    id?: string;
    auditStatus?: EnumParkBountyTradeDetailAuditStatus;
    /** 审核备注 */
    auditRemark?: string;
    /** 审核凭证 */
    payAuditFileUrl?: string;
    /** 出账操作人 */
    auditOperator?: string;
    /** 出账操作人ID */
    auditOperatorId?: string;
  }
  interface SyncFinanceAuditParkBountyTradeInput {
    /** 出账记录Id */
    id?: string;
    auditStatus?: EnumParkBountyTradeDetailAuditStatus;
    /** 审核备注 */
    auditRemark?: string;
    /** 审核凭证 */
    payAuditFileUrl?: string;
    /** 财务审核操作人 */
    financeAuditOperator?: string;
    /** 财务审核操作人Id */
    financeAuditOperatorId?: string;
  }
  interface SyncUserAmountInput {
    /** 用户名称 */
    id?: string;
@@ -2728,6 +2881,8 @@
  interface TimingDto {
    timeZone?: TimeZone;
  }
  type TransferToStatusEnum = 1 | 2;
  interface TypeApiDescriptionModel {
    baseType?: string;
@@ -2931,6 +3086,12 @@
    totalAmount?: number;
  }
  type UserCertificationAuditStatusEnum = 0 | 10 | 30 | 40;
  type UserCertificationChannelEnum = 10 | 20;
  type UserCertificationStatusEnum = 0 | 20 | 30;
  interface UserData {
    id?: string;
    tenantId?: string;
@@ -2981,6 +3142,112 @@
    batchUpdateMessage?: boolean;
    /** 企业名称 */
    enterpriseName?: string;
  }
  interface UserInfoV2 {
    /** 用户Id */
    userId?: string;
    /** 用户名 */
    userName?: string;
    /** 手机号 */
    phoneNumber?: string;
    /** 用户登录所使用的手机号 */
    userPhoneNumber?: string;
    /** 账户余额 */
    amount?: number;
    /** 收到打赏 */
    reward?: number;
    /** 昵称 */
    nickName?: string;
    userCertificationAuditStatus?: UserCertificationAuditStatusEnum;
    /** 用户认证Id */
    userCertificationId?: string;
    /** 企业认证的名称 */
    customerName?: string;
    /** 企业统一信用代码 */
    societyCreditCode?: string;
    /** 用户认证Id(公司Id) */
    companyId?: string;
    /** 法人名称 */
    legalPersonName?: string;
    /** 年消费 */
    yearlyConsume?: number;
    /** 年产品购买消费 */
    yearlyPurchasedConsume?: number;
    /** 年打赏消费 */
    yearlyRewardConsume?: number;
    /** 年产品广告投放消费 */
    yearlyProductAdConsume?: number;
    /** 年资讯广告投放消费 */
    yearlyInformationAdConsume?: number;
    /** 1,企业 2, 个人 */
    userType?: number;
    authType?: EnterpriseTypeEnum;
    userCertificationStatus?: UserCertificationStatusEnum;
    /** 0 未开通 10 待审核   20办理中  30通过  -20 驳回 40 下架 50 系统下架 */
    openHRSiteStatus?: number;
    /** 联系人 */
    contacter?: string;
    /** 用户认证过期日期 */
    userCertificationExpirationTime?: string;
    invoicingStatus?: InvoicingStatusEnum;
    /** 年审开始时间 */
    annualAuditStartTime?: string;
    /** 支付发票地址 */
    payInvoicingUrl?: string;
    /** 绑定邮箱地址 */
    bindEmailAddress?: string;
    /** 用户头像地址 */
    avatarUrl?: string;
    genderType?: GenderTypeEnum;
    /** 职称 */
    jobTitle?: string;
    /** 省code */
    provinceCode?: number;
    /** 市code */
    cityCode?: number;
    /** 区县code */
    countyCode?: number;
    /** 省 */
    provinceName?: string;
    /** 市 */
    cityName?: string;
    /** 区县 */
    countyName?: string;
    /** 详细地址 */
    addressDetail?: string;
    /** 微信二维码图片 */
    wxQrCodeUrl?: string;
    /** 个人信息邮箱地址 */
    userInfoEmailAddress?: string;
    /** 保险签约状态 0未签约 10已签约 */
    insureSignStatus?: number;
    /** 是否提交钱包开户申请 */
    isApplyWalletAccountOpen?: boolean;
    /** 联系电话 */
    contactPhone?: string;
    /** 钱包开户状态 */
    walletAccountOpenStatus?: WalletAccountOpenStatusInfo[];
    /** 钱包状态 */
    walletMainStatus?: WalletAccountTypeMainStatusInfo[];
    matchMakingIdentity?: MatchMakingIdentityEnum;
    /** 电子签印章图片生成状态 0未生成 1已生成 */
    signatureImageStatus?: number;
    certificationChannel?: UserCertificationChannelEnum;
    industrialParkId?: string;
    industrialParkName?: string;
    suportEnterpriseUpload?: boolean;
    suportPlatRecharge?: boolean;
    rewardEnable?: boolean;
    suportWithDraw?: boolean;
    industrialParkStatus?: IndustrialParkStatusEnum;
    isHasBountyApply?: boolean;
    /** 是否可以登录电子签 */
    canLoginUserSign?: boolean;
    /** 是否可以登录江佑保 */
    canLoginJYB?: boolean;
    /** 是否可以登录灵活用工 */
    canLoginFlexJob?: boolean;
  }
  interface UserListOutput {
@@ -3057,6 +3324,22 @@
    sequence?: number;
  }
  type WalletAccountOpenStatusEnum = 10 | 20;
  interface WalletAccountOpenStatusInfo {
    walletAccountType?: WalletAccountTypeEnum;
    walletAccountOpenStatus?: WalletAccountOpenStatusEnum;
  }
  type WalletAccountTypeEnum = 10 | 20 | 30;
  interface WalletAccountTypeMainStatusInfo {
    walletAccountType?: WalletAccountTypeEnum;
    walletMainStatus?: WalletMainStatusEnum;
  }
  type WalletMainStatusEnum = 10 | -20 | -10;
  interface WindowsTimeZone {
    timeZoneId?: string;
  }
src/views/BalanceManage/BalanceManage.vue
@@ -68,8 +68,22 @@
        </RewardInfoCard>
      </RewardInfoCardList>
      <ProTabs v-model="state.tabType" hasBorder class="reward-tabs">
        <ProTabPane lazy label="消费记录" name="Consume">
          <ConsumeRecordView></ConsumeRecordView>
        <ProTabPane lazy label="拨付记录" name="Payment">
          <PaymentRecordView></PaymentRecordView>
        </ProTabPane>
        <template v-if="sceneThree || sceneFour">
          <ProTabPane lazy label="奖励发放记录" name="RewardGrant">
            <RewardGrantRecordView></RewardGrantRecordView>
          </ProTabPane>
          <ProTabPane lazy label="充值记录" name="Recharge">
            <RechargeRecordView ref="rechargeRecordRef"></RechargeRecordView>
          </ProTabPane>
          <ProTabPane lazy label="消费记录" name="Consume">
            <ConsumeRecordView></ConsumeRecordView>
          </ProTabPane>
        </template>
        <ProTabPane lazy label="提现记录" name="Withdrawal" v-if="sceneTwo || sceneFour">
          <WithdrawalRecordView ref="withdrawalRecordRef"></WithdrawalRecordView>
        </ProTabPane>
      </ProTabs>
    </AppContainer>
@@ -84,6 +98,10 @@
import RewardInfoCardContentItem from '@/components/Reward/RewardInfoCardContentItem.vue';
import { setOSSLink, downloadFileByUrl, toThousand, addStarForString } from '@/utils';
import ConsumeRecordView from './components/ConsumeRecordView.vue';
import RechargeRecordView from './components/RechargeRecordView.vue';
import RewardGrantRecordView from './components/RewardGrantRecordView.vue';
import WithdrawalRecordView from './components/WithdrawalRecordView.vue';
import PaymentRecordView from './components/PaymentRecordView.vue';
import { useQuery } from '@tanstack/vue-query';
import { useUser } from '@/hooks';
@@ -96,9 +114,22 @@
  tabType: 'Consume',
};
const { user } = useUser();
const { userDetail } = useUser();
const state = reactive({ ...BaseState });
const sceneOne = computed(() => {
  return !userDetail.value?.suportPlatRecharge && !userDetail.value?.suportWithDraw;
});
const sceneTwo = computed(() => {
  return !userDetail.value?.suportPlatRecharge && userDetail.value?.suportWithDraw;
});
const sceneThree = computed(() => {
  return userDetail.value?.suportPlatRecharge && !userDetail.value?.suportWithDraw;
});
const sceneFour = computed(() => {
  return userDetail.value?.suportPlatRecharge && userDetail.value?.suportWithDraw;
});
const { isLoading, data: detail } = useQuery({
  queryKey: ['userServices/getUserAmountShow'],
  queryFn: async () => {
src/views/BalanceManage/components/PaymentRecordView.vue
New file
@@ -0,0 +1,123 @@
<template>
  <LoadingLayout :loading="state.loading">
    <AppContainer>
      <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
        <template #operationBtn-checkBtn="{ data, row }">
          <PreviewBtnV2
            class="pro-table-operation-btn"
            :url="convertApi2FormUrlBySeparator(row.financeToFileUrl ?? '')"
            preview-btn-text="查看凭证"
          />
        </template>
      </ProTableV2>
    </AppContainer>
  </LoadingLayout>
</template>
<script setup lang="ts">
import {
  AppContainer,
  useTable,
  PreviewBtnV2,
  defineOperationBtns,
  ProTableV2,
} from '@bole-core/components';
import { OrderInputType } from '@bole-core/core';
import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
import { FinanceStatusEnum, FinanceStatusEnumText } from '@/constants';
import { useUser } from '@/hooks';
import { convertApi2FormUrlBySeparator } from '@/utils';
defineOptions({
  name: 'PaymentRecordView',
});
const column = [
  {
    id: '1',
    enCode: 'financeToTime',
    name: '拨付时间',
  },
  {
    id: '2',
    enCode: 'financeToAmount',
    name: '拨付金额',
  },
  {
    id: '3',
    enCode: 'batchNo',
    name: '拨付批次',
  },
  {
    id: '4',
    enCode: 'applyMonth',
    name: '拨付月份',
  },
  {
    id: '5',
    enCode: 'financeToStatus',
    name: '拨付状态',
  },
];
const operationBtns = defineOperationBtns([
  {
    data: {
      enCode: 'checkBtn',
      name: '查看凭证',
    },
  },
]);
const { userDetail } = useUser();
const BaseState = {
  loading: true,
};
const state = reactive({ ...BaseState });
const {
  getDataSource: getList,
  proTableProps,
  paginationState,
  extraParamState,
} = useTable(
  async ({ pageIndex, pageSize }, extraParamState) => {
    try {
      let params: API.QueryParkCustomerBountyApplyInput = {
        pageModel: {
          rows: pageSize,
          page: pageIndex,
          orderInput: extraParamState.orderInput,
        },
        id: userDetail.value?.userId ?? '',
      };
      let res = await parkBountyApplyServices.getParkCustomerBountyFinanceList(params, {
        showLoading: !state.loading,
      });
      return res;
    } catch (error) {}
  },
  {
    defaultExtraParams: {
      orderInput: [{ property: 'financeToTime', order: OrderInputType.Desc }],
    },
    columnsRenderProps: {
      financeToStatus: { type: 'enum', valueEnum: FinanceStatusEnumText },
      financeToTime: { type: 'date', format: 'YYYY-MM-DD' },
      applyMonth: { type: 'date', format: 'YYYY年MM月' },
      financeToAmount: { type: 'money' },
    },
  }
);
onMounted(async () => {
  await getList();
  state.loading = false;
});
</script>
<style lang="scss" scoped>
@use '@/style/common.scss' as *;
</style>
src/views/BalanceManage/components/RechargeRecordView.vue
@@ -35,14 +35,15 @@
  defineOperationBtns,
} from '@bole-core/components';
import { OrderInputType } from '@bole-core/core';
// import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
import {
  EnterpriseRechargeStatusEnumText,
  EnterpriseRechargeStatusEnum,
  EnterprisePrechargeInComeStatusEnum,
  EnterprisePrechargeInComeStatusEnumText,
} from '@/constants';
import { useUser } from '@/hooks';
// import {
//   EnterprisePrechargeInComeStatusEnum,
//   EnterprisePrechargeInComeStatusEnumText,
//   EnterpriseRechargeStatusEnum,
//   EnterpriseRechargeStatusEnumText,
// } from '@/constants';
import { convertApi2FormUrlBySeparator } from '@/utils';
defineOptions({
@@ -85,14 +86,11 @@
]);
const route = useRoute();
const router = useRouter();
const id = route.params.id as string;
const BaseState = {
  loading: true,
};
const state = reactive({ ...BaseState });
const { userDetail } = useUser();
const {
  getDataSource: getList,
src/views/BalanceManage/components/RewardGrantRecordView.vue
@@ -10,9 +10,9 @@
<script setup lang="ts">
import { AppContainer, useTable, ProTableV2 } from '@bole-core/components';
import { OrderInputType } from '@bole-core/core';
// import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
import { useUser } from '@/hooks';
// import { TransferToStatusEnumText } from '@/constants';
import { TransferToStatusEnumText } from '@/constants';
defineOptions({
  name: 'RewardGrantRecordView',
@@ -47,8 +47,6 @@
];
const route = useRoute();
const router = useRouter();
const id = route.params.id as string;
const BaseState = {
  loading: true,
};
src/views/BalanceManage/components/WithdrawalRecordView.vue
New file
@@ -0,0 +1,143 @@
<template>
  <LoadingLayout :loading="state.loading">
    <AppContainer>
      <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
        <template #checkStatus="{ data, row }">
          <div style="display: flex; justify-content: center; align-items: center">
            {{ EnterpriseRechargeStatusEnumTextWithdrawal[row.checkStatus] }}
            <el-tooltip
              placement="top"
              v-if="row.checkStatus === EnterpriseRechargeStatusEnum.CheckReject && row.checkRemark"
              :content="row.checkRemark"
            >
              <el-icon color="#ff0000"><WarningFilled /></el-icon>
            </el-tooltip>
          </div>
        </template>
        <template #operationBtn-checkBtn="{ data, row }">
          <PreviewBtnV2
            class="pro-table-operation-btn"
            :url="convertApi2FormUrlBySeparator(row.checkFileUrl ?? '')"
            preview-btn-text="查看凭证"
          />
        </template>
      </ProTableV2>
    </AppContainer>
  </LoadingLayout>
</template>
<script setup lang="ts">
import {
  AppContainer,
  useTable,
  PreviewBtnV2,
  ProTableV2,
  defineOperationBtns,
} from '@bole-core/components';
import { OrderInputType } from '@bole-core/core';
import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
import { useUser } from '@/hooks';
import {
  EnterpriseRechargeStatusEnumTextWithdrawal,
  EnterpriseRechargeStatusEnum,
} from '@/constants';
import { convertApi2FormUrlBySeparator } from '@/utils';
defineOptions({
  name: 'WithdrawalRecordView',
});
const column = [
  {
    id: '1',
    enCode: 'creationTime',
    name: '申请时间',
  },
  {
    id: '2',
    enCode: 'amount',
    name: '提现金额',
  },
  {
    id: '3',
    enCode: 'checkStatus',
    name: '审核状态',
  },
  {
    id: '4',
    enCode: 'checkTime',
    name: '审核时间',
  },
  {
    id: '5',
    enCode: 'remainAmount',
    name: '资金余额',
  },
];
const operationBtns = defineOperationBtns([
  {
    data: {
      enCode: 'checkBtn',
      name: '查看凭证',
    },
  },
]);
const route = useRoute();
const router = useRouter();
const id = route.params.id as string;
const BaseState = {
  loading: true,
};
const state = reactive({ ...BaseState });
const {
  getDataSource: getList,
  proTableProps,
  paginationState,
  extraParamState,
} = useTable(
  async ({ pageIndex, pageSize }, extraParamState) => {
    try {
      let params: API.GetEnterpriseDrawWithListInput = {
        pageModel: {
          rows: pageSize,
          page: pageIndex,
          orderInput: extraParamState.orderInput,
        },
      };
      let res = await parkBountyApplyServices.getEnterpriseDrawWithList(params, {
        showLoading: !state.loading,
      });
      return res;
    } catch (error) {}
  },
  {
    defaultExtraParams: {
      orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
    },
    columnsRenderProps: {
      creationTime: { type: 'date', format: 'YYYY-MM-DD' },
      checkTime: { type: 'date', format: 'YYYY-MM-DD' },
      amount: { type: 'money' },
      remainAmount: { type: 'money' },
      checkStatus: { type: 'enum', valueEnum: EnterpriseRechargeStatusEnumTextWithdrawal },
    },
  }
);
onMounted(async () => {
  await getList();
  state.loading = false;
});
defineExpose({
  getList,
});
</script>
<style lang="scss" scoped>
@use '@/style/common.scss' as *;
</style>
src/views/Home/Home.vue
@@ -197,8 +197,7 @@
      onClick: (role) => handleBatch(role),
    },
    extraProps: {
      hide: (row: API.GetInsurancePageOutput) =>
        row.productOnline || row.status !== InsurancePolicyStatusEnum.Effecting,
      hide: (row: API.GetInsurancePageOutput) => row.status !== InsurancePolicyStatusEnum.Effecting,
    },
  },
  {