From 10089efc8a1417e20f741259d839883abf30d1c2 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期三, 12 十一月 2025 13:34:50 +0800
Subject: [PATCH] feat: 1.3.0.2

---
 src/views/AgreementManage/AgreementManageList.vue                  |   41 +--
 src/views/ServiceChargeManage/ServiceChargeDetail.vue              |   32 +-
 src/views/FinanceManage/components/EnterpriseBalanceManageView.vue |   31 +-
 src/views/ServiceChargeManage/ServiceChargeManageList.vue          |   64 +---
 src/views/FinanceManage/components/DistributionDetailView.vue      |   21 -
 src/views/FinanceManage/CustomerRechargeManage.vue                 |   26 -
 /dev/null                                                          |    1 
 src/views/FinanceManage/FinanceManageList.vue                      |    0 
 src/views/FinanceManage/constants/columns.ts                       |  230 -------------------
 src/views/ServiceChargeManage/BalanceManage.vue                    |   20 -
 src/views/FinanceManage/CustomerRechargeRecord.vue                 |   20 -
 src/router/index.ts                                                |  175 --------------
 src/views/FinanceManage/components/CustomerBalanceManageView.vue   |   22 +
 src/views/FinanceManage/EnterpriseBalanceManageDetail.vue          |   20 +
 14 files changed, 123 insertions(+), 580 deletions(-)

diff --git a/src/router/index.ts b/src/router/index.ts
index 07632d9..737993a 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -95,88 +95,6 @@
       rootMenu: true,
     },
   },
-  {
-    path: '/ServiceChargeManage',
-    redirect: 'noRedirect',
-    component: Layout,
-    hidden: false,
-    alwaysShow: true,
-    meta: {
-      rank: 10040,
-      title: '鏈嶅姟璐圭鐞�',
-      rootMenu: true,
-      icon: 'home',
-    },
-    children: [
-      {
-        path: '/ServiceChargeManageList',
-        name: 'ServiceChargeManageList',
-        hidden: false,
-        alwaysShow: true,
-        component: () => import('@/views/ServiceChargeManage/ServiceChargeManage.vue'),
-        meta: {
-          rank: 10041,
-          title: '鏈嶅姟璐圭鐞�',
-          // rootMenu: true,
-          icon: 'home',
-        },
-      },
-      {
-        path: '/BalanceManage',
-        name: 'BalanceManage',
-        hidden: false,
-        alwaysShow: true,
-        component: () => import('@/views/ServiceChargeManage/BalanceManage.vue'),
-        meta: {
-          rank: 10042,
-          title: '浣欓绠$悊',
-          // rootMenu: true,
-          icon: 'home',
-        },
-      },
-      {
-        path: '/ServiceChargeDetail/:id',
-        name: 'ServiceChargeDetail',
-        hidden: true,
-        alwaysShow: false,
-        component: () => import('@/views/ServiceChargeManage/ServiceChargeDetail.vue'),
-        meta: {
-          rank: 10043,
-          title: '璇︽儏',
-          // rootMenu: true,
-          icon: 'home',
-        },
-      },
-    ],
-  },
-  {
-    path: '/AgreementManage',
-    redirect: 'noRedirect',
-    component: Layout,
-    hidden: false,
-    alwaysShow: true,
-    meta: {
-      rank: 10050,
-      title: '鍗忚绠$悊',
-      rootMenu: true,
-      icon: 'home',
-    },
-    children: [
-      {
-        path: '/AgreementManageList',
-        name: 'AgreementManageList',
-        hidden: false,
-        alwaysShow: true,
-        component: () => import('@/views/AgreementManage/AgreementManageList.vue'),
-        meta: {
-          rank: 10051,
-          title: '鍗忚绠$悊',
-          // rootMenu: true,
-          icon: 'home',
-        },
-      },
-    ],
-  },
   // {
   //   path: '/WithdrawManage',
   //   redirect: 'noRedirect',
@@ -205,99 +123,6 @@
   //     },
   //   ],
   // },
