From ca03f54c785cc814b9efa75b3aa1985b1c30e960 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期三, 15 十月 2025 17:29:03 +0800
Subject: [PATCH] feat: 结算调整

---
 src/views/FinanceManage/BalanceManageDetail.vue                 |  196 ++++++++++++++++
 src/services/api/index.ts                                       |    2 
 src/views/FinanceManage/constants/columns.ts                    |   66 +++++
 src/views/ServiceChargeManage/ServiceChargeDetail.vue           |   21 
 src/services/api/typings.d.ts                                   |   65 +++-
 src/views/ServiceChargeManage/ServiceChargeManage.vue           |   34 ++
 src/views/ServiceChargeManage/components/SettleDetailDialog.vue |    6 
 src/router/index.ts                                             |   26 ++
 src/views/ServiceChargeManage/components/SettlMethodDialog.vue  |   70 +++++
 src/constants/apiEnum.ts                                        |   28 +-
 src/services/api/settings.ts                                    |   20 +
 src/views/FinanceManage/BalanceManageList.vue                   |  164 +++++++++++++
 12 files changed, 650 insertions(+), 48 deletions(-)

diff --git a/src/constants/apiEnum.ts b/src/constants/apiEnum.ts
index ab0ae9b..b3342dd 100644
--- a/src/constants/apiEnum.ts
+++ b/src/constants/apiEnum.ts
@@ -349,32 +349,34 @@
   CommonServerSyncDatabase = 8,
   /**鐭俊宸ュ叿 */
   CommonServerSmsUtils = 9,
+  /**閰嶇疆 */
+  CommonServerSettings = 10,
   /**鐢ㄦ埛璁よ瘉 */
-  UserServerAuth = 10,
+  UserServerAuth = 11,
   /**鐢ㄦ埛鑿滃崟 */
-  UserServerMenu = 11,
+  UserServerMenu = 12,
   /**鐢ㄦ埛璧勬簮 */
-  UserServerResource = 12,
+  UserServerResource = 13,
   /**鐢ㄦ埛瑙掕壊 */
-  UserServerRole = 13,
+  UserServerRole = 14,
   /**鐢ㄦ埛淇℃伅 */
-  UserServerUser = 14,
+  UserServerUser = 15,
   /**鐢ㄦ埛閽卞寘 */
-  UserServerUserWallet = 15,
+  UserServerUserWallet = 16,
   /**鐢靛瓙绛� */
-  UserServerElectronSign = 16,
+  UserServerElectronSign = 17,
   /**鐢ㄦ埛绠�鍘� */
-  UserServerUserResume = 17,
+  UserServerUserResume = 18,
   /**浼佷笟淇℃伅 */
-  UserServerEnterprise = 18,
+  UserServerEnterprise = 19,
   /**浼佷笟閽卞寘 */
-  UserServerEnterpriseWallet = 19,
+  UserServerEnterpriseWallet = 20,
   /**鐏靛伐淇℃伅 */
-  UserServerEnterpriseEmployee = 20,
+  UserServerEnterpriseEmployee = 21,
   /**鐢靛瓙绛� */
-  ElectronSignServerElectronSign = 21,
+  ElectronSignServerElectronSign = 22,
   /**鐢靛瓙绛� */
-  ToolServerSms = 22,
+  ToolServerSms = 23,
 }
 
 /** 璧勬簮璇锋眰鏂瑰紡 */
diff --git a/src/router/index.ts b/src/router/index.ts
index 93b9621..4b21b9b 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -366,6 +366,32 @@
           icon: 'home',
         },
       },
