85f7bdb64b1f8b0fdaf58355a4f3fc389ec26ad0..5cb471c388d5b9a6829f1045d19f0644d983822c
2025-11-20 zhengyiming
fix: s
5cb471 对比 | 目录
2025-11-20 wupengfei
feat: 页面
5b0401 对比 | 目录
2025-11-20 zhengyiming
fix: s
dbebb8 对比 | 目录
2025-11-20 zhengyiming
fix: bug
245791 对比 | 目录
2025-11-20 zhengyiming
fix: bug
8feaba 对比 | 目录
12个文件已修改
1个文件已添加
311 ■■■■■ 已修改文件
src/hooks/externalSystem.ts 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/ExternalSystem.ts 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/ParkBountyApply.ts 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/User.ts 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/typings.d.ts 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/EnterpriseInfo/components/EnterpriseBasicInfoView.vue 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/MaterialReview/MaterialReReviewList.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/MaterialReview/MaterialReview.vue 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Reward/FinancialApproval.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Reward/WithdrawalApproval.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Reward/components/RewardApplyTradeCheckDialog.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Reward/components/WithdrawalApprovalAuditDialog.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/StatisticalReport/RewardStatistics.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/hooks/externalSystem.ts
New file
@@ -0,0 +1,18 @@
import * as externalSystemServices from '@/services/api/ExternalSystem';
import { useQuery } from '@tanstack/vue-query';
export function useGetCurrentExternalSystem() {
  const { data } = useQuery({
    queryKey: ['externalSystemServices/getCurrentExternalSystem'],
    queryFn: async () => {
      return await externalSystemServices.getCurrentExternalSystem({ showLoading: false });
    },
    initialData: () => ({} as API.GetCurrentExternalSystemOutput),
  });
  const isSignWallet = computed(() => data.value?.isSignWallet);
  return {
    isSignWallet,
  };
}
src/services/api/ExternalSystem.ts
@@ -17,6 +17,17 @@
  });
}
/** 查看当前外部系统信息 GET /api/ExternalSystem/GetCurrentExternalSystem */
export async function getCurrentExternalSystem(options?: API.RequestConfig) {
  return request<API.GetCurrentExternalSystemOutput>(
    '/api/ExternalSystem/GetCurrentExternalSystem',
    {
      method: 'GET',
      ...(options || {}),
    }
  );
}
/** 获取外部系统列表 POST /api/ExternalSystem/GetExternalSystemList */
export async function getExternalSystemList(
  body: API.GetExternalSystemInput,
@@ -31,3 +42,36 @@
    ...(options || {}),
  });
}
/** 查询外部系统平安银行钱包信息 GET /api/ExternalSystem/GetExternalSystemPingAnPayWallet */
export async function getExternalSystemPingAnPayWallet(
  // 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
  params: API.APIgetExternalSystemPingAnPayWalletParams,
  options?: API.RequestConfig
) {
  return request<API.GetExternalSystemPingAnPayWalletOutput>(
    '/api/ExternalSystem/GetExternalSystemPingAnPayWallet',
    {
      method: 'GET',
      params: {
        ...params,
      },
      ...(options || {}),
    }
  );
}
/** 保存外部系统平安银行钱包信息 POST /api/ExternalSystem/SaveExternalSystemPingAnPayWallet */
export async function saveExternalSystemPingAnPayWallet(
  body: API.SaveExternalSystemPingAnPayWalletInput,
  options?: API.RequestConfig
) {
  return request<string>('/api/ExternalSystem/SaveExternalSystemPingAnPayWallet', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}
src/services/api/ParkBountyApply.ts
@@ -961,6 +961,21 @@
  });
}
/** 外部审核重新提交 POST /api/ParkBountyApply/OutcheckParkBountyApplyResubmit */
export async function outcheckParkBountyApplyResubmit(
  body: API.OutcheckParkBountyApplyResubmitInput,
  options?: API.RequestConfig
) {
  return request<number>('/api/ParkBountyApply/OutcheckParkBountyApplyResubmit', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 政务端-材料审核-外部复审核 POST /api/ParkBountyApply/OutReCheckParkBountyApply */
export async function outReCheckParkBountyApply(
  body: API.OutReCheckParkBountyApplyInput,
@@ -1287,6 +1302,36 @@
  });
}
/** 材料审核-更新详情 POST /api/ParkBountyApply/UpdateOutCheckParkBountyApplyDetailBaseInfo */
export async function updateOutCheckParkBountyApplyDetailBaseInfo(
  body: API.UpdateParkBountyApplyInfoInput,
  options?: API.RequestConfig
) {
  return request<number>('/api/ParkBountyApply/UpdateOutCheckParkBountyApplyDetailBaseInfo', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 更新企业自主申报 POST /api/ParkBountyApply/UpdateParkBountyApplyByEnterprise */
export async function updateParkBountyApplyByEnterprise(
  body: API.UpdateParkBountyApplyByEnterpriseInput,
  options?: API.RequestConfig
) {
  return request<string>('/api/ParkBountyApply/UpdateParkBountyApplyByEnterprise', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    data: body,
    ...(options || {}),
  });
}
/** 上传企业补充材料 POST /api/ParkBountyApply/UploadParkBountyApplyCompanyExtraFile */
export async function uploadParkBountyApplyCompanyExtraFile(
  body: API.UploadParkApplyCustomerFilesInput,
src/services/api/User.ts
@@ -34,7 +34,7 @@
/** 批量创建认证用户 POST /api/User/BatchCreateCompanyUser */
export async function batchCreateCompanyUser(
  body: API.AddCertifiedUserInput[],
  body: API.BatchCreateCompanyUserV3Input,
  options?: API.RequestConfig
) {
  return request<string[]>('/api/User/BatchCreateCompanyUser', {
src/services/api/typings.d.ts
@@ -1442,6 +1442,11 @@
    id?: string;
  }
  interface APIgetExternalSystemPingAnPayWalletParams {
    /** 外部系统Id */
    externalSystemId?: string;
  }
  interface APIgetFirstCurrentUserModuleListCacheByModuleIdParams {
    moduleId?: string;
  }
@@ -2536,6 +2541,12 @@
  type BatchBillCheckStatus = 4 | 6 | 10 | 15 | 20 | 30 | -20 | -10;
  interface BatchCreateCompanyUserV3Input {
    list?: AddCertifiedUserInput[];
    /** 是否需要认证 */
    needCertification?: boolean;
  }
  interface BatchInquiriesItem {
    /** 单笔交易流水号 批内唯一 */
    sThirdVoucher?: string;
@@ -2975,6 +2986,8 @@
    startMonth?: string;
    /** 截止统计月份 */
    endMonth?: string;
    /** 企业Id */
    enterpriseIds?: string[];
  }
  type BusinessSettingTypeEnum = 10;
@@ -5873,6 +5886,9 @@
    bountyCollectFileTypeList?: CustomerUploadMonthApplyFileTypeDto[];
    /** 汇算材料 */
    bountyCollectCountFileTypeList?: CustomerUploadMonthApplyFileTypeDto[];
    /** 是否重新提交 */
    isResubmit?: boolean;
    parkBountyApplyId?: string;
  }
  interface DataprepareCreateExtInfo {
@@ -5975,6 +5991,7 @@
  interface EditParkBountyApplyStepOneInput {
    parkBountyApplyId?: string;
    removeCompanyIds?: string[];
    isResubmit?: boolean;
  }
  interface EDZ001Input {
@@ -6414,6 +6431,8 @@
  type EnumSmsAccess = 0 | 10 | 20;
  type EnumSmsStatus = 0 | 10 | 20 | 30;
  type EnumWalletSignStatus = 1 | 10 | 100 | 999;
  interface ExportBountyApplyData {
    /** 企业名称 */
@@ -7473,6 +7492,11 @@
    endDate?: string;
  }
  interface GetCurrentExternalSystemOutput {
    /** 是否签约钱包 */
    isSignWallet?: boolean;
  }
  interface GetCustomContractParamterListInput {
    pageModel?: Pagination;
    /** 客户Id */
@@ -7866,6 +7890,8 @@
    applyAmount?: number;
    applyStatus?: EnterpriseMonthApplyStatusEnum;
    inCheckStatus?: BountyCheckStatusEnum;
    outCheckStatus?: BountyCheckStatusEnum;
    outReCheckStatus?: BountyCheckStatusEnum;
    /** 自主申报的申报Id */
    parkBountyApplyId?: string;
  }
@@ -7981,6 +8007,16 @@
    pageModel?: Pagination;
    /** 关键字 */
    searchKey?: string;
  }
  interface GetExternalSystemPingAnPayWalletOutput {
    /** 户名 */
    name?: string;
    /** 账号 */
    identity?: string;
    /** 余额 */
    balance?: number;
    signStatus?: EnumWalletSignStatus;
  }
  interface GetFeatureListResultDto {
@@ -9361,6 +9397,10 @@
    suportWithDraw?: boolean;
    /** 是否支持财政拨付 */
    suportFinance?: boolean;
    /** 无需运营端审核 */
    noNeedForOperationalReview?: boolean;
    /** 政务端双重审核 */
    dualReviewOfGovernmentAffairs?: boolean;
    /** 内部审核人 */
    inCheckAuditOperator?: string;
    /** 外部审核人 */
@@ -9547,6 +9587,8 @@
    tradeTime?: string;
    /** 奖励金余额 */
    remianAmount?: number;
    /** 财政拨付余额 */
    financeAmount?: number;
    /** 申请园区 */
    parkName?: string;
    /** 所属园区 */
@@ -16277,6 +16319,7 @@
    | 30
    | 31
    | 32
    | 33
    | 40
    | 42;
@@ -16656,6 +16699,10 @@
    suportEnterpriseUpload?: boolean;
    /** 是否支持平台充值 */
    suportPlatRecharge?: boolean;
    /** 无需运营端审核 */
    noNeedForOperationalReview?: boolean;
    /** 政务端双重审核 */
    dualReviewOfGovernmentAffairs?: boolean;
    /** 是否支持财政拨付 */
    suportFinance?: boolean;
    /** 是否支持用户提现 */
@@ -16667,6 +16714,8 @@
    outReCheckStatus?: BountyCheckStatusEnum;
    /** 政务端复审备注 */
    outReCheckRemark?: string;
    /** 撤销原因 */
    reasonForWithdrawal?: string;
  }
  interface OutcheckParkBountyApplyInput {
@@ -16682,6 +16731,10 @@
    parkBountyApplyId?: string;
    /** 撤回原因 */
    reasonForWithdrawal?: string;
  }
  interface OutcheckParkBountyApplyResubmitInput {
    parkBountyApplyId?: string;
  }
  interface OutReCheckParkBountyApplyInput {
@@ -20637,6 +20690,15 @@
    templateParamExtraData?: string;
  }
  interface SaveExternalSystemPingAnPayWalletInput {
    /** 外部系统Id */
    externalSystemId?: string;
    /** 户名 */
    name: string;
    /** 账号 */
    identity: string;
  }
  interface SaveParkBountyApplyCollectFileInput {
    parkBountyApplyId?: string;
    /** 奖励金分配表 */
@@ -20650,11 +20712,14 @@
    /** 财政拨付总额 */
    financeSumAmount?: number;
    listFiles?: CustomerUploadMonthApplyFileTypeDto[];
    /** 是否重新提交 */
    isResubmit?: boolean;
  }
  interface SaveParkBountyApplyGatherFileInput {
    parkBountyApplyId?: string;
    listFiles?: CustomerUploadMonthApplyFileTypeDto[];
    isResubmit?: boolean;
  }
  interface SaveSmsSettingCommand {
@@ -22044,6 +22109,9 @@
    auditById?: string;
    /** 审核时间 */
    auditTime?: string;
    financeAuditStatus?: EnumParkBountyTradeDetailAuditStatus;
    /** 财务审核时间 */
    financeAuditTime?: string;
    /** 进账单位 */
    incomeCompanyName?: string;
    /** 保单号 */
@@ -22066,6 +22134,8 @@
    auditType?: EnumParkBountyTradeDetailAuditType;
    /** 江祐保自主出账关联保单id */
    insurancePolicyId?: string;
    /** 投保人数 */
    insurePeopleNum?: number;
  }
  interface SysOrgDetailOutput {
@@ -23106,6 +23176,63 @@
    id?: string;
  }
  interface UpdateParkBountyApplyByEnterpriseInput {
    enterpriseMonthApplyId?: string;
  }
  interface UpdateParkBountyApplyInfoInput {
    parkBountyApplyId?: string;
    /** 申请批次号 */
    batchNo?: string;
    /** 申请园区Id */
    parkId?: string;
    /** 申请园区 */
    parkName?: string;
    /** 申请园区类型 */
    parkTypeName?: string;
    /** 申请奖励金月份 */
    applyMonth?: string;
    /** 已保存企业缴税明细、营收汇总 */
    saveGatherFile?: boolean;
    /** 奖励金汇总金额 */
    applySumAmount?: number;
    /** 汇总明细表 */
    enterpriseTaxSubFileUrl?: string;
    /** 企业营收汇总表 */
    enterpriseOperateFileUrl?: string;
    /** 奖励金分配表 */
    bountyAssignFileUlr?: string;
    /** 奖励金汇总表 */
    bountyCollectFileUrl?: string;
    /** 入驻关联说明 */
    enterpriseRelateFileUrl?: string;
    /** 外部审核原因 */
    outCheckRemark?: string;
    /** 内部审核原因 */
    inCheckRemark?: string;
    inCheckStatus?: BountyCheckStatusEnum;
    /** 财政拨付总额 */
    financeSumAmount?: number;
    /** 平台充值总额 */
    settleSumAmount?: number;
    /** 发放凭证 */
    settleFileUrl?: string;
    /** 财政发放凭证 */
    financeFileUrl?: string;
    /** 是否支持企业上传 */
    suportEnterpriseUpload?: boolean;
    /** 是否支持平台充值 */
    suportPlatRecharge?: boolean;
    /** 是否支持财政拨付 */
    suportFinance?: boolean;
    /** 是否支持用户提现 */
    suportWithDraw?: boolean;
    listFiles?: CustomerUploadMonthApplyFileTypeDto[];
    collectCountListFiles?: CustomerUploadMonthApplyFileTypeDto[];
    /** 总的额外补充材料 */
    extraListFiles?: CustomerUploadMonthApplyFileTypeDto[];
  }
  interface UpdateParkBountyApplyTradeInsuranceBillFile {
    /** 江祐保自主出账关联保单id */
    insurancePolicyId?: string;
src/views/EnterpriseInfo/components/EnterpriseBasicInfoView.vue
@@ -2,7 +2,7 @@
  <LoadingLayout :loading="isLoading">
    <AppContainer>
      <PageFormLayout>
        <ProForm :model="detail" ref="formRef" label-width="140px" is-read>
        <ProForm :model="form" ref="formRef" label-width="140px" is-read>
          <ProFormCol>
            <ProFormColItem :span="8">
              <ProFormItemV2 label="企业名称:" prop="enterpriseName">
@@ -54,8 +54,17 @@
          </ProFormCol>
          <ProFormCol>
            <ProFormColItem :span="8">
              <ProFormItemV2 label="营业执照:" prop="serveName">
                <ProFormUpload v-model:file-url="_licenseUrl"></ProFormUpload>
              <ProFormItemV2 label="营业执照:" prop="licenseUrl">
                <ProFormUpload v-model:file-url="form.licenseUrl"></ProFormUpload>
              </ProFormItemV2>
            </ProFormColItem>
            <ProFormColItem :span="8">
              <ProFormItemV2
                label="合作协议:"
                prop="cooperationUrl"
                :check-rules="[{ type: 'upload', message: '请上传合作协议' }]"
              >
                <ProFormUpload v-model:file-url="form.cooperationUrl" :limit="1"></ProFormUpload>
              </ProFormItemV2>
            </ProFormColItem>
          </ProFormCol>
@@ -77,10 +86,11 @@
  ProFormText,
  ProFormUpload,
  ProFormRadio,
  UploadUserFile,
} from '@bole-core/components';
import { useQuery } from '@tanstack/vue-query';
import * as customerServices from '@/services/api/Customer';
import { EnterpriseTypeText } from '@/constants';
import { EnterpriseType, EnterpriseTypeText } from '@/constants';
import { convertApi2FormUrlOnlyOne } from '@/utils';
defineOptions({
@@ -90,6 +100,19 @@
const route = useRoute();
const id = route.params?.id as string;
const form = reactive({
  enterpriseName: '',
  societyCreditCode: '',
  enterpriseType: '' as any as EnterpriseType,
  industrialParkName: '',
  parkTypName: '',
  bankName: '',
  bankBranchName: '',
  bankCardNumber: '',
  licenseUrl: [] as UploadUserFile[],
  cooperationUrl: [] as UploadUserFile[],
});
const { data: detail, isLoading } = useQuery({
  queryKey: ['customerServices/getParkCustomerManageBaseDetail', id],
  queryFn: async () => {
@@ -97,11 +120,27 @@
  },
  placeholderData: () => ({} as API.GetParkCustomerManageDetailOutput),
  enabled: !!id,
  onSuccess(data) {
    form.enterpriseName = data.enterpriseName ?? '';
    form.societyCreditCode = data.societyCreditCode ?? '';
    form.enterpriseType = data.enterpriseType;
    form.industrialParkName = data.industrialParkName ?? '';
    form.parkTypName = data.parkTypName ?? '';
    form.bankName = data.bankName ?? '';
    form.bankBranchName = data.bankBranchName ?? '';
    form.bankCardNumber = data.bankCardNumber ?? '';
    form.licenseUrl = convertApi2FormUrlOnlyOne(data.licenseUrl);
    form.cooperationUrl = convertApi2FormUrlOnlyOne(data.cooperationUrl);
  },
});
const _licenseUrl = computed(() => {
  return detail.value?.licenseUrl ? convertApi2FormUrlOnlyOne(detail.value.licenseUrl) : [];
});
const _cooperationUrl = computed(() => {
  return detail.value?.cooperationUrl ? convertApi2FormUrlOnlyOne(detail.value.cooperationUrl) : [];
});
</script>
<style lang="scss" scoped>
src/views/MaterialReview/MaterialReReviewList.vue
@@ -119,7 +119,8 @@
    },
    extraProps: {
      hide: (row: API.GetParkBountyApplyListOutput) =>
        row.outReCheckStatus !== BountyCheckStatusEnum.CheckPassed,
        row.outReCheckStatus !== BountyCheckStatusEnum.CheckPassed ||
        !row.dualReviewOfGovernmentAffairs,
    },
  },
  logBtn: { emits: { onClick: (role) => openLogDialog(role.id) } },
src/views/MaterialReview/MaterialReview.vue
@@ -119,7 +119,8 @@
    },
    extraProps: {
      hide: (row: API.GetParkBountyApplyListOutput) =>
        row.outCheckStatus !== BountyCheckStatusEnum.CheckPassed,
        row.outCheckStatus !== BountyCheckStatusEnum.CheckPassed ||
        row.dualReviewOfGovernmentAffairs,
    },
  },
  logBtn: { emits: { onClick: (role) => openLogDialog(role.id) } },
src/views/Reward/FinancialApproval.vue
@@ -83,6 +83,7 @@
import { convertApi2FormUrlObjectBySeparator, convertApi2FormUrlOnlyOne, format } from '@/utils';
import { useIndustrialParkDropDownList } from '@/hooks/industrialPark';
import { useAccess } from '@/hooks';
import { useGetCurrentExternalSystem } from '@/hooks/externalSystem';
defineOptions({
  name: 'FinancialApproval',
@@ -119,6 +120,7 @@
const state = reactive({ ...BaseState });
const { industrialParkList } = useIndustrialParkDropDownList();
const { isSignWallet } = useGetCurrentExternalSystem();
const fourStreamsIndustrialParkList = computed(() => {
  return industrialParkList.value.filter((x) => !!x.rewardEnable);
@@ -217,6 +219,8 @@
    incomeBankName: row.incomeBankName,
    creationTime: row.creationTime,
    insurePeopleNum: row.insurePeopleNum ?? ('' as any as number),
    isSignWallet: isSignWallet.value,
  });
}
@@ -251,6 +255,8 @@
    incomeBankName: '',
    creationTime: '',
    insurePeopleNum: 0,
    isSignWallet: false,
  },
});
src/views/Reward/WithdrawalApproval.vue
@@ -77,6 +77,7 @@
import _ from 'lodash';
import { ModelValueType } from 'element-plus';
import { useAccess, useIndustrialParkDropDownList } from '@/hooks';
import { useGetCurrentExternalSystem } from '@/hooks/externalSystem';
defineOptions({
  name: 'WithdrawalApproval',
@@ -115,6 +116,7 @@
const state = reactive({ ...BaseState });
const { fourStreamsIndustrialParkList } = useIndustrialParkDropDownList();
const { isSignWallet } = useGetCurrentExternalSystem();
onMounted(async () => {
  await getList();
@@ -169,6 +171,7 @@
  handleAdd({
    drawWithId: row.drawWithId,
    isCheck,
    isSignWallet: isSignWallet.value,
  });
}
@@ -180,6 +183,7 @@
    checkRemark: '',
    isCheck: false,
    checkFileUrl: [] as UploadUserFile[],
    isSignWallet: false,
  },
});
src/views/Reward/components/RewardApplyTradeCheckDialog.vue
@@ -49,7 +49,7 @@
          </ProFormItemV2>
        </ProFormColItem>
      </ProFormCol>
      <ProFormCol>
      <ProFormCol v-if="!form.isSignWallet || form.isCheck">
        <ProFormColItem :span="12">
          <ProFormItemV2
            label="上传凭证:"
