From 94e941341c4e2ac704f70c5ae61be2d6a61fcef4 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期二, 02 九月 2025 16:47:32 +0800
Subject: [PATCH] feat: 页面

---
 /dev/null                                                          |  194 ----------------
 src/views/ServiceChargeManage/constants/columns.ts                 |   33 +
 src/views/ServiceChargeManage/BalanceManage.vue                    |  137 +++++++++++
 src/hooks/useEvent.ts                                              |    1 
 src/views/ServiceChargeManage/ServiceChargeDetail.vue              |   47 ++-
 src/views/ServiceChargeManage/components/EditAccountInfoDialog.vue |   89 +++++++
 src/views/ServiceChargeManage/components/BalanceDetailDialog.vue   |  141 +++++++++++
 src/views/ServiceChargeManage/ServiceChargeManage.vue              |   19 -
 src/router/index.ts                                                |   12 
 9 files changed, 427 insertions(+), 246 deletions(-)

diff --git a/src/hooks/useEvent.ts b/src/hooks/useEvent.ts
index b462cd4..f897656 100644
--- a/src/hooks/useEvent.ts
+++ b/src/hooks/useEvent.ts
@@ -6,7 +6,6 @@
   'taskManage:add': any;
   'taskManage:edit': any;
   checkReceiveTask: any;
-  serviceChargeSettle: any;
 };
 
 export type GlobalEventListener<T extends keyof GlobalEvent> = (payload: GlobalEvent[T]) => any;
