wupengfei
2025-04-08 9e63ed4533fe6fbb5e81a096c9f5949c7ccf58f2
feat: 接口
2个文件已添加
16个文件已修改
762 ■■■■ 已修改文件
src/components/commonView/BatchInfoView.vue 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/commonView/DeclareEnterpriseTableView.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/commonView/DetailView.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/commonView/MaterialInfoView.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/commonView/SettlementMaterialInfoView.vue 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/commonView/types.ts 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/index.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/reward.ts 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/ParkBountyApply.ts 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/ParkReward.ts 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/User.ts 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/UserRole.ts 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/index.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/typings.d.ts 252 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/MaterialReview/MaterialReviewDetail.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Reward/RewardDeclareDetail.vue 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Reward/RewardGrant.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Reward/components/RewardGrantDialog.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/commonView/BatchInfoView.vue
@@ -1,41 +1,23 @@
<template>
  <ProFormCol>
    <ProFormColItem :span="12">
      <ProFormItemV2 label="申报批次号:" prop="applyNo">
        <ProFormText placeholder="请输入申报批次号" v-model.trim="form.categoryName" />
      <ProFormItemV2 label="申报批次号:" prop="batchNo">
        <ProFormText v-model.trim="form.batchNo" />
      </ProFormItemV2>
    </ProFormColItem>
    <ProFormColItem :span="12">
      <ProFormItemV2 label="申请奖励金月份:" prop="applyDate">
        <ProFormDatePicker
          v-model="form.categoryName"
          format="YYYY-MM"
          placeholder="请选择月份"
          type="month"
        />
      <ProFormItemV2 label="申请奖励金月份:" prop="applyMonth">
        <ProFormDatePicker v-model="form.applyMonth" format="YYYY-MM" type="month" />
      </ProFormItemV2>
    </ProFormColItem>
    <ProFormColItem :span="12">
      <ProFormItemV2 label="申报园区:" prop="applyParkId">
        <ProFormSelect
          v-model="form.categoryName"
          :valueEnum="[]"
          enumLabelKey="name"
          enum-value-key="userId"
          placeholder="请选择申报园区"
        >
        </ProFormSelect>
      <ProFormItemV2 label="申报园区:" prop="parkName">
        <ProFormText v-model.trim="form.parkName" />
      </ProFormItemV2>
    </ProFormColItem>
    <ProFormColItem :span="12">
      <ProFormItemV2 label="园区类型:">
        <ProFormSelect
          v-model="form.categoryName"
          :valueEnum="parkTypeList"
          enumLabelKey="name"
          enum-value-key="id"
        >
        </ProFormSelect>
        <ProFormText v-model.trim="form.parkTypeName" />
      </ProFormItemV2>
    </ProFormColItem>
  </ProFormCol>
@@ -60,7 +42,11 @@
type Props = {
  form: {
    categoryName: string;
    batchNo: string;
    parkName: string;
    parkTypeName: string;
    applyMonth: string;
    applySumAmount: number;
  };
};
src/components/commonView/DeclareEnterpriseTableView.vue
@@ -57,32 +57,32 @@
  },
  {
    id: '2',
    enCode: 'income',
    enCode: 'enterpriseName',
    name: '企业名称',
  },
  {
    id: '3',
    enCode: 'outcome',
    enCode: 'societyCreditCode',
    name: '信用代码',
  },
  {
    id: '4',
    enCode: 'acctBalance',
    enCode: 'contactPhone',
    name: '电话',
  },
  {
    id: '5',
    enCode: 'counterpartyAcctNoAndName',
    enCode: 'authType',
    name: '企业类型',
  },
  {
    id: '6',
    enCode: 'purpose',
    enCode: 'licenseUrl',
    name: '营业执照',
  },
  {
    id: '7',
    enCode: 'purpose',
    enCode: 'bankAccountInfo',
    name: '基本户信息',
  },
]);
src/components/commonView/DetailView.vue
@@ -27,9 +27,15 @@
type Props = {
  hasForm?: boolean;
  form?: {
    categoryName: string;
    amount: number;
    url: UploadUserFile[];
    batchNo: string;
    parkName: string;
    parkTypeName: string;
    applyMonth: string;
    applySumAmount: number;
    enterpriseTaxSubFileUrl: UploadUserFile[];
    enterpriseOperateFileUrl: UploadUserFile[];
    bountyAssignFileUlr: UploadUserFile[];
    bountyCollectFileUrl: UploadUserFile[];
  };
};
src/components/commonView/MaterialInfoView.vue
@@ -1,15 +1,15 @@
<template>
  <ProFormCol>
    <ProFormColItem :span="12">
      <ProFormItemV2 label="企业缴税明细汇总表:" prop="link">
        <ProFormUpload v-model:file-url="form.url"></ProFormUpload>
      <ProFormItemV2 label="企业缴税明细汇总表:" prop="enterpriseTaxSubFileUrl">
        <ProFormUpload v-model:file-url="form.enterpriseTaxSubFileUrl"></ProFormUpload>
      </ProFormItemV2>
    </ProFormColItem>
  </ProFormCol>
  <ProFormCol>
    <ProFormColItem :span="12">
      <ProFormItemV2 label="企业营收汇总表:" prop="link">
        <ProFormUpload v-model:file-url="form.url"></ProFormUpload>
      <ProFormItemV2 label="企业营收汇总表:" prop="enterpriseOperateFileUrl">
        <ProFormUpload v-model:file-url="form.enterpriseOperateFileUrl"></ProFormUpload>
      </ProFormItemV2>
    </ProFormColItem>
  </ProFormCol>
