From 0b73bba28e2a8473ab71f5c8b4760c1995ff4fc1 Mon Sep 17 00:00:00 2001
From: zhengyiming <540361168@qq.com>
Date: 星期二, 21 十月 2025 18:29:07 +0800
Subject: [PATCH] fix: s
---
src/constants/fourStreams.ts | 13 +
src/views/MaterialReview/MaterialReview.vue | 2
src/views/Reward/components/BatchRegisterDialog.vue | 10 +
src/constants/dic.ts | 2
src/components/commonView/FourStreamsBatchMaterialFileDialog.vue | 13 +
src/services/api/typings.d.ts | 12 +
src/components/commonView/MateriaDetailDialog.vue | 2
src/hooks/fourStreams.ts | 164 +++++++++++++-------
src/components/commonView/SettlementMaterialInfoView.vue | 14 +
src/views/Reward/components/RewardApplyTradeCheckDialog.vue | 14 +
src/utils/request/index.ts | 1
src/views/MaterialReview/MaterialReviewAudit.vue | 14 +
src/components/commonView/MaterialInfoView.vue | 8
src/components/commonView/DetailView.vue | 16 +
src/components/commonView/BatchInfoView.vue | 15 +
src/views/Reward/RewardGrant.vue | 2
src/components/commonView/types.ts | 2
src/components/commonView/utils/index.ts | 81 +++++++--
src/components/commonView/FourStreamsMaterialFileTable.vue | 16 +
src/views/Reward/RewardDeclareDetail.vue | 8
src/components/commonView/ExtraMaterialInfoView.vue | 42 +++++
src/views/MaterialReview/MaterialReviewDetail.vue | 9 +
src/views/Reward/RewardGrantRegister.vue | 18 +
23 files changed, 367 insertions(+), 111 deletions(-)
diff --git a/src/components/commonView/BatchInfoView.vue b/src/components/commonView/BatchInfoView.vue
index b7fc1ca..3433574 100644
--- a/src/components/commonView/BatchInfoView.vue
+++ b/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骞碝M鏈�" 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,
diff --git a/src/components/commonView/DetailView.vue b/src/components/commonView/DetailView.vue
index a1c8ab8..5e6c408 100644
--- a/src/components/commonView/DetailView.vue
+++ b/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>
diff --git a/src/components/commonView/ExtraMaterialInfoView.vue b/src/components/commonView/ExtraMaterialInfoView.vue
new file mode 100644
index 0000000..bc5ce9a
--- /dev/null
+++ b/src/components/commonView/ExtraMaterialInfoView.vue
@@ -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>
diff --git a/src/components/commonView/FourStreamsBatchMaterialFileDialog.vue b/src/components/commonView/FourStreamsBatchMaterialFileDialog.vue
index 3039c0c..73a57d8 100644
--- a/src/components/commonView/FourStreamsBatchMaterialFileDialog.vue
+++ b/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;
+ }
+ },
},
},
]);
diff --git a/src/components/commonView/FourStreamsMaterialFileTable.vue b/src/components/commonView/FourStreamsMaterialFileTable.vue
index 606f5de..8272334 100644
--- a/src/components/commonView/FourStreamsMaterialFileTable.vue
+++ b/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;
},
diff --git a/src/components/commonView/MateriaDetailDialog.vue b/src/components/commonView/MateriaDetailDialog.vue
index dff1e54..3ff57a8 100644
--- a/src/components/commonView/MateriaDetailDialog.vue
+++ b/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 });
diff --git a/src/components/commonView/MaterialInfoView.vue b/src/components/commonView/MaterialInfoView.vue
index 09df816..402c453 100644
--- a/src/components/commonView/MaterialInfoView.vue
+++ b/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>
diff --git a/src/components/commonView/SettlementMaterialInfoView.vue b/src/components/commonView/SettlementMaterialInfoView.vue
index ad836fe..cc5fb6d 100644
--- a/src/components/commonView/SettlementMaterialInfoView.vue
+++ b/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>
diff --git a/src/components/commonView/types.ts b/src/components/commonView/types.ts
index 89fd9f9..6941626 100644
--- a/src/components/commonView/types.ts
+++ b/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>;
diff --git a/src/components/commonView/utils/index.ts b/src/components/commonView/utils/index.ts
index 9550a10..2372a8d 100644
--- a/src/components/commonView/utils/index.ts
+++ b/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[]) {
diff --git a/src/constants/dic.ts b/src/constants/dic.ts
index 2bd2ed0..9436d0a 100644
--- a/src/constants/dic.ts
+++ b/src/constants/dic.ts
@@ -18,6 +18,8 @@
FirstPartyIndustry = 170,
MatingServiceType = 180,
IndustryBodyType = 190,
+ BountyExtraFileType = 240,
+ BountyApplyExtraFileType = 250,
}
export const SearchTypeText = {
diff --git a/src/constants/fourStreams.ts b/src/constants/fourStreams.ts
index 795e448..e4d0897 100644
--- a/src/constants/fourStreams.ts
+++ b/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,
}
+
+/**
+ * 娌℃湁鍦ㄥ瓧鍏搁厤缃瓼ileSearchType 鎵�浠ヨˉ鍏呮枃浠跺湪杩欓噷鍐欐
+ */
+export const FourStreamsExtraMaterialFileSearchType = {
+ [SearchType.BountyExtraFileType]: '0D85AE1F-0618-F43C-A762-3A197D83B471',
+ [SearchType.BountyApplyExtraFileType]: '0D85AE1F-0618-F43C-A762-3A197D83B472',
+};
diff --git a/src/hooks/fourStreams.ts b/src/hooks/fourStreams.ts
index 33182e8..0ea2acc 100644
--- a/src/hooks/fourStreams.ts
+++ b/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,
diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts
index e346c7e..442c148 100644
--- a/src/services/api/typings.d.ts
+++ b/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 {
diff --git a/src/utils/request/index.ts b/src/utils/request/index.ts
index 3c654d4..3ebb819 100644
--- a/src/utils/request/index.ts
+++ b/src/utils/request/index.ts
@@ -170,7 +170,6 @@
requestInterceptors: [
[
(config) => {
- console.log('req config: ', config);
const $config = config;
// 寮�鍚繘搴︽潯鍔ㄧ敾
if (config.needNProcess) {
diff --git a/src/views/MaterialReview/MaterialReview.vue b/src/views/MaterialReview/MaterialReview.vue
index 1d6b544..15f6a7c 100644
--- a/src/views/MaterialReview/MaterialReview.vue
+++ b/src/views/MaterialReview/MaterialReview.vue
@@ -110,7 +110,7 @@
},
{
id: '7',
- enCode: 'a',
+ enCode: 'outCheckAuditOperator',
name: '瀹℃牳浜�',
},
{
diff --git a/src/views/MaterialReview/MaterialReviewAudit.vue b/src/views/MaterialReview/MaterialReviewAudit.vue
index 6c5eb87..b31b81e 100644
--- a/src/views/MaterialReview/MaterialReviewAudit.vue
+++ b/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) {
diff --git a/src/views/MaterialReview/MaterialReviewDetail.vue b/src/views/MaterialReview/MaterialReviewDetail.vue
index 5bf5369..1b3d8e9 100644
--- a/src/views/MaterialReview/MaterialReviewDetail.vue
+++ b/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();
},
diff --git a/src/views/Reward/RewardDeclareDetail.vue b/src/views/Reward/RewardDeclareDetail.vue
index 6e9d5c5..28e9717 100644
--- a/src/views/Reward/RewardDeclareDetail.vue
+++ b/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();
},
diff --git a/src/views/Reward/RewardGrant.vue b/src/views/Reward/RewardGrant.vue
index ced8dc8..3a18a2b 100644
--- a/src/views/Reward/RewardGrant.vue
+++ b/src/views/Reward/RewardGrant.vue
@@ -189,7 +189,7 @@
},
{
id: '11',
- enCode: 'a',
+ enCode: 'settleAndFinanceOperator',
name: '鐧昏浜�',
},
];
diff --git a/src/views/Reward/RewardGrantRegister.vue b/src/views/Reward/RewardGrantRegister.vue
index 98939eb..bd2dfa9 100644
--- a/src/views/Reward/RewardGrantRegister.vue
+++ b/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[],
},
diff --git a/src/views/Reward/components/BatchRegisterDialog.vue b/src/views/Reward/components/BatchRegisterDialog.vue
index 8154554..872ed88 100644
--- a/src/views/Reward/components/BatchRegisterDialog.vue
+++ b/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,
},
diff --git a/src/views/Reward/components/RewardApplyTradeCheckDialog.vue b/src/views/Reward/components/RewardApplyTradeCheckDialog.vue
index 59deac6..01af4df 100644
--- a/src/views/Reward/components/RewardApplyTradeCheckDialog.vue
+++ b/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
--
Gitblit v1.9.1