-  {
-    path: '/FinanceManage',
-    redirect: 'noRedirect',
-    component: Layout,
-    hidden: false,
-    alwaysShow: true,
-    meta: {
-      rank: 10070,
-      title: '璐㈠姟绠$悊',
-      rootMenu: true,
-      icon: 'home',
-    },
-    children: [
-      {
-        path: '/FinanceManageList',
-        name: 'FinanceManageList',
-        hidden: false,
-        alwaysShow: true,
-        component: () => import('@/views/FinanceManage/FinanceManage.vue'),
-        meta: {
-          rank: 10071,
-          title: '鍙戞斁鏄庣粏',
-          // rootMenu: true,
-          icon: 'home',
-        },
-      },
-      {
-        path: '/EnterpriseBalanceManage',
-        name: 'EnterpriseBalanceManage',
-        hidden: false,
-        alwaysShow: true,
-        component: () => import('@/views/FinanceManage/EnterpriseBalanceManage.vue'),
-        meta: {
-          rank: 10072,
-          title: '浼佷笟浣欓绠$悊',
-          // rootMenu: true,
-          icon: 'home',
-        },
-      },
-      {
-        path: '/EnterpriseBalanceManageDetail/:id',
-        name: 'EnterpriseBalanceManageDetail',
-        hidden: true,
-        alwaysShow: false,
-        component: () => import('@/views/FinanceManage/EnterpriseBalanceManageDetail.vue'),
-        meta: {
-          rank: 10073,
-          title: '璇︽儏',
-          // rootMenu: true,
-          icon: 'home',
-        },
-      },
-      {
-        path: '/CustomerRechargeRecord/:id',
-        name: 'CustomerRechargeRecord',
-        hidden: true,
-        alwaysShow: false,
-        component: () => import('@/views/FinanceManage/CustomerRechargeRecord.vue'),
-        meta: {
-          rank: 10074,
-          title: '鍏呭�艰褰�',
-          // rootMenu: true,
-          icon: 'home',
-        },
-      },
-      {
-        path: '/AccountManage',
-        name: 'AccountManage',
-        hidden: false,
-        alwaysShow: true,
-        component: () => import('@/views/FinanceManage/AccountManage.vue'),
-        meta: {
-          rank: 10075,
-          title: '璐︽埛绠$悊',
-          // rootMenu: true,
-          icon: 'home',
-        },
-      },
-      {
-        path: '/CustomerRechargeManage',
-        name: 'CustomerRechargeManage',
-        hidden: false,
-        alwaysShow: true,
-        component: () => import('@/views/FinanceManage/CustomerRechargeManage.vue'),
-        meta: {
-          rank: 10074,
-          title: '瀹㈡埛鍏呭�肩鐞�',
-          // rootMenu: true,
-          icon: 'home',
-        },
-      },
-    ],
-  },
 
   {
     path: '/Login',
diff --git a/src/views/AgreementManage/AgreementManageList.vue b/src/views/AgreementManage/AgreementManageList.vue
index 717f974..a56b189 100644
--- a/src/views/AgreementManage/AgreementManageList.vue
+++ b/src/views/AgreementManage/AgreementManageList.vue
@@ -36,14 +36,15 @@
           </QueryFilterItem>
         </template>
         <template #btn>
-          <el-button type="primary" @click="handleAdd()">鏂板妯℃澘</el-button>
+          <el-button
+            v-if="checkSubModuleItemShow('pageButton', 'addBtn')"
+            type="primary"
+            @click="handleAdd()"
+            >鏂板妯℃澘</el-button
+          >
         </template>
       </ProTableQueryFilterBar>
-      <ProTableV2
-        v-bind="proTableProps"
-        :columns="AgreementbManageColumns"
-        :operationBtns="operationBtns"
-      >
+      <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
         <template #code="{ row }">
           <el-button
             v-if="row.status === EnumContractTemplateStatus.Completed && !!row.wxmpQrCode"
@@ -72,12 +73,10 @@
   useTable,
   FieldDatePicker,
   FieldRadio,
-  defineOperationBtns,
   UploadUserFile,
   useFormDialog,
   bolePreview,
 } from '@bole-core/components';
-import { AgreementbManageColumns } from './constants';
 import { EnumContractTemplateStatus, EnumContractTemplateStatusText } from '@/constants';
 import { convertPdfToImage, downloadFileByUrl, format, setOSSLink } from '@/utils';
 import { ModelValueType } from 'element-plus';
@@ -90,12 +89,8 @@
   name: 'AgreementManageList',
 });
 
-const operationBtns = defineOperationBtns([
-  {
-    data: {
-      enCode: 'checkBtn',
-      name: '鏌ョ湅',
-    },
+const operationBtnMap: Record<string, OperationBtnType> = {
+  checkBtn: {
     emits: {
       onClick: (role) => handleCheck(role),
     },
@@ -103,11 +98,7 @@
       hide: (row) => row.status !== EnumContractTemplateStatus.Completed,
     },
   },
-  {
-    data: {
-      enCode: 'downloadBtn',
-      name: '涓嬭浇',
-    },
+  downloadBtn: {
     emits: {
       onClick: (role) => handleDownload(role),
     },
@@ -115,11 +106,7 @@
       hide: (row) => row.status !== EnumContractTemplateStatus.Completed,
     },
   },
-  {
-    data: {
-      enCode: 'deleteBtn',
-      name: '鍒犻櫎',
-    },
+  deleteBtn: {
     emits: {
       onClick: (role) => handleDelete(role),
     },
@@ -128,7 +115,11 @@
       hide: (row) => row.status !== EnumContractTemplateStatus.Completed,
     },
   },
-]);
+};
+
+const { column, operationBtns, checkSubModuleItemShow } = useAccess({
+  operationBtnMap,
+});
 
 const router = useRouter();
 
diff --git a/src/views/AgreementManage/constants/columns.ts b/src/views/AgreementManage/constants/columns.ts
deleted file mode 100644
index 90ef227..0000000
--- a/src/views/AgreementManage/constants/columns.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import { defineColumns } from '@bole-core/components';
-
-export const AgreementbManageColumns = defineColumns([
-  {
-    id: '1',
-    enCode: 'name',
-    name: '妯℃澘鍚嶇О',
-  },
-  {
-    id: '2',
-    enCode: 'createdTime',
-    name: '涓婁紶鏃堕棿',
-  },
-  {
-    id: '3',
-    enCode: 'status',
-    name: '鍒剁増鐘舵��',
-  },
-  {
-    id: '5',
-    enCode: 'templateId',
-    name: '妯℃澘ID',
-  },
-  {
-    id: '6',
-    enCode: 'completedTime',
-    name: '鍒剁増鏃堕棿',
-  },
-  {
-    id: '7',
-    enCode: 'code',
-    name: '浜岀淮鐮�',
-  },
-  {
-    id: '8',
-    enCode: 'isAutoSign',
-    name: '鑷姩绛�',
-  },
-]);
diff --git a/src/views/AgreementManage/constants/index.ts b/src/views/AgreementManage/constants/index.ts
deleted file mode 100644
index a7f066b..0000000
--- a/src/views/AgreementManage/constants/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from './columns';
diff --git a/src/views/FinanceManage/CustomerRechargeManage.vue b/src/views/FinanceManage/CustomerRechargeManage.vue
index c3a5bc8..48307e0 100644
--- a/src/views/FinanceManage/CustomerRechargeManage.vue
+++ b/src/views/FinanceManage/CustomerRechargeManage.vue
@@ -14,11 +14,7 @@
           </QueryFilterItem>
         </template>
       </ProTableQueryFilterBar>
