From b331f884097a2dc5086c8cf043c8c8f52e7640fe Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期五, 12 九月 2025 17:34:39 +0800
Subject: [PATCH] Merge branch 'master' into dev-v1.1
---
src/views/ServiceChargeManage/ServiceChargeDetail.vue | 210 ++++++++++++++++++++++++++++++++++------------------
1 files changed, 137 insertions(+), 73 deletions(-)
diff --git a/src/views/ServiceChargeManage/ServiceChargeDetail.vue b/src/views/ServiceChargeManage/ServiceChargeDetail.vue
index 3770baa..72b74e5 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">
@@ -47,29 +47,7 @@
</ProFormCol>
</ProForm>
</ChunkCell>
- <!-- <ChunkCell title="缁撶畻娴佺▼">
- <div class="step-wrapper">
- <el-steps :active="1" align-center finish-status="process">
- <el-step title="缁撶畻鍗曚笂浼�" :icon="Edit">
- <template #description>
- <div>鍒涘缓浜�:{{ form.name }}</div>
- <div>鏃堕棿:{{ form.name }}</div>
- <TextOverTooltip>澶囨敞:{{ form.name }}</TextOverTooltip>
- </template>
- </el-step>
- <el-step title="缁撶畻浠樻" :icon="Upload">
- <template #description>
- <div>鍒涘缓浜�:{{ form.name }}</div>
- <div>鏃堕棿:{{ form.name }}</div>
- <TextOverTooltip
- >澶囨敞:{{ 'form.nameform.nameform.eform.nameform.nameform.name' }}</TextOverTooltip
- >
- </template>
- </el-step>
- </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>
@@ -82,6 +60,22 @@
</SearchInput>
</QueryFilterItem>
</template>
+ <template #btn v-if="isSettlement">
+ <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="handleDownload()">瀵煎嚭</el-button>
+ </template>
</ProTableQueryFilterBar>
<ProTableV2
v-bind="proTableProps"
@@ -97,23 +91,23 @@
<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>
</AppContainer>
<EditAccountInfoDialog v-bind="dialogProps"></EditAccountInfoDialog>
+ <SettleDetailDialog v-bind="dialogSettleProps" />
</LoadingLayout>
</template>
<script setup lang="ts">
import {
LoadingLayout,
AppContainer,
- AppScrollContainer,
ChunkCell,
ProForm,
ProFormItemV2,
@@ -129,12 +123,16 @@
QueryFilterItem,
ProTableQueryFilterBar,
useFormDialog,
+ XLSXUtils,
+ BlFileUpload,
+ UploadUserFile,
} from '@bole-core/components';
import { SettlementListColumns } from './constants';
import { useQuery } from '@tanstack/vue-query';
import * as taskServices from '@/services/api/task';
import * as taskUserServices from '@/services/api/taskUser';
import EditAccountInfoDialog from './components/EditAccountInfoDialog.vue';
+import SettleDetailDialog from './components/SettleDetailDialog.vue';
import { Message } from '@bole-core/core';
import { paginateList, setOssFileName, toThousand } from '@/utils';
@@ -155,12 +153,12 @@
},
},
]);
-
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 +167,9 @@
code: '',
settlementOrderName: '',
settlementOrderTime: '',
+ settlementTaskUsers: [] as API.GetSettlementTaskUsersQueryResultItem[],
+
+ settlementUrl: [] as UploadUserFile[],
});
const BaseState = {
@@ -177,33 +178,51 @@
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,
proTableProps,
@@ -213,13 +232,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 +242,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);
@@ -280,7 +288,7 @@
async function handleAddOrEdit() {}
-async function handleSubmit() {
+async function sureTaskSettlementOrder() {
try {
let params: API.SureTaskSettlementOrderCommand = {
taskInfoId: id,
@@ -301,6 +309,54 @@
} catch (error) {}
}
+function handleUploadSuccess(response: UploadUserFile & { file: File & { uid: number } }) {
+ if (response.path) {
+ // sureTaskSettlementOrder();
+ }
+}
+
+function handleSubmit() {
+ handleSettleEdit({
+ id: id,
+ name: form.name,
+ code: form.code,
+ settlementUserCount: form.settlementTaskUsers.length,
+ actualSettlementAmount: form.actualSettlementAmount,
+ });
+}
+
+const {
+ dialogProps: dialogSettleProps,
+ handleEdit: handleSettleEdit,
+ editForm: settleEditForm,
+} = useFormDialog({
+ onConfirm: handleSettle,
+ defaultFormParams: {
+ id: '',
+ name: '',
+ code: '',
+ settlementUserCount: 0,
+ actualSettlementAmount: 0,
+ },
+});
+
+async function handleSettle() {
+ try {
+ let params: API.SureTaskSettlementCommand = {
+ taskInfoId: settleEditForm.id,
+ };
+ console.log('params: ', params);
+ // let res = await taskServices.sureTaskSettlement(params);
+ // if (res) {
+ // Message.successMessage('鎿嶄綔鎴愬姛');
+ // eventContext.emit('sureTaskSettlementOrder');
+ // handleBack();
+ // }
+ } catch (error) {}
+}
+
+function handleDownload() {}
+
function handleBack() {
closeViewPush(route, {
name: 'ServiceChargeManageList',
@@ -315,6 +371,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.10.0