From 1d839bd0fca331b565deb640bbec0c85e3711791 Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期五, 05 九月 2025 16:03:01 +0800 Subject: [PATCH] Merge branch 'master' of http://120.26.58.240:8888/r/flexJobAdminBClient --- src/views/ServiceChargeManage/ServiceChargeDetail.vue | 193 +++++++++++++++++++++++++++++++++-------------- 1 files changed, 134 insertions(+), 59 deletions(-) diff --git a/src/views/ServiceChargeManage/ServiceChargeDetail.vue b/src/views/ServiceChargeManage/ServiceChargeDetail.vue index 507a280..d316f43 100644 --- a/src/views/ServiceChargeManage/ServiceChargeDetail.vue +++ b/src/views/ServiceChargeManage/ServiceChargeDetail.vue @@ -1,12 +1,7 @@ <template> <LoadingLayout :loading="isLoading"> - <AppScrollContainer> + <AppContainer> <ChunkCell title="缁撶畻鍗曡鎯�"> - <template #titleRight> - <el-button type="primary" icon="Download" @click="handleDownloadTemplate()" - >鐢靛瓙鍥炲崟涓嬭浇</el-button - > - </template> <ProForm :model="form" ref="formRef" label-width="120px" :is-read="true"> <ProFormCol> <ProFormColItem :span="8"> @@ -15,50 +10,44 @@ </ProFormItemV2> </ProFormColItem> <ProFormColItem :span="8"> - <ProFormItemV2 label="浠诲姟缂栧彿:" prop="name"> - <ProFormText v-model="form.name"> </ProFormText> + <ProFormItemV2 label="浠诲姟缂栧彿:" prop="code"> + <ProFormText v-model="form.code"> </ProFormText> </ProFormItemV2> </ProFormColItem> - <ProFormColItem :span="8"></ProFormColItem> </ProFormCol> <ProFormCol> <ProFormColItem :span="8"> - <ProFormItemV2 label="缁撶畻鍗曞悕绉�:" prop="name"> - <ProFormText v-model="form.name"> </ProFormText> + <ProFormItemV2 label="缁撶畻鍗曞悕绉�:" prop="settlementOrderName"> + <ProFormText v-model="form.settlementOrderName"> </ProFormText> </ProFormItemV2> </ProFormColItem> <ProFormColItem :span="8"> - <ProFormItemV2 label="涓婁紶鏃堕棿:" prop="name"> + <ProFormItemV2 label="涓婁紶鏃堕棿:" prop="settlementOrderTime"> <ProFormDatePicker - v-model="form.name" + v-model="form.settlementOrderTime" type="date" format="YYYY-MM-DD HH:mm" ></ProFormDatePicker> </ProFormItemV2> </ProFormColItem> - <ProFormColItem :span="8"></ProFormColItem> </ProFormCol> <ProFormCol> <ProFormColItem :span="8"> - <ProFormItemV2 label="缁撶畻閲戦:" prop="money"> - <ProFormInputNumber v-model="form.money"> </ProFormInputNumber> + <ProFormItemV2 label="缁撶畻閲戦:" prop="settlementAmount"> + <ProFormInputNumber v-model="form.settlementAmount" format-value="money"> + </ProFormInputNumber> </ProFormItemV2> </ProFormColItem> <ProFormColItem :span="8"> - <ProFormItemV2 label="瀹炲彂閲戦:" prop="money"> - <ProFormInputNumber v-model="form.money"> </ProFormInputNumber> - </ProFormItemV2> - </ProFormColItem> - <ProFormColItem :span="8"> - <ProFormItemV2 label="鐘舵��:" prop="status"> - <ProFormRadio v-model="form.status" :value-enum="[{ label: '鏄�', value: 1 }]"> - </ProFormRadio> + <ProFormItemV2 label="瀹炲彂閲戦:" prop="actualSettlementAmount"> + <ProFormInputNumber v-model="form.actualSettlementAmount" format-value="money"> + </ProFormInputNumber> </ProFormItemV2> </ProFormColItem> </ProFormCol> </ProForm> </ChunkCell> - <ChunkCell title="缁撶畻娴佺▼"> + <!-- <ChunkCell title="缁撶畻娴佺▼"> <div class="step-wrapper"> <el-steps :active="1" align-center finish-status="process"> <el-step title="缁撶畻鍗曚笂浼�" :icon="Edit"> @@ -79,15 +68,15 @@ </el-step> </el-steps> </div> - </ChunkCell> - <ChunkCell title="缁撶畻鍚嶅崟"> + </ChunkCell> --> + <ChunkCell title="缁撶畻鍚嶅崟" style="flex: 1"> <ProTableQueryFilterBar @on-reset="reset"> <template #query> <QueryFilterItem> <SearchInput - v-model="extraParamState.searchWord" + v-model="extraParamState.keywords" style="width: 300px" - placeholder="浜哄憳濮撳悕/韬唤璇佸彿/鎵嬫満鍙�" + placeholder="濮撳悕/鎵嬫満/韬唤璇佸彿/瀹㈡埛" @on-click-search="getList" > </SearchInput> @@ -97,7 +86,7 @@ <ProTableV2 v-bind="proTableProps" :columns="SettlementListColumns" - :operationBtns="operationBtns" + :show-operation-column="false" :auto-height="false" ref="proTable" :tableProps="{ @@ -105,13 +94,25 @@ }" > </ProTableV2> + <div class="chuck-add-or-edit-actions"> + <el-button class="chuck-add-or-edit-actions" @click="handleBack">鍙栨秷</el-button> + <el-button + v-if="!isDetail" + class="chuck-add-or-edit-actions" + type="primary" + @click="handleSubmit" + >纭</el-button + > + </div> </ChunkCell> - </AppScrollContainer> + </AppContainer> + <EditAccountInfoDialog v-bind="dialogProps"></EditAccountInfoDialog> </LoadingLayout> </template> <script setup lang="ts"> import { LoadingLayout, + AppContainer, AppScrollContainer, ChunkCell, ProForm, @@ -121,57 +122,74 @@ ProFormColItem, ProFormDatePicker, ProFormInputNumber, - ProFormRadio, useTable, ProTableV2, defineOperationBtns, SearchInput, QueryFilterItem, ProTableQueryFilterBar, - TextOverTooltip, + useFormDialog, } from '@bole-core/components'; -import { Edit, Upload } from '@element-plus/icons-vue'; import { SettlementListColumns } from './constants'; -import {} from '@/constants'; -import * as flexTaskServices from '@/services/api/FlexTask'; import { useQuery } from '@tanstack/vue-query'; -import { downloadFileByUrl, OrderInputType } from '@bole-core/core'; -import * as flexEnterpriseServices from '@/services/api/FlexEnterprise'; +import * as taskServices from '@/services/api/task'; +import * as taskUserServices from '@/services/api/taskUser'; +import EditAccountInfoDialog from './components/EditAccountInfoDialog.vue'; +import { Message } from '@bole-core/core'; +import { paginateList, setOssFileName, toThousand } from '@/utils'; defineOptions({ name: 'ServiceChargeDetail', }); +const { closeViewPush } = useRouteView(); +const eventContext = useGlobalEventContext(); const operationBtns = defineOperationBtns([ { data: { - enCode: 'downloadBtn', - name: '涓嬭浇鍥炲崟', + enCode: 'editBtn', + name: '缂栬緫', + }, + emits: { + onClick: (role) => openDialog(role), }, }, ]); const route = useRoute(); const id = (route.params.id as string) ?? ''; +const url = (route.query.url as string) ?? ''; + +const isDetail = computed(() => !url); const form = reactive({ name: '', - money: 0, - status: 1, + settlementAmount: 0, + actualSettlementAmount: 0, + code: '', + settlementOrderName: '', + settlementOrderTime: '', }); const { isLoading } = useQuery({ - queryKey: ['flexTaskServices/getFlexTaskDetail', id], + queryKey: ['taskServices/getSettlementTask', id], queryFn: async () => { - return await flexTaskServices.getFlexTaskDetail( + return await taskServices.getSettlementTask( { id: id }, { showLoading: false, } ); }, - placeholderData: () => ({} as API.GetFlexTaskDetailForBackOutput), - onSuccess(data) {}, + 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, }); @@ -184,33 +202,90 @@ } = useTable( async ({ pageIndex, pageSize }, extraParamState) => { try { - let params: API.GetFlexEnterpriseInput = { + let params: API.APIgetSettlementTaskUsersParams = { + taskInfoId: id, + settlementOrderUrl: url, + }; + let res = await taskUserServices.getSettlementTaskUsers(params); + if (extraParamState.keywords) { + res.data = res.data?.filter((item) => { + return ( + item.name.includes(extraParamState.keywords) || + item.contactPhoneNumber.includes(extraParamState.keywords) || + item.identity.includes(extraParamState.keywords) + ); + }); + } + return Promise.resolve({ pageModel: { rows: pageSize, page: pageIndex, - orderInput: extraParamState.orderInput, + totalCount: res.data.length, }, - searchWord: extraParamState.searchWord, - }; - - let res = await flexEnterpriseServices.getFlexEnterpriseList(params); - return res; + data: paginateList(res.data, pageIndex, pageSize), + }); } catch (error) { console.log('error: ', error); } }, { defaultExtraParams: { - searchWord: '', - orderInput: [{ property: 'id', order: OrderInputType.Desc }], + keywords: '', + orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }], }, - queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'], - columnsRenderProps: {}, + queryKey: ['taskUserServices/getSettlementTaskUsers'], + columnsRenderProps: { + settlementTime: { type: 'date' }, + settlementAmount: { type: 'money' }, + actualSettlementAmount: { type: 'money' }, + }, } ); -function handleDownloadTemplate() { - downloadFileByUrl('', '鐢靛瓙鍥炲崟'); +const { dialogProps, handleAdd, handleEdit, editForm } = useFormDialog({ + onConfirm: handleAddOrEdit, + defaultFormParams: { + id: '', + name: '', + }, +}); + +function openDialog(row?) { + if (row) { + handleEdit({ + id: row?.id, + name: row?.name, + }); + } +} + +async function handleAddOrEdit() {} + +async function handleSubmit() { + try { + let params: API.SureTaskSettlementOrderCommand = { + taskInfoId: id, + settlementOrderUrl: url, + taskInfoUsers: + proTableProps.value.tableData?.length > 0 + ? proTableProps.value.tableData.map( + (x) => ({ ...x } as API.SureTaskSettlementOrderCommandUser) + ) + : [], + }; + let res = await taskServices.sureTaskSettlementOrder(params); + if (res) { + Message.successMessage('鎿嶄綔鎴愬姛'); + eventContext.emit('sureTaskSettlementOrder'); + handleBack(); + } + } catch (error) {} +} + +function handleBack() { + closeViewPush(route, { + name: 'ServiceChargeManageList', + }); } onMounted(() => { -- Gitblit v1.9.1