zhengyiming
4 天以前 0b73bba28e2a8473ab71f5c8b4760c1995ff4fc1
fix: s
1个文件已添加
22个文件已修改
478 ■■■■ 已修改文件
src/components/commonView/BatchInfoView.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/commonView/DetailView.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/commonView/ExtraMaterialInfoView.vue 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/commonView/FourStreamsBatchMaterialFileDialog.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/commonView/FourStreamsMaterialFileTable.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/commonView/MateriaDetailDialog.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/commonView/MaterialInfoView.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/commonView/SettlementMaterialInfoView.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/commonView/types.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/commonView/utils/index.ts 81 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/dic.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/constants/fourStreams.ts 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/hooks/fourStreams.ts 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/services/api/typings.d.ts 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/request/index.ts 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/MaterialReview/MaterialReview.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/MaterialReview/MaterialReviewAudit.vue 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/MaterialReview/MaterialReviewDetail.vue 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Reward/RewardDeclareDetail.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Reward/RewardGrant.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Reward/RewardGrantRegister.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Reward/components/BatchRegisterDialog.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/Reward/components/RewardApplyTradeCheckDialog.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/commonView/BatchInfoView.vue
@@ -1,22 +1,22 @@
<template>
  <ProFormCol>
    <ProFormColItem :span="12">
      <ProFormItemV2 label="申报批次号:" prop="batchNo">
      <ProFormItemV2 label="申报批次号:" prop="batchNo" :mode="mode">
        <ProFormText v-model.trim="form.batchNo" />
      </ProFormItemV2>
    </ProFormColItem>
    <ProFormColItem :span="12">
      <ProFormItemV2 label="申请奖励金月份:" prop="applyMonth">
      <ProFormItemV2 label="申请奖励金月份:" prop="applyMonth" :mode="mode">
        <ProFormDatePicker v-model="form.applyMonth" format="YYYY年MM月" type="month" />
      </ProFormItemV2>
    </ProFormColItem>
    <ProFormColItem :span="12">
      <ProFormItemV2 label="申报园区:" prop="parkName">
      <ProFormItemV2 label="申报园区:" prop="parkName" :mode="mode">
        <ProFormText v-model.trim="form.parkName" />
      </ProFormItemV2>
    </ProFormColItem>
    <ProFormColItem :span="12">
      <ProFormItemV2 label="园区类型:">
      <ProFormItemV2 label="园区类型:" :mode="mode">
        <ProFormText v-model.trim="form.parkTypeName" />
      </ProFormItemV2>
    </ProFormColItem>