@@ -30,7 +30,8 @@
type Props = {
  form: {
    url: UploadUserFile[];
    enterpriseTaxSubFileUrl: UploadUserFile[];
    enterpriseOperateFileUrl: UploadUserFile[];
  };
};
src/components/commonView/SettlementMaterialInfoView.vue
@@ -1,22 +1,22 @@
<template>
  <ProFormCol>
    <ProFormColItem :span="12">
      <ProFormItemV2 label="本次申报奖励金总额:" prop="link">
        <ProFormInputNumber v-model="form.amount" unit="元" />
      <ProFormItemV2 label="本次申报奖励金总额:" prop="applySumAmount">
        <ProFormInputNumber v-model="form.applySumAmount" unit="元" />
      </ProFormItemV2>
    </ProFormColItem>
  </ProFormCol>
  <ProFormCol>
    <ProFormColItem :span="12">
      <ProFormItemV2 label="奖励金分配明细表:" prop="link">
        <ProFormUpload v-model:file-url="form.url"></ProFormUpload>
      <ProFormItemV2 label="奖励金分配明细表:" prop="bountyAssignFileUlr">
        <ProFormUpload v-model:file-url="form.bountyAssignFileUlr"></ProFormUpload>
      </ProFormItemV2>
    </ProFormColItem>
  </ProFormCol>
  <ProFormCol>
    <ProFormColItem :span="12">
      <ProFormItemV2 label="奖励金汇总表:" prop="link">
        <ProFormUpload v-model:file-url="form.url"></ProFormUpload>
      <ProFormItemV2 label="奖励金汇总表:" prop="bountyCollectFileUrl">
        <ProFormUpload v-model:file-url="form.bountyCollectFileUrl"></ProFormUpload>
      </ProFormItemV2>
    </ProFormColItem>
  </ProFormCol>