+      // {
+      //   path: '/BalanceManageList',
+      //   name: 'BalanceManageList',
+      //   hidden: false,
+      //   alwaysShow: true,
+      //   component: () => import('@/views/FinanceManage/BalanceManageList.vue'),
+      //   meta: {
+      //     rank: 10072,
+      //     title: '浣欓绠$悊',
+      //     // rootMenu: true,
+      //     icon: 'home',
+      //   },
+      // },
+      // {
+      //   path: '/BalanceManageDetail',
+      //   name: 'BalanceManageDetail',
+      //   hidden: true,
+      //   alwaysShow: false,
+      //   component: () => import('@/views/FinanceManage/BalanceManageDetail.vue'),
+      //   meta: {
+      //     rank: 10073,
+      //     title: '璇︽儏',
+      //     // rootMenu: true,
+      //     icon: 'home',
+      //   },
+      // },
     ],
   },
   {
diff --git a/src/services/api/index.ts b/src/services/api/index.ts
index ade7e8b..7c4bd7f 100644
--- a/src/services/api/index.ts
+++ b/src/services/api/index.ts
@@ -11,6 +11,7 @@
 import * as resource from './resource';
 import * as enterpriseWallet from './enterpriseWallet';
 import * as dictionary from './dictionary';
+import * as settings from './settings';
 import * as codeUrl from './codeUrl';
 import * as electronSign from './electronSign';
 import * as userResume from './userResume';
@@ -33,6 +34,7 @@
   resource,
   enterpriseWallet,
   dictionary,
+  settings,
   codeUrl,
   electronSign,
   userResume,
diff --git a/src/services/api/settings.ts b/src/services/api/settings.ts
new file mode 100644
index 0000000..68d68c2
--- /dev/null
+++ b/src/services/api/settings.ts
@@ -0,0 +1,20 @@
+/* eslint-disable */
+// @ts-ignore
+import { request } from '@/utils/request';
+
+/** 鏌ヨ寰俊灏忕▼搴忛厤缃俊鎭� GET /api/common/settings/getWxmpSettings */
+export async function getWxmpSettings(
+  // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
+  params: API.APIgetWxmpSettingsParams,
+  options?: API.RequestConfig
+) {
+  return request<API.GetWxmpSettingsQueryResult>('/api/common/settings/getWxmpSettings', {
+    method: 'GET',
+    params: {
+      ...params,
+      request: undefined,
+      ...params['request'],
+    },
+    ...(options || {}),
+  });
+}
diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts
index 2735baf..c9749cb 100644
--- a/src/services/api/typings.d.ts
+++ b/src/services/api/typings.d.ts
@@ -241,8 +241,8 @@
   interface APIgetSettlementTaskUsersParams {
     /** 缁撶畻璁㈠崟Id */
     id?: string;
-    /** 浠诲姟Id */
-    taskInfoId?: string;
+    /** 缁撶畻閫氶亾 */
+    settlementAccess?: EnumEnterpriseWalletAccess;
   }
 
   interface APIgetTaskEnterpriseParams {
@@ -325,6 +325,11 @@
   interface APIgetUserResumeWorkExperienceParams {
     /** 鏌ヨ鐢ㄦ埛绠�鍘�-宸ヤ綔缁忛獙 */
     request?: GetUserResumeWorkExperienceQuery;
+  }
+
+  interface APIgetWxmpSettingsParams {
+    /** 鏌ヨ寰俊灏忕▼搴忛厤缃俊鎭� */
+    request?: GetWxmpSettingsQuery;
   }
 
   interface ApplyTaskCommand {
@@ -877,32 +882,34 @@
     CommonServerSyncDatabase = 8,
     /**鐭俊宸ュ叿 */
     CommonServerSmsUtils = 9,
+    /**閰嶇疆 */
+    CommonServerSettings = 10,
     /**鐢ㄦ埛璁よ瘉 */
-    UserServerAuth = 10,
+    UserServerAuth = 11,
     /**鐢ㄦ埛鑿滃崟 */
-    UserServerMenu = 11,
+    UserServerMenu = 12,
     /**鐢ㄦ埛璧勬簮 */
-    UserServerResource = 12,
+    UserServerResource = 13,
     /**鐢ㄦ埛瑙掕壊 */
-    UserServerRole = 13,
+    UserServerRole = 14,
     /**鐢ㄦ埛淇℃伅 */
-    UserServerUser = 14,
+    UserServerUser = 15,
     /**鐢ㄦ埛閽卞寘 */
-    UserServerUserWallet = 15,
+    UserServerUserWallet = 16,
     /**鐢靛瓙绛� */
-    UserServerElectronSign = 16,
+    UserServerElectronSign = 17,
     /**鐢ㄦ埛绠�鍘� */
-    UserServerUserResume = 17,
+    UserServerUserResume = 18,
     /**浼佷笟淇℃伅 */
-    UserServerEnterprise = 18,
+    UserServerEnterprise = 19,
     /**浼佷笟閽卞寘 */
-    UserServerEnterpriseWallet = 19,
+    UserServerEnterpriseWallet = 20,
     /**鐏靛伐淇℃伅 */
-    UserServerEnterpriseEmployee = 20,
+    UserServerEnterpriseEmployee = 21,
     /**鐢靛瓙绛� */
-    ElectronSignServerElectronSign = 21,
+    ElectronSignServerElectronSign = 22,
     /**鐢靛瓙绛� */
-    ToolServerSms = 22,
+    ToolServerSms = 23,
   }
 
   enum EnumResourceMethod {
@@ -2479,6 +2486,24 @@
     /** 閿欒鐮� */
     errorCode?: string;
     data?: GetUserResumeWorkExperienceQueryResult;
+    /** 鎵ц鎴愬姛 */
+    success?: boolean;
+    /** 閿欒淇℃伅 */
+    msg?: any;
+    /** 闄勫姞鏁版嵁 */
+    extras?: any;
+    /** 鏃堕棿鎴� */
+    timestamp?: number;
+  }
+
+  interface FriendlyResultGetWxmpSettingsQueryResult {
+    /** 璺熻釜Id */
+    traceId?: string;
+    /** 鐘舵�佺爜 */
+    code?: number;
+    /** 閿欒鐮� */
+    errorCode?: string;
+    data?: GetWxmpSettingsQueryResult;
     /** 鎵ц鎴愬姛 */
     success?: boolean;
     /** 閿欒淇℃伅 */
@@ -5360,8 +5385,6 @@
     name?: string;
     /** 韬唤璇佸彿 */
     identity?: string;
-    /** 寰俊寮�鏀綢d */
-    wxmpOpenId?: string;
     /** 鎵嬫満鍙� */
     contactPhoneNumber?: string;
     /** 鎵�灞為摱琛� */
@@ -6095,6 +6118,13 @@
     workSeniority?: string;
     /** 宸ヤ綔缁忛獙 */
     workExperience?: string;
+  }
+
+  type GetWxmpSettingsQuery = Record<string, any>;
+
+  interface GetWxmpSettingsQueryResult {
+    /** 闅愯棌鏀粯瀹� */
+    hiddenAlipay?: boolean;
   }
 
   interface ImportEnterpriseEmployeesCommand {
@@ -7155,7 +7185,6 @@
   interface SureTaskSettlementCommand {
     /** 浠诲姟Id */
     taskInfoId?: string;
-    settlementAccess?: EnumEnterpriseWalletAccess;
   }
 
   type SyncDatabaseCommand = Record<string, any>;
diff --git a/src/views/FinanceManage/BalanceManageDetail.vue b/src/views/FinanceManage/BalanceManageDetail.vue
new file mode 100644
index 0000000..5f22726
--- /dev/null
+++ b/src/views/FinanceManage/BalanceManageDetail.vue
@@ -0,0 +1,196 @@
+<template>
+  <LoadingLayout :loading="isLoading">
+    <AppContainer>
+      <ChunkCell title="璐︽埛淇℃伅">
+        <ProForm :model="form" ref="formRef" label-width="120px" :is-read="true">
+          <ProFormCol>
+            <ProFormColItem :span="8">
+              <ProFormItemV2 label="璐︽埛浣欓:" prop="name">
+                <ProFormInputNumber v-model="form.name" format-value="money"> </ProFormInputNumber>
+              </ProFormItemV2>
+            </ProFormColItem>
+            <ProFormColItem :span="8">
+              <ProFormItemV2 label="璐︽埛绫诲瀷:" prop="settlementAmount">
+                <ProFormSelect v-model="form.name" :valueEnum="[]"> </ProFormSelect>
+              </ProFormItemV2>
+            </ProFormColItem>
+            <ProFormColItem :span="8">
+              <ProFormItemV2 label="鎴峰彿:" prop="actualSettlementAmount">
+                <ProFormText v-model.trim="form.name"> </ProFormText>
+              </ProFormItemV2>
+            </ProFormColItem>
+          </ProFormCol>
+        </ProForm>
+      </ChunkCell>
+      <ChunkCell title="鍙戞斁鏄庣粏" style="flex: 1" class="settlement-user-list-chunk">
+        <ProTableQueryFilterBar @on-reset="reset">
+          <template #query>
+            <QueryFilterItem>
+              <FieldDatePicker
+                v-model="extraParamState.time"
+                type="daterange"
+                range-separator="~"
+                start-placeholder="璧峰鏃ユ湡"
+                end-placeholder="鎴鏃ユ湡"
+                clearable
+                @change="getList()"
+                tooltipContent="鐢宠鏃堕棿"
+              ></FieldDatePicker>
+            </QueryFilterItem>
+          </template>
+          <template #btn>
+            <el-button type="primary" @click="handleExport()">瀵煎嚭</el-button>
+          </template>
+        </ProTableQueryFilterBar>
+        <ProTableV2
+          v-bind="proTableProps"
+          :columns="BalanceManageDetailColumns"
+          :show-operation-column="false"
+        >
+        </ProTableV2>
+      </ChunkCell>
+    </AppContainer>
+  </LoadingLayout>
+</template>
+<script setup lang="ts">
+import {
+  LoadingLayout,
+  AppContainer,
+  ChunkCell,
+  ProForm,
+  ProFormItemV2,
+  ProFormText,
+  ProFormCol,
+  ProFormColItem,
+  FieldDatePicker,
+  ProFormInputNumber,
+  useTable,
+  ProTableV2,
+  QueryFilterItem,
+  ProTableQueryFilterBar,
+  ProFormSelect,
+} from '@bole-core/components';
+import { BalanceManageDetailColumns } from './constants';
+import { useQuery } from '@tanstack/vue-query';
+import * as taskServices from '@/services/api/task';
+import * as taskUserServices from '@/services/api/taskUser';
+import * as userServices from '@/services/api/user';
+import { Message } from '@bole-core/core';
+import { downloadFileByUrl, setOSSLink } from '@/utils';
+import _ from 'lodash';
+import { ModelValueType } from 'element-plus';
+
+defineOptions({
+  name: 'BalanceManageDetail',
+});
+
+const route = useRoute();
+const id = (route.params.id as string) ?? '';
+
+const form = reactive({
+  name: '',
+});
+
+const BaseState = {
+  loading: true,
+};
+
+const state = reactive({ ...BaseState });
+
+const { isLoading, refetch } = useQuery({
+  queryKey: ['taskUserServices/getSettlementTaskUsers', id],
+  queryFn: async () => {
+    return await taskUserServices.getSettlementTaskUsers(
+      { id: id },
+      {
+        showLoading: false,
+      }
+    );
+  },
+  placeholderData: () => ({} as API.GetSettlementTaskUsersQueryResult),
+  onSuccess(res) {
+    if (res?.detail) {
+      form.name = res?.detail?.name;
+    }
+    getList();
+  },
+  enabled: !!id,
+});
+
+const {
+  getDataSource: getList,
+  proTableProps,
+  paginationState,
+  extraParamState,
+  reset,
+} = useTable(
+  async ({ pageIndex, pageSize }, extraParamState) => {
+    try {
+      let params: API.GetPersonalUserWalletBalancesQuery = {
+        pageModel: {
+          rows: pageSize,
+          page: pageIndex,
+          orderInput: extraParamState.orderInput,
+        },
+      };
+
+      let res = await userServices.getPersonalUserWalletBalances(params, {
+        showLoading: !state.loading,
+      });
+      return res;
+    } catch (error) {}
+  },
+  {
+    defaultExtraParams: {
+      time: [] as unknown as ModelValueType,
+      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+    },
+    columnsRenderProps: {
+      balance: { type: 'money' },
+    },
+  }
+);
+
+const handleExport = _.debounce(
+  async () => {
+    if (paginationState.total === 0) {
+      Message.warnMessage('娌℃湁鏁版嵁鍙互瀵煎嚭鍝');
+      return;
+    }
+    try {
+      let params: API.ExportTaskSettlementOrderRostersCommand = {
+        id: id,
+      };
+      let res = await taskServices.exportTaskSettlementOrderRosters(params);
+      if (res) {
+        downloadFileByUrl(setOSSLink(res), `${form.name}`);
+      }
+    } catch (error) {}
+  },
+  1000,
+  { leading: true, trailing: false }
+);
+</script>
+
+<style lang="scss" scoped>
+@use '@/style/common.scss' as *;
+
+.step-wrapper {
+  margin: 0 auto;
+  padding: 24px 0;
+}
+
+.settlement-user-list-chunk {
+  :deep() {
+    .no-data img {
+      width: 280px;
+    }
+  }
+}
+</style>
+<style lang="scss">
+.text-over-tooltip-content {
+  max-width: 600px;
+  word-break: break-all;
+}
+</style>
diff --git a/src/views/FinanceManage/BalanceManageList.vue b/src/views/FinanceManage/BalanceManageList.vue
new file mode 100644
index 0000000..fffc33a
--- /dev/null
+++ b/src/views/FinanceManage/BalanceManageList.vue
@@ -0,0 +1,164 @@
+<template>
+  <LoadingLayout :loading="state.loading">
+    <AppContainer>
+      <ProTableQueryFilterBar @on-reset="reset">
+        <template #query>
+          <QueryFilterItem>
+            <FieldDatePicker
+              v-model="extraParamState.time"
+              type="daterange"
+              range-separator="~"
+              start-placeholder="璧峰鏃ユ湡"
+              end-placeholder="鎴鏃ユ湡"
+              clearable
+              @change="getList()"
+              tooltipContent="鐢宠鏃堕棿"
+            ></FieldDatePicker>
+          </QueryFilterItem>
+          <QueryFilterItem tip-content="鎻愮幇鐘舵��">
+            <FieldRadio
+              v-model="extraParamState.status"
+              :value-enum="[]"
+              buttonStyle
+              showAllBtn
+              @change="getList()"
+            />
+          </QueryFilterItem>
+          <QueryFilterItem>
+            <SearchInput
+              v-model="extraParamState.keywords"
+              style="width: 260px"
+              placeholder="濮撳悕/鐢佃瘽/韬唤璇佸彿"
+              @on-click-search="getList"
+            >
+            </SearchInput>
+          </QueryFilterItem>
+        </template>
+      </ProTableQueryFilterBar>
+      <ProTableV2
+        v-bind="proTableProps"
+        :columns="BalanceManageColumns"
+        :operationBtns="operationBtns"
+      >
+      </ProTableV2>
+    </AppContainer>
+  </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+  ProTableQueryFilterBar,
+  ProTableV2,
+  SearchInput,
+  LoadingLayout,
+  AppContainer,
+  QueryFilterItem,
+  useTable,
+  useFormDialog,
+  defineOperationBtns,
+  FieldDatePicker,
+  FieldRadio,
+} from '@bole-core/components';
+import * as userServices from '@/services/api/user';
+import { BalanceManageColumns } from './constants';
+import { ModelValueType } from 'element-plus';
+
+defineOptions({
+  name: 'BalanceManageList',
+});
+
+const operationBtns = defineOperationBtns([
+  {
+    data: {
+      enCode: 'rechargeBtn',
+      name: '鍏呭��',
+    },
+    emits: {
+      onClick: (role) => openDialog(role),
+    },
+  },
+  {
+    data: {
+      enCode: 'detailBtn',
+      name: '璇︽儏',
+    },
+    emits: {
+      onClick: (role) => goDetail(role),
+    },
+  },
+]);
+
+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.GetPersonalUserWalletBalancesQuery = {
+        pageModel: {
+          rows: pageSize,
+          page: pageIndex,
+          orderInput: extraParamState.orderInput,
+        },
+        keywords: extraParamState.keywords,
+      };
+
+      let res = await userServices.getPersonalUserWalletBalances(params, {
+        showLoading: !state.loading,
+      });
+      return res;
+    } catch (error) {}
+  },
+  {
+    defaultExtraParams: {
+      keywords: '',
+      status: '',
+      time: [] as unknown as ModelValueType,
+      orderInput: [{ property: 'id', order: EnumPagedListOrder.Desc }],
+    },
+    columnsRenderProps: {
+      balance: { type: 'money' },
+    },
+  }
+);
+
+const { dialogProps, handleEdit, editForm } = useFormDialog({
+  defaultFormParams: {
+    id: '',
+    status: '',
+    time: '',
+  },
+});
+
+function openDialog(row) {
+  handleEdit({
+    id: row.id,
+    status: '',
+    time: '',
+  });
+}
+
+function goDetail(row) {
+  router.push({
+    name: 'BalanceManageDetail',
+    params: {
+      id: row?.id ?? '',
+    },
+  });
+}
+</script>
diff --git a/src/views/FinanceManage/constants/columns.ts b/src/views/FinanceManage/constants/columns.ts
index e02e465..3eb234d 100644
--- a/src/views/FinanceManage/constants/columns.ts
+++ b/src/views/FinanceManage/constants/columns.ts
@@ -65,3 +65,69 @@
     name: '璐圭敤锛堝厓锛�',
   },
 ]);
