From ff528ae7eff196a72f1da12eb572f70062c70295 Mon Sep 17 00:00:00 2001 From: Zzz1zz Date: Wed, 30 Jul 2025 00:10:48 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=AE=BE=E7=BD=AE-=E5=90=88=E5=90=8C?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE-=E5=90=88=E5=90=8C=E6=9D=A1=E6=AC=BE?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintrc.js | 3 +- src/api/setting.ts | 11 +- src/types/setting.ts | 30 +++- src/utils/constant.ts | 11 ++ .../contract-settings/contract-terms.vue | 34 ++-- .../drawer/contract-terms-form-drawer.vue | 167 ++++++++++++++---- .../drawer/fee-management-drawer.vue | 9 +- 7 files changed, 199 insertions(+), 66 deletions(-) create mode 100644 src/utils/constant.ts diff --git a/.eslintrc.js b/.eslintrc.js index ceb29c9..a986ff1 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -42,7 +42,8 @@ module.exports = { 'vue/singleline-html-element-content-newline': 0, 'vue/max-attributes-per-line': 0, // Vue: Add extra rules - 'vue/custom-event-name-casing': [2, 'camelCase'], + 'vue/custom-event-name-casing': [0, 'camelCase'], + 'camelcase': ['warn', { properties: 'never' }], 'vue/no-v-text': 1, 'vue/padding-line-between-blocks': 1, 'vue/require-direct-export': 1, diff --git a/src/api/setting.ts b/src/api/setting.ts index 3cedd26..5606fee 100644 --- a/src/api/setting.ts +++ b/src/api/setting.ts @@ -34,6 +34,9 @@ import { CreateFeeParams, FeeManagementDetailRes, FeeSelectListParams, + CreateTermSettingParam, + SettingContractTermListRes, + SettingContractTermInfo, } from '@/types/setting'; import { HttpResponse } from './interceptor'; @@ -338,13 +341,13 @@ export function getAllTermsSettingList(): Promise { } // 合同设置-合同条款设置-新增 export function createTermsSetting( - params: CreateCodeSettingParam + params: CreateTermSettingParam ): Promise { return axios.post(`contractSetting/createTermsSetting`, params); } // 合同设置-合同条款设置-编辑 export function updateTermsSetting( - params: CreateCodeSettingParam + params: CreateTermSettingParam ): Promise { return axios.post(`contractSetting/updateTermsSetting`, params); } @@ -355,7 +358,7 @@ export function delTermsSetting(id: number): Promise { // 合同设置-合同条款设置-单个详情 export function getTermsSettingFromId( id: number -): Promise { +): Promise { return axios.get(`contractSetting/getTermsSetting?id=${id}`); } // 合同设置-合同条款设置-启用/禁用 @@ -367,7 +370,7 @@ export function disableTermsSetting( // 合同设置-合同条款设置-列表(带分页) export function getTermsSettingList( params: PaginationParams -): Promise { +): Promise { return axios.post(`contractSetting/getTermsSettingList`, params); } diff --git a/src/types/setting.ts b/src/types/setting.ts index 77c1d22..9d4e737 100644 --- a/src/types/setting.ts +++ b/src/types/setting.ts @@ -273,10 +273,31 @@ export interface CreateFeeParams { is_bond: CommStatus; tax_rate: string; } +export interface CreateTermSettingParam { + id?: number; // id + name: string; // 名称 + type: FeeType; // 条款类型:1租赁类,2物业类,3特殊类,4其他类 + is_fee: CommStatus; // 是否勾选费项:1是,2否 + finance_fee_id: number | null; // 财务费项id(除保证金外 + finance_fee_periodicity: 1 | 2; // 周期性:1周期性付款,2一次性付款 + is_bond: CommStatus; // 是否勾选保证金:1是,2否 + finance_bond_fee_id: number | null; // 财务保证金费项id + is_incremental: CommStatus; // 是否勾选递增项:1是,2否 + is_discount: CommStatus; // 是否勾选优惠项:1是,2否 + is_late_fee: CommStatus; // 是否勾选滞纳金:1是,2否 +} +export interface TermSettingItem { + id: number; // id + name: string; // 条款名称 + type: string; // 条款类型 + feeStr: string; // 条款项 + status: string; // 状态:1 启用,2 禁用 +} + export interface FeeSelectListParams { fee_attribute: FeeManagementType; // 费项属性:1收入费项,2支出费项 fee_type: FeeType; // 费项类型:1租赁类,2物业类,3特殊类,4其他类 - is_bond: CommStatus; // 是否保证金:1是,2否 + is_bond?: CommStatus; // 是否保证金:1是,2否 } // ==================== 响应类型别名 ==================== export type DepartmentFormRes = HttpResponse; @@ -325,3 +346,10 @@ export type FeeManagementListRes = HttpResponse<{ export type FeeManagementDetailRes = HttpResponse<{ fee: FeeManagement; }>; +export type SettingContractTermListRes = HttpResponse<{ + contractTermsSetting: TermSettingItem[]; + page?: PaginationParams & PaginationResult; +}>; +export type SettingContractTermInfo = HttpResponse<{ + contractTermsSetting: TermSettingItem; +}>; diff --git a/src/utils/constant.ts b/src/utils/constant.ts new file mode 100644 index 0000000..5d42701 --- /dev/null +++ b/src/utils/constant.ts @@ -0,0 +1,11 @@ +export const feeTypeList = [ + { value: 1, label: '租赁类' }, + { value: 2, label: '物业类' }, + { value: 3, label: '特殊类' }, + { value: 4, label: '其他类' }, +]; +export const financeFeeFeriodicityList = [ + { value: 1, label: '周期性付款' }, + { value: 2, label: '一次性付款' }, +]; +export default {}; diff --git a/src/views/setting/system/contract-settings/contract-terms.vue b/src/views/setting/system/contract-settings/contract-terms.vue index 16eb641..b205a0f 100644 --- a/src/views/setting/system/contract-settings/contract-terms.vue +++ b/src/views/setting/system/contract-settings/contract-terms.vue @@ -21,9 +21,9 @@