@@ -41,6 +41,7 @@
});
type Props = {
  isEdit?: boolean;
  form: {
    batchNo: string;
    parkName: string;
@@ -50,7 +51,11 @@
  };
};
const props = withDefaults(defineProps<Props>(), {});
const props = withDefaults(defineProps<Props>(), {
  isEdit: false,
});
const mode = computed(() => (props.isEdit ? 'read' : 'edit'));
const { allSearchSettingList: parkTypeList } = useAllSearchSettingList({
  searchType: SearchType.Park,
src/components/commonView/DetailView.vue
@@ -1,17 +1,20 @@
<template>
  <ProForm :model="form" label-width="160px" label-position="left" is-read>
  <ProForm :model="form" label-width="160px" label-position="left">
    <ChunkCellV2 title="批次信息" style="margin-bottom: 0">
      <BatchInfoView :form="form"></BatchInfoView>
      <BatchInfoView :form="form" isEdit></BatchInfoView>
    </ChunkCellV2>
    <ChunkCellV2
      title="汇总材料"
      style="margin-bottom: 0"
      v-if="form.parkCollectFileList.length > 0"
    >
      <MaterialInfoView :form="form"></MaterialInfoView>
      <MaterialInfoView :form="form" isEdit></MaterialInfoView>
    </ChunkCellV2>
    <ChunkCellV2 title="汇算材料" style="margin-bottom: 0">
      <SettlementMaterialInfoView :form="form"></SettlementMaterialInfoView>
      <SettlementMaterialInfoView :form="form" isEdit></SettlementMaterialInfoView>
    </ChunkCellV2>
    <ChunkCellV2 title="补充材料" style="margin-bottom: 0">
      <ExtraMaterialInfoView :form="form" :is-edit="isEdit"></ExtraMaterialInfoView>
    </ChunkCellV2>
    <slot></slot>
  </ProForm>
@@ -23,6 +26,7 @@
import BatchInfoView from './BatchInfoView.vue';
import MaterialInfoView from './MaterialInfoView.vue';
import SettlementMaterialInfoView from './SettlementMaterialInfoView.vue';
import ExtraMaterialInfoView from './ExtraMaterialInfoView.vue';
import { CustomerApplyFileTypeListItem } from './utils';
defineOptions({
@@ -31,6 +35,7 @@
type Props = {
  hasForm?: boolean;
  isEdit?: boolean;
  form?: {
    batchNo: string;
    parkName: string;
@@ -46,6 +51,8 @@
    parkCollectFileList: CustomerApplyFileTypeListItem[];
    /**汇算材料 */
    calculationFileList: CustomerApplyFileTypeListItem[];
    /** 补充材料 */
    extraListFiles: CustomerApplyFileTypeListItem[];
    /** 是否支持平台充值 */
    suportPlatRecharge?: boolean;
  };
@@ -53,6 +60,7 @@
const props = withDefaults(defineProps<Props>(), {
  hasForm: false,
  isEdit: true,
});
</script>
src/components/commonView/ExtraMaterialInfoView.vue
New file
@@ -0,0 +1,42 @@
<template>
  <ProFormItemV2
    :label="`${item.fileTypeName}:`"
    :prop="`extraListFiles.${index}.listFiles`"
    :label-width="160"
    :mode="mode"
    class="pro-form-item-label-hidden"
    :style="{ marginBottom: index === form.extraListFiles.length - 1 ? 0 : '22px' }"
    v-for="(item, index) in form.extraListFiles"
    :key="item.fileSearchTypeId"
    v-if="form.extraListFiles.length > 0"
  >
    <ProFormUpload
      v-model:file-url="item.listFiles"
      :showTip="false"
      :limitShowViewMoreBtnCount="4"
      accept="doc,docx,pdf,xls,xlsx,jpg/jpeg,png"
    ></ProFormUpload>
  </ProFormItemV2>
</template>
<script setup lang="ts">
import { ProFormItemV2, ProFormUpload } from '@bole-core/components';
import { CustomerApplyFileTypeListItem } from './utils';
defineOptions({
  name: 'ExtraMaterialInfoView',
});
type Props = {
  isEdit?: boolean;
  form: {
    extraListFiles: CustomerApplyFileTypeListItem[];
  };
};
const props = withDefaults(defineProps<Props>(), {
  isEdit: false,
});
const mode = computed(() => (props.isEdit ? 'read' : 'edit'));
</script>
src/components/commonView/FourStreamsBatchMaterialFileDialog.vue
@@ -53,6 +53,8 @@
} from '@bole-core/components';
import { format, downloadFileByUrl, formatFileSize } from '@/utils';
import { downloadWithZip, Message, isFileCanPreview } from '@bole-core/core';
import { CustomerApplyFileTypeListItem, EnterpriseApplyFileUtils } from './utils';
import { FourStreamsExtraMaterialFileSearchType, SearchType } from '@/constants';
defineOptions({
  name: 'FourStreamsBatchMaterialFileDialog',
@@ -62,10 +64,13 @@
  name?: string;
  zipName?: string;
  showDeleteBtn?: boolean;
  showMaterialExtraFileDeleteBtn?: boolean;
  fileSearchTypeId?: string;
};
const props = withDefaults(defineProps<Props>(), {
  showDeleteBtn: true,
  showMaterialExtraFileDeleteBtn: false,
});
const visible = defineModel<boolean>('visible');
@@ -120,7 +125,13 @@
      onClick: (row) => handleDelete(row),
    },
    extraProps: {
      hide: (row) => !props.showDeleteBtn,
      hide: (row: API.CustomerUploadMonthApplyFileTypeDto) => {
        if (EnterpriseApplyFileUtils.isApplyUploadExtraFileSearchTypeId(props.fileSearchTypeId)) {
          return !props.showMaterialExtraFileDeleteBtn;
        } else {
          return !props.showDeleteBtn;
        }
      },
    },
  },
]);
src/components/commonView/FourStreamsMaterialFileTable.vue
@@ -26,8 +26,10 @@
      v-bind="dialogProps"
      :name="''"
      :zipName="currentFourStreamsMaterialFileTableItem.fileTypeName"
      :fileSearchTypeId="currentFourStreamsMaterialFileTableItem.fileSearchTypeId"
      v-model:fileList="currentFourStreamsMaterialFileTableItem.listFiles"
      :showDeleteBtn="showDeleteBtn"
      :showMaterialExtraFileDeleteBtn="showMaterialExtraFileDeleteBtn"
      :yearMonth="date"
      :onDelete="(file) => handleDialogDelete(currentFourStreamsMaterialFileTableItem, file)"
    />
@@ -49,7 +51,8 @@
import { Message, isFileCanPreview, downloadWithZip } from '@bole-core/core';
import { useDefineColumns } from '@/hooks';
import FourStreamsBatchMaterialFileDialog from './FourStreamsBatchMaterialFileDialog.vue';
import { CustomerApplyFileTypeListItem } from './utils';
import { CustomerApplyFileTypeListItem, EnterpriseApplyFileUtils } from './utils';
import { FourStreamsExtraMaterialFileSearchType, SearchType } from '@/constants';
defineOptions({
  name: 'FourStreamsMaterialFileTable',
@@ -57,9 +60,11 @@
const props = withDefaults(defineProps<FourStreamsMaterialFileTableProps>(), {
  showUploadBtn: true,
  showMaterialExtraFileUploadBtn: false,
  showCheckBtn: true,
  showDownloadBtn: true,
  showDeleteBtn: true,
  showMaterialExtraFileDeleteBtn: false,
  downloadBtnText: '下载',
});
@@ -82,6 +87,9 @@
      },
      extraProps: {
        hide: (row: CustomerApplyFileTypeListItem) => {
          if (EnterpriseApplyFileUtils.isApplyUploadExtraFileSearchTypeId(row.fileSearchTypeId)) {
            return !props.showMaterialExtraFileUploadBtn;
          }
          return !props.showUploadBtn;
          // if (!props.showUploadBtn) return true;
          // let fileList = row?.fileList?.filter?.((item) => item.status === 'success');
@@ -143,7 +151,11 @@
      },
      extraProps: {
        hide: (row: CustomerApplyFileTypeListItem) => {
          if (!props.showDeleteBtn) return true;
          if (EnterpriseApplyFileUtils.isApplyUploadExtraFileSearchTypeId(row.fileSearchTypeId)) {
            if (!props.showMaterialExtraFileDeleteBtn) return true;
          } else {
            if (!props.showDeleteBtn) return true;
          }
          let fileList = row?.listFiles?.filter?.((item) => item.status === 'success');
          return !fileList?.length;
        },
src/components/commonView/MateriaDetailDialog.vue
@@ -23,9 +23,11 @@
const props = withDefaults(defineProps<Props>(), {
  showUploadBtn: true,
  showMaterialExtraFileUploadBtn: false,
  showCheckBtn: true,
  showDownloadBtn: true,
  showDeleteBtn: true,
  showMaterialExtraFileDeleteBtn: false,
});
const visible = defineModel({ type: Boolean });
src/components/commonView/MaterialInfoView.vue
@@ -3,6 +3,7 @@
    :label="`${item.fileTypeName}:`"
    :prop="`parkCollectFileList.${index}.listFiles`"
    :label-width="160"
    :mode="mode"
    :style="{ marginBottom: index === form.parkCollectFileList.length - 1 ? 0 : '22px' }"
    v-for="(item, index) in form.parkCollectFileList"
    :key="item.fileSearchTypeId"
@@ -26,12 +27,17 @@
});
type Props = {
  isEdit?: boolean;
  form: {
    parkCollectFileList: CustomerApplyFileTypeListItem[];
  };
};
const props = withDefaults(defineProps<Props>(), {});
const props = withDefaults(defineProps<Props>(), {
  isEdit: false,
});
const mode = computed(() => (props.isEdit ? 'read' : 'edit'));
</script>
<style lang="scss" scoped>
src/components/commonView/SettlementMaterialInfoView.vue
@@ -1,17 +1,18 @@
<template>
  <ProFormItemV2 label="本次申报奖励金总额:" prop="applySumAmount">
  <ProFormItemV2 label="本次申报奖励金总额:" prop="applySumAmount" :mode="mode">
    <ProFormInputNumber v-model="form.applySumAmount" formatValue="money" unit="元" />
  </ProFormItemV2>
  <ProFormItemV2 label="财政拨付总额:" prop="financeSumAmount">
  <ProFormItemV2 label="财政拨付总额:" prop="financeSumAmount" :mode="mode">
    <ProFormInputNumber v-model="form.financeSumAmount" formatValue="money" unit="元" />
  </ProFormItemV2>
  <ProFormItemV2 label="平台拨付总额:" prop="settleSumAmount">
  <ProFormItemV2 label="平台拨付总额:" prop="settleSumAmount" :mode="mode">
    <ProFormInputNumber v-model="form.settleSumAmount" formatValue="money" unit="元" />
  </ProFormItemV2>
  <ProFormItemV2
    :label="`${item.fileTypeName}:`"
    :prop="`calculationFileList.${index}.listFiles`"
    :label-width="160"
    :mode="mode"
    :style="{ marginBottom: index === form.calculationFileList.length - 1 ? 0 : '22px' }"
    v-for="(item, index) in form.calculationFileList"
    :key="item.fileSearchTypeId"
@@ -42,6 +43,7 @@
});
type Props = {
  isEdit?: boolean;
  form: {
    applySumAmount: number;
    financeSumAmount: number;
@@ -50,7 +52,11 @@
  };
};
const props = withDefaults(defineProps<Props>(), {});
const props = withDefaults(defineProps<Props>(), {
  isEdit: false,
});
const mode = computed(() => (props.isEdit ? 'read' : 'edit'));
</script>
<style lang="scss" scoped>
src/components/commonView/types.ts
@@ -9,9 +9,11 @@
export type FourStreamsMaterialFileTableProps = {
  date?: string;
  showUploadBtn?: boolean;
  showMaterialExtraFileUploadBtn?: boolean;
  showCheckBtn?: boolean;
  showDownloadBtn?: boolean;
  showDeleteBtn?: boolean;
  showMaterialExtraFileDeleteBtn?: boolean;
  downloadBtnText?: string;
  onDelete?: (row: CustomerApplyFileTypeListItem, fileId: string) => Promise<any>;
  onUpload?: (row: CustomerApplyFileTypeListItem, userFile: UploadUserFile) => Promise<any>;
src/components/commonView/utils/index.ts
@@ -13,6 +13,8 @@
  FourStreamsMaterialFileBusinessTypeEnumKey,
  TransferFileEnumInRewardGrand,
  TransferFileEnumInRewardGrandKey,
  FourStreamsExtraMaterialFileSearchType,
  SearchType,
} from '@/constants';
export class FourStreamsMaterialUtils {
@@ -120,6 +122,7 @@
export type CustomerApplyFileTypeListItem = {
  id?: string;
  fileSearchTypeId?: string;
  searchType?: number;
  fileTypeName?: string;
  lastUpdateTime?: string;
  listFiles?: (API.CustomerUploadMonthApplyFileTypeDto & UploadUserFile)[];
@@ -154,29 +157,71 @@
    );
  }
  static convertApiFileToExtraListFiles(listFiles: API.CustomerUploadMonthApplyFileTypeDto[]) {
    if (listFiles.length > 0) {
      return this.convertApiFileToParkCollectFileList(listFiles);
    } else {
      return [
        {
          fileSearchTypeId: FourStreamsExtraMaterialFileSearchType[SearchType.BountyExtraFileType],
          fileTypeName: '补充材料',
          listFiles: [],
        } as CustomerApplyFileTypeListItem,
      ];
    }
  }
  static initParkCollectFileListApplyFiles(
    applyUploadFiles: API.GetEnterpriseParkApplyUploadFileOutput[],
    applyFiles: API.GetCustomerUploadApplyFilesOutput[],
    lastUploadEnterPactFile: API.CustomerUploadMonthApplyFileTypeDto[]
    lastUploadEnterPactFile: API.CustomerUploadMonthApplyFileTypeDto[],
    applyUploadExtraFiles: API.GetEnterpriseParkApplyUploadFileOutput[]
  ) {
    return applyUploadFiles.map((x) => {
      const applyFile = applyFiles.find((a) => a.fileSearchTypeId === x.fileSearchTypeId);
      let listFiles: API.CustomerUploadMonthApplyFileTypeDto[];
      if (x.fileSearchTypeName === '园区入驻协议') {
        listFiles = !x.listFiles.length ? lastUploadEnterPactFile : x.listFiles;
      } else {
        listFiles =
          !x.listFiles.length && applyFile?.listFiles?.length > 0
            ? applyFile.listFiles
            : x.listFiles;
      }
    const extraFiles =
      applyUploadExtraFiles.length > 0
        ? applyUploadExtraFiles.map((x) => {
            return {
              fileSearchTypeId: x.fileSearchTypeId,
              fileTypeName: x.fileSearchTypeName,
              listFiles: x.listFiles.map((a) => ({ ...a, ...convertApi2FormUrl(a.fileUrl) })),
            } as CustomerApplyFileTypeListItem;
          })
        : [
            {
              fileSearchTypeId:
                FourStreamsExtraMaterialFileSearchType[SearchType.BountyApplyExtraFileType],
              fileTypeName: '补充材料',
              listFiles: [],
            } as CustomerApplyFileTypeListItem,
          ];
      return {
        fileSearchTypeId: x.fileSearchTypeId,
        fileTypeName: x.fileSearchTypeName,
        listFiles: listFiles.map((a) => ({ ...a, ...convertApi2FormUrl(a.fileUrl) })),
      } as CustomerApplyFileTypeListItem;
    });
    return applyUploadFiles
      .map((x) => {
        const applyFile = applyFiles.find((a) => a.fileSearchTypeId === x.fileSearchTypeId);
        let listFiles: API.CustomerUploadMonthApplyFileTypeDto[];
        if (x.fileSearchTypeName === '园区入驻协议') {
          listFiles = !x.listFiles.length ? lastUploadEnterPactFile : x.listFiles;
        } else {
          listFiles =
            !x.listFiles.length && applyFile?.listFiles?.length > 0
              ? applyFile.listFiles
              : x.listFiles;
        }
        return {
          fileSearchTypeId: x.fileSearchTypeId,
          fileTypeName: x.fileSearchTypeName,
          listFiles: listFiles.map((a) => ({ ...a, ...convertApi2FormUrl(a.fileUrl) })),
        } as CustomerApplyFileTypeListItem;
      })
      .concat(extraFiles);
  }
  static isApplyUploadExtraFileSearchTypeId(fileSearchTypeId: string) {
    return (
      (fileSearchTypeId ?? '').toLowerCase() ===
      FourStreamsExtraMaterialFileSearchType[SearchType.BountyApplyExtraFileType].toLowerCase()
    );
  }
  static convertFileTableListToApi(fileTableList: CustomerApplyFileTypeListItem[]) {
src/constants/dic.ts
@@ -18,6 +18,8 @@
  FirstPartyIndustry = 170,
  MatingServiceType = 180,
  IndustryBodyType = 190,
  BountyExtraFileType = 240,
  BountyApplyExtraFileType = 250,
}
export const SearchTypeText = {
src/constants/fourStreams.ts
@@ -1,5 +1,6 @@
import { defineColumns } from '@bole-core/components';
import { TempFolderPath } from './enum';
import { SearchType } from './dic';
export enum FourStreamsMaterialFileBusinessTypeEnum {
  /** 园区入驻协议 */
@@ -121,18 +122,20 @@
type UseAddRewardApplyStep3ColumnsOptions = {
  suportPlatRecharge: Ref<boolean>;
  suportFinance: Ref<boolean>;
  baseColumns?: API.ModuleColumnDto[];
};
export function useAddRewardApplyStep3Columns({
  suportPlatRecharge,
  suportFinance,
  baseColumns = BaseDeclareEnterpriseTableViewColumns,
}: UseAddRewardApplyStep3ColumnsOptions) {
  const addRewardApplyStep3Columns = computed(() =>
    defineColumns(
      [
        ...baseColumns,
        {
        suportFinance.value && {
          id: '8',
          enCode: 'financeAmount',
          name: '财政拨付金额',
@@ -184,3 +187,11 @@
   */
  Trade = 5,
}
/**
 * 没有在字典配置FileSearchType 所以补充文件在这里写死
 */
export const FourStreamsExtraMaterialFileSearchType = {
  [SearchType.BountyExtraFileType]: '0D85AE1F-0618-F43C-A762-3A197D83B471',
  [SearchType.BountyApplyExtraFileType]: '0D85AE1F-0618-F43C-A762-3A197D83B472',
};
src/hooks/fourStreams.ts
@@ -1,5 +1,5 @@
import { defineColumns, defineOperationBtns, useFormDialog, useTable } from '@bole-core/components';
import { OrderInputType } from '@bole-core/core';
import { Message, OrderInputType } from '@bole-core/core';
import { useQueryClient } from '@tanstack/vue-query';
import { setOSSLink } from '@/utils';
import {
@@ -15,72 +15,86 @@
  FinanceStatusEnumText,
  FinanceStatusEnumTextV2,
  FinanceStatusEnumTextV2Query,
  FourStreamsExtraMaterialFileSearchType,
  SearchType,
  SettleStatusEnumTextV2,
  TransferToStatusEnum,
  TransferToStatusEnumText,
} from '@/constants';
export const rewardGrantRegisterColumns = computed(() =>
  defineColumns([
    ...BaseDeclareEnterpriseTableViewColumns,
    {
      id: '9',
      enCode: 'financeAmount',
      name: '财政拨付金额',
      width: 160,
    },
    {
      id: '10',
      enCode: 'financeSumAmount',
      name: '财政拨付已登记',
      width: 160,
    },
    {
      id: '11',
      enCode: 'financeTime',
      name: '最近登记日期',
      width: 160,
    },
    {
      id: '12',
      enCode: 'financeStatus',
      name: '财政拨付登记状态',
      width: 160,
    },
    {
      id: '13',
      enCode: 'transferAmount',
      name: '平台拨付金额',
      width: 160,
    },
    {
      id: '14',
      enCode: 'settleSumAmount',
      name: '平台拨付已登记',
      width: 160,
    },
    {
      id: '15',
      enCode: 'settleTime',
      name: '最近登记日期',
      width: 160,
    },
    {
      id: '16',
      enCode: 'settleStatus',
      name: '平台拨付登记状态',
      width: 160,
    },
  ])
);
type UseRewardGrantRegisterColumnsOptions = {
  suportPlatRecharge?: MaybeRef<boolean>;
  suportFinance?: MaybeRef<boolean>;
};
export function useRewardGrantRegisterColumns(options: UseRewardGrantRegisterColumnsOptions = {}) {
  const { suportPlatRecharge, suportFinance } = options;
  const rewardGrantRegisterColumns = computed(() =>
    defineColumns([
      ...BaseDeclareEnterpriseTableViewColumns,
      {
        id: '9',
        enCode: 'financeAmount',
        name: '财政拨付金额',
        width: 160,
      },
      {
        id: '10',
        enCode: 'financeSumAmount',
        name: '财政拨付已登记',
        width: 160,
      },
      {
        id: '11',
        enCode: 'financeTime',
        name: '最近登记日期',
        width: 160,
      },
      {
        id: '12',
        enCode: 'financeStatus',
        name: '财政拨付登记状态',
        width: 160,
      },
      {
        id: '13',
        enCode: 'transferAmount',
        name: '平台拨付金额',
        width: 160,
      },
      {
        id: '14',
        enCode: 'settleSumAmount',
        name: '平台拨付已登记',
        width: 160,
      },
      {
        id: '15',
        enCode: 'settleTime',
        name: '最近登记日期',
        width: 160,
      },
      {
        id: '16',
        enCode: 'settleStatus',
        name: '平台拨付登记状态',
        width: 160,
      },
    ])
  );
  return { rewardGrantRegisterColumns };
}
type UseDeclareEnterpriseTableOptions = {
  id?: Ref<string>;
  applyMonth?: Ref<string>;
  enableUploadExtraFiles?: boolean;
};
export function useDeclareEnterpriseTable(options: UseDeclareEnterpriseTableOptions = {}) {
  const { id, applyMonth } = options;
  const { id, applyMonth, enableUploadExtraFiles = false } = options;
  const {
    getDataSource: getList,
@@ -134,6 +148,7 @@
  const queryClient = useQueryClient();
  const { dialogProps, handleAdd, editForm, dialogState } = useFormDialog({
    onConfirm: handleUpload,
    defaultFormParams: {
      list: [] as CustomerApplyFileTypeListItem[],
      companyId: '',
@@ -170,11 +185,18 @@
        companyId: row.enterpriseId,
        parkBountyApplyId: id.value,
      });
      const applyUploadExtraFiles =
        await parkBountyApplyServices.getEnterpriseParkApplyUploadExtraFiles({
          companyId: row.enterpriseId,
          parkBountyApplyId: id.value,
        });
      handleAdd({
        list: EnterpriseApplyFileUtils.initParkCollectFileListApplyFiles(
          applyUploadFiles,
          applyFilesRes.items,
          lastUploadEnterPactFile
          lastUploadEnterPactFile,
          applyUploadExtraFiles
        ),
        companyId: row.enterpriseId,
      });
@@ -191,7 +213,35 @@
        onClick: (row) => openDialog(row),
      },
    },
  ]);
    enableUploadExtraFiles && {
      data: {
        enCode: 'uploadBtn',
        name: '补充材料',
      },
      emits: {
        onClick: (row) => openDialog(row),
      },
    },
  ]).filter(Boolean);
  async function handleUpload() {
    try {
      if (!enableUploadExtraFiles) return;
      let params: API.UploadParkApplyCustomerFilesInput = {
        parkBountyApplyId: id.value,
        companyId: editForm.companyId,
        fileTypes: EnterpriseApplyFileUtils.convertFileTableListToApplyCompanyFile(
          editForm.list.filter((x) =>
            EnterpriseApplyFileUtils.isApplyUploadExtraFileSearchTypeId(x.fileSearchTypeId)
          )
        ),
      };
      let res = await parkBountyApplyServices.uploadParkBountyApplyCompanyExtraFile(params);
      if (res) {
        Message.successMessage('操作成功');
      }
    } catch (error) {}
  }
  return {
    getList,
src/services/api/typings.d.ts
@@ -11316,6 +11316,8 @@
    suportWithDraw?: boolean;
    /** 无需政务端审核 */
    notNeedGovernmentAudit?: boolean;
    /** 是否支持财政拨付 */
    suportFinance?: boolean;
    /** 注册地址 */
    registerAddress?: string;
    /** 备注 */
@@ -11337,6 +11339,8 @@
    suportEnterpriseUpload?: boolean;
    /** 是否支持平台充值 */
    suportPlatRecharge?: boolean;
    /** 是否支持财政拨付 */
    suportFinance?: boolean;
  }
  interface IndustrialParkFileTypeOutput {
@@ -11376,6 +11380,8 @@
    suportWithDraw?: boolean;
    /** 无需政务端审核 */
    notNeedGovernmentAudit?: boolean;
    /** 是否支持财政拨付 */
    suportFinance?: boolean;
  }
  interface IndustrialParkListOutputPageOutput {
@@ -16263,6 +16269,8 @@
    suportEnterpriseUpload?: boolean;
    /** 是否支持平台充值 */
    suportPlatRecharge?: boolean;
    /** 是否支持财政拨付 */
    suportFinance?: boolean;
    /** 是否支持用户提现 */
    suportWithDraw?: boolean;
    listFiles?: CustomerUploadMonthApplyFileTypeDto[];
@@ -16350,6 +16358,8 @@
    suportEnterpriseUpload?: boolean;
    /** 是否支持平台充值 */
    suportPlatRecharge?: boolean;
    /** 是否支持财政拨付 */
    suportFinance?: boolean;
    /** 申请园区类型 */
    parkTypeName?: string;
    /** 申请奖励金月份 */
@@ -16376,6 +16386,8 @@
    financeSumAmount?: number;
    listFiles?: CustomerUploadMonthApplyFileTypeDto[];
    collectCountListFiles?: CustomerUploadMonthApplyFileTypeDto[];
    /** 总的额外补充材料 */
    extraListFiles?: CustomerUploadMonthApplyFileTypeDto[];
  }
  interface ParkBountyApplyBatchFinanceInput {
src/utils/request/index.ts
@@ -170,7 +170,6 @@
  requestInterceptors: [
    [
      (config) => {
        console.log('req config: ', config);
        const $config = config;
        // 开启进度条动画
        if (config.needNProcess) {
src/views/MaterialReview/MaterialReview.vue
@@ -110,7 +110,7 @@
  },
  {
    id: '7',
    enCode: 'a',
    enCode: 'outCheckAuditOperator',
    name: '审核人',
  },
  {
src/views/MaterialReview/MaterialReviewAudit.vue
@@ -2,7 +2,7 @@
  <LoadingLayout>
    <AppContainer>
      <PageFormLayout title="申报审核">
        <DetailView :form="form" :has-form="true">
        <DetailView :form="form" :has-form="true" :isEdit="false">
          <ChunkCellV2 title="申报企业名单" class="chunk-cell-table">
            <DeclareEnterpriseTableView
              :getList="getList"
@@ -16,7 +16,8 @@
              v-bind="dialogProps"
              :show-upload-btn="false"
              :show-delete-btn="false"
              :show-check-btn="false"
              showMaterialExtraFileUploadBtn
              showMaterialExtraFileDeleteBtn
            />
          </ChunkCellV2>
          <ChunkCell>
@@ -114,21 +115,25 @@
  settleSumAmount: 0,
  parkCollectFileList: [] as CustomerApplyFileTypeListItem[],
  calculationFileList: [] as CustomerApplyFileTypeListItem[],
  extraListFiles: [] as CustomerApplyFileTypeListItem[],
  status: '' as any as BountyCheckStatusEnum,
  remark: '',
  suportPlatRecharge: false,
  suportFinance: false,
});
const { addRewardApplyStep3Columns } = useAddRewardApplyStep3Columns({
  suportPlatRecharge: toRef(form, 'suportPlatRecharge'),
  suportFinance: toRef(form, 'suportFinance'),
});
const { extraParamState, getList, reset, proTableProps, operationBtns, dialogProps } =
  useDeclareEnterpriseTable({
    id: ref(id),
    applyMonth: toRef(form, 'applyMonth'),
    enableUploadExtraFiles: true,
  });
const { data: detail, isLoading } = useQuery({
@@ -156,8 +161,12 @@
    form.calculationFileList = EnterpriseApplyFileUtils.convertApiFileToParkCollectFileList(
      data.collectCountListFiles
    );
    form.extraListFiles = EnterpriseApplyFileUtils.convertApiFileToExtraListFiles(
      data.extraListFiles
    );
    form.suportPlatRecharge = data.suportPlatRecharge;
    form.suportFinance = data.suportFinance;
    getList();
  },
@@ -188,6 +197,7 @@
      parkBountyApplyId: id,
      outCheckStatus: form.status,
      remark: form.remark,
      extraListFiles: EnterpriseApplyFileUtils.convertFileTableListToApiBatch(form.extraListFiles),
    };
    let res = await parkBountyApplyServices.outcheckParkBountyApply(params);
    if (res) {
src/views/MaterialReview/MaterialReviewDetail.vue
@@ -31,7 +31,6 @@
              v-bind="dialogProps"
              :show-upload-btn="false"
              :show-delete-btn="false"
              :show-check-btn="false"
            />
          </ChunkCellV2>
        </DetailView>
@@ -87,14 +86,18 @@
  parkCollectFileList: [] as CustomerApplyFileTypeListItem[],
  calculationFileList: [] as CustomerApplyFileTypeListItem[],
  extraListFiles: [] as CustomerApplyFileTypeListItem[],
  outCheckStatus: '' as any as BountyCheckStatusEnum,
  outCheckRemark: '',
  suportPlatRecharge: false,
  suportFinance: false,
});
const { addRewardApplyStep3Columns } = useAddRewardApplyStep3Columns({
  suportPlatRecharge: toRef(form, 'suportPlatRecharge'),
  suportFinance: toRef(form, 'suportFinance'),
});
const { extraParamState, getList, reset, proTableProps, operationBtns, dialogProps } =
@@ -132,8 +135,12 @@
    form.calculationFileList = EnterpriseApplyFileUtils.convertApiFileToParkCollectFileList(
      data.collectCountListFiles
    );
    form.extraListFiles = EnterpriseApplyFileUtils.convertApiFileToExtraListFiles(
      data.extraListFiles
    );
    form.suportPlatRecharge = data.suportPlatRecharge;
    form.suportFinance = data.suportFinance;
    getList();
  },
src/views/Reward/RewardDeclareDetail.vue
@@ -16,7 +16,6 @@
              v-bind="dialogProps"
              :show-upload-btn="false"
              :show-delete-btn="false"
              :show-check-btn="false"
            />
          </ChunkCellV2>
        </DetailView>
@@ -61,11 +60,14 @@
  settleSumAmount: 0,
  parkCollectFileList: [] as CustomerApplyFileTypeListItem[],
  calculationFileList: [] as CustomerApplyFileTypeListItem[],
  extraListFiles: [] as CustomerApplyFileTypeListItem[],
  suportPlatRecharge: false,
  suportFinance: false,
});
const { addRewardApplyStep3Columns } = useAddRewardApplyStep3Columns({
  suportPlatRecharge: toRef(form, 'suportPlatRecharge'),
  suportFinance: toRef(form, 'suportFinance'),
});
const { extraParamState, getList, reset, proTableProps, operationBtns, dialogProps } =
@@ -99,7 +101,11 @@
    form.calculationFileList = EnterpriseApplyFileUtils.convertApiFileToParkCollectFileList(
      data.collectCountListFiles
    );
    form.extraListFiles = EnterpriseApplyFileUtils.convertApiFileToExtraListFiles(
      data.extraListFiles
    );
    form.suportPlatRecharge = data.suportPlatRecharge;
    form.suportFinance = data.suportFinance;
    getList();
  },
src/views/Reward/RewardGrant.vue
@@ -189,7 +189,7 @@
  },
  {
    id: '11',
    enCode: 'a',
    enCode: 'settleAndFinanceOperator',
    name: '登记人',
  },
];
src/views/Reward/RewardGrantRegister.vue
@@ -71,7 +71,7 @@
  SettleStatusEnum,
  TransferFileEnumInRewardGrandText,
} from '@/constants';
import { useDeclareEnterpriseTable, rewardGrantRegisterColumns } from '@/hooks';
import { useDeclareEnterpriseTable, useRewardGrantRegisterColumns } from '@/hooks';
import { TransferFileEnumInRewardGrandTableItem } from '@/components/commonView/types';
import RegisterGrantDialog from './components/RegisterGrantDialog.vue';
import BatchRegisterDialog from './components/BatchRegisterDialog.vue';
@@ -97,9 +97,13 @@
  settleSumAmount: 0,
  parkCollectFileList: [] as CustomerApplyFileTypeListItem[],
  calculationFileList: [] as CustomerApplyFileTypeListItem[],
  extraListFiles: [] as CustomerApplyFileTypeListItem[],
  suportPlatRecharge: false,
  suportFinance: false,
});
const { rewardGrantRegisterColumns } = useRewardGrantRegisterColumns();
const { extraParamState, paginationState, getList, reset, proTableProps } =
  useDeclareEnterpriseTable({
@@ -160,7 +164,11 @@
    form.calculationFileList = EnterpriseApplyFileUtils.convertApiFileToParkCollectFileList(
      data.collectCountListFiles
    );
    form.extraListFiles = EnterpriseApplyFileUtils.convertApiFileToExtraListFiles(
      data.extraListFiles
    );
    form.suportPlatRecharge = data.suportPlatRecharge;
    form.suportFinance = data.suportFinance;
    getList();
  },
@@ -192,6 +200,7 @@
    amount: 0,
    showSuportPlatRecharge: false,
    showSuportFiscalRecharge: false,
    // showSuportFinance: false,
  },
});
@@ -200,7 +209,8 @@
    incomeType: '' as any as IncomeTypeEnum,
    fileUrl: [] as UploadUserFile[],
    showSuportPlatRecharge: row.settleStatus === SettleStatusEnum.WaitForSettle,
    showSuportFiscalRecharge: row.financeStatus === FinanceStatusEnum.WaitForIncome,
    showSuportFiscalRecharge:
      form.suportFinance && row.financeStatus === FinanceStatusEnum.WaitForIncome,
    parkBountyApplyId: row.parkBountyApplyId,
    parkBountyApplyDetailId: row.parkBountyApplyDetailId,
    amount: 0,