+
+export const BalanceManageColumns = defineColumns([
+  {
+    id: '1',
+    enCode: 'name',
+    name: '璐︽埛绫诲瀷',
+  },
+  {
+    id: '2',
+    enCode: 'name',
+    name: '鎴峰彿',
+  },
+  {
+    id: '3',
+    enCode: 'name',
+    name: '璐︽埛浣欓',
+  },
+]);
+
+export const BalanceManageDetailColumns = defineColumns([
+  {
+    id: '1',
+    enCode: 'name',
+    name: '鍙戞斁鏃ユ湡',
+  },
+  {
+    id: '2',
+    enCode: 'name',
+    name: '娴佹按鍙�',
+  },
+  {
+    id: '3',
+    enCode: 'name',
+    name: '鐘舵��',
+  },
+  {
+    id: '4',
+    enCode: 'name',
+    name: '閲戦',
+  },
+  {
+    id: '5',
+    enCode: 'name',
+    name: '鏀舵浜�',
+  },
+  {
+    id: '6',
+    enCode: 'name',
+    name: '韬唤璇佸彿',
+  },
+  {
+    id: '7',
+    enCode: 'name',
+    name: '鏀舵浜鸿处鎴�',
+  },
+  {
+    id: '8',
+    enCode: 'name',
+    name: '鎻愮幇鏃ユ湡',
+  },
+  {
+    id: '9',
+    enCode: 'name',
+    name: '鐢靛瓙鍥炲崟',
+  },
+]);
diff --git a/src/views/ServiceChargeManage/ServiceChargeDetail.vue b/src/views/ServiceChargeManage/ServiceChargeDetail.vue
index 5a7e3b8..f19dca6 100644
--- a/src/views/ServiceChargeManage/ServiceChargeDetail.vue
+++ b/src/views/ServiceChargeManage/ServiceChargeDetail.vue
@@ -168,6 +168,7 @@
 const route = useRoute();
 const id = (route.params.id as string) ?? '';
 const settlement = (route.query.settlement as string) ?? '';
