From 8aa873443635dfb23cb068cb5cf9d7fd6344afcd Mon Sep 17 00:00:00 2001 From: liuhuayong <995058772@qq.com> Date: Sat, 27 Jun 2026 10:21:39 +0800 Subject: [PATCH] =?UTF-8?q?feat(edu):=20=E7=BC=B4=E8=B4=B9=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E5=89=8D=E7=AB=AF=20API+=E7=B1=BB=E5=9E=8B,=20?= =?UTF-8?q?=E5=90=88=E5=90=8C=E7=B1=BB=E5=9E=8B=E6=89=A9=E5=B1=95=20instal?= =?UTF-8?q?lmentCount/paymentPlans/totalAmount?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/edu/contract/types.ts | 10 ++++++++ src/api/edu/payment-plan/index.ts | 18 +++++++++++++ src/api/edu/payment-plan/types.ts | 42 +++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 src/api/edu/payment-plan/index.ts create mode 100644 src/api/edu/payment-plan/types.ts diff --git a/src/api/edu/contract/types.ts b/src/api/edu/contract/types.ts index 9af746d..5a24f92 100644 --- a/src/api/edu/contract/types.ts +++ b/src/api/edu/contract/types.ts @@ -37,6 +37,8 @@ export const paymentMethodOptions = [ { label: '信用卡', value: 'CARD' } ]; +import type { PaymentPlanVO, PaymentPlanForm } from '@/api/edu/payment-plan/types'; + export interface ContractPackageVO { id: number | string; contractId: number | string; @@ -141,6 +143,8 @@ export interface ContractVO extends BaseEntity { logs: any[]; /** 里程碑列表(升学服务合同) */ milestones?: any[]; + /** 缴费计划列表(分期合同) */ + paymentPlans?: PaymentPlanVO[]; } export interface ContractForm { @@ -161,6 +165,12 @@ export interface ContractForm { isInstallment: string; installmentSecond: number; installmentThird: number; + /** 分期数 2 或 3 */ + installmentCount?: number; + /** 缴费计划明细(分期时携带) */ + paymentPlans?: PaymentPlanForm[]; + /** 应收总额(前端汇总展示, 后端汇总覆盖) */ + totalAmount?: number; actualTotalReceived: number; settlementDate: string; signPerson: string; diff --git a/src/api/edu/payment-plan/index.ts b/src/api/edu/payment-plan/index.ts new file mode 100644 index 0000000..06b147d --- /dev/null +++ b/src/api/edu/payment-plan/index.ts @@ -0,0 +1,18 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { PaymentPlanVO, PaymentReceiveForm, EduPaymentPlanBoPayload } from './types'; + +// 查询某合同的缴费计划列表 +export function listPaymentPlan(contractId: number | string): AxiosPromise { + return request({ url: '/edu/contract/payment-plan/list/' + contractId, method: 'get' }); +} + +// 修改单期计划(仅待收态) +export function updatePaymentPlan(data: EduPaymentPlanBoPayload) { + return request({ url: '/edu/contract/payment-plan', method: 'put', data }); +} + +// 收款确认(联动账本) +export function receivePayment(data: PaymentReceiveForm) { + return request({ url: '/edu/contract/payment-plan/receive', method: 'put', data }); +} diff --git a/src/api/edu/payment-plan/types.ts b/src/api/edu/payment-plan/types.ts new file mode 100644 index 0000000..199a899 --- /dev/null +++ b/src/api/edu/payment-plan/types.ts @@ -0,0 +1,42 @@ +export const paymentPlanStatusOptions = [ + { label: '待收', value: '0', elTagType: 'warning' }, + { label: '已收', value: '1', elTagType: 'success' }, + { label: '已作废', value: '4', elTagType: 'info' } +]; + +export interface PaymentPlanVO { + id: number | string; + contractId: number | string; + installmentNo: number; + planAmount: number; + planDate: string; + paidAmount: number; + paidDate: string; + paymentMethod: string; + status: string; + remark: string; +} + +/** 表单用: 新增/修改合同时携带的计划明细 */ +export interface PaymentPlanForm { + installmentNo: number; + planAmount: number; + planDate: string; +} + +/** 修改单期计划载荷(匹配后端 EduPaymentPlanBo) */ +export interface EduPaymentPlanBoPayload { + id: number | string; + planAmount?: number; + planDate?: string; + remark?: string; +} + +/** 收款确认表单 */ +export interface PaymentReceiveForm { + id: number | string; + paidAmount: number; + paymentMethod: string; + paidDate: string; + remark?: string; +}