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