wupengfei
2025-04-10 8fb20fc31b4be097e5408b9ecfeb5002ebe042f3
feat: 接口
20个文件已修改
976 ■■■■ 已修改文件
src/components/Layout/ChunkCellV2.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/commonView/DeclareEnterpriseTableView.vue 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/commonView/DetailView.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/commonView/MaterialInfoView.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/commonView/SettlementMaterialInfoView.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/reward.ts 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/Account.ts 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/ParkBountyApply.ts 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/UserRole.ts 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/typings.d.ts 244 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Account/AccountManageList.vue 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Account/components/AddOrEditAccountDialog.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Account/components/ResetPasswordDialog.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EnterpriseInfo/EnterpriseInfo.vue 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EnterpriseInfo/components/EnterpriseDeclareRecordView.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Home/Home.vue 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Login/Login.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/MaterialReview/MaterialReview.vue 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/MaterialReview/MaterialReviewAudit.vue 98 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/MaterialReview/MaterialReviewDetail.vue 80 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Layout/ChunkCellV2.vue
@@ -36,5 +36,9 @@
    margin-bottom: 0;
    border-bottom: none;
  }
  .chunk-cell-v2-content {
    padding-bottom: 12px;
  }
}
</style>
src/components/commonView/DeclareEnterpriseTableView.vue
@@ -32,27 +32,31 @@
  ProTableV2,
  SearchInput,
  useFormDialog,
  useTable,
  defineOperationBtns,
  defineColumns,
} from '@bole-core/components';
import MateriaDetailDialog from './MateriaDetailDialog.vue';
import { FourStreamsMaterialFileTableItem } from './types';
import { OrderInputType } from '@bole-core/core';
import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
defineOptions({
  name: 'DeclareEnterpriseTableView',
});
type Props = {};
type Props = {
  getList: (pageIndex?: number) => Promise<void>;
  reset: () => void;
  proTableProps: any;
  extraParamState: {
    searchKeyWord: string;
  };
};
const props = withDefaults(defineProps<Props>(), {});
const column = defineColumns([
  {
    id: '1',
    enCode: 'accDateTime',
    enCode: 'userName',
    name: '帐号',
  },
  {
@@ -99,35 +103,6 @@
  },
]);
const {
  getDataSource: getList,
  proTableProps,
  paginationState,
  extraParamState,
  reset,
} = useTable(
  async ({ pageIndex, pageSize }, extraParamState) => {
    try {
      let params: API.GetParkBountyApplyInfoInput = {
        pageModel: {
          rows: pageSize,
          page: pageIndex,
          orderInput: extraParamState.orderInput,
        },
        searchKeyWord: extraParamState.searchKeyWord,
      };
      let res = await parkBountyApplyServices.getParkBountyApplyDetailList(params);
      return res;
    } catch (error) {}
  },
  {
    defaultExtraParams: {
      orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
      searchKeyWord: '',
    },
  }
);
const { dialogProps, handleEdit, editForm } = useFormDialog({
  defaultFormParams: {
    list: [] as FourStreamsMaterialFileTableItem[],
@@ -139,10 +114,6 @@
    list: [],
  });
}
defineExpose({
  getList,
});
</script>
<style lang="scss" scoped>
src/components/commonView/DetailView.vue
@@ -1,12 +1,12 @@
<template>
  <ProForm :model="form" label-width="160px" label-position="left" is-read>
    <ChunkCellV2 title="材料审核">
    <ChunkCellV2 title="材料审核" style="margin-bottom: 0">
      <BatchInfoView :form="form"></BatchInfoView>
    </ChunkCellV2>
    <ChunkCellV2 title="汇总材料">
    <ChunkCellV2 title="汇总材料" style="margin-bottom: 0">
      <MaterialInfoView :form="form"></MaterialInfoView>
    </ChunkCellV2>
    <ChunkCellV2 title="汇算材料">
    <ChunkCellV2 title="汇算材料" style="margin-bottom: 0">
      <SettlementMaterialInfoView :form="form"></SettlementMaterialInfoView>
    </ChunkCellV2>
    <slot></slot>
src/components/commonView/MaterialInfoView.vue
@@ -1,7 +1,11 @@
<template>
  <ProFormCol>
    <ProFormColItem :span="12">
      <ProFormItemV2 label="企业缴税明细汇总表:" prop="enterpriseTaxSubFileUrl">
      <ProFormItemV2
        label="企业缴税明细汇总表:"
        prop="enterpriseTaxSubFileUrl"
        style="margin-bottom: 22px"
      >
        <ProFormUpload v-model:file-url="form.enterpriseTaxSubFileUrl"></ProFormUpload>
      </ProFormItemV2>
    </ProFormColItem>
src/components/commonView/SettlementMaterialInfoView.vue
@@ -8,7 +8,11 @@
  </ProFormCol>
  <ProFormCol>
    <ProFormColItem :span="12">
      <ProFormItemV2 label="奖励金分配明细表:" prop="bountyAssignFileUlr">
      <ProFormItemV2
        label="奖励金分配明细表:"
        prop="bountyAssignFileUlr"
        style="margin-bottom: 22px"
      >
        <ProFormUpload v-model:file-url="form.bountyAssignFileUlr"></ProFormUpload>
      </ProFormItemV2>
    </ProFormColItem>