+const settlementAccess = route.query.settlementAccess ?? '';
 const isSettlement = computed(() => !!settlement);
 
 const form = reactive({
@@ -189,14 +190,17 @@
 const state = reactive({ ...BaseState });
 
 const { isLoading, refetch } = useQuery({
-  queryKey: ['taskUserServices/getSettlementTaskUsers', id],
+  queryKey: ['taskUserServices/getSettlementTaskUsers', id, settlementAccess],
   queryFn: async () => {
-    return await taskUserServices.getSettlementTaskUsers(
-      { id: id },
-      {
-        showLoading: false,
-      }
-    );
+    let params: API.APIgetSettlementTaskUsersParams = {
+      id: id,
+    };
+    if (settlementAccess) {
+      params.settlementAccess = Number(settlementAccess);
+    }
+    return await taskUserServices.getSettlementTaskUsers(params, {
+      showLoading: false,
+    });
   },
   placeholderData: () => ({} as API.GetSettlementTaskUsersQueryResult),
   onSuccess(res) {
@@ -374,7 +378,6 @@
     code: form.code,
     settlementUserCount: form.settlementTaskUsers.length,
     actualSettlementAmount: form.actualSettlementAmount,
-    settlementAccess: '' as any as EnumEnterpriseWalletAccess,
   });
 }
 
@@ -390,7 +393,6 @@
     code: '',
     settlementUserCount: 0,
     actualSettlementAmount: 0,
-    settlementAccess: '' as any as EnumEnterpriseWalletAccess,
   },
 });
 