@@ -38,8 +38,9 @@
type Props = {
  form: {
    amount: number;
    url: UploadUserFile[];
    applySumAmount: number;
    bountyAssignFileUlr: UploadUserFile[];
    bountyCollectFileUrl: UploadUserFile[];
  };
};
src/components/commonView/types.ts
@@ -12,3 +12,29 @@
  fileBusinessType: EnterpriseMaterialFileBusinessTypeEnum;
  fileList: (API.AddEnterpriseMaterialFileInput & UploadUserFile)[];
};
export enum EnterpriseTypeEnum {
  /**
   * 人力资源公司
   */
  HREnterprise = 10,
  /**
   * 甲方企业
   */
  FirstPartyCompany = 20,
  /**
   * 行业配套
   */
  IndustryMating = 30,
  /**
   * 行业机构
   */
  IndustryBody = 40,
}
export const EnterpriseTypeEnumText = {
  [EnterpriseTypeEnum.HREnterprise]: '人力资源公司',
  [EnterpriseTypeEnum.FirstPartyCompany]: '甲方企业',
  [EnterpriseTypeEnum.IndustryMating]: '行业配套',
  [EnterpriseTypeEnum.IndustryBody]: '行业机构',
};
src/constants/index.ts
@@ -11,3 +11,4 @@
export * from './app';
export * from './dic';
export * from './enterpriseMaterial';
export * from './reward';
src/constants/reward.ts
New file
@@ -0,0 +1,52 @@
export enum BountyCheckStatusEnum {
  /**
   * 待审核
   */
  WaitCheck = 10,
  /**
   * 审核通过
   */
  CheckPassed = 20,
  /**
   * 审核不通过
   */
  CheckReject = 30,
}
export const BountyCheckStatusEnumText = {
  [BountyCheckStatusEnum.WaitCheck]: '待审核',
  [BountyCheckStatusEnum.CheckPassed]: '审核通过',
  [BountyCheckStatusEnum.CheckReject]: '审核不通过',
};
export enum SettleStatusEnum {
  /**
   * 待发放
   */
  WaitForSettle = 1,
  /**
   * 已发放
   */
  HasSettle = 2,
}
export const SettleStatusEnumText = {
  [SettleStatusEnum.WaitForSettle]: '待发放',
  [SettleStatusEnum.HasSettle]: '已发放',
};
export enum IncomeStatusEnum {
  /**
   * 待入账
   */
  WaitForIncome = 1,
  /**
   * 已入账
   */
  HasIncome = 2,
}
export const IncomeStatusEnumText = {
  [IncomeStatusEnum.WaitForIncome]: '待入账',
  [IncomeStatusEnum.HasIncome]: '已入账',
};
src/services/api/ParkBountyApply.ts
New file
@@ -0,0 +1,117 @@
/* eslint-disable */
// @ts-ignore
import { request } from '@/utils/request';
/** 获取申报详情 POST /api/ParkBountyApply/GetParkBountyApplyDetail */
export async function getParkBountyApplyDetail(
  body: API.GetParkBountyApplyInfoInput,
  options?: API.RequestConfig
) {
  return request<API.GetParkBountyApplyInfoOutput>(
    '/api/ParkBountyApply/GetParkBountyApplyDetail',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 获取奖励金发放列表 POST /api/ParkBountyApply/GetParkBountyApplyList */
export async function getParkBountyApplyList(
  body: API.GetParkBountyApplyListInput,
  options?: API.RequestConfig
) {
  return request<API.GetParkBountyApplyListOutputPageOutput>(
    '/api/ParkBountyApply/GetParkBountyApplyList',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 获取入账详情 POST /api/ParkBountyApply/GetParkBountyApplyTransferDetail */
export async function getParkBountyApplyTransferDetail(
  body: API.GetParkBountyApplyTransferInfoInput,
  options?: API.RequestConfig
) {
  return request<API.GetParkBountyApplyTransferInfoOutput>(
    '/api/ParkBountyApply/GetParkBountyApplyTransferDetail',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 批量入账 POST /api/ParkBountyApply/ParkBountyApplyBatchTransfer */
export async function parkBountyApplyBatchTransfer(
  body: API.ParkBountyApplyBatchTransferInput,
  options?: API.RequestConfig
) {
  return request<number>('/api/ParkBountyApply/ParkBountyApplyBatchTransfer', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 上传发票凭证 POST /api/ParkBountyApply/ParkBountyApplySettle */
export async function parkBountyApplySettle(
  body: API.ParkBountyApplySettleInput,
  options?: API.RequestConfig
) {
  return request<number>('/api/ParkBountyApply/ParkBountyApplySettle', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 奖励金入账 POST /api/ParkBountyApply/ParkBountyApplyTransfer */
export async function parkBountyApplyTransfer(
  body: API.ParkBountyApplyTransferInput,
  options?: API.RequestConfig
) {
  return request<number>('/api/ParkBountyApply/ParkBountyApplyTransfer', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 上传凭证 POST /api/ParkBountyApply/ParkBountyApplyTransferFile */
export async function parkBountyApplyTransferFile(
  body: API.ParkBountyApplyTransferFileInput,
  options?: API.RequestConfig
) {
  return request<number>('/api/ParkBountyApply/ParkBountyApplyTransferFile', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}
src/services/api/ParkReward.ts
@@ -62,6 +62,24 @@
  });
}
/** 获取企业奖励金流水 POST /api/ParkReward/GetEnterpriseBuntyTradeList */
export async function getEnterpriseBuntyTradeList(
  body: API.PageInput,
  options?: API.RequestConfig
) {
  return request<API.GetEnterpriseBuntyTradeDtoPageOutput>(
    '/api/ParkReward/GetEnterpriseBuntyTradeList',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 获取最新奖励申请信息 GET /api/ParkReward/GetNewestParkRewardApplyInfo */
export async function getNewestParkRewardApplyInfo(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
src/services/api/User.ts
@@ -401,6 +401,14 @@
  });
}
/** 获取企业奖金余额及基本信息 GET /api/User/GetUserBaseEnterpriseInfo */
export async function getUserBaseEnterpriseInfo(options?: API.RequestConfig) {
  return request<API.GetUserBaseEnterpriseInfoOutput>('/api/User/GetUserBaseEnterpriseInfo', {
    method: 'GET',
    ...(options || {}),
  });
}
/** 获取用户证书申请状态 GET /api/User/GetUserBestSignUserRegStatus */
export async function getUserBestSignUserRegStatus(options?: API.RequestConfig) {
  return request<number>('/api/User/GetUserBestSignUserRegStatus', {
@@ -698,6 +706,36 @@
  });
}
/** 保存银行基本信息 POST /api/User/SetUserEnterpiseBankInfo */
export async function setUserEnterpiseBankInfo(
  body: API.SetUserEnterpriseBankInfoInput,
  options?: API.RequestConfig
) {
  return request<number>('/api/User/SetUserEnterpiseBankInfo', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 保存企业基本信息 POST /api/User/SetUserEnterpiseBaseInfo */
export async function setUserEnterpiseBaseInfo(
  body: API.SetUserEnterpiseBaseInfoInput,
  options?: API.RequestConfig
) {
  return request<number>('/api/User/SetUserEnterpiseBaseInfo', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 取关用户 POST /api/User/UnFollowUser */
export async function unFollowUser(body: API.UnFollowUserInput, options?: API.RequestConfig) {
  return request<number>('/api/User/UnFollowUser', {
src/services/api/UserRole.ts
@@ -74,6 +74,21 @@
  });
}
/** 政务端账号列表 POST /api/UserRole/GetGovermentClientUsers */
export async function getGovermentClientUsers(
  body: API.GetBackClientUsersInput,
  options?: API.RequestConfig
) {
  return request<API.UserDtoPageOutput>('/api/UserRole/GetGovermentClientUsers', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 角色列表 POST /api/UserRole/GetRoles */
export async function getRoles(body: API.GetRolesInput, options?: API.RequestConfig) {
  return request<API.RoleInfoPageOutput>('/api/UserRole/GetRoles', {
src/services/api/index.ts
@@ -52,6 +52,7 @@
import * as OpenInformation from './OpenInformation';
import * as OperateHistory from './OperateHistory';
import * as Order from './Order';
import * as ParkBountyApply from './ParkBountyApply';
import * as ParkOrHR from './ParkOrHR';
import * as ParkReward from './ParkReward';
import * as Permissions from './Permissions';
@@ -137,6 +138,7 @@
  OpenInformation,
  OperateHistory,
  Order,
  ParkBountyApply,
  ParkOrHR,
  ParkReward,
  Permissions,
src/services/api/typings.d.ts
@@ -2671,6 +2671,8 @@
    userId?: string;
  }
  type BountyCheckStatusEnum = 10 | 20 | 30;
  type BusinessSettingTypeEnum = 10;
  interface CalculationWalletPayFeeInput {
@@ -3779,6 +3781,7 @@
    companyOrgId?: string;
    /** 组织架构部门id */
    departmentOrgId?: string;
    password?: string;
  }
  interface CreateBackClientUserInput {
@@ -3795,6 +3798,7 @@
    companyOrgId?: string;
    /** 组织架构部门id */
    departmentOrgId?: string;
    password?: string;
  }
  interface CreateBaseRoleInput {
@@ -5508,6 +5512,8 @@
    listOrderNo?: number[];
  }
  type EnterpriseBountyPayTypeEnum = 10 | 20;
  interface EnterpriseMaterialDetailOutput {
    id?: string;
    /** 年 */
@@ -6230,7 +6236,7 @@
    pageModel?: Pagination;
    /** 账户是否锁住(是否禁用) */
    isLocked?: boolean;
    /** 查询条件:名称/账号 */
    /** 查询条件:名称/账号/手机号 */
    queryCondition?: string;
  }
@@ -6520,6 +6526,23 @@
    platedTime?: string;
    /** 操作人 */
    operator?: string;
  }
  interface GetEnterpriseBuntyTradeDto {
    id?: string;
    payDateTime?: string;
    amount?: number;
    payType?: EnterpriseBountyPayTypeEnum;
    remianAmount?: number;
    payRemark?: string;
    fileUrl?: string;
    payFileUrls?: string[];
  }
  interface GetEnterpriseBuntyTradeDtoPageOutput {
    pageModel?: Pagination;
    objectData?: any;
    data?: GetEnterpriseBuntyTradeDto[];
  }
  interface GetEnterpriseCredentialDataResponse {
@@ -7684,6 +7707,88 @@
    enterinessName?: string;
  }
  interface GetParkBountyApplyInfoInput {
    parkBountyApplyId?: string;
    /** 企业名/信用代码 */
    searchKeyWord?: string;
  }
  interface GetParkBountyApplyInfoOutput {
    parkBountyApplyBaseInfo?: ParkBountyApplyBaseInfo;
    parkBountyApplyDetailInfoList?: ParkBountyApplyDetailInfo[];
  }
  interface GetParkBountyApplyListInput {
    pageModel?: Pagination;
    /** 申请批次号 */
    batchNo?: string;
    /** 申请起始日期 */
    creationTimeBegin?: string;
    /** 申请结束日期 */
    creationTimeEnd?: string;
    /** 发放起始日期 */
    settleTimeBegin?: string;
    /** 发放结束日期 */
    settleTimeEnd?: string;
    /** 入账起始日期 */
    incomeTimeBegin?: string;
    /** 入账结束日期 */
    incomeTimeEnd?: string;
    /** 外部审核起始日期 */
    outCheckTimeBegin?: string;
    /** 外部审核结束日期 */
    outCheckTimeEnd?: string;
    outCheckStatus?: BountyCheckStatusEnum;
    inCheckStatus?: BountyCheckStatusEnum;
    settleStatus?: SettleStatusEnum;
    incomeStatus?: IncomeStatusEnum;
  }
  interface GetParkBountyApplyListOutput {
    id?: string;
    /** 申请批次号 */
    batchNo?: string;
    /** 申请园区Id */
    parkId?: string;
    /** 申请园区 */
    parkName?: string;
    /** 申请园区类型 */
    parkTypeName?: string;
    /** 申请奖励金月份 */
    applyMonth?: string;
    /** 奖励金汇总金额 */
    applySumAmount?: number;
    /** 申请日期 */
    creationTime?: string;
    settleStatus?: SettleStatusEnum;
    /** 发放日期 */
    settleTime?: string;
    incomeStatus?: IncomeStatusEnum;
    /** 入账日期 */
    incomeTime?: string;
    outCheckStatus?: BountyCheckStatusEnum;
    /** 外部审核日期 */
    outCheckTime?: string;
  }
  interface GetParkBountyApplyListOutputPageOutput {
    pageModel?: Pagination;
    objectData?: any;
    data?: GetParkBountyApplyListOutput[];
  }
  interface GetParkBountyApplyTransferInfoInput {
    parkBountyApplyId?: string;
    /** 企业名/信用代码 */
    searchKeyWord?: string;
    transferToStatus?: TransferToStatusEnum;
  }
  interface GetParkBountyApplyTransferInfoOutput {
    parkBountyApplyBaseInfo?: ParkBountyApplyBaseInfo;
    parkBountyApplyTransferDetailInfoList?: ParkBountyApplyTransferDetailInfo[];
  }
  interface GetParkOrHRInfoByUserInput {
    categoryId?: string;
    userId?: string;
@@ -8158,6 +8263,19 @@
    attestateEndDate?: string;
    /** 查询条件:客户名称/联系人/手机号 */
    queryCondition?: string;
  }
  interface GetUserBaseEnterpriseInfoOutput {
    /** 奖励金余额 */
    bountyAmount?: number;
    enterpriseName?: string;
    societyCreditCode?: string;
    licenseUrl?: string;
    enterpriseIsVerify?: boolean;
    bankName?: string;
    bankBranchName?: string;
    bankCardNumber?: string;
    bankIsVerify?: boolean;
  }
  interface GetUserBaseInfoDataResponse {
@@ -9115,6 +9233,8 @@
  }
  type IncomeExpenseTypeEnum = 10 | 20;
  type IncomeStatusEnum = 1 | 2;
  interface IndustrialParkDetailOutput {
    id?: string;
@@ -13730,6 +13850,118 @@
    descriptorName?: string;
  }
  interface ParkBountyApplyBaseInfo {
    /** 申请批次号 */
    batchNo?: string;
    /** 申请园区Id */
    parkId?: string;
    /** 申请园区 */
    parkName?: string;
    /** 申请园区类型 */
    parkTypeName?: string;
    /** 申请奖励金月份 */
    applyMonth?: string;
    /** 奖励金汇总金额 */
    applySumAmount?: number;
    /** 汇总明细表 */
    enterpriseTaxSubFileUrl?: string;
    /** 企业营收汇总表 */
    enterpriseOperateFileUrl?: string;
    /** 奖励金分配表 */
    bountyAssignFileUlr?: string;
    /** 奖励金汇总表 */
    bountyCollectFileUrl?: string;
  }
  interface ParkBountyApplyBatchTransferInput {
    parkBountyApplyDetailId?: string[];
    /** 入账金额 */
    transferToAmount?: number;
  }
  interface ParkBountyApplyDetailInfo {
    parkBountyApplyId?: string;
    enterpriseId?: string;
    /** 企业名称 */
    enterpriseName?: string;
    /** 基本户信息 */
    bankAccountInfo?: string;
    /** 电话 */
    contactPhone?: string;
    /** 营业执照 */
    licenseUrl?: string;
    /** 社会统一信用代码 */
    societyCreditCode?: string;
    /** 园区入驻协议 */
    parkEnterPactUrl?: string;
    /** 完税证明 */
    ratePaymentFileUrl?: string;
    /** 企业缴税明细汇总表 */
    taxSubFileUrl?: string;
    /** 企业经营利润表 */
    operateProfitesUrl?: string;
    /** 入驻关联说明 */
    enterRelateUrl?: string;
    /** C端个税完税情况说明 */
    personTaxRatePayUrl?: string;
    authType?: EnterpriseTypeEnum;
  }
  interface ParkBountyApplySettleInput {
    parkBountyApplyId?: string;
    /** 发放凭证 */
    settleFileUrl?: string;
  }
  interface ParkBountyApplyTransferDetailInfo {
    parkBountyApplyId?: string;
    /** 账号 */
    userName?: string;
    enterpriseId?: string;
    /** 企业名称 */
    enterpriseName?: string;
    /** 基本户信息 */
    bankAccountInfo?: string;
    /** 电话 */
    contactPhone?: string;
    /** 营业执照 */
    licenseUrl?: string;
    /** 社会统一信用代码 */
    societyCreditCode?: string;
    /** 园区入驻协议 */
    parkEnterPactUrl?: string;
    /** 完税证明 */
    ratePaymentFileUrl?: string;
    /** 企业缴税明细汇总表 */
    taxSubFileUrl?: string;
    /** 企业经营利润表 */
    operateProfitesUrl?: string;
    /** 入驻关联说明 */
    enterRelateUrl?: string;
    /** C端个税完税情况说明 */
    personTaxRatePayUrl?: string;
    authType?: EnterpriseTypeEnum;
    transferToStatus?: TransferToStatusEnum;
    /** 入账金额 */
    transferToAmount?: number;
    /** 入账时间 */
    transferToTime?: string;
    /** 入账凭证 */
    transferToFileUrl?: string;
  }
  interface ParkBountyApplyTransferFileInput {
    parkBountyApplyDetailId?: string;
    /** 入账凭证 */
    transferToFileUrl?: string;
  }
  interface ParkBountyApplyTransferInput {
    parkBountyApplyDetailId?: string;
    /** 入账金额 */
    transferToAmount?: number;
  }
  type ParkCustomersCountTypeEnum = 10 | 50 | 100;
  interface ParkHRForHomePageInput {
@@ -16595,6 +16827,7 @@
  interface ResetPasswordBaseInput {
    userId?: string;
    password?: string;
  }
  interface ResetPasswordDto {
@@ -17350,12 +17583,26 @@
    type?: number;
  }
  type SettleStatusEnum = 1 | 2;
  interface SetUserCertificationAuditStatusInput {
    /** 审核Id */
    id?: string;
    auditStatus?: UserCertificationAuditStatusEnum;
    /** 审核备注 */
    auditNote?: string;
  }
  interface SetUserEnterpiseBaseInfoInput {
    enterpriseName?: string;
    societyCreditCode?: string;
    licenseUrl?: string;
  }
  interface SetUserEnterpriseBankInfoInput {
    bankName?: string;
    bankBranchName?: string;
    bankCardNumber?: string;
  }
  interface SetUserIndustrialParkInput {
@@ -18285,6 +18532,8 @@
  type TransAccountTypeEnum = 10 | 20;
  type TransferToStatusEnum = 1 | 2;
  interface TypeApiDescriptionModel {
    baseType?: string;
    isEnum?: boolean;
@@ -18333,6 +18582,7 @@
    companyOrgId?: string;
    /** 组织架构部门id */
    departmentOrgId?: string;
    password?: string;
    /** 用户Id */
    id?: string;
  }
src/views/MaterialReview/MaterialReviewDetail.vue
@@ -4,15 +4,13 @@
      <PageFormLayout>
        <template #title>
          <div class="page-form-layout-title">
            <div>
              申报详情
              <span class="page-form-layout-title-item status">
                {{ `审核状态:${form.categoryName}` }}
              </span>
              <span class="page-form-layout-title-item remark">
                {{ `审核未通过原因:${form.categoryName}` }}
              </span>
            </div>
            申报详情
            <span class="page-form-layout-title-item status">
              {{ `审核状态:${form.categoryName}` }}
            </span>
            <span class="page-form-layout-title-item remark">
              {{ `审核未通过原因:${form.categoryName}` }}
            </span>
          </div>
        </template>
        <DetailView :form="form">
src/views/Reward/RewardDeclareDetail.vue
@@ -18,7 +18,7 @@
import DetailView from '@/components/commonView/DetailView.vue';
import DeclareEnterpriseTableView from '@/components/commonView/DeclareEnterpriseTableView.vue';
import { useQuery } from '@tanstack/vue-query';
import * as informationServices from '@/services/api/Information';
import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
import { convertApi2FormUrlOnlyOne } from '@/utils';
import { useRouteView } from '@/hooks';
@@ -30,28 +30,49 @@
const { closeViewPush } = useRouteView();
const id = route.params?.id as string;
const form = reactive({
  categoryName: '',
  amount: 0,
  url: [] as UploadUserFile[],
  searchKeyWord: '',
  batchNo: '',
  parkName: '',
  parkTypeName: '',
  applyMonth: '',
  applySumAmount: 0,
  enterpriseTaxSubFileUrl: [] as UploadUserFile[],
  enterpriseOperateFileUrl: [] as UploadUserFile[],
  bountyAssignFileUlr: [] as UploadUserFile[],
  bountyCollectFileUrl: [] as UploadUserFile[],
});
const tableRef = ref<InstanceType<typeof DeclareEnterpriseTableView>>();
const { data: detail, isLoading } = useQuery({
  queryKey: ['informationServices/getInformationShowDetail', id],
  queryKey: ['parkBountyApplyServices/getParkBountyApplyDetail', id],
  queryFn: async () => {
    return await informationServices.getInformationShowDetail(
      { id: id },
    return await parkBountyApplyServices.getParkBountyApplyDetail(
      { parkBountyApplyId: id, searchKeyWord: form.searchKeyWord },
      {
        showLoading: false,
      }
    );
  },
  placeholderData: () => ({} as API.InformationShowDetailDto),
  placeholderData: () => ({} as API.GetParkBountyApplyInfoOutput),
  onSuccess(data) {
    form.categoryName = data.categoryName;
    form.amount = data.attentionCount;
    form.url = convertApi2FormUrlOnlyOne(data.avatarUrl);
    form.batchNo = data.parkBountyApplyBaseInfo.batchNo;
    form.parkName = data.parkBountyApplyBaseInfo.parkName;
    form.parkTypeName = data.parkBountyApplyBaseInfo.parkTypeName;
    form.applyMonth = data.parkBountyApplyBaseInfo.applyMonth;
    form.applySumAmount = data.parkBountyApplyBaseInfo.applySumAmount;
    form.enterpriseTaxSubFileUrl = convertApi2FormUrlOnlyOne(
      data.parkBountyApplyBaseInfo?.enterpriseTaxSubFileUrl
    );
    form.enterpriseOperateFileUrl = convertApi2FormUrlOnlyOne(
      data.parkBountyApplyBaseInfo?.enterpriseOperateFileUrl
    );
    form.bountyAssignFileUlr = convertApi2FormUrlOnlyOne(
      data.parkBountyApplyBaseInfo?.bountyAssignFileUlr
    );
    form.bountyCollectFileUrl = convertApi2FormUrlOnlyOne(
      data.parkBountyApplyBaseInfo?.bountyCollectFileUrl
    );
    tableRef.value?.getList();
  },
src/views/Reward/RewardGrant.vue
@@ -5,7 +5,7 @@
        <template #query>
          <QueryFilterItem tip-content="申报日期">
            <FieldDatePicker
              v-model="extraParamState.date"
              v-model="extraParamState.creationTime"
              type="daterange"
              range-separator="~"
              start-placeholder="开始日期"
@@ -16,7 +16,7 @@
          </QueryFilterItem>
          <QueryFilterItem tip-content="发放日期">
            <FieldDatePicker
              v-model="extraParamState.date"
              v-model="extraParamState.settleTime"
              type="daterange"
              range-separator="~"
              start-placeholder="开始日期"
@@ -27,8 +27,8 @@
          </QueryFilterItem>
          <QueryFilterItem>
            <FieldRadio
              v-model="extraParamState.showStatus"
              :value-enum="DataRangeEnumText"
              v-model="extraParamState.settleStatus"
              :value-enum="SettleStatusEnumText"
              buttonStyle
              showAllBtn
              @change="getList()"
@@ -36,7 +36,7 @@
          </QueryFilterItem>
          <QueryFilterItem>
            <SearchInput
              v-model="extraParamState.keyword"
              v-model="extraParamState.batchNo"
              style="width: 200px"
              placeholder="批次号"
              @on-click-search="getList"
@@ -48,7 +48,6 @@
      <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
      </ProTableV2>
      <RewardGrantDialog v-bind="dialogProps"></RewardGrantDialog>
    </AppContainer>
  </LoadingLayout>
@@ -68,11 +67,12 @@
  FieldDatePicker,
  useFormDialog,
  UploadUserFile,
  bolePreview,
} from '@bole-core/components';
import { OrderInputType } from '@bole-core/core';
import { convertApi2FormUrlOnlyOne, format } from '@/utils';
import { DataRangeEnum, DataRangeEnumText } from '@/constants';
import * as informationServices from '@/services/api/Information';
import { SettleStatusEnum, SettleStatusEnumText } from '@/constants';
import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
import RewardGrantDialog from './components/RewardGrantDialog.vue';
import _ from 'lodash';
import { ModelValueType } from 'element-plus';
@@ -84,42 +84,42 @@
const column: API.CustomModuleColumnDto[] = [
  {
    id: '1',
    enCode: 'changeFlag',
    enCode: 'batchNo',
    name: '申请批次号',
  },
  {
    id: '2',
    enCode: 'name',
    enCode: 'parkName',
    name: '申请园区',
  },
  {
    id: '3',
    enCode: 'idNumber',
    enCode: 'parkTypeName',
    name: '园区类型',
  },
  {
    id: '4',
    enCode: 'workType',
    enCode: 'applyMonth',
    name: '申请奖励金月份',
  },
  {
    id: '5',
    enCode: 'gender',
    enCode: 'applySumAmount',
    name: '奖励金汇总金额(元)',
  },
  {
    id: '6',
    enCode: 'age',
    enCode: 'creationTime',
    name: '申报日期',
  },
  {
    id: '7',
    enCode: 'phoneNumber',
    enCode: 'settleStatus',
    name: '发放状态',
  },
  {
    id: '8',
    enCode: 'phoneNumber',
    enCode: 'settleTime',
    name: '发放日期',
  },
];
@@ -175,16 +175,20 @@
} = useTable(
  async ({ pageIndex, pageSize }, extraParamState) => {
    try {
      let params: API.GetInformationForManageInput = {
      let params: API.GetParkBountyApplyListInput = {
        pageModel: {
          rows: pageSize,
          page: pageIndex,
          orderInput: extraParamState.orderInput,
        },
        publishStartDate: format(extraParamState.date?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
        publishEndDate: format(extraParamState.date?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
        batchNo: extraParamState.batchNo,
        settleStatus: extraParamState.settleStatus,
        creationTimeBegin: format(extraParamState.creationTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
        creationTimeEnd: format(extraParamState.creationTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
        settleTimeBegin: format(extraParamState.settleTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
        settleTimeEnd: format(extraParamState.settleTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
      };
      let res = await informationServices.getInformationForManage(params, {
      let res = await parkBountyApplyServices.getParkBountyApplyList(params, {
        showLoading: !state.loading,
      });
      return res;
@@ -192,10 +196,17 @@
  },
  {
    defaultExtraParams: {
      keyword: '',
      showStatus: '' as any as DataRangeEnum,
      date: [] as unknown as ModelValueType,
      batchNo: '',
      settleStatus: '' as any as SettleStatusEnum,
      creationTime: [] as unknown as ModelValueType,
      settleTime: [] as unknown as ModelValueType,
      orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
    },
    columnsRenderProps: {
      creationTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
      settleTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
      applySumAmount: { type: 'money' },
      settleStatus: { type: 'enum', valueEnum: SettleStatusEnumText },
    },
  }
);
@@ -210,20 +221,35 @@
}
const { dialogProps, handleAdd, handleEdit, editForm } = useFormDialog({
  onConfirm: handleAddOrEdit,
  defaultFormParams: {
    id: '',
    url: [] as UploadUserFile[],
    parkBountyApplyId: '',
    settleFileUrl: [] as UploadUserFile[],
  },
});
function openDialog(row?: API.IncentivePaymentsManageListOutput) {
function openDialog(row?: API.GetParkBountyApplyListOutput) {
  handleEdit({
    id: row.enterpriseName,
    url: convertApi2FormUrlOnlyOne(row.issueVouchersUrl),
    parkBountyApplyId: row.id,
    settleFileUrl: [] as UploadUserFile[],
  });
}
function handlePreview(row?: API.IncentivePaymentsManageListOutput) {}
async function handleAddOrEdit() {
  try {
    let params: API.ParkBountyApplySettleInput = {
      parkBountyApplyId: editForm.parkBountyApplyId,
      settleFileUrl: editForm.settleFileUrl[0].path,
    };
    let res = await parkBountyApplyServices.parkBountyApplySettle(params);
  } catch (error) {}
}
function handlePreview(row?: API.GetParkBountyApplyListOutput) {
  bolePreview({
    fileUrl: row.parkName,
  });
}
</script>
<style lang="scss" scoped>
src/views/Reward/components/RewardGrantDialog.vue
@@ -11,11 +11,11 @@
    <ProForm :model="innerForm" ref="dialogForm" label-width="120px">
      <ProFormItemV2
        label="上传发放凭证:"
        prop="url"
        prop="settleFileUrl"
        :check-rules="[{ message: '请上传发放凭证', type: 'upload' }]"
      >
        <ProFormUpload
          v-model:file-url="innerForm.url"
          v-model:file-url="innerForm.settleFileUrl"
          :limit="1"
          :limitFileSize="10"
          accept="doc,docx,pdf"
@@ -51,8 +51,8 @@
type Props = {
  modelValue: boolean;
  form?: {
    id: string;
    url: UploadUserFile[];
    parkBountyApplyId: string;
    settleFileUrl: UploadUserFile[];
  };
};