From aea28d0ad246cc8d6ce0744b8f101dd7c8fd474f Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期三, 14 五月 2025 14:29:15 +0800 Subject: [PATCH] feat: 接口 --- src/views/Reward/RewardGrant.vue | 349 +++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 286 insertions(+), 63 deletions(-) diff --git a/src/views/Reward/RewardGrant.vue b/src/views/Reward/RewardGrant.vue index f6c1071..563ce13 100644 --- a/src/views/Reward/RewardGrant.vue +++ b/src/views/Reward/RewardGrant.vue @@ -14,7 +14,18 @@ @change="getList()" ></FieldDatePicker> </QueryFilterItem> - <QueryFilterItem tip-content="鍙戞斁鏃ユ湡"> + <QueryFilterItem tip-content="鎷ㄤ粯鏃ユ湡"> + <FieldDatePicker + v-model="extraParamState.financeTime" + type="daterange" + range-separator="~" + start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡" + clearable + @change="getList()" + ></FieldDatePicker> + </QueryFilterItem> + <QueryFilterItem tip-content="鍏呭�兼棩鏈�"> <FieldDatePicker v-model="extraParamState.settleTime" type="daterange" @@ -25,10 +36,19 @@ @change="getList()" ></FieldDatePicker> </QueryFilterItem> - <QueryFilterItem> + <QueryFilterItem tip-content="璐㈡斂鎷ㄤ粯鐘舵��"> + <FieldRadio + v-model="extraParamState.financeStatus" + :value-enum="FinanceStatusEnumTextV2Query" + buttonStyle + showAllBtn + @change="getList()" + /> + </QueryFilterItem> + <QueryFilterItem tip-content="骞冲彴鍏呭�肩姸鎬�"> <FieldRadio v-model="extraParamState.settleStatus" - :value-enum="SettleStatusEnumText" + :value-enum="SettleStatusEnumTextV2Query" buttonStyle showAllBtn @change="getList()" @@ -47,16 +67,20 @@ </ProTableQueryFilterBar> <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns"> - <template #operationBtn-checkBtn="{ data, row }"> - <PreviewBtnV2 - class="pro-table-operation-btn" - :url="convertApi2FormUrlBySeparator(row.settleFileUrl ?? '')" - preview-btn-text="鏌ョ湅鍑瘉" - /> - </template> </ProTableV2> - <FinancialDialog v-bind="dialogFinancialProps"></FinancialDialog> - <PlateformDialog v-bind="dialogPlateformProps"></PlateformDialog> + <FourStreamsMaterialFileDialogV2 + v-bind="dialogMaterialFileProps" + :show-upload-btn="false" + :show-delete-btn="false" + :show-check-btn="false" + downloadBtnText="鏌ョ湅" + title="鏌ョ湅鍑瘉" + :BusinessTypeEnumText="TransferFileEnumInRewardGrandText" + /> + <RegisterDialog v-bind="dialogRegisterProps"></RegisterDialog> + <UploadCertRewardDialog v-bind="dialogCertRewardProps"></UploadCertRewardDialog> + <!-- <FinancialDialog v-bind="dialogFinancialProps"></FinancialDialog> + <PlateformDialog v-bind="dialogPlateformProps"></PlateformDialog> --> </AppContainer> </LoadingLayout> </template> @@ -75,17 +99,30 @@ FieldDatePicker, useFormDialog, UploadUserFile, - PreviewBtnV2, } from '@bole-core/components'; import { Message, OrderInputType } from '@bole-core/core'; -import { convertApi2FormUrlBySeparator, format } from '@/utils'; -import { SettleStatusEnum, SettleStatusEnumText } from '@/constants'; +import { format } from '@/utils'; +import { + SettleStatusEnum, + FinanceStatusEnum, + TransferFileEnumInRewardGrandText, + FinanceStatusEnumTextV2, + FinanceStatusEnumTextV2Query, + SettleStatusEnumTextV2, + SettleStatusEnumTextV2Query, + IncomeTypeEnum, + BillStatusEnum, +} from '@/constants'; import * as parkBountyApplyServices from '@/services/api/ParkBountyApply'; +import RegisterDialog from './components/RegisterDialog.vue'; +import UploadCertRewardDialog from './components/UploadCertRewardDialog.vue'; import FinancialDialog from './components/FinancialDialog.vue'; import PlateformDialog from './components/PlateformDialog.vue'; import _ from 'lodash'; import { ModelValueType } from 'element-plus'; import { useQueryClient } from '@tanstack/vue-query'; +import { TransferFileEnumInRewardGrandTableItem } from '@/components/commonView/types'; +import { FourStreamsMaterialUtils } from '@/components/commonView/utils'; defineOptions({ name: 'RewardGrant', @@ -96,51 +133,61 @@ id: '1', enCode: 'batchNo', name: '鐢宠鎵规鍙�', + width: 160, }, { id: '2', enCode: 'parkName', name: '鐢宠鍥尯', + width: 250, }, { id: '3', enCode: 'parkTypeName', name: '鍥尯绫诲瀷', + width: 160, }, { id: '4', enCode: 'applyMonth', name: '鐢宠骞冲彴濂栧姳鏈堜唤', + width: 160, }, { id: '5', enCode: 'applySumAmount', name: '骞冲彴濂栧姳姹囨�婚噾棰濓紙鍏冿級', + width: 180, }, { id: '6', enCode: 'creationTime', name: '鐢虫姤鏃ユ湡', + width: 180, }, { id: '7', - enCode: 'settleStatus', - name: '璐㈡斂鎷ㄤ粯鐘舵��', + enCode: 'financeStatus', + name: '璐㈡斂鎷ㄤ粯鐧昏鐘舵��', + width: 160, }, { id: '8', - enCode: 'settleTime', - name: '鎷ㄤ粯鏃ユ湡', + enCode: 'financeTime', + name: '鐧昏鎷ㄤ粯鏃ユ湡', + width: 180, }, { id: '9', enCode: 'settleStatus', - name: '骞冲彴鍏呭�肩姸鎬�', + name: '骞冲彴鍏呭�肩櫥璁扮姸鎬�', + width: 160, }, { id: '10', enCode: 'settleTime', - name: '鍏呭�兼棩鏈�', + name: '鐧昏鍏呭�兼棩鏈�', + width: 180, }, ]; @@ -154,30 +201,62 @@ onClick: (role) => goDetail(role), }, }, + // { + // data: { + // enCode: 'financialBtn', + // name: '璐㈡斂鎷ㄤ粯', + // }, + // emits: { + // onClick: (role) => openFinancialDialog(role), + // }, + // extraProps: { + // hide: (row: API.GetParkBountyApplyListOutput) => + // row.financeStatus === FinanceStatusEnum.HasIncome, + // }, + // }, + // { + // data: { + // enCode: 'plateformBtn', + // name: '骞冲彴鍏呭��', + // }, + // emits: { + // onClick: (role) => openPlateformDialog(role), + // }, + // extraProps: { + // hide: (row: API.GetParkBountyApplyListOutput) => + // row.settleStatus !== SettleStatusEnum.WaitForSettle, + // }, + // }, { data: { - enCode: 'financialBtn', - name: '璐㈡斂鎷ㄤ粯', + enCode: 'registerBtn', + name: '鐧昏', }, emits: { - onClick: (role) => openFinancialDialog(role), + onClick: (role) => openRegisterDialog(role), }, extraProps: { hide: (row: API.GetParkBountyApplyListOutput) => - row.settleStatus === SettleStatusEnum.HasSettle, + !( + row.settleStatus === SettleStatusEnum.WaitForSettle || + row.financeStatus === FinanceStatusEnum.WaitForIncome + ), }, }, { data: { - enCode: 'plateformBtn', - name: '骞冲彴鍏呭��', + enCode: 'uploadCertBtn', + name: '涓婁紶鍑瘉', }, emits: { - onClick: (role) => openPlateformDialog(role), + onClick: (role) => openCertRewardDialog(role), }, extraProps: { hide: (row: API.GetParkBountyApplyListOutput) => - row.settleStatus === SettleStatusEnum.HasSettle, + !( + row.settleStatus === SettleStatusEnum.HasSettle || + row.financeStatus === FinanceStatusEnum.HasIncome + ), }, }, { @@ -185,9 +264,15 @@ enCode: 'checkBtn', name: '鏌ョ湅鍑瘉', }, + emits: { + onClick: (row) => openMaterialFileDialog(row), + }, extraProps: { hide: (row: API.GetParkBountyApplyListOutput) => - row.settleStatus === SettleStatusEnum.WaitForSettle, + !( + row.settleStatus === SettleStatusEnum.HasBill || + row.financeStatus === FinanceStatusEnum.HasBill + ), }, }, ]); @@ -221,10 +306,13 @@ }, batchNo: extraParamState.batchNo, settleStatus: extraParamState.settleStatus, + financeStatus: extraParamState.financeStatus, creationTimeBegin: format(extraParamState.creationTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'), creationTimeEnd: format(extraParamState.creationTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'), settleTimeBegin: format(extraParamState.settleTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'), settleTimeEnd: format(extraParamState.settleTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'), + financeTimeBegin: format(extraParamState.financeTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'), + financeTimeEnd: format(extraParamState.financeTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'), }; let res = await parkBountyApplyServices.getParkBountyApplyList(params, { showLoading: !state.loading, @@ -236,21 +324,25 @@ defaultExtraParams: { batchNo: '', settleStatus: '' as any as SettleStatusEnum, + financeStatus: '' as any as FinanceStatusEnum, creationTime: [] as unknown as ModelValueType, settleTime: [] as unknown as ModelValueType, + financeTime: [] as unknown as ModelValueType, orderInput: [{ property: 'creationTime', order: OrderInputType.Desc }], }, columnsRenderProps: { applyMonth: { type: 'date', format: 'YYYY骞碝M鏈�' }, creationTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' }, settleTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' }, + financeTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' }, applySumAmount: { type: 'money' }, - settleStatus: { type: 'enum', valueEnum: SettleStatusEnumText }, + settleStatus: { type: 'enum', valueEnum: SettleStatusEnumTextV2 }, + financeStatus: { type: 'enum', valueEnum: FinanceStatusEnumTextV2 }, }, } ); -function goDetail(row: any) { +function goDetail(row: API.GetParkBountyApplyListOutput) { router.push({ name: 'RewardDeclareDetail', params: { @@ -259,34 +351,97 @@ }); } -const queryClient = useQueryClient(); -const { - dialogProps: dialogFinancialProps, - handleEdit: handleFinancialEdit, - editForm: editFinancialForm, -} = useFormDialog({ - onConfirm: handleFinancial, +function openMaterialFileDialog(row: API.GetParkBountyApplyListOutput) { + handleMaterialFileAdd({ + list: FourStreamsMaterialUtils.initApplyRewardGrandFileList(row), + }); +} + +const { dialogProps: dialogMaterialFileProps, handleAdd: handleMaterialFileAdd } = useFormDialog({ defaultFormParams: { - parkBountyApplyId: '', - amount: 0, - settleFileUrl: [] as UploadUserFile[], + list: [] as TransferFileEnumInRewardGrandTableItem[], }, }); -function openFinancialDialog(row?: API.GetParkBountyApplyListOutput) { - handleFinancialEdit({ +const queryClient = useQueryClient(); + +// const { +// dialogProps: dialogFinancialProps, +// handleEdit: handleFinancialEdit, +// editForm: editFinancialForm, +// } = useFormDialog({ +// onConfirm: handleFinancial, +// defaultFormParams: { +// parkBountyApplyId: '', +// financeSumAmount: 0, +// financeFileUrl: [] as UploadUserFile[], +// }, +// }); + +// function openFinancialDialog(row?: API.GetParkBountyApplyListOutput) { +// handleFinancialEdit({ +// parkBountyApplyId: row.id, +// financeSumAmount: 0, +// financeFileUrl: [] as UploadUserFile[], +// }); +// } +// async function handleFinancial() { +// try { +// let params: API.ParkBountyApplyFinanceFileInput = { +// parkBountyApplyId: editFinancialForm.parkBountyApplyId, +// financeSumAmount: editFinancialForm.financeSumAmount, +// financeFileUrl: editFinancialForm.financeFileUrl.map((x) => x.path).join('|'), +// }; +// let res = await parkBountyApplyServices.parkBountyApplyFinanceBill(params); +// if (res) { +// Message.successMessage('鎿嶄綔鎴愬姛'); +// getList(paginationState.pageIndex); +// queryClient.invalidateQueries({ +// queryKey: ['parkBountyApplyServices/getGoverDataBoard'], +// }); +// } +// } catch (error) {} +// } +const { + dialogProps: dialogRegisterProps, + handleEdit: handleRegisterEdit, + editForm: editRegisterForm, +} = useFormDialog({ + onConfirm: handleRegister, + defaultFormParams: { + incomeType: '' as any as IncomeTypeEnum, + parkBountyApplyId: '', + financeSumAmount: 0, + showSuportPlatRecharge: false, + showSuportFiscalRecharge: false, + }, +}); + +function openRegisterDialog(row?: API.GetParkBountyApplyListOutput) { + handleRegisterEdit({ + incomeType: '' as any as IncomeTypeEnum, + showSuportPlatRecharge: row.settleStatus === SettleStatusEnum.WaitForSettle, + showSuportFiscalRecharge: row.financeStatus === FinanceStatusEnum.WaitForIncome, parkBountyApplyId: row.id, - amount: 0, - settleFileUrl: [] as UploadUserFile[], + financeSumAmount: 0, }); } -async function handleFinancial() { +async function handleRegister() { try { - let params: API.ParkBountyApplySettleInput = { - parkBountyApplyId: editFinancialForm.parkBountyApplyId, - settleFileUrl: editFinancialForm.settleFileUrl.map((x) => x.path).join('|'), + let params = { + parkBountyApplyId: editRegisterForm.parkBountyApplyId, }; - let res = await parkBountyApplyServices.parkBountyApplySettle(params); + let res; + if (editRegisterForm.incomeType === IncomeTypeEnum.Fiscal) { + (params as API.ParkBountyApplyFinanceFileInput).financeSumAmount = + editRegisterForm.financeSumAmount; + res = await parkBountyApplyServices.parkBountyApplyFinanceBillAmount(params); + } + if (editRegisterForm.incomeType === IncomeTypeEnum.Platform) { + (params as API.ParkBountyApplySettleInput).settleSumAmount = + editRegisterForm.financeSumAmount; + res = await parkBountyApplyServices.parkBountyApplySettleAmount(params); + } if (res) { Message.successMessage('鎿嶄綔鎴愬姛'); getList(paginationState.pageIndex); @@ -297,28 +452,96 @@ } catch (error) {} } +// const { +// dialogProps: dialogPlateformProps, +// handleEdit: handlePlateformEdit, +// editForm: editPlateformForm, +// } = useFormDialog({ +// onConfirm: handlePlateform, +// defaultFormParams: { +// parkBountyApplyId: '', +// settleSumAmount: 0, +// settleFileUrl: [] as UploadUserFile[], +// }, +// }); + +// function openPlateformDialog(row?: API.GetParkBountyApplyListOutput) { +// handlePlateformEdit({ +// parkBountyApplyId: row.id, +// settleSumAmount: 0, +// settleFileUrl: [] as UploadUserFile[], +// }); +// } + +// async function handlePlateform() { +// try { +// let params: API.ParkBountyApplySettleInput = { +// parkBountyApplyId: editPlateformForm.parkBountyApplyId, +// settleSumAmount: editPlateformForm.settleSumAmount, +// settleFileUrl: editPlateformForm.settleFileUrl.map((x) => x.path).join('|'), +// }; +// let res = await parkBountyApplyServices.parkBountyApplySettle(params); +// if (res) { +// Message.successMessage('鎿嶄綔鎴愬姛'); +// getList(paginationState.pageIndex); +// queryClient.invalidateQueries({ +// queryKey: ['parkBountyApplyServices/getGoverDataBoard'], +// }); +// } +// } catch (error) {} +// } + const { - dialogProps: dialogPlateformProps, - handleEdit: handlePlateformEdit, - editForm: editPlateformForm, + dialogProps: dialogCertRewardProps, + handleEdit: handleCertRewardEdit, + editForm: editCertRewardForm, } = useFormDialog({ - onConfirm: handlePlateform, + onConfirm: handleCertReward, defaultFormParams: { + incomeType: '' as any as IncomeTypeEnum, parkBountyApplyId: '', - amount: 0, - settleFileUrl: [] as UploadUserFile[], + fileUrl: [] as UploadUserFile[], + showSuportPlatRecharge: false, + showSuportFiscalRecharge: false, }, }); -function openPlateformDialog(row?: API.GetParkBountyApplyListOutput) { - handlePlateformEdit({ +function openCertRewardDialog(row?: API.GetParkBountyApplyListOutput) { + handleCertRewardEdit({ + incomeType: '' as any as IncomeTypeEnum, + showSuportPlatRecharge: row.settleStatus === SettleStatusEnum.HasSettle, + showSuportFiscalRecharge: row.financeStatus === FinanceStatusEnum.HasIncome, parkBountyApplyId: row.id, - amount: 0, - settleFileUrl: [] as UploadUserFile[], + fileUrl: [] as UploadUserFile[], }); } - -async function handlePlateform() {} +async function handleCertReward() { + try { + let params: API.ParkBountyApplyFinanceFileInput = { + parkBountyApplyId: editCertRewardForm.parkBountyApplyId, + }; + let res; + if (editCertRewardForm.incomeType === IncomeTypeEnum.Fiscal) { + (params as API.ParkBountyApplyFinanceFileInput).financeFileUrl = editCertRewardForm.fileUrl + .map((x) => x.path) + .join('|'); + res = await parkBountyApplyServices.parkBountyApplyFinanceBill(params); + } + if (editCertRewardForm.incomeType === IncomeTypeEnum.Platform) { + (params as API.ParkBountyApplySettleInput).settleFileUrl = editCertRewardForm.fileUrl + .map((x) => x.path) + .join('|'); + res = await parkBountyApplyServices.parkBountyApplySettle(params); + } + if (res) { + Message.successMessage('鎿嶄綔鎴愬姛'); + getList(paginationState.pageIndex); + queryClient.invalidateQueries({ + queryKey: ['parkBountyApplyServices/getGoverDataBoard'], + }); + } + } catch (error) {} +} </script> <style lang="scss" scoped> -- Gitblit v1.9.1