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 |  167 ++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 116 insertions(+), 51 deletions(-)

diff --git a/src/views/ServiceChargeManage/ServiceChargeManage.vue b/src/views/ServiceChargeManage/ServiceChargeManage.vue
index 47361e8..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.status"
-              :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.status"
-              :value-enum="[
-                { label: '宸插畨鎺�', value: 1 },
-                { label: '寰呭畨鎺�', value: 0 },
-              ]"
+              v-model="extraParamState.settlementStatus"
+              :value-enum="EnumTaskSettlementStatusText"
               buttonStyle
               showAllBtn
               @change="getList()"
@@ -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,6 @@
         </template>
         <template #btn>
           <el-button type="primary" link @click="handleDownloadTemplate()">缁撶畻鍗曟ā鏉�</el-button>
-
           <el-button type="primary" @click="openDialog()">涓婁紶缁撶畻鍗�</el-button>
           <el-button type="primary" @click="handleDownloadTemplate()">瀵煎嚭</el-button>
         </template>
@@ -62,6 +55,20 @@
         :columns="ServiceChargeManageColumns"
         :operationBtns="operationBtns"
       >
+        <template #operationBtn-uploadBtn="{ data, row }">
+          <BlFileUpload
+            v-model:file-url="row.listFiles"
+            multiple
+            ref="uploadRef"
+            :showTip="false"
+            :show-file-list="false"
+            class="pro-table-operation-btn upload-style-btn"
+            :on-success="(event) => handleUploadSuccess(event, row)"
+            :limitFileSize="null"
+          >
+            <el-button text type="primary" class="pro-table-operation-btn">涓婁紶</el-button>
+          </BlFileUpload>
+        </template>
       </ProTableV2>
     </AppContainer>
     <UploadStatementDialog v-bind="dialogProps" />
@@ -83,43 +90,46 @@
   defineOperationBtns,
   useFormDialog,
   UploadUserFile,
+  BlFileUpload,
 } from '@bole-core/components';
 import { ServiceChargeManageColumns } from './constants';
+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: 'ServiceChargeManageList',
 });
 
 const operationBtns = defineOperationBtns([
-  {
-    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: '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',
@@ -141,7 +151,8 @@
       onClick: (role) => handleRecall(role),
     },
     extraProps: {
-      hide: () => false,
+      hide: (role: API.GetSettlementTasksQueryResultItem) =>
+        role.settlementStatus !== EnumTaskSettlementStatus.InProcess,
     },
   },
   {
@@ -169,6 +180,12 @@
 
 const router = useRouter();
 
+const eventContext = useGlobalEventContext();
+
+eventContext.addEvent('sureTaskSettlementOrder', () => {
+  getList(paginationState.pageIndex);
+});
+
 const BaseState = {
   loading: true,
 };
@@ -189,15 +206,18 @@
 } = useTable(
   async ({ pageIndex, pageSize }, extraParamState) => {
     try {
-      let params: API.GetTaskInfosQuery = {
+      let params: API.GetSettlementTasksQuery = {
         pageModel: {
           rows: pageSize,
           page: pageIndex,
           orderInput: extraParamState.orderInput,
         },
+        keywords: extraParamState.keywords,
+        settlementOrderStatus: extraParamState.settlementOrderStatus,
+        settlementStatus: extraParamState.settlementStatus,
       };
 
-      let res = await taskServices.getTaskInfos(params, {
+      let res = await taskServices.getSettlementTasks(params, {
         showLoading: !state.loading,
       });
       return res;
@@ -207,13 +227,21 @@
   },
   {
     defaultExtraParams: {
-      searchWord: '',
-      status: 0,
+      keywords: '',
+      settlementOrderStatus: '' as any as EnumTaskSettlementOrderStatus,
+      settlementStatus: '' as any as EnumTaskSettlementStatus,
       time: [] as unknown as ModelValueType,
       orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
     },
-    queryKey: ['taskServices/getTaskInfos'],
-    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' },
+    },
   }
 );
 
@@ -226,7 +254,7 @@
   },
 });
 
-function openDialog(row?) {
+function openDialog(row?: API.GetSettlementTasksQueryResultItem) {
   if (row) {
     handleEdit({
       id: row?.id,
@@ -249,27 +277,64 @@
   defaultFormParams: {
     id: '',
     name: '',
-    count: 0,
+    code: '',
+    settlementUserCount: 0,
+    settlementAmount: 0,
   },
 });
 
-async function handleSettle() {}
+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?) {
+function openSettleDialog(row: API.GetSettlementTasksQueryResultItem) {
   handleSettleEdit({
     id: row.id,
     name: row.name,
-    count: row.count,
+    code: row.code,
+    settlementUserCount: row.settlementUserCount,
+    settlementAmount: row.settlementAmount,
   });
 }
 
-function handleRecall(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 goDetail(row) {
+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',
-    params: {
+    query: {
       id: row.id,
+      url: url ? url : '',
     },
   });
 }

--
Gitblit v1.9.1