-      <ProTableV2
-        v-bind="proTableProps"
-        :columns="CustomerRechargeManageColumns"
-        :operationBtns="operationBtns"
-      >
+      <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
       </ProTableV2>
     </AppContainer>
     <CustomerRechargeDialog v-bind="dialogProps" />
@@ -39,19 +35,14 @@
 } from '@bole-core/components';
 import * as enterpriseCooperationWalletServices from '@/services/api/enterpriseCooperationWallet';
 import CustomerRechargeDialog from './components/CustomerRechargeDialog.vue';
-import { CustomerRechargeManageColumns } from './constants';
 import { Message } from '@bole-core/core';
 
 defineOptions({
   name: 'CustomerRechargeManage',
 });
 
-const operationBtns = defineOperationBtns([
-  {
-    data: {
-      enCode: 'confirmBtn',
-      name: '纭',
-    },
+const operationBtnMap: Record<string, OperationBtnType> = {
+  confirmBtn: {
     emits: {
       onClick: (role) => openDialog(role, false),
     },
@@ -60,11 +51,7 @@
         role.transactionStatus !== EnumEnterpriseCooperationWalletTransactionStatus.WaitSure,
     },
   },
-  {
-    data: {
-      enCode: 'detailBtn',
-      name: '璇︽儏',
-    },
+  detailBtn: {
     emits: {
       onClick: (role) => openDialog(role, true),
     },
@@ -73,7 +60,10 @@
         role.transactionStatus === EnumEnterpriseCooperationWalletTransactionStatus.WaitSure,
     },
   },
-]);
+};
+const { column, operationBtns, checkSubModuleItemShow } = useAccess({
+  operationBtnMap,
+});
 
 const router = useRouter();
 const BaseState = {
diff --git a/src/views/FinanceManage/CustomerRechargeRecord.vue b/src/views/FinanceManage/CustomerRechargeRecord.vue
index 5f372f5..d129493 100644
--- a/src/views/FinanceManage/CustomerRechargeRecord.vue
+++ b/src/views/FinanceManage/CustomerRechargeRecord.vue
@@ -1,11 +1,7 @@
 <template>
   <LoadingLayout :loading="state.loading">
     <AppContainer>
-      <ProTableV2
-        v-bind="proTableProps"
-        :columns="CustomerRechargeRecordColumns"
-        :operationBtns="operationBtns"
-      >
+      <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
       </ProTableV2>
     </AppContainer>
     <RechargeRecordialog v-bind="dialogProps" />
@@ -23,7 +19,6 @@
   UploadUserFile,
 } from '@bole-core/components';
 import * as enterpriseCooperationWalletServices from '@/services/api/enterpriseCooperationWallet';
-import { CustomerRechargeRecordColumns } from './constants';
 import RechargeRecordialog from './components/RechargeRecordialog.vue';
 import { EnumEnterpriseCooperationWalletTransactionStatusText } from '@/constants';
 
@@ -34,18 +29,17 @@
 const route = useRoute();
 const id = route.params.id as string;
 
-const operationBtns = defineOperationBtns([
-  {
-    data: {
-      enCode: 'detailBtn',
-      name: '璇︽儏',
-    },
+const operationBtnMap: Record<string, OperationBtnType> = {
+  detailBtn: {
     emits: {
       onClick: (role: API.GetCooperationWalletRechargeTransactionsQueryResultItem) =>
         openDialog(role),
     },
   },
-]);
+};
+const { column, operationBtns, checkSubModuleItemShow } = useAccess({
+  operationBtnMap,
+});
 
 const router = useRouter();
 const BaseState = {
diff --git a/src/views/FinanceManage/EnterpriseBalanceManageDetail.vue b/src/views/FinanceManage/EnterpriseBalanceManageDetail.vue
index d615bd4..5678dc8 100644
--- a/src/views/FinanceManage/EnterpriseBalanceManageDetail.vue
+++ b/src/views/FinanceManage/EnterpriseBalanceManageDetail.vue
@@ -41,15 +41,23 @@
             </QueryFilterItem>
           </template>
           <template #btn>
-            <el-button type="primary" @click="exportPersonalUserTransactionEreceipts()"
+            <el-button
+              v-if="checkSubModuleItemShow('pageButton', 'receiptExportBtn')"
+              type="primary"
+              @click="exportPersonalUserTransactionEreceipts()"
               >鍥炲崟瀵煎嚭</el-button
             >
-            <el-button type="primary" @click="handleExport()">瀵煎嚭</el-button>
+            <el-button
+              v-if="checkSubModuleItemShow('pageButton', 'exportBtn')"
+              type="primary"
+              @click="handleExport()"
+              >瀵煎嚭</el-button
+            >
           </template>
         </ProTableQueryFilterBar>
         <ProTableV2
           v-bind="proTableProps"
-          :columns="BalanceManageDetailColumns"
+          :columns="column"
           :show-operation-column="false"
           :auto-height="false"
           :table-props="{
@@ -79,7 +87,6 @@
   ProTableQueryFilterBar,
   ProFormSelect,
 } from '@bole-core/components';
-import { BalanceManageDetailColumns } from './constants';
 import { EnumWalletTransactionStatusText, EnumEnterpriseWalletAccessText } from '@/constants';
 import * as enterpriseWalletServices from '@/services/api/enterpriseWallet';
 import * as userServices from '@/services/api/user';
@@ -92,6 +99,11 @@
   name: 'EnterpriseBalanceManageDetail',
 });
 
