From f1016ece6cf7934444d5ccae2273a03a7fb623d9 Mon Sep 17 00:00:00 2001 From: Zzz1zz Date: Mon, 28 Jul 2025 23:00:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=AE=BE=E7=BD=AE-=E8=B4=A2=E5=8A=A1?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE-=E8=B4=B9=E9=A1=B9=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/setting.ts | 38 +++- src/composables/useDataTable.ts | 39 +++- src/locale/zh-CN.ts | 1 + src/router/routes/modules/setting.ts | 12 ++ src/types/setting.ts | 44 +++- .../contract-settings/contract-number.vue | 4 +- .../contract-settings/contract-terms.vue | 4 +- .../contract-number-form-drawer.vue} | 2 - .../contract-terms-form-drawer.vue} | 2 - .../drawer/fee-management-drawer.vue | 204 ++++++++++++++++++ .../finance-settings/fee-management-table.vue | 195 +++++++++++++++++ .../finance-settings/fee-management.vue | 66 ++++++ .../setting/system/finance-settings/index.vue | 131 +++++++++++ 13 files changed, 726 insertions(+), 16 deletions(-) rename src/views/setting/system/contract-settings/{modal/contract-number-form-modal.vue => drawer/contract-number-form-drawer.vue} (99%) rename src/views/setting/system/contract-settings/{modal/contract-terms-form-modal.vue => drawer/contract-terms-form-drawer.vue} (98%) create mode 100644 src/views/setting/system/finance-settings/drawer/fee-management-drawer.vue create mode 100644 src/views/setting/system/finance-settings/fee-management-table.vue create mode 100644 src/views/setting/system/finance-settings/fee-management.vue create mode 100644 src/views/setting/system/finance-settings/index.vue diff --git a/src/api/setting.ts b/src/api/setting.ts index b344a22..3cedd26 100644 --- a/src/api/setting.ts +++ b/src/api/setting.ts @@ -30,6 +30,10 @@ import { TenantDictionaryType, SettingContractNumbeRes, CreateCodeSettingParam, + FeeManagementListRes, + CreateFeeParams, + FeeManagementDetailRes, + FeeSelectListParams, } from '@/types/setting'; import { HttpResponse } from './interceptor'; @@ -328,7 +332,6 @@ export function getCodeSettingList( ): Promise { return axios.post(`contractSetting/getCodeSettingList`, params); } - // 合同设置-合同条款设置-全部启用列表 export function getAllTermsSettingList(): Promise { return axios.get(`contractSetting/getAllTermsSettingList`); @@ -367,3 +370,36 @@ export function getTermsSettingList( ): Promise { return axios.post(`contractSetting/getTermsSettingList`, params); } + +// 合同设置-财务设置-全部列表(带分页) +export function getFeeList( + params: PaginationParams +): Promise { + return axios.post(`financeSetting/getFeeList`, params); +} +// 合同设置-财务设置-新增 +export function createFee(params: CreateFeeParams): Promise { + return axios.post(`financeSetting/createFee`, params); +} +// 合同设置-财务设置-编辑 +export function updateFee(params: CreateFeeParams): Promise { + return axios.post(`financeSetting/updateFee`, params); +} +// 合同设置-财务设置-删除 +export function delFee(id: number): Promise { + return axios.get(`financeSetting/delFee?id=${id}`); +} +// 合同设置-财务设置-单个详情 +export function getFeeFromId(id: number): Promise { + return axios.get(`financeSetting/getFee?id=${id}`); +} +// 合同设置-财务设置-启用/禁用 +export function disableFee(params: DisableUserParam): Promise { + return axios.post(`financeSetting/disableFee`, params); +} +// 合同设置-财务设置-获取下拉列表 +export function getUseFeeList( + params: FeeSelectListParams +): Promise { + return axios.post(`financeSetting/getUseFeeList`, params); +} diff --git a/src/composables/useDataTable.ts b/src/composables/useDataTable.ts index c4638da..36b64d4 100644 --- a/src/composables/useDataTable.ts +++ b/src/composables/useDataTable.ts @@ -67,6 +67,12 @@ interface UseDataTableReturn { stripe: boolean; tableLayout: 'auto' | 'fixed'; }; + // 设置页码 + setPageSizeOptions: (sizeOptions: number[]) => void; + pageSizeOptions: Ref; + // setShowTotal: (val: boolean) => void; + // setShowJumper: (val: boolean) => void; + // setShowPageSize: (val: boolean) => void; } export default function useDataTable( @@ -93,16 +99,19 @@ export default function useDataTable( const current = ref(initialPage); const pageSize = ref(initialPageSize); const total = ref(0); - + const copyPageSizeOptions = ref(pageSizeOptions); + const copyShowTotal = ref(showTotal); + const copyShowJumper = ref(showJumper); + const copyShowPageSize = ref(showPageSize); // 分页配置 const pagination = computed(() => ({ current: current.value, pageSize: pageSize.value, total: total.value, - showTotal, - showJumper, - showPageSize, - pageSizeOptions, + showTotal: copyShowTotal.value, + showJumper: copyShowJumper.value, + showPageSize: copyShowPageSize.value, + pageSizeOptions: copyPageSizeOptions.value, })); // 表格配置 @@ -145,7 +154,21 @@ export default function useDataTable( // 切换每页条数时重置到第一页 current.value = 1; }; + const setPageSizeOptions = (sizeOptions: number[]) => { + copyPageSizeOptions.value = sizeOptions; + }; + // const setShowTotal = (val: boolean) => { + // copyShowTotal.value = val; + // }; + + // const setShowJumper = (val: boolean) => { + // copyShowJumper.value = val; + // }; + + // const setShowPageSize = (val: boolean) => { + // copyShowPageSize.value = val; + // }; // 重置分页 const resetPagination = () => { current.value = initialPage; @@ -168,5 +191,11 @@ export default function useDataTable( setPageSize, resetPagination, tableConfig, + setPageSizeOptions, + pageSizeOptions: copyPageSizeOptions, + + // setShowTotal, + // setShowJumper, + // setShowPageSize, }; } diff --git a/src/locale/zh-CN.ts b/src/locale/zh-CN.ts index 292c964..fa7049e 100644 --- a/src/locale/zh-CN.ts +++ b/src/locale/zh-CN.ts @@ -121,6 +121,7 @@ export default { 'setting.process': '流程设置', 'setting.project': '项目设置', 'setting.contract': '合同设置', + 'setting.finance': '财务设置', 'setting.data-dictionary': '数据字典', ...localeSettings, diff --git a/src/router/routes/modules/setting.ts b/src/router/routes/modules/setting.ts index 58dbde0..14c05b8 100644 --- a/src/router/routes/modules/setting.ts +++ b/src/router/routes/modules/setting.ts @@ -126,6 +126,18 @@ const SETTING: AppRouteRecordRaw = { roles: ['*'], }, }, + // 财务设置 + { + path: 'finance', + name: 'system-setting-finance', + component: () => + import('@/views/setting/system/finance-settings/index.vue'), + meta: { + locale: 'setting.finance', + requiresAuth: true, + roles: ['*'], + }, + }, // 数据字典 { path: 'data-dictionary', diff --git a/src/types/setting.ts b/src/types/setting.ts index a7f528e..77c1d22 100644 --- a/src/types/setting.ts +++ b/src/types/setting.ts @@ -28,7 +28,11 @@ export type ProjectTypeChecked = 0 | 1; // 是否选择:1是 0否 export type TenantDictionaryType = 1 | 2 | 3 | 4; // 类型:1租客类型,2租客来源,3租客行业分类,4租客企业规模 export type ContractSettingStatus = 0 | 1; // 0不回收,1回收 export type delCodeRecycling = 0 | 1; // 删除合同编号回收:0不回收,1回收 -export type cancelCodeRecycling = 0 | 1; +export type cancelCodeRecycling = 0 | 1; // 作废合同编号回收:0不回收,1回收 +export type CommStatus = 1 | 2; // 1:是 2否 +export type FeeManagementType = 1 | 2; // 费项属性:1收入费项,2支出费项 +export type FeeType = 1 | 2 | 3 | 4; // 费项类型:1租赁类,2物业类,3特殊类,4其他类 + // ==================== 部门相关类型 ==================== export interface DepartmentFormParams { parent_id: number | null; @@ -244,7 +248,36 @@ export interface CreateCodeSettingParam { del_code_recycling: delCodeRecycling; arrange: ArrangeInfo[]; } - +export interface FeeManagement extends BaseEntity { + name: string; // 名称 + type: CommStatus; // 是否为系统类型:1是 2否 + feeAttribute: FeeManagementType; // 费项属性:1收入费项,2支出费项 + feeType: FeeType; // 费项类型:1租赁类,2物业类,3特殊类,4其他类 + isBond: CommStatus; // 是否保证金:1是,2否 + taxRate: string; // 税率% + status: UserStatus; // 状态:1 启用,2 禁用 + createUserId: number; + isDelete: number; + statusStr: string; // 状态名称 + feeAttributeStr: string; // 费项属性名称 + feeTypeStr: string; // 费项类型名称 + isBondStr: string; // 是否保证金状态名称 + createdAt: string; + updatedAt: string; +} +export interface CreateFeeParams { + id?: number; + name: string; + fee_attribute: FeeManagementType; + fee_type: FeeType; + is_bond: CommStatus; + tax_rate: string; +} +export interface FeeSelectListParams { + fee_attribute: FeeManagementType; // 费项属性:1收入费项,2支出费项 + fee_type: FeeType; // 费项类型:1租赁类,2物业类,3特殊类,4其他类 + is_bond: CommStatus; // 是否保证金:1是,2否 +} // ==================== 响应类型别名 ==================== export type DepartmentFormRes = HttpResponse; export type DepartmentList = DepartmentItem[]; @@ -285,3 +318,10 @@ export type SettingContractNumbeRes = HttpResponse<{ contractCodeSetting: ContractTermInfo[]; page?: PaginationParams & PaginationResult; }>; +export type FeeManagementListRes = HttpResponse<{ + list: FeeManagement[]; + page?: PaginationParams & PaginationResult; +}>; +export type FeeManagementDetailRes = HttpResponse<{ + fee: FeeManagement; +}>; diff --git a/src/views/setting/system/contract-settings/contract-number.vue b/src/views/setting/system/contract-settings/contract-number.vue index 4b9ff74..8c49f58 100644 --- a/src/views/setting/system/contract-settings/contract-number.vue +++ b/src/views/setting/system/contract-settings/contract-number.vue @@ -46,7 +46,7 @@ - - import { ref, watch, reactive, computed } from 'vue'; - import { useI18n } from 'vue-i18n'; import type { FormInstance } from '@arco-design/web-vue'; import { Message } from '@arco-design/web-vue'; import { createCodeSetting, updateCodeSetting } from '@/api/setting'; @@ -143,7 +142,6 @@ arrange: arrangeList.value, }; const form = reactive({ ...defaultForm }); - const { t } = useI18n(); // 校验规则 const rules = reactive({ name: [{ required: true, message: '请输入合同编号' }], diff --git a/src/views/setting/system/contract-settings/modal/contract-terms-form-modal.vue b/src/views/setting/system/contract-settings/drawer/contract-terms-form-drawer.vue similarity index 98% rename from src/views/setting/system/contract-settings/modal/contract-terms-form-modal.vue rename to src/views/setting/system/contract-settings/drawer/contract-terms-form-drawer.vue index ce83080..c136996 100644 --- a/src/views/setting/system/contract-settings/modal/contract-terms-form-modal.vue +++ b/src/views/setting/system/contract-settings/drawer/contract-terms-form-drawer.vue @@ -42,7 +42,6 @@ + + diff --git a/src/views/setting/system/finance-settings/fee-management-table.vue b/src/views/setting/system/finance-settings/fee-management-table.vue new file mode 100644 index 0000000..7a86995 --- /dev/null +++ b/src/views/setting/system/finance-settings/fee-management-table.vue @@ -0,0 +1,195 @@ + + + diff --git a/src/views/setting/system/finance-settings/fee-management.vue b/src/views/setting/system/finance-settings/fee-management.vue new file mode 100644 index 0000000..11087e1 --- /dev/null +++ b/src/views/setting/system/finance-settings/fee-management.vue @@ -0,0 +1,66 @@ + + + diff --git a/src/views/setting/system/finance-settings/index.vue b/src/views/setting/system/finance-settings/index.vue new file mode 100644 index 0000000..ed4766f --- /dev/null +++ b/src/views/setting/system/finance-settings/index.vue @@ -0,0 +1,131 @@ + + + + +