diff --git a/src/router/index.ts b/src/router/index.ts
index 3bdb5ca..98978f2 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -257,14 +257,14 @@
         },
       },
       {
-        path: '/ServiceChargeSettle/:id',
-        name: 'ServiceChargeSettle',
-        hidden: true,
-        alwaysShow: false,
-        component: () => import('@/views/ServiceChargeManage/ServiceChargeSettle.vue'),
+        path: '/BalanceManage',
+        name: 'BalanceManage',
+        hidden: false,
+        alwaysShow: true,
+        component: () => import('@/views/ServiceChargeManage/BalanceManage.vue'),
         meta: {
           rank: 10042,
-          title: '缁撶畻',
+          title: '浣欓绠$悊',
           // rootMenu: true,
           icon: 'home',
         },
diff --git a/src/views/ServiceChargeManage/BalanceManage.vue b/src/views/ServiceChargeManage/BalanceManage.vue
new file mode 100644
index 0000000..e4fac28
--- /dev/null
+++ b/src/views/ServiceChargeManage/BalanceManage.vue
@@ -0,0 +1,137 @@
+<template>
+  <LoadingLayout :loading="state.loading">
+    <AppContainer>
+      <ProTableQueryFilterBar @on-reset="reset">
+        <template #query>
+          <QueryFilterItem tip-content="浣欓鑼冨洿">
+            <el-input-number
+              v-model="extraParamState.minAmount"
+              placeholder="浣欓鏈�灏忛噾棰�"
+              size="small"
+              style="width: 150px"
+              :controls="false"
+            />~
+            <el-input-number
+              v-model="extraParamState.maxAmount"
+              placeholder="浣欓鏈�澶ч噾棰�"
+              size="small"
+              style="width: 150px"
+              :controls="false"
+            />
+          </QueryFilterItem>
+          <QueryFilterItem>
+            <SearchInput
+              v-model="extraParamState.keyword"
+              style="width: 260px"
+              placeholder="濮撳悕/鎵嬫満鍙�/韬唤璇佸彿"
+              @on-click-search="getList"
+            >
+            </SearchInput>
+          </QueryFilterItem>
+        </template>
+      </ProTableQueryFilterBar>
+      <ProTableV2
+        v-bind="proTableProps"
+        :columns="BalanceManageColumns"
+        :operationBtns="operationBtns"
+      >
+      </ProTableV2>
+    </AppContainer>
+    <BalanceDetailDialog v-bind="dialogProps" />
+  </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+  ProTableQueryFilterBar,
+  ProTableV2,
+  SearchInput,
+  LoadingLayout,
+  AppContainer,
+  QueryFilterItem,
+  useTable,
+  useFormDialog,
+  defineOperationBtns,
+} from '@bole-core/components';
+import * as enterpriseServices from '@/services/api/enterprise';
+import BalanceDetailDialog from './components/BalanceDetailDialog.vue';
+import { BalanceManageColumns } from './constants';
+
+defineOptions({
+  name: 'BalanceManage',
+});
+
+const operationBtns = defineOperationBtns([
+  {
+    data: {
+      enCode: 'detailBtn',
+      name: '鏄庣粏',
+    },
+    emits: {
+      onClick: (role) => openDialog(role),
+    },
+    extraProps: {
+      hide: () => false,
+    },
+  },
+]);
+
+const router = useRouter();
+const BaseState = {
+  loading: true,
+};
+
+const state = reactive({ ...BaseState });
+
+onMounted(async () => {
+  await getList();
+  state.loading = false;
+});
+
+const {
+  getDataSource: getList,
+  proTableProps,
+  paginationState,
+  extraParamState,
+  reset,
+} = useTable(
+  async ({ pageIndex, pageSize }, extraParamState) => {
+    try {
+      let params: API.GetEnterprisesQuery = {
+        pageModel: {
+          rows: pageSize,
+          page: pageIndex,
+          orderInput: extraParamState.orderInput,
+        },
+        // searchKeys: extraParamState.keyword,
+      };
+      let res = await enterpriseServices.getEnterprises(params, {
+        showLoading: !state.loading,
+      });
+      return res;
+    } catch (error) {}
+  },
+  {
+    defaultExtraParams: {
+      keyword: '',
+      status: '',
+      minAmount: null as number,
+      maxAmount: null as number,
+      orderInput: [{ property: 'id', order: EnumPagedListOrder.Asc }],
+    },
+    columnsRenderProps: {},
+  }
+);
+
+const { dialogProps, handleEdit, editForm } = useFormDialog({
+  defaultFormParams: {
+    id: '',
+  },
+});
+
+function openDialog(row) {
+  handleEdit({
+    id: row.id,
+  });
+}
+</script>
diff --git a/src/views/ServiceChargeManage/ServiceChargeDetail.vue b/src/views/ServiceChargeManage/ServiceChargeDetail.vue
index f73a96f..0f4c891 100644
--- a/src/views/ServiceChargeManage/ServiceChargeDetail.vue
+++ b/src/views/ServiceChargeManage/ServiceChargeDetail.vue
@@ -2,11 +2,6 @@
   <LoadingLayout :loading="isLoading">
     <AppScrollContainer>
       <ChunkCell title="缁撶畻鍗曡鎯�">
-        <template #titleRight>
-          <el-button type="primary" icon="Download" @click="handleDownloadTemplate()"
-            >鐢靛瓙鍥炲崟涓嬭浇</el-button
-          >
-        </template>
         <ProForm :model="form" ref="formRef" label-width="120px" :is-read="true">
           <ProFormCol>
             <ProFormColItem :span="8">
@@ -36,7 +31,6 @@
                 ></ProFormDatePicker>
               </ProFormItemV2>
             </ProFormColItem>
-            <ProFormColItem :span="8"></ProFormColItem>
           </ProFormCol>
           <ProFormCol>
             <ProFormColItem :span="8">
@@ -49,16 +43,10 @@
                 <ProFormInputNumber v-model="form.money"> </ProFormInputNumber>
               </ProFormItemV2>
             </ProFormColItem>
-            <ProFormColItem :span="8">
-              <ProFormItemV2 label="鐘舵��:" prop="status">
-                <ProFormRadio v-model="form.status" :value-enum="[{ label: '鏄�', value: 1 }]">
-                </ProFormRadio>
-              </ProFormItemV2>
-            </ProFormColItem>
           </ProFormCol>
         </ProForm>
       </ChunkCell>