@@ -297,6 +307,7 @@
    handleBatchRegisterAdd({
      parkBountyApplyId: id,
      showSuportPlatRecharge: form.suportPlatRecharge,
      showSuportFiscalRecharge: form.suportFinance,
    });
  } catch (error) {}
}
@@ -311,9 +322,10 @@
    parkBountyApplyDetailIds: [] as string[],
    amount: 0,
    companyList: [] as API.GetNotTransferCompanyNameListOutput[],
    incomeType: IncomeTypeEnum.Fiscal,
    incomeType: '' as any as IncomeTypeEnum,
    parkBountyApplyId: '',
    showSuportPlatRecharge: false,
    showSuportFiscalRecharge: false,
    fileUrl: [] as UploadUserFile[],
  },
src/views/Reward/components/BatchRegisterDialog.vue
@@ -22,7 +22,12 @@
          />
        </div>
      </ProFormItemV2>
      <ProFormItemV2 label="登记类型:" prop="incomeType" required>
      <ProFormItemV2
        label="登记类型:"
        prop="incomeType"
        required
        :check-rules="[{ message: '请选择登记类型' }]"
      >
        <ProFormRadio
          v-model="form.incomeType"
          :value-enum="incomeTypeEnum"
@@ -102,6 +107,7 @@
  incomeType: IncomeTypeEnum;
  parkBountyApplyId: string;
  showSuportPlatRecharge: boolean;
  showSuportFiscalRecharge: boolean;
  fileUrl: UploadUserFile[];
};
@@ -110,7 +116,7 @@
const incomeTypeEnum = computed(() => {
  return [
    {
    form.value.showSuportFiscalRecharge && {
      label: IncomeTypeEnumText[IncomeTypeEnum.Fiscal],
      value: IncomeTypeEnum.Fiscal,
    },
src/views/Reward/components/RewardApplyTradeCheckDialog.vue
@@ -56,12 +56,14 @@
            prop="payAuditFileUrl"
            :required="!isApplyTrade"
            :check-rules="
              !isApplyTrade && [
                {
                  message: '请上传凭证',
                  type: 'upload',
                },
              ]
              !isApplyTrade
                ? [
                    {
                      message: '请上传凭证',
                      type: 'upload',
                    },
                  ]
                : undefined
            "
          >
            <ProFormUpload