From a2971bb8f3be26eb30302bcf4de07e12e912700c Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期四, 21 八月 2025 11:10:41 +0800 Subject: [PATCH] feat: 页面 --- src/views/ServiceChargeManage/ServiceChargeSettle.vue | 170 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 160 insertions(+), 10 deletions(-) diff --git a/src/views/ServiceChargeManage/ServiceChargeSettle.vue b/src/views/ServiceChargeManage/ServiceChargeSettle.vue index 3433b36..bdfca37 100644 --- a/src/views/ServiceChargeManage/ServiceChargeSettle.vue +++ b/src/views/ServiceChargeManage/ServiceChargeSettle.vue @@ -1,15 +1,106 @@ <template> <LoadingLayout :loading="isLoading"> <AppScrollContainer> - <ChunkCell title="浠樻鏂逛俊鎭�"> </ChunkCell> - <ChunkCell title="鏀舵鏂逛俊鎭�"> </ChunkCell> - <ChunkCell title="杞处淇℃伅"> </ChunkCell> + <ChunkCell title="浠樻鏂逛俊鎭�"> + <ProForm :model="form" ref="formRef" label-width="120px"> + <ProFormItemV2 + label="浠樻璐︽埛:" + prop="name" + :check-rules="[{ message: '璇烽�夋嫨浠樻璐︽埛' }]" + > + <ProFormSelect + v-model="form.name" + :valueEnum="[]" + placeholder="璇烽�夋嫨鎮ㄧ殑浠樻鏂瑰紡" + clearable + > + </ProFormSelect> + </ProFormItemV2> + <ProFormMixinsItemContainer> + <ProFormItemV2 + label="浠樻閲戦:" + prop="money" + :check-rules="[{ message: '璇疯緭鍏ヤ粯娆鹃噾棰�' }]" + mode="read" + > + <ProFormInputNumber v-model="form.money"> </ProFormInputNumber> + </ProFormItemV2> + </ProFormMixinsItemContainer> + </ProForm> + </ChunkCell> + <ChunkCell title="鏀舵鏂逛俊鎭�"> + <ProTableQueryFilterBar @on-reset="reset"> + <template #query> + <QueryFilterItem> + <SearchInput + v-model="extraParamState.keywords" + style="width: 300px" + placeholder="浜哄憳濮撳悕/韬唤璇佸彿/鎵嬫満鍙�" + @on-click-search="getList" + > + </SearchInput> + </QueryFilterItem> + </template> + </ProTableQueryFilterBar> + <ProTableV2 + v-bind="proTableProps" + :columns="SettlementListColumns" + :show-operation-column="false" + :auto-height="false" + ref="proTable" + :tableProps="{ + maxHeight: '400px', + }" + > + </ProTableV2> + </ChunkCell> + <ChunkCell title="杞处淇℃伅"> + <ProForm :model="form" ref="formRef" label-width="120px"> + <ProFormMixinsItemContainer> + <ProFormItemV2 label="浜ゆ槗鐢ㄩ��:" prop="name" mode="read"> + <ProFormText v-model="form.name"> </ProFormText> + </ProFormItemV2> + </ProFormMixinsItemContainer> + <ProFormItemV2 label="闄勮█:" prop="name"> + <ProFormText v-model="form.name" :maxlength="30" show-word-limit> </ProFormText> + </ProFormItemV2> + <ProFormItemV2 label="澶囨敞:" prop="name"> + <ProFormText v-model="form.name" :maxlength="30" show-word-limit> </ProFormText> + </ProFormItemV2> + <div class="chuck-add-or-edit-actions"> + <el-button class="chuck-add-or-edit-actions" @click="handleBack()">鍙栨秷</el-button> + <el-button class="chuck-add-or-edit-actions" type="primary" @click="handleSubmit" + >鎻愪氦瀹℃牳</el-button + > + </div> + </ProForm> + </ChunkCell> </AppScrollContainer> </LoadingLayout> </template> <script setup lang="ts"> -import { LoadingLayout, AppScrollContainer, ChunkCell } from '@bole-core/components'; +import { + LoadingLayout, + AppScrollContainer, + ChunkCell, + ProForm, + ProFormItemV2, + ProFormText, + ProFormSelect, + ProFormInputNumber, + ProTableV2, + QueryFilterItem, + SearchInput, + ProTableQueryFilterBar, + ProFormMixinsItemContainer, + useTable, +} from '@bole-core/components'; import { useQuery } from '@tanstack/vue-query'; +import { useRouteView } from '@/hooks'; +import { FormInstance } from 'element-plus'; +import { validateFormList } from '@/utils'; +import * as taskServices from '@/services/api/task'; +import { SettlementListColumns } from './constants'; defineOptions({ name: 'ServiceChargeSettle', @@ -17,26 +108,85 @@ const route = useRoute(); const id = (route.params.id as string) ?? ''; +const eventContext = useGlobalEventContext(); +const { closeViewPush } = useRouteView(); -const state = reactive({ - loading: true, +const form = reactive({ + name: '', + money: 0, }); const { isLoading } = useQuery({ - queryKey: ['flexTaskServices/getFlexTaskDetail', id], + queryKey: ['taskServices/getTaskInfo', id], queryFn: async () => { - return await flexTaskServices.getFlexTaskDetail( + return await taskServices.getTaskInfo( { id: id }, { showLoading: false, } ); }, - onSuccess(data) {}, + placeholderData: () => ({} as API.GetTaskInfoQueryResult), + onSuccess(data) { + form.name = data.name; + }, enabled: !!id, }); -onMounted(() => {}); +const { + getDataSource: getList, + proTableProps, + paginationState, + extraParamState, + reset, +} = useTable( + async ({ pageIndex, pageSize }, extraParamState) => { + try { + let params: API.GetOpenTaskInfosQuery = { + pageModel: { + rows: pageSize, + page: pageIndex, + orderInput: extraParamState.orderInput, + }, + keywords: extraParamState.keywords, + }; + + let res = await taskServices.getOpenTaskInfos(params); + return res; + } catch (error) { + console.log('error: ', error); + } + }, + { + defaultExtraParams: { + keywords: '', + orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }], + }, + queryKey: ['taskServices/getOpenTaskInfos'], + columnsRenderProps: {}, + } +); + +function handleBack() { + closeViewPush(route, { + name: 'ServiceChargeManageList', + }); +} +const formRef = ref<FormInstance>(); +async function handleSubmit() { + try { + const valid = await validateFormList([formRef.value]); + if (valid) { + submit(); + } + } catch (error) {} +} + +async function submit() { + try { + eventContext.emit('serviceChargeSettle'); + } catch (error) {} +} </script> <style lang="scss" scoped> -- Gitblit v1.9.1