-      <ChunkCell title="缁撶畻娴佺▼">
+      <!-- <ChunkCell title="缁撶畻娴佺▼">
         <div class="step-wrapper">
           <el-steps :active="1" align-center finish-status="process">
             <el-step title="缁撶畻鍗曚笂浼�" :icon="Edit">
@@ -79,7 +67,7 @@
             </el-step>
           </el-steps>
         </div>
-      </ChunkCell>
+      </ChunkCell> -->
       <ChunkCell title="缁撶畻鍚嶅崟">
         <ProTableQueryFilterBar @on-reset="reset">
           <template #query>
@@ -87,7 +75,7 @@
               <SearchInput
                 v-model="extraParamState.keywords"
                 style="width: 300px"
-                placeholder="浜哄憳濮撳悕/韬唤璇佸彿/鎵嬫満鍙�"
+                placeholder="濮撳悕/鎵嬫満/韬唤璇佸彿/瀹㈡埛"
                 @on-click-search="getList"
               >
               </SearchInput>
@@ -107,6 +95,7 @@
         </ProTableV2>
       </ChunkCell>
     </AppScrollContainer>
+    <EditAccountInfoDialog v-bind="dialogProps"></EditAccountInfoDialog>
   </LoadingLayout>
 </template>
 <script setup lang="ts">
@@ -129,12 +118,14 @@
   QueryFilterItem,
   ProTableQueryFilterBar,
   TextOverTooltip,
+  useFormDialog,
 } from '@bole-core/components';
 import { Edit, Upload } from '@element-plus/icons-vue';
 import { SettlementListColumns } from './constants';
 import { useQuery } from '@tanstack/vue-query';
 import { downloadFileByUrl } from '@bole-core/core';
 import * as taskServices from '@/services/api/task';
+import EditAccountInfoDialog from './components/EditAccountInfoDialog.vue';
 
 defineOptions({
   name: 'ServiceChargeDetail',
@@ -143,8 +134,11 @@
 const operationBtns = defineOperationBtns([
   {
     data: {
-      enCode: 'downloadBtn',
-      name: '涓嬭浇鍥炲崟',
+      enCode: 'editBtn',
+      name: '缂栬緫',
+    },
+    emits: {
+      onClick: (role) => openDialog(role),
     },
   },
 ]);
@@ -209,10 +203,25 @@
   }
 );
 
-function handleDownloadTemplate() {
-  downloadFileByUrl('', '鐢靛瓙鍥炲崟');
+const { dialogProps, handleAdd, handleEdit, editForm } = useFormDialog({
+  onConfirm: handleAddOrEdit,
+  defaultFormParams: {
+    id: '',
+    name: '',
+  },
+});
+
+function openDialog(row?) {
+  if (row) {
+    handleEdit({
+      id: row?.id,
+      name: row?.name,
+    });
+  }
 }
 
+async function handleAddOrEdit() {}
+
 onMounted(() => {
   getList();
 });
diff --git a/src/views/ServiceChargeManage/ServiceChargeManage.vue b/src/views/ServiceChargeManage/ServiceChargeManage.vue
index bd7fa87..47361e8 100644
--- a/src/views/ServiceChargeManage/ServiceChargeManage.vue
+++ b/src/views/ServiceChargeManage/ServiceChargeManage.vue
@@ -169,12 +169,6 @@
 
 const router = useRouter();
 
-const eventContext = useGlobalEventContext();
-
-eventContext.addEvent('serviceChargeSettle', () => {
-  getList(paginationState.pageIndex);
-});
-
 const BaseState = {
   loading: true,
 };
@@ -251,7 +245,7 @@
   handleEdit: handleSettleEdit,
   editForm: settleEditForm,
 } = useFormDialog({
-  onConfirm: goSettle,
+  onConfirm: handleSettle,
   defaultFormParams: {
     id: '',
     name: '',
@@ -259,20 +253,13 @@
   },
 });
 