@@ -402,7 +404,6 @@
   try {
     let params: API.SureTaskSettlementCommand = {
       taskInfoId: id,
-      settlementAccess: settleEditForm.settlementAccess,
     };
     let res = await taskServices.sureTaskSettlement(params);
     if (res) {
diff --git a/src/views/ServiceChargeManage/ServiceChargeManage.vue b/src/views/ServiceChargeManage/ServiceChargeManage.vue
index 541b305..4555ec4 100644
--- a/src/views/ServiceChargeManage/ServiceChargeManage.vue
+++ b/src/views/ServiceChargeManage/ServiceChargeManage.vue
@@ -90,6 +90,7 @@
     <UploadStatementDialog v-bind="dialogProps" />
     <!-- <SettleDetailDialog v-bind="dialogSettleProps" /> -->
     <RechargeEnterpriseWalletDialog v-bind="dialogRechargeProps" />
+    <SettlMethodDialog v-bind="dialogSettlMethodProps" />
   </LoadingLayout>
 </template>
 
@@ -124,6 +125,7 @@
 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';
 
@@ -161,7 +163,7 @@
       name: '缁撶畻',
     },
     emits: {
-      onClick: (role: API.GetSettlementTasksQueryResultItem) => goDetail(role, 'settlement'),
+      onClick: (role: API.GetSettlementTasksQueryResultItem) => openSettleMethodDialog(role),
     },
     extraProps: {
       hide: (role: API.GetSettlementTasksQueryResultItem) =>
@@ -193,7 +195,7 @@
       name: '璇︽儏',
     },
     emits: {
-      onClick: (role: API.GetSettlementTasksQueryResultItem) => goDetail(role),
+      onClick: (role: API.GetSettlementTasksQueryResultItem) => goDetail(role.id),
     },
     // extraProps: {
     //   hide: (role: API.GetSettlementTasksQueryResultItem) =>
@@ -404,14 +406,38 @@
   editForm.settlementUrl = [] as UploadUserFile[];
 }
 
