From a686faf1c2132f55e40119df28ce9f6e46206b74 Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期四, 11 九月 2025 17:40:38 +0800 Subject: [PATCH] feat: 页面 --- src/views/ServiceChargeManage/ServiceChargeDetail.vue | 141 ++++++++++++++++++++++++++++++---------------- 1 files changed, 92 insertions(+), 49 deletions(-) diff --git a/src/views/ServiceChargeManage/ServiceChargeDetail.vue b/src/views/ServiceChargeManage/ServiceChargeDetail.vue index 3770baa..508adec 100644 --- a/src/views/ServiceChargeManage/ServiceChargeDetail.vue +++ b/src/views/ServiceChargeManage/ServiceChargeDetail.vue @@ -1,5 +1,5 @@ <template> - <LoadingLayout :loading="state.loading"> + <LoadingLayout :loading="isLoading"> <AppContainer> <ChunkCell title="缁撶畻鍗曡鎯�"> <ProForm :model="form" ref="formRef" label-width="120px" :is-read="true"> @@ -15,7 +15,7 @@ </ProFormItemV2> </ProFormColItem> </ProFormCol> - <ProFormCol> + <!-- <ProFormCol> <ProFormColItem :span="8"> <ProFormItemV2 label="缁撶畻鍗曞悕绉�:" prop="settlementOrderName"> <ProFormText v-model="form.settlementOrderName"> </ProFormText> @@ -30,7 +30,7 @@ ></ProFormDatePicker> </ProFormItemV2> </ProFormColItem> - </ProFormCol> + </ProFormCol> --> <ProFormCol> <ProFormColItem :span="8"> <ProFormItemV2 label="缁撶畻閲戦:" prop="settlementAmount"> @@ -69,7 +69,7 @@ </el-steps> </div> </ChunkCell> --> - <ChunkCell title="缁撶畻鍚嶅崟" style="flex: 1"> + <ChunkCell title="缁撶畻鍚嶅崟" style="flex: 1" class="settlement-user-list-chunk"> <ProTableQueryFilterBar @on-reset="reset"> <template #query> <QueryFilterItem> @@ -81,6 +81,22 @@ > </SearchInput> </QueryFilterItem> + </template> + <template #btn> + <BlFileUpload + v-model:file-url="form.settlementUrl" + ref="uploadRef" + :showTip="false" + :show-file-list="false" + class="pro-table-operation-btn upload-style-btn" + :on-success="(event) => handleUploadSuccess(event)" + :limitFileSize="null" + :limit="1" + accept="xlsx,xls" + > + <el-button text type="primary" class="pro-table-operation-btn">涓婁紶</el-button> + </BlFileUpload> + <el-button type="primary" link @click="handleAdd()">瀵煎嚭</el-button> </template> </ProTableQueryFilterBar> <ProTableV2 @@ -97,11 +113,11 @@ <div class="chuck-add-or-edit-actions"> <el-button class="chuck-add-or-edit-actions" @click="handleBack">鍙栨秷</el-button> <el-button - v-if="!isDetail" + v-if="isSettlement" class="chuck-add-or-edit-actions" type="primary" @click="handleSubmit" - >纭</el-button + >缁撶畻</el-button > </div> </ChunkCell> @@ -113,7 +129,6 @@ import { LoadingLayout, AppContainer, - AppScrollContainer, ChunkCell, ProForm, ProFormItemV2, @@ -129,6 +144,9 @@ QueryFilterItem, ProTableQueryFilterBar, useFormDialog, + XLSXUtils, + BlFileUpload, + UploadUserFile, } from '@bole-core/components'; import { SettlementListColumns } from './constants'; import { useQuery } from '@tanstack/vue-query'; @@ -159,8 +177,9 @@ const route = useRoute(); const id = (route.params.id as string) ?? ''; const url = (route.query.url as string) ?? ''; +const settlement = (route.query.settlement as string) ?? ''; -const isDetail = computed(() => !url); +const isSettlement = computed(() => !!url || !!settlement); const form = reactive({ name: '', @@ -169,6 +188,9 @@ code: '', settlementOrderName: '', settlementOrderTime: '', + settlementTaskUsers: [] as API.GetSettlementTaskUsersQueryResultItem[], + + settlementUrl: [] as UploadUserFile[], }); const BaseState = { @@ -177,32 +199,50 @@ const state = reactive({ ...BaseState }); -onMounted(async () => { - await getList(); - state.loading = false; +const { isLoading } = useQuery({ + queryKey: ['taskUserServices/getSettlementTaskUsers', id, url], + queryFn: async () => { + return await taskUserServices.getSettlementTaskUsers( + { taskInfoId: id, settlementOrderUrl: url }, + { + showLoading: false, + } + ); + }, + placeholderData: () => ({} as API.GetSettlementTaskUsersQueryResult), + onSuccess(res) { + form.settlementTaskUsers = res?.data ?? []; + if (res?.detail) { + form.name = res?.detail?.name; + form.settlementAmount = res?.detail?.settlementAmount ?? 0; + form.actualSettlementAmount = res?.detail?.actualSettlementAmount ?? 0; + form.code = res?.detail?.code; + form.settlementOrderName = setOssFileName(res?.detail?.settlementOrderName); + form.settlementOrderTime = res?.detail?.settlementOrderTime ?? ''; + } + if (res?.errors?.length > 0) { + Message.tipMessage('瀛樺湪瀵煎叆閿欒鐨勬暟鎹紝鏄惁瀵煎嚭锛�').then(() => { + XLSXUtils.exportToXLSX({ + workbookDataList: res.errors, + fileName: '缁撶畻瀵煎叆-閿欒鏁版嵁', + workbookHeaderMap: { + name: '濮撳悕', + identity: '韬唤璇佸彿', + taskName: '浠诲姟鍚嶇О', + settlementAmount: '缁撶畻閲戦', + actualSettlementAmount: '瀹炲彂閲戦', + receiveAccount: '鏀舵璐︽埛', + bank: '鎵�灞為摱琛�', + bankBranch: '寮�鎴锋敮琛屽悕绉�', + errorMessage: '閿欒淇℃伅', + }, + }); + }); + } + getList(); + }, + enabled: !!id, }); - -// const { isLoading } = useQuery({ -// queryKey: ['taskServices/getSettlementTask', id], -// queryFn: async () => { -// return await taskServices.getSettlementTask( -// { id: id }, -// { -// showLoading: false, -// } -// ); -// }, -// placeholderData: () => ({} as API.GetSettlementTaskQueryResult), -// onSuccess(data) { -// form.name = data.name; -// form.settlementAmount = data.settlementAmount ?? 0; -// form.actualSettlementAmount = data.actualSettlementAmount ?? 0; -// form.code = data.code; -// form.settlementOrderName = setOssFileName(data.settlementOrderName); -// form.settlementOrderTime = data.settlementOrderTime ?? ''; -// }, -// enabled: !!id, -// }); const { getDataSource: getList, @@ -213,13 +253,9 @@ } = useTable( async ({ pageIndex, pageSize }, extraParamState) => { try { - let params: API.APIgetSettlementTaskUsersParams = { - taskInfoId: id, - settlementOrderUrl: url, - }; - let res = await taskUserServices.getSettlementTaskUsers(params); + let list = [...form.settlementTaskUsers]; if (extraParamState.keywords) { - res.data = res.data?.filter((item) => { + list = list?.filter((item) => { return ( item.name.includes(extraParamState.keywords) || item.contactPhoneNumber.includes(extraParamState.keywords) || @@ -227,21 +263,14 @@ ); }); } - if (res?.detail) { - form.name = res?.detail?.name; - form.settlementAmount = res?.detail?.settlementAmount ?? 0; - form.actualSettlementAmount = res?.detail?.actualSettlementAmount ?? 0; - form.code = res?.detail?.code; - form.settlementOrderName = setOssFileName(res?.detail?.settlementOrderName); - form.settlementOrderTime = res?.detail?.settlementOrderTime ?? ''; - } + return Promise.resolve({ pageModel: { rows: pageSize, page: pageIndex, - totalCount: res.data.length, + totalCount: list.length, }, - data: paginateList(res.data, pageIndex, pageSize), + data: paginateList(list, pageIndex, pageSize), }); } catch (error) { console.log('error: ', error); @@ -301,6 +330,12 @@ } catch (error) {} } +function handleUploadSuccess(response: UploadUserFile & { file: File & { uid: number } }) { + if (response.path) { + // + } +} + function handleBack() { closeViewPush(route, { name: 'ServiceChargeManageList', @@ -315,6 +350,14 @@ margin: 0 auto; padding: 24px 0; } + +.settlement-user-list-chunk { + :deep() { + .no-data img { + width: 280px; + } + } +} </style> <style lang="scss"> .text-over-tooltip-content { -- Gitblit v1.9.1