From 02aa28ba50c16658edfaff2e2e8ff19b355ab8f1 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期日, 19 十月 2025 20:01:31 +0800
Subject: [PATCH] feat: 1.2.0.1
---
src/views/ServiceChargeManage/ServiceChargeManage.vue | 198 ++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 163 insertions(+), 35 deletions(-)
diff --git a/src/views/ServiceChargeManage/ServiceChargeManage.vue b/src/views/ServiceChargeManage/ServiceChargeManage.vue
index f60c590..827c28e 100644
--- a/src/views/ServiceChargeManage/ServiceChargeManage.vue
+++ b/src/views/ServiceChargeManage/ServiceChargeManage.vue
@@ -3,10 +3,10 @@
<AppContainer>
<ProTableQueryFilterBar @on-reset="reset">
<template #query>
- <QueryFilterItem tip-content="缁撶畻鍗曠姸鎬�">
+ <QueryFilterItem tip-content="楠屾敹鐘舵��">
<FieldRadio
- v-model="extraParamState.settlementOrderStatus"
- :value-enum="EnumTaskSettlementOrderStatusText"
+ v-model="extraParamState.checkReceiveStatus"
+ :value-enum="EnumTaskCheckReceiveStatusTextForFilter"
buttonStyle
showAllBtn
@change="getList()"
@@ -30,7 +30,7 @@
end-placeholder="鎴鏃ユ湡"
clearable
@change="getList()"
- tooltipContent="鍒涘缓鏃堕棿"
+ tooltipContent="缁撶畻鏃堕棿"
></FieldDatePicker>
</QueryFilterItem>
<QueryFilterItem>
@@ -38,16 +38,16 @@
v-model="extraParamState.keywords"
style="width: 250px"
placeholder="浠诲姟鍚嶇О"
- @on-click-search="getList"
+ @on-click-search="getList()"
@keyup.enter="getList()"
>
</SearchInput>
</QueryFilterItem>
</template>
<template #btn>
- <el-button type="primary" link @click="handleDownloadTemplate()">缁撶畻鍗曟ā鏉�</el-button>
- <el-button type="primary" @click="handleAdd()">涓婁紶缁撶畻鍗�</el-button>
- <el-button type="primary" @click="handleDownloadTemplate()">瀵煎嚭</el-button>
+ <!-- <el-button type="primary" link @click="handleDownloadTemplate()">缁撶畻鍗曟ā鏉�</el-button> -->
+ <!-- <el-button type="primary" @click="handleAdd()">涓婁紶缁撶畻鍗�</el-button> -->
+ <!-- <el-button type="primary" @click="handleDownloadTemplate()">瀵煎嚭</el-button> -->
</template>
</ProTableQueryFilterBar>
<ProTableV2
@@ -55,9 +55,8 @@
:columns="ServiceChargeManageColumns"
:operationBtns="operationBtns"
>
- <template #operationBtn-uploadBtn="{ row }">
+ <!-- <template #operationBtn-uploadBtn="{ row }">
<BlFileUpload
- v-if="row.settlementOrderStatus === EnumTaskSettlementOrderStatus.Wait"
v-model:file-url="editForm.settlementUrl"
ref="uploadRef"
:showTip="false"
@@ -73,10 +72,6 @@
</template>
<template #operationBtn-reUploadBtn="{ data, row }">
<BlFileUpload
- v-if="
- row.settlementOrderStatus === EnumTaskSettlementOrderStatus.Completed &&
- row.settlementStatus === EnumTaskSettlementStatus.Wait
- "
v-model:file-url="editForm.settlementUrl"
ref="uploadRef"
:showTip="false"
@@ -89,11 +84,13 @@
>
<el-button text type="primary" class="pro-table-operation-btn">閲嶆柊涓婁紶</el-button>
</BlFileUpload>
- </template>
+ </template> -->
</ProTableV2>
</AppContainer>
<UploadStatementDialog v-bind="dialogProps" />
- <SettleDetailDialog v-bind="dialogSettleProps" />
+ <!-- <SettleDetailDialog v-bind="dialogSettleProps" /> -->
+ <RechargeEnterpriseWalletDialog v-bind="dialogRechargeProps" />
+ <SettlMethodDialog v-bind="dialogSettlMethodProps" />
</LoadingLayout>
</template>
@@ -119,12 +116,17 @@
EnumTaskSettlementOrderStatusText,
EnumTaskSettlementOrderStatus,
EnumTaskSettlementStatus,
+ EnumTaskCheckReceiveStatusText,
+ EnumTaskCheckReceiveStatusTextForFilter,
+ EnumTaskCheckReceiveStatus,
} from '@/constants';
-import { downloadFileByUrl } from '@/utils';
+import { downloadFileByUrl, format, setOssFileName } from '@/utils';
import * as taskServices from '@/services/api/task';
import { ModelValueType } from 'element-plus';
import UploadStatementDialog from './components/UploadStatementDialog.vue';
import SettleDetailDialog from './components/SettleDetailDialog.vue';
+import SettlMethodDialog from './components/SettlMethodDialog.vue';
+import RechargeEnterpriseWalletDialog from './components/RechargeEnterpriseWalletDialog.vue';
import { Message } from '@bole-core/core';
defineOptions({
@@ -132,16 +134,43 @@
});
const operationBtns = defineOperationBtns([
+ // {
+ // data: {
+ // enCode: 'uploadBtn',
+ // name: '涓婁紶',
+ // },
+ // extraProps: {
+ // hide: (row: API.GetSettlementTasksQueryResultItem) =>
+ // row.settlementOrderStatus !== EnumTaskSettlementOrderStatus.Wait,
+ // },
+ // },
+ // {
+ // data: {
+ // enCode: 'reUploadBtn',
+ // name: '閲嶆柊涓婁紶',
+ // },
+ // extraProps: {
+ // hide: (row: API.GetSettlementTasksQueryResultItem) =>
+ // !(
+ // row.settlementOrderStatus === EnumTaskSettlementOrderStatus.Completed &&
+ // row.settlementStatus === EnumTaskSettlementStatus.Wait
+ // ),
+ // },
+ // },
{
data: {
enCode: 'settleBtn',
name: '缁撶畻',
},
emits: {
- onClick: (role) => openSettleDialog(role),
+ onClick: (role: API.GetSettlementTasksQueryResultItem) => openSettleMethodDialog(role),
},
extraProps: {
- hide: () => false,
+ hide: (role: API.GetSettlementTasksQueryResultItem) =>
+ !(
+ role.settlementStatus === EnumTaskSettlementStatus.Wait &&
+ role.checkReceiveStatus === EnumTaskCheckReceiveStatus.Completed
+ ),
},
},
{
@@ -154,7 +183,23 @@
},
extraProps: {
hide: (role: API.GetSettlementTasksQueryResultItem) =>
- role.settlementStatus !== EnumTaskSettlementStatus.InProcess,
+ !(
+ role.settlementStatus === EnumTaskSettlementStatus.InProcess &&
+ role.checkReceiveStatus === EnumTaskCheckReceiveStatus.Completed
+ ),
+ },
+ },
+ {
+ data: {
+ enCode: 'settleAuditBtn',
+ name: '缁撶畻瀹℃牳',
+ },
+ emits: {
+ onClick: (role: API.GetSettlementTasksQueryResultItem) => goDetail(role.id, 'settlement'),
+ },
+ extraProps: {
+ hide: (role: API.GetSettlementTasksQueryResultItem) =>
+ role.auditStatus !== EnumTaskSettlementAuditStatus.Wait,
},
},
{
@@ -165,6 +210,10 @@
emits: {
onClick: (role: API.GetSettlementTasksQueryResultItem) => goDetail(role.id),
},
+ // extraProps: {
+ // hide: (role: API.GetSettlementTasksQueryResultItem) =>
+ // role.settlementOrderStatus === EnumTaskSettlementOrderStatus.Wait,
+ // },
},
{
data: {
@@ -175,12 +224,14 @@
onClick: (role) => handleExport(role),
},
extraProps: {
- hide: () => false,
+ hide: () => true,
},
},
]);
const router = useRouter();
+
+const { userDetail } = useUser();
const eventContext = useGlobalEventContext();
@@ -215,8 +266,10 @@
orderInput: extraParamState.orderInput,
},
keywords: extraParamState.keywords,
- settlementOrderStatus: extraParamState.settlementOrderStatus,
+ checkReceiveStatus: extraParamState.checkReceiveStatus,
settlementStatus: extraParamState.settlementStatus,
+ settlementTimeBegin: format(extraParamState.time?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+ settlementTimeEnd: format(extraParamState.time?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
};
let res = await taskServices.getSettlementTasks(params, {
@@ -231,6 +284,7 @@
defaultExtraParams: {
keywords: '',
settlementOrderStatus: '' as any as EnumTaskSettlementOrderStatus,
+ checkReceiveStatus: '' as any as EnumTaskCheckReceiveStatus,
settlementStatus: '' as any as EnumTaskSettlementStatus,
time: [] as unknown as ModelValueType,
orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
@@ -239,10 +293,17 @@
columnsRenderProps: {
settlementOrderStatus: { type: 'enum', valueEnum: EnumTaskSettlementOrderStatusText },
settlementStatus: { type: 'enum', valueEnum: EnumTaskSettlementStatusText },
+ checkReceiveStatus: { type: 'enum', valueEnum: EnumTaskCheckReceiveStatusText },
+ auditStatus: { type: 'enum', valueEnum: EnumTaskSettlementAuditStatusText },
actualSettlementAmount: { type: 'money' },
settlementAmount: { type: 'money' },
settlementTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
+ createdTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
settlementOrderTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
+ settlementOrderName: {
+ formatter: (row: API.GetSettlementTasksQueryResultItem) =>
+ row.settlementOrderName && setOssFileName(row.settlementOrderName),
+ },
},
}
);
@@ -258,7 +319,16 @@
});
async function handleAddOrEdit() {
- goDetail(editForm.id, editForm.settlementUrl[0]?.url);
+ try {
+ let params: API.ImportTaskSettlementOrderRostersCommand = {
+ id: editForm.id,
+ url: editForm.settlementUrl[0]?.path,
+ };
+ let res = await taskServices.importTaskSettlementOrderRosters(params);
+ if (res) {
+ goSettlementDetail(editForm.id, editForm.settlementUrl[0]?.path);
+ }
+ } catch (error) {}
}
const {
@@ -272,7 +342,7 @@
name: '',
code: '',
settlementUserCount: 0,
- settlementAmount: 0,
+ actualSettlementAmount: 0,
},
});
@@ -281,27 +351,45 @@
let params: API.SureTaskSettlementCommand = {
taskInfoId: settleEditForm.id,
};
- let res = await taskServices.sureTaskSettlement(params);
+ let res = await taskServices.sureTaskSettlement(params, {
+ skipErrorHandler: true,
+ });
if (res) {
Message.successMessage('鎿嶄綔鎴愬姛');
getList(paginationState.pageIndex);
}
- } catch (error) {}
+ } catch (error) {
+ if (error?.info?.errorCode == 's510') {
+ handleRechargeAdd();
+ }
+ }
}
+
+const {
+ dialogProps: dialogRechargeProps,
+ handleAdd: handleRechargeAdd,
+ editForm: rechargeEditForm,
+} = useFormDialog({
+ defaultFormParams: {
+ access: EnumEnterpriseWalletAccess.Alipay,
+ amount: null as number,
+ remark: '',
+ },
+});
function openSettleDialog(row: API.GetSettlementTasksQueryResultItem) {
handleSettleEdit({
id: row.id,
name: row.name,
code: row.code,
- settlementUserCount: row.settlementUserCount,
- settlementAmount: row.settlementAmount,
+ settlementUserCount: row.settlementUserCount ?? 0,
+ actualSettlementAmount: row.actualSettlementAmount ?? 0,
});
}
async function handleRecall(row: API.GetSettlementTasksQueryResultItem) {
try {
- Message.tipMessage('纭瑕佹挙鍥炲悧锛�');
+ await Message.tipMessage('纭瑕佹挙鍥炲悧锛�');
let params: API.RevokeTaskSettlementOrderCommand = {
taskInfoId: row.id,
};
@@ -317,17 +405,54 @@
response: UploadUserFile & { file: File & { uid: number } },
row: API.GetSettlementTasksQueryResultItem
) {
- if (response.url) {
- goDetail(row.id, response.url);
+ if (response.path) {
+ goSettlementDetail(row.id, response.path);
}
}
-function goDetail(id: string, url?: string) {
+async function goSettlementDetail(id: string, url?: string) {
+ await router.push({
+ name: 'ServiceChargeDetail',
+ params: {
+ id: id,
+ },
+ });
+ editForm.settlementUrl = [] as UploadUserFile[];
+}
+
+const {
+ dialogProps: dialogSettlMethodProps,
+ handleAdd: handleSettlMethodAdd,
+ editForm: settlMethodEditForm,
+} = useFormDialog({
+ onConfirm: handleSettlMethod,
+ defaultFormParams: {
+ id: '',
+ settlementAccess: '' as any as EnumEnterpriseWalletAccess,
+ },
+});
+
+function openSettleMethodDialog(row: API.GetSettlementTasksQueryResultItem) {
+ // handleSettlMethodAdd({
+ // id: row.id,
+ // settlementAccess: '' as any as EnumEnterpriseWalletAccess,
+ // });
+ goDetail(row.id, 'settlement');
+}
+
+async function handleSettlMethod() {
+ goDetail(settlMethodEditForm.id, 'settlement');
+}
+
+function goDetail(id: string, settlement?: string) {
router.push({
name: 'ServiceChargeDetail',
+ params: {
+ id: id ?? '',
+ },
query: {
- id: id,
- url: url ? url : '',
+ settlement: settlement ? settlement : '',
+ // settlementAccess: settlementAccess ? settlementAccess : '',
},
});
}
@@ -337,6 +462,9 @@
}
function handleDownloadTemplate() {
- downloadFileByUrl('', '缁撶畻鍗曟ā鏉�');
+ downloadFileByUrl(
+ 'https://parkmanagement.oss-cn-hangzhou.aliyuncs.com/FlexJob/temp/%E7%BB%93%E7%AE%97%E5%8D%95%E6%A8%A1%E6%9D%BF.xlsx',
+ '缁撶畻鍗曟ā鏉�'
+ );
}
</script>
--
Gitblit v1.9.1