-function goDetail(row: API.GetSettlementTasksQueryResultItem, settlement?: string) {
+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,
+  });
+}
+
+async function handleSettlMethod() {
+  goDetail(settlMethodEditForm.id, 'settlement', settlMethodEditForm.settlementAccess);
+}
+
+function goDetail(id: string, settlement?: string, settlementAccess?: EnumEnterpriseWalletAccess) {
   router.push({
     name: 'ServiceChargeDetail',
     params: {
-      id: row?.id ?? '',
+      id: id ?? '',
     },
     query: {
       settlement: settlement ? settlement : '',
+      settlementAccess: settlementAccess ? settlementAccess : '',
     },
   });
 }
diff --git a/src/views/ServiceChargeManage/components/SettlMethodDialog.vue b/src/views/ServiceChargeManage/components/SettlMethodDialog.vue
new file mode 100644
index 0000000..c89d8aa
--- /dev/null
+++ b/src/views/ServiceChargeManage/components/SettlMethodDialog.vue
@@ -0,0 +1,70 @@
+<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="settlementAccess"
+        :check-rules="[{ message: '璇烽�夋嫨缁撶畻鏂瑰紡' }]"
+      >
+        <ProFormSelect v-model="form.settlementAccess" :valueEnum="settlementAccessList">
+        </ProFormSelect>
+      </ProFormItemV2>
+    </ProForm>
+    <template #footer>
+      <span class="dialog-footer">
+        <el-button @click="emit('onCancel')">鍙栨秷</el-button>
+        <el-button type="primary" @click="emit('onConfirm')">纭</el-button>
+      </span>
+    </template>
+  </ProDialog>
+</template>
+
+<script setup lang="ts">
+import { FormInstance } from 'element-plus';
+import { ProDialog, ProForm, ProFormItemV2, ProFormSelect } from '@bole-core/components';
+import { EnumEnterpriseWalletAccess, EnumEnterpriseWalletAccessTextForSettle } from '@/constants';
+
+defineOptions({
+  name: 'SettlMethodDialog',
+});
+
+type Form = {
+  title?: string;
+  id: string;
+  settlementAccess: EnumEnterpriseWalletAccess;
+};
+
+const { enterpriseWalletAccessSelect } = useEnterpriseWalletAccessSelect();
+
+const settlementAccessList = computed(() => {
+  return enterpriseWalletAccessSelect.value?.length > 0
+    ? enterpriseWalletAccessSelect.value.map((x) => ({
+        label: EnumEnterpriseWalletAccessTextForSettle[x.access],
+        value: x.access,
+      }))
+    : [];
+});
+
+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();
+}
+</script>
diff --git a/src/views/ServiceChargeManage/components/SettleDetailDialog.vue b/src/views/ServiceChargeManage/components/SettleDetailDialog.vue
index 3471814..37f9a14 100644
--- a/src/views/ServiceChargeManage/components/SettleDetailDialog.vue
+++ b/src/views/ServiceChargeManage/components/SettleDetailDialog.vue
@@ -21,14 +21,14 @@
         <ProFormInputNumber v-model="form.actualSettlementAmount" unit="鍏�" format-value="money">
         </ProFormInputNumber>
       </ProFormItemV2>
-      <ProFormItemV2
+      <!-- <ProFormItemV2
         label="缁撶畻鏂瑰紡锛�"
         prop="settlementAccess"
         :check-rules="[{ message: '璇烽�夋嫨缁撶畻鏂瑰紡' }]"
       >
         <ProFormSelect v-model="form.settlementAccess" :valueEnum="settlementAccessList">
         </ProFormSelect>
-      </ProFormItemV2>
+      </ProFormItemV2> -->
     </ProForm>
     <template #footer>
       <span class="dialog-footer">
@@ -62,7 +62,7 @@
   code: string;
   settlementUserCount: number;
   actualSettlementAmount: number;
-  settlementAccess: EnumEnterpriseWalletAccess;
+  // settlementAccess: EnumEnterpriseWalletAccess;
 };
 
 const { enterpriseWalletAccessSelect } = useEnterpriseWalletAccessSelect();

--
Gitblit v1.9.1