From 258b6ce3a359bceb354ca3ea55c73bfb0cad0dc1 Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期四, 04 九月 2025 17:47:14 +0800 Subject: [PATCH] feat: 页面 --- src/views/ServiceChargeManage/ServiceChargeManage.vue | 225 +++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 175 insertions(+), 50 deletions(-) diff --git a/src/views/ServiceChargeManage/ServiceChargeManage.vue b/src/views/ServiceChargeManage/ServiceChargeManage.vue index 5041efb..868fbbf 100644 --- a/src/views/ServiceChargeManage/ServiceChargeManage.vue +++ b/src/views/ServiceChargeManage/ServiceChargeManage.vue @@ -5,11 +5,8 @@ <template #query> <QueryFilterItem tip-content="缁撶畻鍗曠姸鎬�"> <FieldRadio - v-model="extraParamState.flexEnterpriseSettingStatus" - :value-enum="[ - { label: '宸插畨鎺�', value: 1 }, - { label: '寰呭畨鎺�', value: 0 }, - ]" + v-model="extraParamState.settlementOrderStatus" + :value-enum="EnumTaskSettlementOrderStatusText" buttonStyle showAllBtn @change="getList()" @@ -17,11 +14,8 @@ </QueryFilterItem> <QueryFilterItem tip-content="缁撶畻鐘舵��"> <FieldRadio - v-model="extraParamState.flexEnterpriseSettingStatus" - :value-enum="[ - { label: '宸插畨鎺�', value: 1 }, - { label: '寰呭畨鎺�', value: 0 }, - ]" + v-model="extraParamState.settlementStatus" + :value-enum="EnumTaskSettlementStatusText" buttonStyle showAllBtn @change="getList()" @@ -29,7 +23,7 @@ </QueryFilterItem> <QueryFilterItem> <FieldDatePicker - v-model="extraParamState.flexEnterpriseSettingStatus" + v-model="extraParamState.time" type="daterange" range-separator="~" start-placeholder="璧峰鏃ユ湡" @@ -41,7 +35,7 @@ </QueryFilterItem> <QueryFilterItem> <SearchInput - v-model="extraParamState.searchWord" + v-model="extraParamState.keywords" style="width: 250px" placeholder="浠诲姟鍚嶇О" @on-click-search="getList" @@ -52,7 +46,7 @@ </template> <template #btn> <el-button type="primary" link @click="handleDownloadTemplate()">缁撶畻鍗曟ā鏉�</el-button> - <el-button type="primary" @click="handleDownloadTemplate()">涓婁紶缁撶畻鍗�</el-button> + <el-button type="primary" @click="openDialog()">涓婁紶缁撶畻鍗�</el-button> <el-button type="primary" @click="handleDownloadTemplate()">瀵煎嚭</el-button> </template> </ProTableQueryFilterBar> @@ -63,21 +57,22 @@ > <template #operationBtn-uploadBtn="{ data, row }"> <BlFileUpload - v-model:file-url="row.fileUrl" - :limitFileSize="2" - :limit="1" - accept="doc,docx" + v-model:file-url="row.listFiles" + multiple ref="uploadRef" :showTip="false" - :on-success="(response) => handleUpload(response, row)" :show-file-list="false" class="pro-table-operation-btn upload-style-btn" + :on-success="(event) => handleUploadSuccess(event, row)" + :limitFileSize="null" > - <el-button link type="primary">涓婁紶</el-button> + <el-button text type="primary" class="pro-table-operation-btn">涓婁紶</el-button> </BlFileUpload> </template> </ProTableV2> </AppContainer> + <UploadStatementDialog v-bind="dialogProps" /> + <SettleDetailDialog v-bind="dialogSettleProps" /> </LoadingLayout> </template> @@ -93,32 +88,71 @@ FieldDatePicker, FieldRadio, defineOperationBtns, + useFormDialog, + UploadUserFile, BlFileUpload, } from '@bole-core/components'; -import * as flexEnterpriseServices from '@/services/api/FlexEnterprise'; import { ServiceChargeManageColumns } from './constants'; -import { FlexEnterpriseSettingStatus, Gender } from '@/constants'; -import { OrderInputType } from '@bole-core/core'; +import { EnumTaskSettlementStatusText, EnumTaskSettlementOrderStatusText } from '@/constants'; import { downloadFileByUrl } 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 { Message } from '@bole-core/core'; defineOptions({ - name: 'ServiceChargeManage', + name: 'ServiceChargeManageList', }); const operationBtns = defineOperationBtns([ - { - data: { - enCode: 'uploadBtn', - name: '涓婁紶', - }, - }, + // { + // data: { + // enCode: 'uploadBtn', + // name: '涓婁紶', + // }, + // emits: { + // onClick: (role) => openDialog(role), + // }, + // extraProps: { + // hide: () => false, + // }, + // }, + // { + // data: { + // enCode: 'reUploadBtn', + // name: '閲嶆柊涓婁紶', + // }, + // emits: { + // onClick: (role) => openDialog(role), + // }, + // extraProps: { + // hide: () => false, + // }, + // }, { data: { enCode: 'settleBtn', name: '缁撶畻', }, emits: { - onClick: (role) => goSettle(role), + onClick: (role) => openSettleDialog(role), + }, + extraProps: { + hide: () => false, + }, + }, + { + data: { + enCode: 'recallBtn', + name: '鎾ゅ洖', + }, + emits: { + onClick: (role) => handleRecall(role), + }, + extraProps: { + hide: (role: API.GetSettlementTasksQueryResultItem) => + role.settlementStatus !== EnumTaskSettlementStatus.InProcess, }, }, { @@ -138,10 +172,19 @@ emits: { onClick: (role) => handleExport(role), }, + extraProps: { + hide: () => false, + }, }, ]); const router = useRouter(); + +const eventContext = useGlobalEventContext(); + +eventContext.addEvent('sureTaskSettlementOrder', () => { + getList(paginationState.pageIndex); +}); const BaseState = { loading: true, @@ -163,17 +206,18 @@ } = useTable( async ({ pageIndex, pageSize }, extraParamState) => { try { - let params: API.GetFlexEnterpriseInput = { + let params: API.GetSettlementTasksQuery = { pageModel: { rows: pageSize, page: pageIndex, orderInput: extraParamState.orderInput, }, - flexEnterpriseSettingStatus: extraParamState.flexEnterpriseSettingStatus, - searchWord: extraParamState.searchWord, + keywords: extraParamState.keywords, + settlementOrderStatus: extraParamState.settlementOrderStatus, + settlementStatus: extraParamState.settlementStatus, }; - let res = await flexEnterpriseServices.getFlexEnterpriseList(params, { + let res = await taskServices.getSettlementTasks(params, { showLoading: !state.loading, }); return res; @@ -183,35 +227,116 @@ }, { defaultExtraParams: { - searchWord: '', - orderInput: [{ property: 'id', order: OrderInputType.Desc }], - flexEnterpriseSettingStatus: '' as any as FlexEnterpriseSettingStatus, + keywords: '', + settlementOrderStatus: '' as any as EnumTaskSettlementOrderStatus, + settlementStatus: '' as any as EnumTaskSettlementStatus, + time: [] as unknown as ModelValueType, + orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }], }, - queryKey: ['flexEnterpriseServices/getFlexEnterpriseList'], - columnsRenderProps: {}, + queryKey: ['taskServices/getSettlementTasks'], + columnsRenderProps: { + settlementOrderStatus: { type: 'enum', valueEnum: EnumTaskSettlementOrderStatusText }, + settlementStatus: { type: 'enum', valueEnum: EnumTaskSettlementStatusText }, + actualSettlementAmount: { type: 'money' }, + settlementAmount: { type: 'money' }, + settlementTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' }, + settlementOrderTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' }, + }, } ); -function goSettle(row) { - router.push({ - name: 'ServiceChargeSettle', - query: { - id: row.id, - }, +const { dialogProps, handleAdd, handleEdit, editForm } = useFormDialog({ + onConfirm: handleAddOrEdit, + defaultFormParams: { + id: '', + name: '', + settlementUrl: [] as UploadUserFile[], + }, +}); + +function openDialog(row?: API.GetSettlementTasksQueryResultItem) { + if (row) { + handleEdit({ + id: row?.id, + name: row?.name, + settlementUrl: [] as UploadUserFile[], + }); + } else { + handleAdd(); + } +} + +async function handleAddOrEdit() {} + +const { + dialogProps: dialogSettleProps, + handleEdit: handleSettleEdit, + editForm: settleEditForm, +} = useFormDialog({ + onConfirm: handleSettle, + defaultFormParams: { + id: '', + name: '', + code: '', + settlementUserCount: 0, + settlementAmount: 0, + }, +}); + +async function handleSettle() { + try { + let params: API.SureTaskSettlementCommand = { + taskInfoId: settleEditForm.id, + }; + let res = await taskServices.sureTaskSettlement(params); + if (res) { + Message.successMessage('鎿嶄綔鎴愬姛'); + getList(paginationState.pageIndex); + } + } catch (error) {} +} + +function openSettleDialog(row: API.GetSettlementTasksQueryResultItem) { + handleSettleEdit({ + id: row.id, + name: row.name, + code: row.code, + settlementUserCount: row.settlementUserCount, + settlementAmount: row.settlementAmount, }); } -function goDetail(row) { +async function handleRecall(row: API.GetSettlementTasksQueryResultItem) { + try { + Message.tipMessage('纭瑕佹挙鍥炲悧锛�'); + let params: API.RevokeTaskSettlementOrderCommand = { + taskInfoId: row.id, + }; + let res = await taskServices.revokeTaskSettlementOrder(params); + if (res) { + Message.successMessage('鎿嶄綔鎴愬姛'); + getList(paginationState.pageIndex); + } + } catch (error) {} +} + +function handleUploadSuccess( + response: UploadUserFile & { file: File & { uid: number } }, + row: API.GetSettlementTasksQueryResultItem +) { + if (response.url) { + goDetail(row, response.url); + } +} + +function goDetail(row: API.GetSettlementTasksQueryResultItem, url?: string) { router.push({ name: 'ServiceChargeDetail', query: { id: row.id, + url: url ? url : '', }, }); -} - -function handleUpload(val, row) { - console.log('val: ', val); } function handleExport(val) { -- Gitblit v1.9.1