src/constants/reward.ts
@@ -1,5 +1,9 @@
export enum BountyCheckStatusEnum {
  /**
   * 未提交
   */
  NotSubmit = -10,
  /**
   * 待审核
   */
  WaitCheck = 10,
@@ -16,7 +20,11 @@
export const BountyCheckStatusEnumText = {
  [BountyCheckStatusEnum.WaitCheck]: '待审核',
  [BountyCheckStatusEnum.CheckPassed]: '审核通过',
  [BountyCheckStatusEnum.CheckReject]: '审核不通过',
  [BountyCheckStatusEnum.CheckReject]: '审核未通过',
};
export const BountyCheckStatusEnumTextForAudit = {
  [BountyCheckStatusEnum.CheckPassed]: '审核通过',
  [BountyCheckStatusEnum.CheckReject]: '驳回',
};
export enum SettleStatusEnum {
src/services/api/Account.ts
@@ -341,6 +341,18 @@
  });
}
/** 政务端一系统配置一重置密码 POST /api/Account/ResetPassword */
export async function resetPassword(body: API.ResetPasswordBaseInput, options?: API.RequestConfig) {
  return request<number>('/api/Account/ResetPassword', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 重置密码并发送手机通知新密码 POST /api/Account/ResetPasswordWithMicroNotify */
export async function resetPasswordWithMicroNotify(
  body: API.ResetPasswordBaseInput,
@@ -536,7 +548,7 @@
}
/** 此处后端没有提供注释 POST /api/accountAuth/ResetPassword */
export async function resetPassword(body: API.ResetPasswordDto, options?: API.RequestConfig) {
export async function resetPassword_2(body: API.ResetPasswordDto, options?: API.RequestConfig) {
  return request<any>('/api/accountAuth/ResetPassword', {
    method: 'POST',
    headers: {
src/services/api/ParkBountyApply.ts
@@ -17,6 +17,21 @@
  });
}
/** 撤回申报 GET /api/ParkBountyApply/CancelParkBountyApply */
export async function cancelParkBountyApply(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIcancelParkBountyApplyParams,
  options?: API.RequestConfig
) {
  return request<number>('/api/ParkBountyApply/CancelParkBountyApply', {
    method: 'GET',
    params: {
      ...params,
    },
    ...(options || {}),
  });
}
/** 继续申报 POST /api/ParkBountyApply/EditParkBountyApply */
export async function editParkBountyApply(
  body: API.EditParkBountyApplyStepOneInput,
@@ -47,6 +62,32 @@
  });
}
/** 获取运营端 奖励金申报列表 POST /api/ParkBountyApply/GetCustmoerParkBountyApplyList */
export async function getCustmoerParkBountyApplyList(
  body: API.GetCustomerParkBountyApplyListInput,
  options?: API.RequestConfig
) {
  return request<API.GetParkBountyApplyListOutputPageOutput>(
    '/api/ParkBountyApply/GetCustmoerParkBountyApplyList',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 政务端—工作台数据看板 GET /api/ParkBountyApply/GetGoverDataBoard */
export async function getGoverDataBoard(options?: API.RequestConfig) {
  return request<API.GetGoverDataBoardOutput>('/api/ParkBountyApply/GetGoverDataBoard', {
    method: 'GET',
    ...(options || {}),
  });
}
/** 获取已申报企业列表 含可选择、已剔除 POST /api/ParkBountyApply/GetHasApplyCompanyNameList */
export async function getHasApplyCompanyNameList(
  body: API.GetHasApplyCompanyNameListInput,
@@ -65,12 +106,66 @@
  );
}
/** 政务端-材料审核-申报详情 POST /api/ParkBountyApply/GetOutCheckParkBountyApplyDetailBaseInfo */
export async function getOutCheckParkBountyApplyDetailBaseInfo(
  body: API.GetParkBountyApplyInfoInput,
  options?: API.RequestConfig
) {
  return request<API.OutCheckParkBountyApplyBaseInfo>(
    '/api/ParkBountyApply/GetOutCheckParkBountyApplyDetailBaseInfo',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 政务端-材料审核-申报企业名单 POST /api/ParkBountyApply/GetOutCheckParkBountyApplyDetailList */
export async function getOutCheckParkBountyApplyDetailList(
  body: API.GetParkBountyApplyInfoInput,
  options?: API.RequestConfig
) {
  return request<API.ParkBountyApplyDetailInfoPageOutput>(
    '/api/ParkBountyApply/GetOutCheckParkBountyApplyDetailList',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 政务端-材料审核-获取外部审核列表 POST /api/ParkBountyApply/GetOutcheckParkBountyList */
export async function getOutcheckParkBountyList(
  body: API.GetParkBountyApplyListInput,
  options?: API.RequestConfig
) {
  return request<API.GetParkBountyApplyListOutputPageOutput>(
    '/api/ParkBountyApply/GetOutcheckParkBountyList',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 跟进园区查询公司分页列表 POST /api/ParkBountyApply/GetParkApplyCompanyList */
export async function getParkApplyCompanyList(
  body: API.GetApplyCompanyListInput,
  options?: API.RequestConfig
) {
  return request<API.GetParkApplyCompanyListOutputPageOutput>(
  return request<API.ParkBountyApplyDetailInfoPageOutput>(
    '/api/ParkBountyApply/GetParkApplyCompanyList',
    {
      method: 'POST',
@@ -96,6 +191,24 @@
        'Content-Type': 'application/json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 运营端-奖励金发放-入账-获取批量入账中未入账的企业 GET /api/ParkBountyApply/GetParkBountyApplyBatchTransferEnterprise */
export async function getParkBountyApplyBatchTransferEnterprise(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetParkBountyApplyBatchTransferEnterpriseParams,
  options?: API.RequestConfig
) {
  return request<API.GetCompanyNameListOutput[]>(
    '/api/ParkBountyApply/GetParkBountyApplyBatchTransferEnterprise',
    {
      method: 'GET',
      params: {
        ...params,
      },
      ...(options || {}),
    }
  );
@@ -206,6 +319,42 @@
  );
}
/** 运营端-奖励进出账详情 POST /api/ParkBountyApply/GetParkBountyTradeDetailList */
export async function getParkBountyTradeDetailList(
  body: API.GetParkBountyTradeDetailByIdInput,
  options?: API.RequestConfig
) {
  return request<API.GetParkBountyTradeDetailOutputPageOutput>(
    '/api/ParkBountyApply/GetParkBountyTradeDetailList',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 运营端-奖励金使用管理列表 POST /api/ParkBountyApply/GetParkBountyTradeList */
export async function getParkBountyTradeList(
  body: API.GetParkBountyTradeInput,
  options?: API.RequestConfig
) {
  return request<API.GetParkBountyTradeOutputPageOutput>(
    '/api/ParkBountyApply/GetParkBountyTradeList',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      data: body,
      ...(options || {}),
    }
  );
}
/** 运营端-政务端一园区客户管理详情一企业申报记录 POST /api/ParkBountyApply/GetParkCustomerBountyApplyList */
export async function getParkCustomerBountyApplyList(
  body: API.QueryParkCustomerBountyApplyInput,
@@ -275,6 +424,21 @@
  });
}
/** 政务端-材料审核-外部审核 POST /api/ParkBountyApply/OutcheckParkBountyApply */
export async function outcheckParkBountyApply(
  body: API.OutcheckParkBountyApplyInput,
  options?: API.RequestConfig
) {
  return request<number>('/api/ParkBountyApply/OutcheckParkBountyApply', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 运营端—入账-批量入账 POST /api/ParkBountyApply/ParkBountyApplyBatchTransfer */
export async function parkBountyApplyBatchTransfer(
  body: API.ParkBountyApplyBatchTransferInput,
@@ -305,6 +469,21 @@
  });
}
/** 运营端—奖励金-出账 POST /api/ParkBountyApply/ParkBountyApplyTrade */
export async function parkBountyApplyTrade(
  body: API.CreateParkBountyTradeInput,
  options?: API.RequestConfig
) {
  return request<number>('/api/ParkBountyApply/ParkBountyApplyTrade', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 运营端—入账—奖励金入账 POST /api/ParkBountyApply/ParkBountyApplyTransfer */
export async function parkBountyApplyTransfer(
  body: API.ParkBountyApplyTransferInput,
src/services/api/UserRole.ts
@@ -17,6 +17,21 @@
  });
}
/** 政务端一系统配置一创建政务端用户 POST /api/UserRole/CreateGovermentClientUser */
export async function createGovermentClientUser(
  body: API.CreateGoverUserInput,
  options?: API.RequestConfig
) {
  return request<string>('/api/UserRole/CreateGovermentClientUser', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 新增角色 POST /api/UserRole/CreateRole */
export async function createRole(body: API.CreateBaseRoleInput, options?: API.RequestConfig) {
  return request<string>('/api/UserRole/CreateRole', {
@@ -131,6 +146,21 @@
  });
}
/** 政务端一系统配置一编辑政务端账户 POST /api/UserRole/UpdateGovermentClientUser */
export async function updateGovermentClientUser(
  body: API.UpdateGovermentClientUserInput,
  options?: API.RequestConfig
) {
  return request<number>('/api/UserRole/UpdateGovermentClientUser', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 角色编辑 POST /api/UserRole/UpdateRole */
export async function updateRole(body: API.CreateOrUpdateRoleInput, options?: API.RequestConfig) {
  return request<number>('/api/UserRole/UpdateRole', {
src/services/api/typings.d.ts
@@ -946,6 +946,10 @@
    walletAccountType?: WalletAccountTypeEnum;
  }
  interface APIcancelParkBountyApplyParams {
    parkBountyApplyId?: string;
  }
  interface APIcheckUserCertificationRepeatParams {
    userId?: string;
    enterpriseName?: string;
@@ -1550,6 +1554,10 @@
  interface APIgetParams {
    id?: string;
  }
  interface APIgetParkBountyApplyBatchTransferEnterpriseParams {
    parkBountyApplyId?: string;
  }
  interface APIgetParkCustomerManageBaseDetailParams {
@@ -3883,6 +3891,21 @@
    status?: CooperationApplyStatusEnum;
  }
  interface CreateGoverUserInput {
    /** 名称 */
    name?: string;
    /** 用户名 */
    userName?: string;
    /** 备注 */
    remark?: string;
    /** 手机号 */
    phoneNumber?: string;
    /** 角色 */
    roleNames?: string[];
    /** 密码 */
    password?: string;
  }
  interface CreateInformationAdvertiseInput {
    /** 对外联系人 */
    outerContacter?: string;
@@ -4841,6 +4864,16 @@
    name: string;
    /** 排序 */
    sequence?: number;
  }
  interface CreateParkBountyTradeInput {
    enterpriseId?: string;
    /** 最近出账金额 */
    tradeAmount?: number;
    /** 出账凭证 */
    payFileUrl?: string;
    /** 消费类型 */
    payRemark?: string;
  }
  interface CreateParkOrHRAdvertiseInput {
@@ -6533,6 +6566,26 @@
    data?: GetCustomerListOutput[];
  }
  interface GetCustomerParkBountyApplyListInput {
    pageModel?: Pagination;
    /** 申请批次号 */
    batchNo?: string;
    /** 申请起始日期 */
    creationTimeBegin?: string;
    /** 申请结束日期 */
    creationTimeEnd?: string;
    /** 内部审核起始日期 */
    inCheckTimeBegin?: string;
    /** 内部审核结束日期 */
    inCheckTimeEnd?: string;
    /** 外部审核起始日期 */
    outCheckTimeBegin?: string;
    /** 外部审核结束日期 */
    outCheckTimeEnd?: string;
    outCheckStatus?: BountyCheckStatusEnum;
    inCheckStatus?: BountyCheckStatusEnum;
  }
  interface GetCustomersExportInput {
    /** 查询条件:甲方名称/联系人 */
    queryCondition?: string;
@@ -6745,6 +6798,25 @@
    signName?: string;
    status?: LgGigWorkerSignStatus;
    settingStatus?: LgGigWorkerSignSettingStatus;
  }
  interface GetGoverDataBoardOutput {
    /** 待审核 */
    waitCheckEnterpriseNumber?: number;
    /** 奖励金待发放 */
    waitForSettleRewardNumber?: number;
    /** 累计已审核企业 */
    accumulatedCheckEnterpriseNumber?: number;
    /** 累计已审核通过企业 */
    accumulatedCheckPassEnterpriseNumber?: number;
    /** 累计未审核通过企业 */
    accumulatedCheckRejectEnterpriseNumber?: number;
    /** 累计已发放奖励金 */
    accumulatedHasSettleRewardAmount?: number;
    /** 累计待发放奖励金 */
    accumulatedWaitForSettleRewardAmount?: number;
    /** 累计已使用奖励金 */
    accumulatedUsedRewardAmount?: number;
  }
  interface GetHasApplyCompanyNameListInput {
@@ -7757,32 +7829,6 @@
    enterinessName?: string;
  }
  interface GetParkApplyCompanyListOutput {
    id?: string;
    userName?: string;
    enterpriseName?: string;
    bankIsVerify?: boolean;
    /** 营业执照文件地址 */
    licenseUrl?: string;
    /** 统一社会信用代码 */
    societyCreditCode?: string;
    /** 企业信息是否已完善 */
    enterpriseIsVerify?: boolean;
    authType?: EnterpriseTypeEnum;
    /** 企业类型 10人力资源公司 20甲方企业 30行业配套 40行业机构 */
    type?: number;
    /** 用户手机号 */
    phoneNumber?: string;
    /** 创建时间 */
    creationTime?: string;
  }
  interface GetParkApplyCompanyListOutputPageOutput {
    pageModel?: Pagination;
    objectData?: any;
    data?: GetParkApplyCompanyListOutput[];
  }
  interface GetParkApplyCompanyStepTwoListInput {
    pageModel?: Pagination;
    parkBountyApplyId?: string;
@@ -7791,6 +7837,8 @@
    bankIsVerify?: boolean;
    /** 营业执照是否已完善 */
    enterpriseIsVerify?: boolean;
    /** 选择公司Id */
    removeCompanyIds?: string[];
  }
  interface GetParkBountyApplyFileInput {
@@ -7874,6 +7922,9 @@
    /** 发放日期 */
    settleTime?: string;
    incomeStatus?: IncomeStatusEnum;
    inCheckStatus?: BountyCheckStatusEnum;
    /** 内部审核日期 */
    inCheckTime?: string;
    outCheckStatus?: BountyCheckStatusEnum;
    /** 外部审核日期 */
    outCheckTime?: string;
@@ -7891,6 +7942,82 @@
    /** 企业名/信用代码 */
    searchKeyWord?: string;
    transferToStatus?: TransferToStatusEnum;
  }
  interface GetParkBountyTradeDetailByIdInput {
    pageModel?: Pagination;
    /** 企业名/信用代码 */
    searchKeyWord?: string;
    /** 申请起始日期 */
    creationTimeBegin?: string;
    /** 申请结束日期 */
    creationTimeEnd?: string;
    /** 出账起始日期 */
    transferTimeBegin?: string;
    /** 出账结束日期 */
    transferTimeEnd?: string;
    enterpriseId?: string;
  }
  interface GetParkBountyTradeDetailOutput {
    /** 最近出账金额 */
    tradeAmount?: number;
    /** 出账凭证 */
    payFileUrl?: string;
    /** 消费类型 */
    payRemark?: string;
    /** 出账时间 */
    tradeTime?: string;
    /** 奖励金余额 */
    remianAmount?: number;
  }
  interface GetParkBountyTradeDetailOutputPageOutput {
    pageModel?: Pagination;
    objectData?: any;
    data?: GetParkBountyTradeDetailOutput[];
  }
  interface GetParkBountyTradeInput {
    pageModel?: Pagination;
    /** 企业名/信用代码 */
    searchKeyWord?: string;
    /** 申请起始日期 */
    creationTimeBegin?: string;
    /** 申请结束日期 */
    creationTimeEnd?: string;
    /** 出账起始日期 */
    transferTimeBegin?: string;
    /** 出账结束日期 */
    transferTimeEnd?: string;
  }
  interface GetParkBountyTradeOutput {
    /** 账号 */
    userName?: string;
    /** 企业名称 */
    enterpriseName?: string;
    /** 电话 */
    contactPhone?: string;
    /** 社会统一信用代码 */
    societyCreditCode?: string;
    authType?: EnterpriseTypeEnum;
    /** 最近出账金额 */
    tradeAmount?: number;
    /** 出账时间 */
    tradeTime?: string;
    /** 奖励金余额 */
    remianAmount?: number;
    /** 申请园区 */
    parkName?: string;
    /** 申请园区类型 */
    parkTypeName?: string;
  }
  interface GetParkBountyTradeOutputPageOutput {
    pageModel?: Pagination;
    objectData?: any;
    data?: GetParkBountyTradeOutput[];
  }
  interface GetParkCustomerBountyApplyOutput {
@@ -7924,6 +8051,7 @@
    remianAmount?: number;
    /** 凭证 */
    payFileUrl?: string;
    payFileUrls?: string[];
  }
  interface GetParkCustomerBountyConsumptionOutputPageOutput {
@@ -9492,6 +9620,10 @@
    id?: string;
    /** 园区名称 */
    parkName?: string;
    /** 园区类型 */
    parkTypeId?: string;
    /** 园区类型名称 */
    parkTypeName?: string;
  }
  interface IndustrialParkListOutput {
@@ -14054,6 +14186,39 @@
    requestId?: string;
  }
  interface OutCheckParkBountyApplyBaseInfo {
    /** 申请批次号 */
    batchNo?: string;
    /** 申请园区Id */
    parkId?: string;
    /** 申请园区 */
    parkName?: string;
    /** 申请园区类型 */
    parkTypeName?: string;
    /** 申请奖励金月份 */
    applyMonth?: string;
    /** 奖励金汇总金额 */
    applySumAmount?: number;
    /** 汇总明细表 */
    enterpriseTaxSubFileUrl?: string;
    /** 企业营收汇总表 */
    enterpriseOperateFileUrl?: string;
    /** 奖励金分配表 */
    bountyAssignFileUlr?: string;
    /** 奖励金汇总表 */
    bountyCollectFileUrl?: string;
    outCheckStatus?: BountyCheckStatusEnum;
    /** 外部审核原因 */
    outCheckRemark?: string;
  }
  interface OutcheckParkBountyApplyInput {
    parkBountyApplyId?: string;
    outCheckStatus?: BountyCheckStatusEnum;
    /** 备注 */
    remark?: string;
  }
  interface PageInput {
    pageModel?: Pagination;
  }
@@ -14117,6 +14282,7 @@
  interface ParkBountyApplyDetailInfo {
    parkBountyApplyId?: string;
    enterpriseId?: string;
    userName?: string;
    /** 企业名称 */
    enterpriseName?: string;
    /** 基本户信息 */
@@ -14140,8 +14306,6 @@
    /** C端个税完税情况说明 */
    personTaxRatePayUrl?: string;
    authType?: EnterpriseTypeEnum;
    /** 企业类型 10人力资源公司 20甲方企业 30行业配套 40行业机构 */
    type?: number;
    /** 银行信息号是否已完善 */
    bankIsVerify?: boolean;
    /** 企业信息是否已完善 */
@@ -16411,6 +16575,13 @@
    enterpriseIsVerify?: boolean;
    /** 所属园区 */
    industrialParkId?: string;
    /** 最近申报开始日期 */
    lastApplyBeginTime?: string;
    /** 最近申报结束日期 */
    lastApplyEndTime?: string;
    lastPayBeginTime?: string;
    /** 最近发放结束日期 */
    lastPayEndTime?: string;
  }
  interface QueryParkOrHRAuditPageInput {
@@ -19052,6 +19223,23 @@
    id?: string;
  }
  interface UpdateGovermentClientUserInput {
    /** 名称 */
    name?: string;
    /** 用户名 */
    userName?: string;
    /** 备注 */
    remark?: string;
    /** 手机号 */
    phoneNumber?: string;
    /** 角色 */
    roleNames?: string[];
    /** 密码 */
    password?: string;
    /** 用户Id */
    id?: string;
  }
  interface UpdateIndustrialParkInput {
    /** 园区名称 */
    parkName: string;
src/views/Account/AccountManageList.vue
@@ -38,6 +38,7 @@
  defineOperationBtns,
} from '@bole-core/components';
import * as userRoleServices from '@/services/api/UserRole';
import * as accountServices from '@/services/api/Account';
import { Message, OrderInputType } from '@bole-core/core';
import AddOrEditAccountDialog from './components/AddOrEditAccountDialog.vue';
import ResetPasswordDialog from './components/ResetPasswordDialog.vue';
@@ -50,7 +51,7 @@
const column: API.CustomModuleColumnDto[] = [
  {
    id: '1',
    enCode: 'changeFlag',
    enCode: 'userName',
    name: '账号',
  },
  {
@@ -60,12 +61,12 @@
  },
  {
    id: '3',
    enCode: 'idNumber',
    enCode: 'phoneNumber',
    name: '手机号',
  },
  {
    id: '4',
    enCode: 'workType',
    enCode: 'remark',
    name: '备注',
  },
];
@@ -86,7 +87,7 @@
      name: '重置密码',
    },
    emits: {
      onClick: (role) => handleResetPasswordAdd(),
      onClick: (role) => openResetPasswordDialog(role),
    },
  },
]);
@@ -162,30 +163,27 @@
});
async function handleAddOrEdit() {
  // try {
  //   let isEdit = !!editForm.id;
  //   let params: API.CreateAccountInput = {
  //     name: editForm.name,
  //     userName: editForm.userName,
  //     remark: editForm.remark,
  //     password: editForm.password,
  //     phoneNumber: editForm.phoneNumber,
  //     channel: editForm.channel,
  //     // clientId: RoleClientType.RoleBackendClientId,
  //     roleNames: [editForm.roleName],
  //   };
  //   let res;
  //   if (isEdit) {
  //     (params as API.UpdateAccountInput).id = editForm.id;
  //     res = await accountServices.updateAccount(params);
  //   } else {
  //     res = await accountServices.createAccount(params);
  //   }
  //   if (res) {
  //     Message.successMessage('操作成功');
  //     getList(isEdit ? paginationState.pageIndex : 1);
  //   }
  // } catch (error) {}
  try {
    let isEdit = !!editForm.id;
    let params: API.CreateAccountInput = {
      name: editForm.name,
      userName: editForm.userName,
      remark: editForm.remark,
      phoneNumber: editForm.phoneNumber,
    };
    let res;
    if (isEdit) {
      (params as API.UpdateGovermentClientUserInput).id = editForm.id;
      res = await userRoleServices.updateGovermentClientUser(params);
    } else {
      (params as API.CreateGoverUserInput).password = editForm.password;
      res = await userRoleServices.createGovermentClientUser(params);
    }
    if (res) {
      Message.successMessage('操作成功');
      getList(isEdit ? paginationState.pageIndex : 1);
    }
  } catch (error) {}
}
const {
@@ -193,10 +191,31 @@
  handleAdd: handleResetPasswordAdd,
  editForm: resetPasswordEditForm,
} = useFormDialog({
  onConfirm: handleAddOrEdit,
  onConfirm: resetPassword,
  defaultFormParams: {
    id: '',
    userId: '',
    password: '',
  },
});
function openResetPasswordDialog(row: API.UserDto) {
  handleResetPasswordAdd({
    userId: row.id,
    password: '',
  });
}
async function resetPassword() {
  try {
    let params: API.ResetPasswordBaseInput = {
      userId: resetPasswordEditForm.userId,
      password: resetPasswordEditForm.password,
    };
    let res = await accountServices.resetPassword(params);
    if (res) {
      Message.successMessage('操作成功');
      getList(paginationState.pageIndex);
    }
  } catch (error) {}
}
</script>
src/views/Account/components/AddOrEditAccountDialog.vue
@@ -30,7 +30,7 @@
        <ProFormText placeholder="请输入手机号" v-model.trim="form.phoneNumber"></ProFormText>
      </ProFormItemV2>
      <ProFormItemV2
        v-if="isEdit"
        v-if="!isEdit"
        label="密码:"
        prop="password"
        :check-rules="[{ message: '请输入密码', required: !form.id }]"
src/views/Account/components/ResetPasswordDialog.vue
@@ -8,11 +8,7 @@
    :width="800"
  >
    <ProForm :model="form" ref="dialogForm" label-width="120px">
      <ProFormItemV2
        label="密码:"
        prop="password"
        :check-rules="[{ message: '请输入密码', required: !form.id }]"
      >
      <ProFormItemV2 label="密码:" prop="password" :check-rules="[{ message: '请输入密码' }]">
        <ProFormText
          placeholder="请输入密码"
          v-model.trim="form.password"
@@ -45,7 +41,7 @@
type Form = {
  title?: string;
  id: string;
  userId: string;
  password: string;
};
src/views/EnterpriseInfo/EnterpriseInfo.vue
@@ -5,7 +5,7 @@
        <template #query>
          <QueryFilterItem tip-content="最近申报日期">
            <FieldDatePicker
              v-model="extraParamState.date"
              v-model="extraParamState.lastApplyTime"
              type="daterange"
              range-separator="~"
              start-placeholder="开始日期"
@@ -16,7 +16,7 @@
          </QueryFilterItem>
          <QueryFilterItem tip-content="最近发放日期">
            <FieldDatePicker
              v-model="extraParamState.date"
              v-model="extraParamState.lastPayTime"
              type="daterange"
              range-separator="~"
              start-placeholder="开始日期"
@@ -27,7 +27,7 @@
          </QueryFilterItem>
          <QueryFilterItem>
            <SearchInput
              v-model="extraParamState.keyword"
              v-model="extraParamState.keywords"
              style="width: 300px"
              placeholder="企业名/统一信用代码"
              @on-click-search="getList"
@@ -163,8 +163,11 @@
          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'),
        keywords: extraParamState.keywords,
        lastApplyBeginTime: format(extraParamState.lastApplyTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
        lastApplyEndTime: format(extraParamState.lastApplyTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
        lastPayBeginTime: format(extraParamState.lastPayTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
        lastPayEndTime: format(extraParamState.lastPayTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
      };
      let res = await parkBountyApplyServices.getParkCustomerManagePage(params, {
        showLoading: !state.loading,
@@ -174,9 +177,10 @@
  },
  {
    defaultExtraParams: {
      keyword: '',
      date: [] as unknown as ModelValueType,
      orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
      keywords: '',
      lastApplyTime: [] as unknown as ModelValueType,
      lastPayTime: [] as unknown as ModelValueType,
      orderInput: [{ property: 'id', order: OrderInputType.Desc }],
    },
    columnsRenderProps: {
      lastApplyTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
@@ -187,7 +191,7 @@
  }
);
function goDetail(row: any) {
function goDetail(row: API.GetParkCustomerManageOutput) {
  router.push({
    name: 'EnterpriseInfoDetail',
    params: {
src/views/EnterpriseInfo/components/EnterpriseDeclareRecordView.vue
@@ -96,9 +96,12 @@
  }
);
async function goDetail(row: API.InsureBatchBillDto) {
async function goDetail(row: API.GetParkCustomerBountyApplyOutput) {
  router.push({
    name: '',
    name: 'MaterialReviewDetail',
    params: {
      id: row.id,
    },
  });
}
src/views/Home/Home.vue
@@ -4,11 +4,21 @@
      <ChunkCell title="待处理">
        <div class="data-board-card-list">
          <DataBoardCard title="待审核企业" :contentBetween="true">
            <DataBoardCardPrice :value="20000" :isInline="true" :useThousand="false" unit="家" />
            <DataBoardCardPrice
              :value="detail?.waitCheckEnterpriseNumber ?? 0"
              :isInline="true"
              :useThousand="false"
              unit="家"
            />
            <el-button type="primary" link @click="goToAudit">去审核</el-button>
          </DataBoardCard>
          <DataBoardCard title="奖励金待发放" :contentBetween="true">
            <DataBoardCardPrice :isInline="true" :value="20000" :useThousand="false" unit="家" />
            <DataBoardCardPrice
              :isInline="true"
              :value="detail?.waitForSettleRewardNumber ?? 0"
              :useThousand="false"
              unit="家"
            />
            <el-button type="primary" link @click="goToGrant">去发放</el-button>
          </DataBoardCard>
        </div>
@@ -16,22 +26,37 @@
      <ChunkCell title="数据看板">
        <div class="data-board-card-list">
          <DataBoardCard title="累计已审核企业">
            <DataBoardCardPrice :value="20000" :useThousand="false" unit="家" />
            <DataBoardCardPrice
              :value="detail?.accumulatedCheckEnterpriseNumber ?? 0"
              :useThousand="false"
              unit="家"
            />
          </DataBoardCard>
          <DataBoardCard title="累计已审核通过企业">
            <DataBoardCardPrice :value="20000" :useThousand="false" unit="家" />
            <DataBoardCardPrice
              :value="detail?.accumulatedCheckPassEnterpriseNumber ?? 0"
              :useThousand="false"
              unit="家"
            />
          </DataBoardCard>
          <DataBoardCard title="累计未审核通过企业">
            <DataBoardCardPrice :value="20000" :useThousand="false" unit="家" />
            <DataBoardCardPrice
              :value="detail?.accumulatedCheckRejectEnterpriseNumber ?? 0"
              :useThousand="false"
              unit="家"
            />
          </DataBoardCard>
          <DataBoardCard title="累计已发放奖励金">
            <DataBoardCardPrice :value="20000" unit="元" />
            <DataBoardCardPrice :value="detail?.accumulatedHasSettleRewardAmount ?? 0" unit="元" />
          </DataBoardCard>
          <DataBoardCard title="累计待发放奖励金">
            <DataBoardCardPrice :value="20000" unit="元" />
            <DataBoardCardPrice
              :value="detail?.accumulatedWaitForSettleRewardAmount ?? 0"
              unit="元"
            />
          </DataBoardCard>
          <DataBoardCard title="累计已使用奖励金">
            <DataBoardCardPrice :value="20000" unit="元" />
            <DataBoardCardPrice :value="detail?.accumulatedUsedRewardAmount ?? 0" unit="元" />
          </DataBoardCard>
        </div>
      </ChunkCell>
@@ -43,13 +68,25 @@
import { AppContainer, ChunkCell } from '@bole-core/components';
import DataBoardCard from '@/components/DataBoardCard/DataBoardCard.vue';
import DataBoardCardPrice from '@/components/DataBoardCard/DataBoardCardPrice.vue';
import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
import { useQuery, useQueryClient } from '@tanstack/vue-query';
defineOptions({
  name: 'Home',
});
const router = useRouter();
const isLoading = ref(false);
const { data: detail, isLoading } = useQuery({
  queryKey: ['parkBountyApplyServices/getGoverDataBoard'],
  queryFn: async () => {
    return await parkBountyApplyServices.getGoverDataBoard({
      showLoading: false,
    });
  },
  placeholderData: () => ({} as API.GetGoverDataBoardOutput),
});
function goToAudit() {
  router.push({
    name: 'MaterialReviewList',
@@ -60,6 +97,14 @@
    name: 'RewardGrant',
  });
}
const queryClient = useQueryClient();
onMounted(async () => {
  await queryClient.ensureQueryData({
    queryKey: ['parkBountyApplyServices/getGoverDataBoard'],
  });
});
</script>
<style lang="scss" scoped>
src/views/Login/Login.vue
@@ -178,6 +178,7 @@
    await userStore.loginByUsername({
      userName: unref(user),
      userPassword: unref(pwd),
      clientId: 'goverend-admin-app-client',
    });
    loading.value = false;
    router.push({
src/views/MaterialReview/MaterialReview.vue
@@ -3,9 +3,9 @@
    <AppContainer>
      <ProTableQueryFilterBar @on-reset="reset">
        <template #query>
          <QueryFilterItem tip-content="最近申报日期">
          <QueryFilterItem tip-content="申报日期">
            <FieldDatePicker
              v-model="extraParamState.date"
              v-model="extraParamState.creationTime"
              type="daterange"
              range-separator="~"
              start-placeholder="开始日期"
@@ -14,9 +14,9 @@
              @change="getList()"
            ></FieldDatePicker>
          </QueryFilterItem>
          <QueryFilterItem tip-content="最近发放日期">
          <QueryFilterItem tip-content="审核日期">
            <FieldDatePicker
              v-model="extraParamState.date"
              v-model="extraParamState.outCheckTime"
              type="daterange"
              range-separator="~"
              start-placeholder="开始日期"
@@ -27,8 +27,8 @@
          </QueryFilterItem>
          <QueryFilterItem>
            <FieldRadio
              v-model="extraParamState.showStatus"
              :value-enum="DataRangeEnumText"
              v-model="extraParamState.outCheckStatus"
              :value-enum="BountyCheckStatusEnumText"
              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"
@@ -67,8 +67,8 @@
} from '@bole-core/components';
import { OrderInputType } from '@bole-core/core';
import { format } from '@/utils';
import { DataRangeEnum, DataRangeEnumText } from '@/constants';
import * as informationServices from '@/services/api/Information';
import { BountyCheckStatusEnum, BountyCheckStatusEnumText, DataRangeEnumText } from '@/constants';
import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
import _ from 'lodash';
import { ModelValueType } from 'element-plus';
import { useGlobalEventContext } from '@/hooks';
@@ -80,42 +80,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: 'birthDay',
    enCode: 'outCheckTime',
    name: '审核日期',
  },
  {
    id: '8',
    enCode: 'phoneNumber',
    enCode: 'outCheckStatus',
    name: '审核状态',
  },
];
@@ -137,6 +137,10 @@
    },
    emits: {
      onClick: (role) => goAudit(role),
    },
    extraProps: {
      hide: (row: API.GetParkBountyApplyListOutput) =>
        row.outCheckStatus !== BountyCheckStatusEnum.WaitCheck,
    },
  },
]);
@@ -168,16 +172,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,
        outCheckStatus: extraParamState.outCheckStatus,
        creationTimeBegin: format(extraParamState.creationTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
        creationTimeEnd: format(extraParamState.creationTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
        outCheckTimeBegin: format(extraParamState.outCheckTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
        outCheckTimeEnd: format(extraParamState.outCheckTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
      };
      let res = await informationServices.getInformationForManage(params, {
      let res = await parkBountyApplyServices.getOutcheckParkBountyList(params, {
        showLoading: !state.loading,
      });
      return res;
@@ -185,15 +193,23 @@
  },
  {
    defaultExtraParams: {
      keyword: '',
      showStatus: '' as any as DataRangeEnum,
      date: [] as unknown as ModelValueType,
      batchNo: '',
      outCheckStatus: '' as any as BountyCheckStatusEnum,
      creationTime: [] as unknown as ModelValueType,
      outCheckTime: [] as unknown as ModelValueType,
      orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }],
    },
    columnsRenderProps: {
      applyMonth: { type: 'date', format: 'YYYY年MM月' },
      creationTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
      outCheckTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
      applySumAmount: { type: 'money', precision: 2 },
      outCheckStatus: { type: 'enum', valueEnum: BountyCheckStatusEnumText },
    },
  }
);
function goDetail(row: any) {
function goDetail(row: API.GetParkBountyApplyListOutput) {
  router.push({
    name: 'MaterialReviewDetail',
    params: {
@@ -201,7 +217,7 @@
    },
  });
}
function goAudit(row: any) {
function goAudit(row: API.GetParkBountyApplyListOutput) {
  router.push({
    name: 'MaterialReviewAudit',
    params: {
src/views/MaterialReview/MaterialReviewAudit.vue
@@ -4,7 +4,12 @@
      <PageFormLayout title="材料审核">
        <DetailView :form="form" :has-form="true">
          <ChunkCellV2 title="申报企业名单" class="chunk-cell-table">
            <DeclareEnterpriseTableView ref="tableRef"></DeclareEnterpriseTableView>
            <DeclareEnterpriseTableView
              :getList="getList"
              :extra-param-state="extraParamState"
              :pro-table-props="proTableProps"
              :reset="reset"
            ></DeclareEnterpriseTableView>
          </ChunkCellV2>
          <ChunkCell>
            <ProForm :model="form" ref="formRef" label-width="120px">
@@ -15,13 +20,20 @@
                    prop="status"
                    :check-rules="[{ message: '请选择审核状态' }]"
                  >
                    <ProFormRadio v-model="form.status" :value-enum="DataRangeEnumText" />
                    <ProFormRadio
                      v-model="form.status"
                      :value-enum="BountyCheckStatusEnumTextForAudit"
                    />
                  </ProFormItemV2>
                </ProFormColItem>
              </ProFormCol>
              <ProFormCol>
              <ProFormCol v-if="form.status === BountyCheckStatusEnum.CheckReject">
                <ProFormColItem>
                  <ProFormItemV2 label="驳回原因:" prop="remark">
                  <ProFormItemV2
                    label="驳回原因:"
                    prop="remark"
                    :check-rules="[{ message: '请输入驳回原因' }]"
                  >
                    <ProFormTextArea
                      v-model="form.remark"
                      placeholder="请输入"
@@ -56,22 +68,29 @@
  LoadingLayout,
  UploadUserFile,
  PageFormLayout,
  useTable,
} from '@bole-core/components';
import { DataRangeEnum, DataRangeEnumText } from '@/constants';
import {
  AuthTypeText,
  BountyCheckStatusEnum,
  BountyCheckStatusEnumTextForAudit,
} from '@/constants';
import ChunkCellV2 from '@/components/Layout/ChunkCellV2.vue';
import DetailView from '@/components/commonView/DetailView.vue';
import DeclareEnterpriseTableView from '@/components/commonView/DeclareEnterpriseTableView.vue';
import { useQuery } from '@tanstack/vue-query';
import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
import { convertApi2FormUrlOnlyOne } from '@/utils';
import { useRouteView } from '@/hooks';
import { convertApi2FormUrlOnlyOne, setOSSLink } from '@/utils';
import { useGlobalEventContext, useRouteView } from '@/hooks';
import { FormInstance } from 'element-plus';
import { Message, OrderInputType } from '@bole-core/core';
defineOptions({
  name: 'MaterialReviewAudit',
});
const route = useRoute();
const eventContext = useGlobalEventContext();
const { closeViewPush } = useRouteView();
const id = route.params?.id as string;
const form = reactive({
@@ -85,16 +104,14 @@
  bountyAssignFileUlr: [] as UploadUserFile[],
  bountyCollectFileUrl: [] as UploadUserFile[],
  status: '' as any as DataRangeEnum,
  status: '' as any as BountyCheckStatusEnum,
  remark: '',
});
const tableRef = ref<InstanceType<typeof DeclareEnterpriseTableView>>();
const { data: detail, isLoading } = useQuery({
  queryKey: ['parkBountyApplyServices/getParkBountyApplyDetail', id],
  queryKey: ['parkBountyApplyServices/getOutCheckParkBountyApplyDetailBaseInfo', id],
  queryFn: async () => {
    return await parkBountyApplyServices.getParkBountyApplyDetailBaseInfo(
    return await parkBountyApplyServices.getOutCheckParkBountyApplyDetailBaseInfo(
      { parkBountyApplyId: id },
      {
        showLoading: false,
@@ -113,9 +130,48 @@
    form.bountyAssignFileUlr = convertApi2FormUrlOnlyOne(data?.bountyAssignFileUlr);
    form.bountyCollectFileUrl = convertApi2FormUrlOnlyOne(data?.bountyCollectFileUrl);
    tableRef.value?.getList();
    getList();
  },
});
const {
  getDataSource: getList,
  proTableProps,
  paginationState,
  extraParamState,
  reset,
} = useTable(
  async ({ pageIndex, pageSize }, extraParamState) => {
    try {
      let params: API.GetParkBountyApplyInfoInput = {
        pageModel: {
          rows: pageSize,
          page: pageIndex,
          orderInput: extraParamState.orderInput,
        },
        searchKeyWord: extraParamState.searchKeyWord,
        parkBountyApplyId: id,
      };
      let res = await parkBountyApplyServices.getOutCheckParkBountyApplyDetailList(params);
      return res;
    } catch (error) {}
  },
  {
    defaultExtraParams: {
      orderInput: [{ property: 'enterpriseId', order: OrderInputType.Desc }],
      searchKeyWord: '',
    },
    columnsRenderProps: {
      authType: { type: 'enum', valueEnum: AuthTypeText },
      licenseUrl: {
        type: 'url',
        formatter: (row: API.UserCertificationAuditListDto) => setOSSLink(row.licenseUrl),
        modal: true,
        showDownloadBtn: false,
      },
    },
  }
);
function handleBack() {
  closeViewPush(route, {
@@ -135,7 +191,21 @@
  });
}
function confirm() {}
async function confirm() {
  try {
    let params: API.OutcheckParkBountyApplyInput = {
      parkBountyApplyId: id,
      outCheckStatus: form.status,
      remark: form.remark,
    };
    let res = await parkBountyApplyServices.outcheckParkBountyApply(params);
    if (res) {
      Message.successMessage('操作成功');
      eventContext.emit('materialReviewAudit:audit');
      handleBack();
    }
  } catch (error) {}
}
</script>
<style lang="scss" scoped>
src/views/MaterialReview/MaterialReviewDetail.vue
@@ -6,16 +6,24 @@
          <div class="page-form-layout-title">
            申报详情
            <span class="page-form-layout-title-item status">
              {{ `审核状态:${form.categoryName}` }}
              {{ `审核状态:${BountyCheckStatusEnumText[form.outCheckStatus]}` }}
            </span>
            <span class="page-form-layout-title-item remark">
              {{ `审核未通过原因:${form.categoryName}` }}
            <span
              v-if="form.outCheckStatus === BountyCheckStatusEnum.CheckReject"
              class="page-form-layout-title-item remark"
            >
              {{ `审核未通过原因:${form.outCheckRemark ?? ''}` }}
            </span>
          </div>
        </template>
        <DetailView :form="form">
          <ChunkCellV2 title="申报企业名单">
            <DeclareEnterpriseTableView ref="tableRef"></DeclareEnterpriseTableView>
            <DeclareEnterpriseTableView
              :getList="getList"
              :extra-param-state="extraParamState"
              :pro-table-props="proTableProps"
              :reset="reset"
            ></DeclareEnterpriseTableView>
          </ChunkCellV2>
        </DetailView>
        <template #footer>
@@ -27,14 +35,22 @@
</template>
<script setup lang="ts">
import { AppContainer, LoadingLayout, UploadUserFile, PageFormLayout } from '@bole-core/components';
import {
  AppContainer,
  LoadingLayout,
  UploadUserFile,
  PageFormLayout,
  useTable,
} from '@bole-core/components';
import ChunkCellV2 from '@/components/Layout/ChunkCellV2.vue';
import DetailView from '@/components/commonView/DetailView.vue';
import DeclareEnterpriseTableView from '@/components/commonView/DeclareEnterpriseTableView.vue';
import { useQuery } from '@tanstack/vue-query';
import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
import { convertApi2FormUrlOnlyOne } from '@/utils';
import { convertApi2FormUrlOnlyOne, setOSSLink } from '@/utils';
import { useRouteView } from '@/hooks';
import { OrderInputType } from '@bole-core/core';
import { AuthTypeText, BountyCheckStatusEnum, BountyCheckStatusEnumText } from '@/constants';
defineOptions({
  name: 'MaterialReviewDetail',
@@ -54,37 +70,79 @@
  bountyAssignFileUlr: [] as UploadUserFile[],
  bountyCollectFileUrl: [] as UploadUserFile[],
  categoryName: '',
  outCheckStatus: '' as any as BountyCheckStatusEnum,
  outCheckRemark: '',
});
const tableRef = ref<InstanceType<typeof DeclareEnterpriseTableView>>();
const { data: detail, isLoading } = useQuery({
  queryKey: ['parkBountyApplyServices/getParkBountyApplyDetail', id],
  queryKey: ['parkBountyApplyServices/getOutCheckParkBountyApplyDetailBaseInfo', id],
  queryFn: async () => {
    return await parkBountyApplyServices.getParkBountyApplyDetailBaseInfo(
    return await parkBountyApplyServices.getOutCheckParkBountyApplyDetailBaseInfo(
      { parkBountyApplyId: id },
      {
        showLoading: false,
      }
    );
  },
  placeholderData: () => ({} as API.ParkBountyApplyBaseInfo),
  placeholderData: () => ({} as API.OutCheckParkBountyApplyBaseInfo),
  onSuccess(data) {
    form.batchNo = data.batchNo;
    form.parkName = data.parkName;
    form.parkTypeName = data.parkTypeName;
    form.applyMonth = data.applyMonth;
    form.applySumAmount = data.applySumAmount;
    form.outCheckStatus = data.outCheckStatus;
    form.outCheckRemark = data.outCheckRemark;
    form.enterpriseTaxSubFileUrl = convertApi2FormUrlOnlyOne(data?.enterpriseTaxSubFileUrl);
    form.enterpriseOperateFileUrl = convertApi2FormUrlOnlyOne(data?.enterpriseOperateFileUrl);
    form.bountyAssignFileUlr = convertApi2FormUrlOnlyOne(data?.bountyAssignFileUlr);
    form.bountyCollectFileUrl = convertApi2FormUrlOnlyOne(data?.bountyCollectFileUrl);
    tableRef.value?.getList();
    getList();
  },
});
const {
  getDataSource: getList,
  proTableProps,
  paginationState,
  extraParamState,
  reset,
} = useTable(
  async ({ pageIndex, pageSize }, extraParamState) => {
    try {
      let params: API.GetParkBountyApplyInfoInput = {
        pageModel: {
          rows: pageSize,
          page: pageIndex,
          orderInput: extraParamState.orderInput,
        },
        searchKeyWord: extraParamState.searchKeyWord,
        parkBountyApplyId: id,
      };
      let res = await parkBountyApplyServices.getOutCheckParkBountyApplyDetailList(params);
      return res;
    } catch (error) {}
  },
  {
    defaultExtraParams: {
      orderInput: [{ property: 'enterpriseId', order: OrderInputType.Desc }],
      searchKeyWord: '',
    },
    columnsRenderProps: {
      authType: { type: 'enum', valueEnum: AuthTypeText },
      licenseUrl: {
        type: 'url',
        formatter: (row: API.UserCertificationAuditListDto) => setOSSLink(row.licenseUrl),
        modal: true,
        showDownloadBtn: false,
      },
    },
  }
);
function handleBack() {
  closeViewPush(route, {
    name: 'MaterialReviewList',