@@ -178,6 +178,8 @@
  incomeBankName: string;
  insurePeopleNum: number;
  creationTime: string;
  isSignWallet: boolean;
};
const form = defineModel<Form>('form');
src/views/Reward/components/WithdrawalApprovalAuditDialog.vue
@@ -29,7 +29,7 @@
          </ProFormItemV2>
        </ProFormColItem>
      </ProFormCol>
      <ProFormCol>
      <ProFormCol v-if="!form.isSignWallet || form.isCheck">
        <ProFormColItem :span="12">
          <ProFormItemV2
            label="上传凭证:"
@@ -138,6 +138,8 @@
  creationTime?: string;
  isCheck: boolean;
  checkFileUrl: UploadUserFile[];
  isSignWallet: boolean;
};
const form = defineModel<Form>('form');
src/views/StatisticalReport/RewardStatistics.vue
@@ -31,12 +31,12 @@
              @change="getList()"
            />
          </QueryFilterItem>
          <QueryFilterItem tip-content="申报月份">
          <QueryFilterItem tip-content="选择月份">
            <FieldDatePicker
              v-model="extraParamState.months"
              type="months"
              clearable
              placeholder="请选择申报月份"
              placeholder="请选择月份"
              format="YYYY-MM"
              value-format="YYYY-MM"
              @change="getList()"