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