+async function handleSettle() {}
+
 function openSettleDialog(row?) {
   handleSettleEdit({
     id: row.id,
     name: row.name,
     count: row.count,
-  });
-}
-
-async function goSettle() {
-  router.push({
-    name: 'ServiceChargeSettle',
-    params: {
-      id: settleEditForm.id,
-    },
   });
 }
 
diff --git a/src/views/ServiceChargeManage/ServiceChargeSettle.vue b/src/views/ServiceChargeManage/ServiceChargeSettle.vue
deleted file mode 100644
index bdfca37..0000000
--- a/src/views/ServiceChargeManage/ServiceChargeSettle.vue
+++ /dev/null
@@ -1,194 +0,0 @@
-<template>
-  <LoadingLayout :loading="isLoading">
-    <AppScrollContainer>
-      <ChunkCell title="浠樻鏂逛俊鎭�">
-        <ProForm :model="form" ref="formRef" label-width="120px">
-          <ProFormItemV2
-            label="浠樻璐︽埛:"
-            prop="name"
-            :check-rules="[{ message: '璇烽�夋嫨浠樻璐︽埛' }]"
-          >
-            <ProFormSelect
-              v-model="form.name"
-              :valueEnum="[]"
-              placeholder="璇烽�夋嫨鎮ㄧ殑浠樻鏂瑰紡"
-              clearable
-            >
-            </ProFormSelect>
-          </ProFormItemV2>
-          <ProFormMixinsItemContainer>
-            <ProFormItemV2
-              label="浠樻閲戦:"
-              prop="money"
-              :check-rules="[{ message: '璇疯緭鍏ヤ粯娆鹃噾棰�' }]"
-              mode="read"
-            >
-              <ProFormInputNumber v-model="form.money"> </ProFormInputNumber>
-            </ProFormItemV2>
-          </ProFormMixinsItemContainer>
-        </ProForm>
-      </ChunkCell>
-      <ChunkCell title="鏀舵鏂逛俊鎭�">
-        <ProTableQueryFilterBar @on-reset="reset">
-          <template #query>
-            <QueryFilterItem>
-              <SearchInput
-                v-model="extraParamState.keywords"
-                style="width: 300px"
-                placeholder="浜哄憳濮撳悕/韬唤璇佸彿/鎵嬫満鍙�"
-                @on-click-search="getList"
-              >
-              </SearchInput>
-            </QueryFilterItem>
-          </template>
-        </ProTableQueryFilterBar>
-        <ProTableV2
-          v-bind="proTableProps"
-          :columns="SettlementListColumns"
-          :show-operation-column="false"
-          :auto-height="false"
-          ref="proTable"
-          :tableProps="{
-            maxHeight: '400px',
-          }"
-        >
-        </ProTableV2>
-      </ChunkCell>
-      <ChunkCell title="杞处淇℃伅">
-        <ProForm :model="form" ref="formRef" label-width="120px">
-          <ProFormMixinsItemContainer>
-            <ProFormItemV2 label="浜ゆ槗鐢ㄩ��:" prop="name" mode="read">
-              <ProFormText v-model="form.name"> </ProFormText>
-            </ProFormItemV2>
-          </ProFormMixinsItemContainer>
-          <ProFormItemV2 label="闄勮█:" prop="name">
-            <ProFormText v-model="form.name" :maxlength="30" show-word-limit> </ProFormText>
-          </ProFormItemV2>
-          <ProFormItemV2 label="澶囨敞:" prop="name">
-            <ProFormText v-model="form.name" :maxlength="30" show-word-limit> </ProFormText>
-          </ProFormItemV2>
-          <div class="chuck-add-or-edit-actions">
-            <el-button class="chuck-add-or-edit-actions" @click="handleBack()">鍙栨秷</el-button>
-            <el-button class="chuck-add-or-edit-actions" type="primary" @click="handleSubmit"
-              >鎻愪氦瀹℃牳</el-button
-            >
-          </div>
-        </ProForm>
-      </ChunkCell>
-    </AppScrollContainer>
-  </LoadingLayout>
-</template>
-<script setup lang="ts">
-import {
-  LoadingLayout,
-  AppScrollContainer,
-  ChunkCell,
-  ProForm,
-  ProFormItemV2,
-  ProFormText,
-  ProFormSelect,
-  ProFormInputNumber,
-  ProTableV2,
-  QueryFilterItem,
-  SearchInput,
-  ProTableQueryFilterBar,
-  ProFormMixinsItemContainer,
-  useTable,
-} from '@bole-core/components';
-import { useQuery } from '@tanstack/vue-query';
-import { useRouteView } from '@/hooks';
-import { FormInstance } from 'element-plus';
-import { validateFormList } from '@/utils';
-import * as taskServices from '@/services/api/task';
-import { SettlementListColumns } from './constants';
-
-defineOptions({
-  name: 'ServiceChargeSettle',
-});
-
-const route = useRoute();
-const id = (route.params.id as string) ?? '';
-const eventContext = useGlobalEventContext();
-const { closeViewPush } = useRouteView();
-
-const form = reactive({
-  name: '',
-  money: 0,
-});
-
-const { isLoading } = useQuery({
-  queryKey: ['taskServices/getTaskInfo', id],
-  queryFn: async () => {
-    return await taskServices.getTaskInfo(
-      { id: id },
-      {
-        showLoading: false,
-      }
-    );
-  },
-  placeholderData: () => ({} as API.GetTaskInfoQueryResult),
-  onSuccess(data) {
-    form.name = data.name;
-  },
-  enabled: !!id,
-});
-
-const {
-  getDataSource: getList,
-  proTableProps,
-  paginationState,
-  extraParamState,
-  reset,
-} = useTable(
-  async ({ pageIndex, pageSize }, extraParamState) => {
-    try {
-      let params: API.GetOpenTaskInfosQuery = {
-        pageModel: {
-          rows: pageSize,
-          page: pageIndex,
-          orderInput: extraParamState.orderInput,
-        },
-        keywords: extraParamState.keywords,
-      };
-
-      let res = await taskServices.getOpenTaskInfos(params);
-      return res;
-    } catch (error) {
-      console.log('error: ', error);
-    }
-  },
-  {
-    defaultExtraParams: {
-      keywords: '',
-      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
-    },
-    queryKey: ['taskServices/getOpenTaskInfos'],
-    columnsRenderProps: {},
-  }
-);
-
-function handleBack() {
-  closeViewPush(route, {
-    name: 'ServiceChargeManageList',
-  });
-}
-const formRef = ref<FormInstance>();
-async function handleSubmit() {
-  try {
-    const valid = await validateFormList([formRef.value]);
-    if (valid) {
-      submit();
-    }
-  } catch (error) {}
-}
-
-async function submit() {
-  try {
-    eventContext.emit('serviceChargeSettle');
-  } catch (error) {}
-}
-</script>
-
-<style lang="scss" scoped>
-@use '@/style/common.scss' as *;
-</style>
diff --git a/src/views/ServiceChargeManage/components/BalanceDetailDialog.vue b/src/views/ServiceChargeManage/components/BalanceDetailDialog.vue
new file mode 100644
index 0000000..a81d09f
--- /dev/null
+++ b/src/views/ServiceChargeManage/components/BalanceDetailDialog.vue
@@ -0,0 +1,141 @@
+<template>
+  <ProDialog title="浣欓鏄庣粏" v-model="visible" destroy-on-close draggable>
+    <ProDialogTableWrapper :height="500">
+      <ProTableQueryFilterBar @on-reset="reset">
+        <template #query>
+          <QueryFilterItem>
+            <FieldSelect
+              v-model="extraParamState.status"
+              :valueEnum="[]"
+              clearable
+              filterable
+              placeholder="浜ゆ槗绫诲瀷"
+            />
+          </QueryFilterItem>
+          <QueryFilterItem tip-content="鏌ヨ鏃ユ湡">
+            <FieldDatePicker
+              v-model="extraParamState.creationTime"
+              type="daterange"
+              range-separator="~"
+              start-placeholder="璧峰鏃ユ湡"
+              end-placeholder="鎴鏃ユ湡"
+              clearable
+              @change="getList()"
+            ></FieldDatePicker>
+          </QueryFilterItem>
+        </template>
+      </ProTableQueryFilterBar>
+      <ProTableV2 v-bind="proTableProps" :columns="columns" :showOperationColumn="false">
+      </ProTableV2>
+    </ProDialogTableWrapper>
+  </ProDialog>
+</template>
+
+<script setup lang="ts">
+import {
+  defineColumns,
+  ProDialog,
+  useTable,
+  ProDialogTableWrapper,
+  QueryFilterItem,
+  FieldDatePicker,
+  FieldSelect,
+  ProTableV2,
+  ProTableQueryFilterBar,
+} from '@bole-core/components';
+import * as enterpriseServices from '@/services/api/enterprise';
+import { ModelValueType } from 'element-plus';
+
+defineOptions({
+  name: 'FinanceDetailDialog',
+});
+
+type Form = {
+  id?: string;
+};
+
+const visible = defineModel({ type: Boolean });
+const form = defineModel<Form>('form');
+
+const emit = defineEmits<{
+  (e: 'update:modelValue', value: boolean): void;
+  (e: 'onCancel'): void;
+}>();
+
+const columns = defineColumns([
+  {
+    id: '1',
+    enCode: 'name',
+    name: '浜ゆ槗鏃堕棿',
+  },
+  {
+    id: '2',
+    enCode: 'name',
+    name: '鏀跺叆',
+  },
+  {
+    id: '3',
+    enCode: 'name',
+    name: '鏀嚭',
+  },
+  {
+    id: '4',
+    enCode: 'name',
+    name: '璐︽埛浣欓',
+  },
+  {
+    id: '4',
+    enCode: 'name',
+    name: '瀵规柟甯愬彿/鎴峰悕',
+  },
+  {
+    id: '4',
+    enCode: 'name',
+    name: '鐢ㄩ��',
+  },
+]);
+
+watch(
+  () => visible.value,
+  (value) => {
+    if (value) {
+      getList();
+    }
+  }
+);
+
+const {
+  getDataSource: getList,
+  proTableProps,
+  paginationState,
+  extraParamState,
+  reset,
+} = useTable(
+  async ({ pageIndex, pageSize }, extraParamState) => {
+    try {
+      let params: API.GetEnterprisesQuery = {
+        pageModel: {
+          rows: pageSize,
+          page: pageIndex,
+          orderInput: extraParamState.orderInput,
+        },
+        // searchKeys: extraParamState.keyword,
+      };
+      let res = await enterpriseServices.getEnterprises(params);
+      return res;
+    } catch (error) {}
+  },
+  {
+    defaultExtraParams: {
+      status: '',
+      creationTime: [] as unknown as ModelValueType,
+      orderInput: [{ property: 'id', order: EnumPagedListOrder.Asc }],
+    },
+    columnsRenderProps: {},
+  }
+);
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+</style>
diff --git a/src/views/ServiceChargeManage/components/EditAccountInfoDialog.vue b/src/views/ServiceChargeManage/components/EditAccountInfoDialog.vue
new file mode 100644
index 0000000..fb6b2d5
--- /dev/null
+++ b/src/views/ServiceChargeManage/components/EditAccountInfoDialog.vue
@@ -0,0 +1,89 @@
+<template>
+  <ProDialog
+    title="缂栬緫"
+    v-model="visible"
+    @close="onDialogClose"
+    destroy-on-close
+    draggable
+    :width="700"
+  >
+    <ProForm :model="form" ref="dialogForm" label-width="120px">
+      <ProFormItemV2 label="鎵�灞為摱琛岋細" prop="name" :check-rules="[{ message: '璇疯緭鍏ユ墍灞為摱琛�' }]">
+        <ProFormText placeholder="璇疯緭鍏ユ墍灞為摱琛�" v-model.trim="form.name"></ProFormText>
+      </ProFormItemV2>
+      <ProFormItemV2 label="鏀舵璐︽埛锛�" prop="name" :check-rules="[{ message: '璇疯緭鍏ユ敹娆捐处鎴�' }]">
+        <ProFormText placeholder="璇疯緭鍏ユ敹娆捐处鎴�" v-model.trim="form.name"></ProFormText>
+      </ProFormItemV2>
+      <ProFormItemV2 label="缁撶畻閲戦锛�" prop="name" :check-rules="[{ message: '璇疯緭鍏ョ粨绠楅噾棰�' }]">
+        <ProFormInputNumber
+          placeholder="璇疯緭鍏ョ粨绠楅噾棰�"
+          v-model.trim="form.name"
+          :controls="false"
+          :min="0"
+        ></ProFormInputNumber>
+      </ProFormItemV2>
+      <ProFormItemV2 label="瀹炲彂閲戦锛�" prop="name" :check-rules="[{ message: '璇疯緭鍏ュ疄鍙戦噾棰�' }]">
+        <ProFormInputNumber
+          placeholder="璇疯緭鍏ュ疄鍙戦噾棰�"
+          v-model.trim="form.name"
+          :controls="false"
+          :min="0"
+        ></ProFormInputNumber>
+      </ProFormItemV2>
+    </ProForm>
+    <template #footer>
+      <span class="dialog-footer">
+        <el-button @click="emit('onCancel')">鍙栨秷</el-button>
+        <el-button type="primary" @click="handleConfirm">纭</el-button>
+      </span>
+    </template>
+  </ProDialog>
+</template>
+
+<script setup lang="ts">
+import { FormInstance } from 'element-plus';
+import {
+  ProDialog,
+  ProForm,
+  ProFormInputNumber,
+  ProFormItemV2,
+  ProFormText,
+  UploadUserFile,
+} from '@bole-core/components';
+
+defineOptions({
+  name: 'EditAccountInfoDialog',
+});
+
+type Form = {
+  title?: string;
+  name: string;
+};
+
+const visible = defineModel({ type: Boolean });
+
+const form = defineModel<Form>('form');
+
+const emit = defineEmits<{
+  (e: 'onConfirm'): void;
+  (e: 'onCancel'): void;
+}>();
+
+const dialogForm = ref<FormInstance>();
+
+function onDialogClose() {
+  if (!dialogForm.value) return;
+  dialogForm.value.resetFields();
+}
+
+function handleConfirm() {
+  if (!dialogForm.value) return;
+  dialogForm.value.validate((valid) => {
+    if (valid) {
+      emit('onConfirm');
+    } else {
+      return;
+    }
+  });
+}
+</script>
diff --git a/src/views/ServiceChargeManage/constants/columns.ts b/src/views/ServiceChargeManage/constants/columns.ts
index e7647e2..f9bb4a0 100644
--- a/src/views/ServiceChargeManage/constants/columns.ts
+++ b/src/views/ServiceChargeManage/constants/columns.ts
@@ -112,16 +112,29 @@
   {
     id: '9',
     enCode: 'name',
-    name: '鐘舵��',
-  },
-  {
-    id: '10',
-    enCode: 'name',
-    name: '缁撶畻娴佹按鍙�',
-  },
-  {
-    id: '11',
-    enCode: 'name',
     name: '缁撶畻鏃堕棿',
   },
 ]);
+
+export const BalanceManageColumns = defineColumns([
+  {
+    id: '1',
+    enCode: 'name',
+    name: '濮撳悕',
+  },
+  {
+    id: '2',
+    enCode: 'name',
+    name: '鎵嬫満鍙�',
+  },
+  {
+    id: '3',
+    enCode: 'name',
+    name: '韬唤璇佸彿',
+  },
+  {
+    id: '4',
+    enCode: 'name',
+    name: '璐︽埛浣欓',
+  },
+]);

--
Gitblit v1.9.1