+const operationBtnMap: Record<string, OperationBtnType> = {};
+const { column, operationBtns, checkSubModuleItemShow } = useAccess({
+  operationBtnMap,
+});
+
 const route = useRoute();
 const id = (route.params.id as string) ?? '';
 
diff --git a/src/views/FinanceManage/FinanceManage.vue b/src/views/FinanceManage/FinanceManageList.vue
similarity index 100%
rename from src/views/FinanceManage/FinanceManage.vue
rename to src/views/FinanceManage/FinanceManageList.vue
diff --git a/src/views/FinanceManage/components/CustomerBalanceManageView.vue b/src/views/FinanceManage/components/CustomerBalanceManageView.vue
index fb9a877..e4c229f 100644
--- a/src/views/FinanceManage/components/CustomerBalanceManageView.vue
+++ b/src/views/FinanceManage/components/CustomerBalanceManageView.vue
@@ -3,8 +3,8 @@
     <AppContainer>
       <ProTableV2
         v-bind="proTableProps"
-        :columns="CustomerBalanceManageColumns"
-        :operationBtns="operationBtns"
+        :columns="customerColumns"
+        :operationBtns="customerOperationBtns"
       >
       </ProTableV2>
     </AppContainer>
@@ -20,23 +20,25 @@
   defineOperationBtns,
 } from '@bole-core/components';
 import * as enterpriseCooperationWalletServices from '@/services/api/enterpriseCooperationWallet';
-import { CustomerBalanceManageColumns } from '../constants';
 
 defineOptions({
   name: 'CustomerBalanceManageView',
 });
 
-const operationBtns = defineOperationBtns([
-  {
-    data: {
-      enCode: 'recordBtn',
-      name: '鍏呭�艰褰�',
-    },
+const operationBtnMap: Record<string, OperationBtnType> = {
+  'customer-recordBtn': {
     emits: {
       onClick: (role: API.GetCooperationWalletsQueryResultItem) => goDetail(role),
     },
   },
-]);
+};
+
+const { checkSubModuleItemShow, column, operationBtns } = useAccess({
+  operationBtnMap,
+});
+
+const [customerColumns] = useGroupColumns(column, ['customer-']);
+const [customerOperationBtns] = useGroupOperationBtns(operationBtns, ['customer-']);
 
 const router = useRouter();
 const BaseState = {
diff --git a/src/views/FinanceManage/components/DistributionDetailView.vue b/src/views/FinanceManage/components/DistributionDetailView.vue
index c8f4f9f..dd47498 100644
--- a/src/views/FinanceManage/components/DistributionDetailView.vue
+++ b/src/views/FinanceManage/components/DistributionDetailView.vue
@@ -1,11 +1,7 @@
 <template>
   <LoadingLayout :loading="state.loading">
     <AppContainer>
-      <ProTableV2
-        v-bind="proTableProps"
-        :columns="DistributionDetailColumns"
-        :showOperationColumn="false"
-      >
+      <ProTableV2 v-bind="proTableProps" :columns="column" :showOperationColumn="false">
         <template #settlementStatus="{ row }">
           {{
             row.settlementStatus !== EnumTaskSettlementStatus.InProcess &&
@@ -20,14 +16,7 @@
 </template>
 
 <script setup lang="ts">
-import {
-  ProTableV2,
-  LoadingLayout,
-  AppContainer,
-  useTable,
-  defineOperationBtns,
-} from '@bole-core/components';
-import { DistributionDetailColumns } from '../constants';
+import { ProTableV2, LoadingLayout, AppContainer, useTable } from '@bole-core/components';
 import * as userServices from '@/services/api/user';
 import {
   EnumTaskSettlementStatusText,
@@ -39,7 +28,11 @@
   name: 'DistributionDetailView',
 });
 
-const operationBtns = defineOperationBtns([]);
+const operationBtnMap: Record<string, OperationBtnType> = {};
+
+const { column, operationBtns, checkSubModuleItemShow } = useAccess({
+  operationBtnMap,
+});
 
 const BaseState = {
   loading: true,
diff --git a/src/views/FinanceManage/components/EnterpriseBalanceManageView.vue b/src/views/FinanceManage/components/EnterpriseBalanceManageView.vue
index c66af80..03c4596 100644
--- a/src/views/FinanceManage/components/EnterpriseBalanceManageView.vue
+++ b/src/views/FinanceManage/components/EnterpriseBalanceManageView.vue
@@ -3,8 +3,8 @@
     <AppContainer>
       <ProTableV2
         v-bind="proTableProps"
-        :columns="BalanceManageColumns"
-        :operationBtns="operationBtns"
+        :columns="enterpriseColumns"
+        :operationBtns="enterpriseOperationBtns"
       >
       </ProTableV2>
     </AppContainer>
@@ -19,12 +19,8 @@
   AppContainer,
   useTable,
   useFormDialog,
-  defineOperationBtns,
-  ProTabs,
-  ProTabPane,
 } from '@bole-core/components';
 import * as enterpriseWalletServices from '@/services/api/enterpriseWallet';
-import { BalanceManageColumns } from '../constants';
 import RechargeEnterpriseWalletDialog from '@/views/ServiceChargeManage/components/RechargeEnterpriseWalletDialog.vue';
 import { EnumEnterpriseWalletAccess, EnumEnterpriseWalletAccessText } from '@/constants';
 
@@ -32,12 +28,8 @@
   name: 'EnterpriseBalanceManageView',
 });
 
-const operationBtns = defineOperationBtns([
-  {
-    data: {
-      enCode: 'rechargeBtn',
-      name: '鍏呭��',
-    },
+const operationBtnMap: Record<string, OperationBtnType> = {
+  'enterprise-rechargeBtn': {
     emits: {
       onClick: (role) => openDialog(role),
     },
@@ -46,16 +38,19 @@
         role.access !== EnumEnterpriseWalletAccess.Alipay,
     },
   },
-  {
-    data: {
-      enCode: 'detailBtn',
-      name: '璇︽儏',
-    },
+  'enterprise-detailBtn': {
     emits: {
       onClick: (role) => goDetail(role),
     },
   },
-]);
+};
+
+const { checkSubModuleItemShow, column, operationBtns } = useAccess({
+  operationBtnMap,
+});
+
+const [enterpriseColumns] = useGroupColumns(column, ['enterprise-']);
+const [enterpriseOperationBtns] = useGroupOperationBtns(operationBtns, ['enterprise-']);
 
 const router = useRouter();
 const BaseState = {
diff --git a/src/views/FinanceManage/constants/columns.ts b/src/views/FinanceManage/constants/columns.ts
index dbc5557..2dafec6 100644
--- a/src/views/FinanceManage/constants/columns.ts
+++ b/src/views/FinanceManage/constants/columns.ts
@@ -1,78 +1,5 @@
 import { defineColumns } from '@bole-core/components';
 
-export const DistributionDetailColumns = defineColumns([
-  {
-    id: '1',
-    enCode: 'enterpriseName',
-    name: '瀹㈡埛鍚嶇О',
-  },
-  {
-    id: '2',
-    enCode: 'taskName',
-    name: '鎵�灞炰换鍔�',
-  },
-  {
-    id: '3',
-    enCode: 'taskCode',
-    name: '浠诲姟鍗曞彿',
-  },
-  {
-    id: '4',
-    enCode: 'settlementCode',
-    name: '缁撶畻鍗曞彿',
-  },
-  {
-    id: '5',
-    enCode: 'receiveName',
-    name: '濮撳悕',
-  },
-  {
-    id: '6',
-    enCode: 'settlementAccess',
-    name: '缁撶畻鏂瑰紡',
-  },
-  {
-    id: '7',
-    enCode: 'receiveAccount',
-    name: '缁撶畻璐︽埛',
-  },
-  {
-    id: '8',
-    enCode: 'amount',
-    name: '缁撶畻閲戦',
-  },
-  {
-    id: '9',
-    enCode: 'settlementStatus',
-    name: '缁撶畻鍗曠‘璁ょ姸鎬�',
-  },
-  {
-    id: '10',
-    enCode: 'settlementTime',
-    name: '纭鏃ユ湡',
-  },
-  {
-    id: '11',
-    enCode: 'settlementAuditStatus',
-    name: '缁撶畻鍗曟彁浜ょ姸鎬�',
-  },
-  {
-    id: '12',
-    enCode: 'settlementAuditTime',
-    name: '鎻愪氦鏃堕棿',
-  },
-  {
-    id: '13',
-    enCode: 'settlementReceiveStatus',
-    name: '鍒拌处鐘舵��',
-  },
-  {
-    id: '14',
-    enCode: 'transDate',
-    name: '鍒拌处鏃堕棿',
-  },
-]);
-
 export const UsageDetailColumns = defineColumns([
   {
     id: '1',
@@ -93,162 +20,5 @@
     id: '4',
     enCode: 'name',
     name: '璐圭敤锛堝厓锛�',
-  },
-]);
-
-export const BalanceManageColumns = defineColumns([
-  {
-    id: '1',
-    enCode: 'access',
-    name: '璐︽埛绫诲瀷',
-  },
-  {
-    id: '2',
-    enCode: 'identity',
-    name: '鎴峰彿',
-  },
-  {
-    id: '3',
-    enCode: 'balance',
-    name: '璐︽埛浣欓',
-  },
-  {
-    id: '4',
-    enCode: 'availableBalance',
-    name: '鍙敤浣欓',
-  },
-  {
-    id: '5',
-    enCode: 'freezeBalance',
-    name: '宸插喕缁�',
-  },
-]);
-
-export const CustomerBalanceManageColumns = defineColumns([
-  {
-    id: '1',
-    enCode: 'partyAEnterpriseName',
-    name: '瀹㈡埛鍚嶇О',
-  },
-  {
-    id: '2',
-    enCode: 'partyAEnterpriseSocietyCreditCode',
-    name: '淇$敤浠g爜',
-  },
-  {
-    id: '3',
-    enCode: 'balance',
-    name: '璐︽埛浣欓',
-  },
-]);
-
-export const BalanceManageDetailColumns = defineColumns([
-  {
-    id: '1',
-    enCode: 'sendTime',
-    name: '鍙戞斁鏃ユ湡',
-  },
-  {
-    id: '2',
-    enCode: 'code',
-    name: '娴佹按鍙�',
-  },
-  {
-    id: '3',
-    enCode: 'transactionStatus',
-    name: '鐘舵��',
-    width: 120,
-  },
-  {
-    id: '4',
-    enCode: 'amount',
-    name: '閲戦',
-    width: 120,
-  },
-  {
-    id: '5',
-    enCode: 'receiveName',
-    name: '鏀舵浜�',
-  },
-  {
-    id: '6',
-    enCode: 'receiveIdentity',
-    name: '韬唤璇佸彿',
-  },
-  {
-    id: '7',
-    enCode: 'receiveAccount',
-    name: '鏀舵浜鸿处鎴�',
-  },
-  {
-    id: '8',
-    enCode: 'transDate',
-    name: '鎻愮幇鏃ユ湡',
-  },
-  {
-    id: '9',
-    enCode: 'ereceiptDownloadOssUrl',
-    name: '鐢靛瓙鍥炲崟',
-  },
-]);
-
-export const CustomerRechargeManageColumns = defineColumns([
-  {
-    id: '1',
-    enCode: 'partyAEnterpriseName',
-    name: '瀹㈡埛鍚嶇О',
-  },
-  {
-    id: '2',
-    enCode: 'partyAEnterpriseSocietyCreditCode',
-    name: '淇$敤浠g爜',
-  },
-  {
-    id: '3',
-    enCode: 'amount',
-    name: '鍏呭�奸噾棰�',
-  },
-  {
-    id: '4',
-    enCode: 'transactionStatus',
-    name: '鍏呭�肩姸鎬�',
-  },
-]);
-
-export const CustomerRechargeRecordColumns = defineColumns([
-  {
-    id: '1',
-    enCode: 'partyAEnterpriseName',
-    name: '瀹㈡埛鍚嶇О',
-  },
-  {
-    id: '2',
-    enCode: 'receiveBank',
-    name: '寮�鎴锋�昏',
-  },
-  {
-    id: '3',
-    enCode: 'receiveBankBranch',
-    name: '寮�鎴锋敮琛�',
-  },
-  {
-    id: '4',
-    enCode: 'receiveAccount',
-    name: '鎴峰彿',
-  },
-  {
-    id: '5',
-    enCode: 'amount',
-    name: '鍏呭�奸噾棰�',
-  },
-  {
-    id: '6',
-    enCode: 'createdTime',
-    name: '鍏呭�兼椂闂�',
-  },
-  {
-    id: '7',
-    enCode: 'transactionStatus',
-    name: '鍏呭�肩姸鎬�',
   },
 ]);
diff --git a/src/views/ServiceChargeManage/BalanceManage.vue b/src/views/ServiceChargeManage/BalanceManage.vue
index a741e82..efe9358 100644
--- a/src/views/ServiceChargeManage/BalanceManage.vue
+++ b/src/views/ServiceChargeManage/BalanceManage.vue
@@ -30,11 +30,7 @@
           </QueryFilterItem>
         </template>
       </ProTableQueryFilterBar>
-      <ProTableV2
-        v-bind="proTableProps"
-        :columns="BalanceManageColumns"
-        :operationBtns="operationBtns"
-      >
+      <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
       </ProTableV2>
     </AppContainer>
     <BalanceDetailDialog v-bind="dialogProps" />
@@ -55,23 +51,21 @@
 } from '@bole-core/components';
 import * as userServices from '@/services/api/user';
 import BalanceDetailDialog from './components/BalanceDetailDialog.vue';
-import { BalanceManageColumns } from './constants';
 
 defineOptions({
   name: 'WithdrawManageList',
 });
 
-const operationBtns = defineOperationBtns([
-  {
-    data: {
-      enCode: 'detailBtn',
-      name: '鏄庣粏',
-    },
+const operationBtnMap: Record<string, OperationBtnType> = {
+  detailBtn: {
     emits: {
       onClick: (role) => openDialog(role),
     },
   },
-]);
+};
+const { column, operationBtns, checkSubModuleItemShow } = useAccess({
+  operationBtnMap,
+});
 
 const router = useRouter();
 const BaseState = {
diff --git a/src/views/ServiceChargeManage/ServiceChargeDetail.vue b/src/views/ServiceChargeManage/ServiceChargeDetail.vue
index b8bbe5d..65b0c3f 100644
--- a/src/views/ServiceChargeManage/ServiceChargeDetail.vue
+++ b/src/views/ServiceChargeManage/ServiceChargeDetail.vue
@@ -74,12 +74,18 @@
             >
               <el-button text type="primary" class="pro-table-operation-btn">瀵煎叆</el-button>
             </BlFileUpload> -->
-            <el-button type="primary" link @click="handleExport()">瀵煎嚭</el-button>
+            <el-button
+              v-if="checkSubModuleItemShow('pageButton', 'exportBtn')"
+              type="primary"
+              link
+              @click="handleExport()"
+              >瀵煎嚭</el-button
+            >
           </template>
         </ProTableQueryFilterBar>
         <ProTableV2
           v-bind="proTableProps"
-          :columns="SettlementListColumns"
+          :columns="column"
           :operationBtns="operationBtns"
           :auto-height="false"
           ref="proTable"
@@ -139,7 +145,6 @@
   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';
@@ -164,12 +169,9 @@
 
 const { closeViewPush } = useRouteView();
 const eventContext = useGlobalEventContext();
-const operationBtns = defineOperationBtns([
-  {
-    data: {
-      enCode: 'editBtn',
-      name: '缂栬緫',
-    },
+
+const operationBtnMap: Record<string, OperationBtnType> = {
+  editBtn: {
     emits: {
       onClick: (role) => openDialog(role),
     },
@@ -178,11 +180,7 @@
         row.settlementReceiveStatus !== SettlementReceiveStatus.Refunded,
     },
   },
-  {
-    data: {
-      enCode: 'editBtn',
-      name: '閲嶆柊缁撶畻',
-    },
+  reSettleBtn: {
     emits: {
       onClick: (role) => againSureTaskSettlementOrderRoster(role),
     },
@@ -191,7 +189,11 @@
         row.settlementReceiveStatus !== SettlementReceiveStatus.Refunded,
     },
   },
-]);
+};
+const { column, operationBtns, checkSubModuleItemShow } = useAccess({
+  operationBtnMap,
+});
+
 const route = useRoute();
 const id = (route.params.id as string) ?? '';
 const settlement = (route.query.settlement as string) ?? '';
diff --git a/src/views/ServiceChargeManage/ServiceChargeManage.vue b/src/views/ServiceChargeManage/ServiceChargeManageList.vue
similarity index 93%
rename from src/views/ServiceChargeManage/ServiceChargeManage.vue
rename to src/views/ServiceChargeManage/ServiceChargeManageList.vue
index 1582a0d..f4c431b 100644
--- a/src/views/ServiceChargeManage/ServiceChargeManage.vue
+++ b/src/views/ServiceChargeManage/ServiceChargeManageList.vue
@@ -47,14 +47,15 @@
         <template #btn>
           <!-- <el-button type="primary" link @click="handleDownloadTemplate()">缁撶畻鍗曟ā鏉�</el-button> -->
           <!-- <el-button type="primary" @click="handleAdd()">涓婁紶缁撶畻鍗�</el-button> -->
-          <el-button type="primary" @click="handleExport()">瀵煎嚭</el-button>
+          <el-button
+            v-if="checkSubModuleItemShow('pageButton', 'exportBtn')"
+            type="primary"
+            @click="handleExport()"
+            >瀵煎嚭</el-button
+          >
         </template>
       </ProTableQueryFilterBar>
-      <ProTableV2
-        v-bind="proTableProps"
-        :columns="ServiceChargeManageColumns"
-        :operationBtns="operationBtns"
-      >
+      <ProTableV2 v-bind="proTableProps" :columns="column" :operationBtns="operationBtns">
         <!-- <template #operationBtn-uploadBtn="{ row }">
           <BlFileUpload
             v-model:file-url="editForm.settlementUrl"
@@ -110,7 +111,6 @@
   UploadUserFile,
   BlFileUpload,
 } from '@bole-core/components';
-import { ServiceChargeManageColumns } from './constants';
 import {
   EnumTaskSettlementStatusText,
   EnumTaskSettlementOrderStatusText,
@@ -135,22 +135,14 @@
   name: 'ServiceChargeManageList',
 });
 
-const operationBtns = defineOperationBtns([
-  // {
-  //   data: {
-  //     enCode: 'uploadBtn',
-  //     name: '涓婁紶',
-  //   },
+const operationBtnMap: Record<string, OperationBtnType> = {
+  // uploadBtn: {
   //   extraProps: {
   //     hide: (row: API.GetSettlementTasksQueryResultItem) =>
   //       row.settlementOrderStatus !== EnumTaskSettlementOrderStatus.Wait,
   //   },
   // },
-  // {
-  //   data: {
-  //     enCode: 'reUploadBtn',
-  //     name: '閲嶆柊涓婁紶',
-  //   },
+  // reUploadBtn: {
   //   extraProps: {
   //     hide: (row: API.GetSettlementTasksQueryResultItem) =>
   //       !(
@@ -159,11 +151,7 @@
   //       ),
   //   },
   // },
-  {
-    data: {
-      enCode: 'settleBtn',
-      name: '缁撶畻',
-    },
+  settleBtn: {
     emits: {
       onClick: (role: API.GetSettlementTasksQueryResultItem) => openSettleMethodDialog(role),
     },
@@ -172,11 +160,7 @@
         role.settlementStatus !== EnumTaskSettlementStatus.Wait,
     },
   },
-  {
-    data: {
-      enCode: 'recallBtn',
-      name: '鎾ゅ洖',
-    },
+  recallBtn: {
     emits: {
       onClick: (role) => handleRecall(role),
     },
@@ -185,11 +169,7 @@
         role.settlementStatus !== EnumTaskSettlementStatus.InProcess,
     },
   },
-  // {
-  //   data: {
-  //     enCode: 'settleAuditBtn',
-  //     name: '缁撶畻瀹℃牳',
-  //   },
+  // settleAuditBtn: {
   //   emits: {
   //     onClick: (role: API.GetSettlementTasksQueryResultItem) => goDetail(role.id, 'settlement'),
   //   },
@@ -197,11 +177,7 @@
   //     hide: (role: API.GetSettlementTasksQueryResultItem) => role.auditStatus !== null,
   //   },
   // },
-  {
-    data: {
-      enCode: 'detailBtn',
-      name: '璇︽儏',
-    },
+  detailBtn: {
     emits: {
       onClick: (role: API.GetSettlementTasksQueryResultItem) => goDetail(role.id),
     },
@@ -210,11 +186,7 @@
     //     role.settlementOrderStatus === EnumTaskSettlementOrderStatus.Wait,
     // },
   },
-  {
-    data: {
-      enCode: 'exportBtn',
-      name: '瀵煎嚭',
-    },
+  exportBtn: {
     emits: {
       onClick: (role) => handleRowExport(role),
     },
@@ -226,7 +198,11 @@
         ),
     },
   },
-]);
+};
+
+const { column, operationBtns, checkSubModuleItemShow } = useAccess({
+  operationBtnMap,
+});
 
 const router = useRouter();
 
diff --git a/src/views/ServiceChargeManage/constants/columns.ts b/src/views/ServiceChargeManage/constants/columns.ts
deleted file mode 100644
index 65b69ca..0000000
--- a/src/views/ServiceChargeManage/constants/columns.ts
+++ /dev/null
@@ -1,190 +0,0 @@
-import { defineColumns } from '@bole-core/components';
-
-export const ServiceChargeManageColumns = defineColumns([
-  {
-    id: '1',
-    enCode: 'name',
-    name: '鎵�灞炰换鍔�',
-  },
-  {
-    id: '2',
-    enCode: 'code',
-    name: '浠诲姟鍗曞彿',
-  },
-  {
-    id: '3',
-    enCode: 'checkReceiveStatus',
-    name: '楠屾敹鐘舵��',
-  },
-  // {
-  //   id: '4',
-  //   enCode: 'settlementOrderStatus',
-  //   name: '缁撶畻鍗曠姸鎬�',
-  // },
-  {
-    id: '4',
-    enCode: 'settlementCode',
-    name: '缁撶畻鍗曞彿',
-  },
-  {
-    id: '5',
-    enCode: 'settlementAccess',
-    name: '缁撶畻鏂瑰紡',
-  },
-  // {
-  //   id: '5',
-  //   enCode: 'settlementOrderName',
-  //   name: '缁撶畻鍗曞悕绉�',
-  // },
-  // {
-  //   id: '6',
-  //   enCode: 'settlementOrderTime',
-  //   name: '涓婁紶鏃堕棿',
-  // },
-  {
-    id: '7',
-    enCode: 'actualSettlementAmount',
-    name: '瀹炲彂閲戦',
-  },
-  {
-    id: '8',
-    enCode: 'settlementAmount',
-    name: '缁撶畻閲戦',
-  },
-  // {
-  //   id: '9',
-  //   enCode: 'auditStatus',
-  //   name: '瀹℃牳鐘舵��',
-  // },
-  {
-    id: '10',
-    enCode: 'settlementStatus',
-    name: '缁撶畻鐘舵��',
-  },
-  {
-    id: '11',
-    enCode: 'createdTime',
-    name: '鍒涘缓鏃堕棿',
-  },
-  {
-    id: '12',
-    enCode: 'settlementTime',
-    name: '缁撶畻鏃堕棿',
-  },
-  {
-    id: '13',
-    enCode: 'operator',
-    name: '鎿嶄綔浜�',
-  },
-  {
-    id: '14',
-    enCode: 'settlementRemark',
-    name: '澶囨敞',
-  },
-]);
-
-export const SettlementListColumns = defineColumns([
-  {
-    id: '1',
-    enCode: 'name',
-    name: '濮撳悕',
-  },
-  {
-    id: '2',
-    enCode: 'identity',
-    name: '韬唤璇佸彿',
-  },
-  {
-    id: '3',
-    enCode: 'contactPhoneNumber',
-    name: '鎵嬫満鍙�',
-  },
-  {
-    id: '4',
-    enCode: 'bank',
-    name: '鎵�灞為摱琛�',
-  },
-  {
-    id: '5',
-    enCode: 'bankBranch',
-    name: '鎵�灞炴敮琛�',
-  },
-  {
-    id: '6',
-    enCode: 'receiveAccount',
-    name: '鏀舵甯愭埛',
-  },
-  // {
-  //   id: '7',
-  //   enCode: 'totalWorkHours',
-  //   name: '绱宸ユ椂锛堝皬鏃讹級',
-  // },
-  {
-    id: '7-1',
-    enCode: 'serviceFee',
-    name: '鏈嶅姟璐�(鍏�)',
-  },
-  {
-    id: '7-2',
-    enCode: 'timeoutHours',
-    name: '瓒呮椂(灏忔椂)',
-  },
-  {
-    id: '7-3',
-    enCode: 'timeoutFee',
-    name: '瓒呮椂璐圭敤(鍏�)',
-  },
-  {
-    id: '7-4',
-    enCode: 'otherFee',
-    name: '鍏朵粬璐圭敤(鍏�)',
-  },
-  {
-    id: '8',
-    enCode: 'settlementAmount',
-    name: '缁撶畻閲戦',
-  },
-  {
-    id: '9',
-    enCode: 'actualSettlementAmount',
-    name: '瀹炲彂閲戦',
-  },
-  {
-    id: '10',
-    enCode: 'settlementReceiveStatus',
-    name: '鍒拌处鐘舵��',
-  },
-  {
-    id: '11',
-    enCode: 'settlementTime',
-    name: '缁撶畻鏃堕棿',
-  },
-  {
-    id: '12',
-    enCode: 'remark',
-    name: '澶囨敞',
-  },
-]);
-
-export const BalanceManageColumns = defineColumns([
-  {
-    id: '1',
-    enCode: 'name',
-    name: '濮撳悕',
-  },
-  {
-    id: '2',
-    enCode: 'contactPhoneNumber',
-    name: '鎵嬫満鍙�',
-  },
-  {
-    id: '3',
-    enCode: 'identity',
-    name: '韬唤璇佸彿',
-  },
-  {
-    id: '4',
-    enCode: 'balance',
-    name: '璐︽埛浣欓',
-  },
-]);
diff --git a/src/views/ServiceChargeManage/constants/index.ts b/src/views/ServiceChargeManage/constants/index.ts
deleted file mode 100644
index a7f066b..0000000
--- a/src/views/ServiceChargeManage/constants/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from './columns';

--
Gitblit v1.9.1