From ca45a573cc4407998413b225bb0b2852636b1d46 Mon Sep 17 00:00:00 2001 From: xs Date: Mon, 9 Mar 2026 15:41:37 +0800 Subject: [PATCH] =?UTF-8?q?1.3.0=E5=89=8D=E7=AB=AF=EF=BC=9A=20=20=20=20fea?= =?UTF-8?q?t(=E5=BA=94=E6=94=B6=E6=AC=BE):=E5=BA=94=E6=94=B6=E6=AC=BE?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/oa/erp/contractPaymentMethod/index.ts | 13 + src/api/oa/erp/finAccountInstallment/index.ts | 76 + src/api/oa/erp/finAccountInstallment/types.ts | 201 ++ src/api/oa/erp/finAccountReceivable/index.ts | 105 + src/api/oa/erp/finAccountReceivable/types.ts | 326 +++ .../oa/erp/finAccountReceivableStage/index.ts | 76 + .../oa/erp/finAccountReceivableStage/types.ts | 191 ++ src/api/oa/erp/projectInfo/index.ts | 12 + src/router/index.ts | 13 - .../oa/components/ContractSelectDialog.vue | 173 ++ .../oa/components/ProjectSelectDialog.vue | 189 ++ .../oa/erp/finAccountReceivable/edit.vue | 1999 +++++++++++++++++ .../oa/erp/finAccountReceivable/index.vue | 1384 ++++++++++++ src/views/oa/finAccountInstallment/index.vue | 357 +++ 14 files changed, 5102 insertions(+), 13 deletions(-) create mode 100644 src/api/oa/erp/finAccountInstallment/index.ts create mode 100644 src/api/oa/erp/finAccountInstallment/types.ts create mode 100644 src/api/oa/erp/finAccountReceivable/index.ts create mode 100644 src/api/oa/erp/finAccountReceivable/types.ts create mode 100644 src/api/oa/erp/finAccountReceivableStage/index.ts create mode 100644 src/api/oa/erp/finAccountReceivableStage/types.ts create mode 100644 src/views/oa/components/ContractSelectDialog.vue create mode 100644 src/views/oa/components/ProjectSelectDialog.vue create mode 100644 src/views/oa/erp/finAccountReceivable/edit.vue create mode 100644 src/views/oa/erp/finAccountReceivable/index.vue create mode 100644 src/views/oa/finAccountInstallment/index.vue diff --git a/src/api/oa/erp/contractPaymentMethod/index.ts b/src/api/oa/erp/contractPaymentMethod/index.ts index 458ee12..9687fc3 100644 --- a/src/api/oa/erp/contractPaymentMethod/index.ts +++ b/src/api/oa/erp/contractPaymentMethod/index.ts @@ -74,3 +74,16 @@ export function getErpContractPaymentMethodList (query) { params: query }); }; + +/** + * 查询合同付款方式列表,left join base_payment_stage + * @param query + * @returns {*} + */ +export function getErpContractPaymentMethodJoinList (query) { + return request({ + url: '/oa/erp/contractPaymentMethod/getErpContractPaymentMethodJoinList', + method: 'get', + params: query + }); +}; diff --git a/src/api/oa/erp/finAccountInstallment/index.ts b/src/api/oa/erp/finAccountInstallment/index.ts new file mode 100644 index 0000000..a9ccadc --- /dev/null +++ b/src/api/oa/erp/finAccountInstallment/index.ts @@ -0,0 +1,76 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { FinAccountInstallmentVO, FinAccountInstallmentForm, FinAccountInstallmentQuery } from '@/api/oa/erp/finAccountInstallment/types'; + +/** + * 查询分款信息列表 + * @param query + * @returns {*} + */ + +export const listFinAccountInstallment = (query?: FinAccountInstallmentQuery): AxiosPromise => { + return request({ + url: '/oa/erp/finAccountInstallment/list', + method: 'get', + params: query + }); +}; + +/** + * 查询分款信息详细 + * @param accountInstallmentId + */ +export const getFinAccountInstallment = (accountInstallmentId: string | number): AxiosPromise => { + return request({ + url: '/oa/erp/finAccountInstallment/' + accountInstallmentId, + method: 'get' + }); +}; + +/** + * 新增分款信息 + * @param data + */ +export const addFinAccountInstallment = (data: FinAccountInstallmentForm) => { + return request({ + url: '/oa/erp/finAccountInstallment', + method: 'post', + data: data + }); +}; + +/** + * 修改分款信息 + * @param data + */ +export const updateFinAccountInstallment = (data: FinAccountInstallmentForm) => { + return request({ + url: '/oa/erp/finAccountInstallment', + method: 'put', + data: data + }); +}; + +/** + * 删除分款信息 + * @param accountInstallmentId + */ +export const delFinAccountInstallment = (accountInstallmentId: string | number | Array) => { + return request({ + url: '/oa/erp/finAccountInstallment/' + accountInstallmentId, + method: 'delete' + }); +}; + +/** + * 下拉框查询分款信息列表 + * @param query + * @returns {*} + */ +export function getErpFinAccountInstallmentList (query) { + return request({ + url: '/oa/erp/finAccountInstallment/getErpFinAccountInstallmentList', + method: 'get', + params: query + }); +}; diff --git a/src/api/oa/erp/finAccountInstallment/types.ts b/src/api/oa/erp/finAccountInstallment/types.ts new file mode 100644 index 0000000..a1ab637 --- /dev/null +++ b/src/api/oa/erp/finAccountInstallment/types.ts @@ -0,0 +1,201 @@ +export interface FinAccountInstallmentVO { + /** + * 分款ID + */ + accountInstallmentId: string | number; + + /** + * 分款编号 + */ + installmentCode: string; + + /** + * 客户ID,关联crm_customer_info + */ + customerId: string | number; + + /** + * 客户名称,冗余 + */ + customerName: string; + + /** + * 货币类型(CNY/USD/EUR),默认CNY + */ + currency: string; + + /** + * 回款金额 + */ + paymentAmount: number; + + /** + * 回款日期 + */ + paymentDate: string; + + /** + * 备注 + */ + remark: string; + + /** + * 发出人员 + */ + dispatchUserId: string | number; + + /** + * 发出部门 + */ + dispatchDeptId: string | number; + + /** + * 发出日期 + */ + dispatchDate: string; + + /** + * 分款状态(0草稿 1已发出 2分款完成) + */ + installmentStatus: string; + + /** + * 客户经理 + */ + accountManageId: string | number; + +} + +export interface FinAccountInstallmentForm extends BaseEntity { + /** + * 分款ID + */ + accountInstallmentId?: string | number; + + /** + * 分款编号 + */ + installmentCode?: string; + + /** + * 客户ID,关联crm_customer_info + */ + customerId?: string | number; + + /** + * 客户名称,冗余 + */ + customerName?: string; + + /** + * 货币类型(CNY/USD/EUR),默认CNY + */ + currency?: string; + + /** + * 回款金额 + */ + paymentAmount?: number; + + /** + * 回款日期 + */ + paymentDate?: string; + + /** + * 备注 + */ + remark?: string; + + /** + * 发出人员 + */ + dispatchUserId?: string | number; + + /** + * 发出部门 + */ + dispatchDeptId?: string | number; + + /** + * 发出日期 + */ + dispatchDate?: string; + + /** + * 分款状态(0草稿 1已发出 2分款完成) + */ + installmentStatus?: string; + + /** + * 客户经理 + */ + accountManageId?: string | number; + +} + +export interface FinAccountInstallmentQuery extends PageQuery { + + /** + * 分款编号 + */ + installmentCode?: string; + + /** + * 客户ID,关联crm_customer_info + */ + customerId?: string | number; + + /** + * 客户名称,冗余 + */ + customerName?: string; + + /** + * 货币类型(CNY/USD/EUR),默认CNY + */ + currency?: string; + + /** + * 回款金额 + */ + paymentAmount?: number; + + /** + * 回款日期 + */ + paymentDate?: string; + + /** + * 发出人员 + */ + dispatchUserId?: string | number; + + /** + * 发出部门 + */ + dispatchDeptId?: string | number; + + /** + * 发出日期 + */ + dispatchDate?: string; + + /** + * 分款状态(0草稿 1已发出 2分款完成) + */ + installmentStatus?: string; + + /** + * 客户经理 + */ + accountManageId?: string | number; + + /** + * 日期范围参数 + */ + params?: any; +} + + + diff --git a/src/api/oa/erp/finAccountReceivable/index.ts b/src/api/oa/erp/finAccountReceivable/index.ts new file mode 100644 index 0000000..2a7892e --- /dev/null +++ b/src/api/oa/erp/finAccountReceivable/index.ts @@ -0,0 +1,105 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { FinAccountReceivableVO, FinAccountReceivableForm, FinAccountReceivableQuery } from '@/api/oa/erp/finAccountReceivable/types'; + +/** + * 查询应收款信息列表 + * @param query + * @returns {*} + */ + +export const listFinAccountReceivable = (query?: FinAccountReceivableQuery): AxiosPromise => { + return request({ + url: '/oa/erp/finAccountReceivable/list', + method: 'get', + params: query + }); +}; + +/** + * 查询应收款信息详细 + * @param accountReceivableId + */ +export const getFinAccountReceivable = (accountReceivableId: string | number): AxiosPromise => { + return request({ + url: '/oa/erp/finAccountReceivable/' + accountReceivableId, + method: 'get' + }); +}; + +/** + * 新增应收款信息 + * @param data + */ +export const addFinAccountReceivable = (data: FinAccountReceivableForm) => { + return request({ + url: '/oa/erp/finAccountReceivable', + method: 'post', + data: data + }); +}; + +/** + * 修改应收款信息 + * @param data + */ +export const updateFinAccountReceivable = (data: FinAccountReceivableForm) => { + return request({ + url: '/oa/erp/finAccountReceivable', + method: 'put', + data: data + }); +}; + +/** + * 删除应收款信息 + * @param accountReceivableId + */ +export const delFinAccountReceivable = (accountReceivableId: string | number | Array) => { + return request({ + url: '/oa/erp/finAccountReceivable/' + accountReceivableId, + method: 'delete' + }); +}; + +/** + * 下拉框查询应收款信息列表 + * @param query + * @returns {*} + */ +export function getErpFinAccountReceivableList(query) { + return request({ + url: '/oa/erp/finAccountReceivable/getErpFinAccountReceivableList', + method: 'get', + params: query + }); +} + +/** + * 编辑时查询应收款节点信息列表,right join 应收款节点信息erp_fin_account_receivable_stage + * @param query + * @returns {*} + */ +export function getErpFinAccountReceivableStageList(query) { + return request({ + url: '/oa/erp/finAccountReceivable/getErpFinAccountReceivableStageList', + method: 'get', + params: query + }); +} + + +/** + * 新增时查询应收款节点信息列表,right join 应收款节点信息erp_fin_account_receivable_stage + * @param query + * @returns {*} + */ +export function getErpContractPaymentMethodJoinList(query) { + return request({ + url: '/oa/erp/finAccountReceivable/getErpContractPaymentMethodJoinList', + method: 'get', + params: query + }); +} + + diff --git a/src/api/oa/erp/finAccountReceivable/types.ts b/src/api/oa/erp/finAccountReceivable/types.ts new file mode 100644 index 0000000..aa05835 --- /dev/null +++ b/src/api/oa/erp/finAccountReceivable/types.ts @@ -0,0 +1,326 @@ +export interface FinAccountReceivableVO { + /** + * 应收款ID + */ + accountReceivableId: string | number; + + /** + * 集团应收模板编号 + */ + invoiceCode: string; + + /** + * 项目ID + */ + projectId: string | number; + + /** + * 项目大类,自填 + */ + projectCategory: number; + + /** + * 项目小类,自填 + */ + projectType: string; + + /** + * 合同ID + */ + contractId: string | number; + + /** + * 总包,自填 + */ + generalContractor: string; + + /** + * 客户简称,自填 + */ + customerAbbreviation: string; + + /** + * 合同签订方,自填 + */ + contractParties: string; + + /** + * WBS.元素,自填 + */ + wbsElement: string; + + /** + * 行项目,自填 + */ + lineItem: string; + + /** + * 项目状态,自填 + */ + projectStatus: string; + + /** + * 结算月份,自填 + */ + settlementMonth: string; + + /** + * 收入,自填 + */ + income: number; + + /** + * 背靠背比例,自填 + */ + backToBackRatio: number; + + /** + * 币种,自填 + */ + currency: string; + + /** + * 开票金额,开票流程上线后可自动取数 + */ + invoiceAmount: number; + + /** + * 合同金额(主),合同台账 + */ + totalPrice: number; + + /** + * 合同金额(海威),合同台账 + */ + totalPriceHighway: number; + + /** + * 合同金额-原币(海威),合同台账 + */ + totalPriceOri: number; + + /** + * 汇率,合同台账 + */ + exchangeRate: number; + +} + +export interface FinAccountReceivableForm extends BaseEntity { + /** + * 应收款ID + */ + accountReceivableId?: string | number; + + /** + * 集团应收模板编号 + */ + invoiceCode?: string; + + /** + * 项目ID + */ + projectId?: string | number; + + /** + * 项目大类,自填 + */ + projectCategory?: number; + + /** + * 项目小类,自填 + */ + projectType?: string; + + /** + * 合同ID + */ + contractId?: string | number; + + /** + * 总包,自填 + */ + generalContractor?: string; + + /** + * 客户简称,自填 + */ + customerAbbreviation?: string; + + /** + * 合同签订方,自填 + */ + contractParties?: string; + + /** + * WBS.元素,自填 + */ + wbsElement?: string; + + /** + * 行项目,自填 + */ + lineItem?: string; + + /** + * 项目状态,自填 + */ + projectStatus?: string; + + /** + * 结算月份,自填 + */ + settlementMonth?: string; + + /** + * 收入,自填 + */ + income?: number; + + /** + * 背靠背比例,自填 + */ + backToBackRatio?: number; + + /** + * 币种,自填 + */ + currency?: string; + + /** + * 开票金额,开票流程上线后可自动取数 + */ + invoiceAmount?: number; + + /** + * 合同金额(主),合同台账 + */ + totalPrice?: number; + + /** + * 合同金额(海威),合同台账 + */ + totalPriceHighway?: number; + + /** + * 合同金额-原币(海威),合同台账 + */ + totalPriceOri?: number; + + /** + * 汇率,合同台账 + */ + exchangeRate?: number; + +} + +export interface FinAccountReceivableQuery extends PageQuery { + + /** + * 集团应收模板编号 + */ + invoiceCode?: string; + + /** + * 项目ID + */ + projectId?: string | number; + + /** + * 项目大类,自填 + */ + projectCategory?: number; + + /** + * 项目小类,自填 + */ + projectType?: string; + + /** + * 合同ID + */ + contractId?: string | number; + + /** + * 总包,自填 + */ + generalContractor?: string; + + /** + * 客户简称,自填 + */ + customerAbbreviation?: string; + + /** + * 合同签订方,自填 + */ + contractParties?: string; + + /** + * WBS.元素,自填 + */ + wbsElement?: string; + + /** + * 行项目,自填 + */ + lineItem?: string; + + /** + * 项目状态,自填 + */ + projectStatus?: string; + + /** + * 结算月份,自填 + */ + settlementMonth?: string; + + /** + * 收入,自填 + */ + income?: number; + + /** + * 背靠背比例,自填 + */ + backToBackRatio?: number; + + /** + * 币种,自填 + */ + currency?: string; + + /** + * 开票金额,开票流程上线后可自动取数 + */ + invoiceAmount?: number; + + /** + * 合同金额(主),合同台账 + */ + totalPrice?: number; + + /** + * 合同金额(海威),合同台账 + */ + totalPriceHighway?: number; + + /** + * 合同金额-原币(海威),合同台账 + */ + totalPriceOri?: number; + + /** + * 汇率,合同台账 + */ + exchangeRate?: number; + + /** + * 日期范围参数 + */ + params?: any; +} + + + diff --git a/src/api/oa/erp/finAccountReceivableStage/index.ts b/src/api/oa/erp/finAccountReceivableStage/index.ts new file mode 100644 index 0000000..29fb1b1 --- /dev/null +++ b/src/api/oa/erp/finAccountReceivableStage/index.ts @@ -0,0 +1,76 @@ +import request from '@/utils/request'; +import { AxiosPromise } from 'axios'; +import { FinAccountReceivableStageVO, FinAccountReceivableStageForm, FinAccountReceivableStageQuery } from '@/api/oa/erp/finAccountReceivableStage/types'; + +/** + * 查询应收款节点信息列表 + * @param query + * @returns {*} + */ + +export const listFinAccountReceivableStage = (query?: FinAccountReceivableStageQuery): AxiosPromise => { + return request({ + url: '/oa/erp/finAccountReceivableStage/list', + method: 'get', + params: query + }); +}; + +/** + * 查询应收款节点信息详细 + * @param receivableStageId + */ +export const getFinAccountReceivableStage = (receivableStageId: string | number): AxiosPromise => { + return request({ + url: '/oa/erp/finAccountReceivableStage/' + receivableStageId, + method: 'get' + }); +}; + +/** + * 新增应收款节点信息 + * @param data + */ +export const addFinAccountReceivableStage = (data: FinAccountReceivableStageForm) => { + return request({ + url: '/oa/erp/finAccountReceivableStage', + method: 'post', + data: data + }); +}; + +/** + * 修改应收款节点信息 + * @param data + */ +export const updateFinAccountReceivableStage = (data: FinAccountReceivableStageForm) => { + return request({ + url: '/oa/erp/finAccountReceivableStage', + method: 'put', + data: data + }); +}; + +/** + * 删除应收款节点信息 + * @param receivableStageId + */ +export const delFinAccountReceivableStage = (receivableStageId: string | number | Array) => { + return request({ + url: '/oa/erp/finAccountReceivableStage/' + receivableStageId, + method: 'delete' + }); +}; + +/** + * 下拉框查询应收款节点信息列表 + * @param query + * @returns {*} + */ +export function getErpFinAccountReceivableStageList (query) { + return request({ + url: '/oa/erp/finAccountReceivableStage/getErpFinAccountReceivableStageList', + method: 'get', + params: query + }); +}; diff --git a/src/api/oa/erp/finAccountReceivableStage/types.ts b/src/api/oa/erp/finAccountReceivableStage/types.ts new file mode 100644 index 0000000..041bd4f --- /dev/null +++ b/src/api/oa/erp/finAccountReceivableStage/types.ts @@ -0,0 +1,191 @@ +export interface FinAccountReceivableStageVO { + /** + * 应收款节点信息ID + */ + receivableStageId: string | number; + + /** + * 应收款ID + */ + accountReceivableId: string | number; + + /** + * 阶段ID + */ + paymentStageId: string | number; + + /** + * 阶段名称,冗余 + */ + stageName: string; + + /** + * 阶段金额,公式计算 + */ + paymentAmount: number; + + /** + * 阶段比例,冗余 + */ + paymentPercentage: string; + + /** + * 阶段账期,冗余 + */ + paymentDeadline: number; + + /** + * 阶段付款条款,冗余 + */ + paymentDescription: string; + + /** + * 阶段要求日期,冗余 + */ + stageRequiredDate: string; + + /** + * 阶段实际执行日期 + */ + stageRealDate: string; + + /** + * 无日期的按结算日期,先自填 + */ + settlementDate: string; + + /** + * 质保期(天),冗余,关联合同信息 + */ + warrantyPeriod: number; + +} + +export interface FinAccountReceivableStageForm extends BaseEntity { + /** + * 应收款节点信息ID + */ + receivableStageId?: string | number; + + /** + * 应收款ID + */ + accountReceivableId?: string | number; + + /** + * 阶段ID + */ + paymentStageId?: string | number; + + /** + * 阶段名称,冗余 + */ + stageName?: string; + + /** + * 阶段金额,公式计算 + */ + paymentAmount?: number; + + /** + * 阶段比例,冗余 + */ + paymentPercentage?: string; + + /** + * 阶段账期,冗余 + */ + paymentDeadline?: number; + + /** + * 阶段付款条款,冗余 + */ + paymentDescription?: string; + + /** + * 阶段要求日期,冗余 + */ + stageRequiredDate?: string; + + /** + * 阶段实际执行日期 + */ + stageRealDate?: string; + + /** + * 无日期的按结算日期,先自填 + */ + settlementDate?: string; + + /** + * 质保期(天),冗余,关联合同信息 + */ + warrantyPeriod?: number; + +} + +export interface FinAccountReceivableStageQuery extends PageQuery { + + /** + * 应收款ID + */ + accountReceivableId?: string | number; + + /** + * 阶段ID + */ + paymentStageId?: string | number; + + /** + * 阶段名称,冗余 + */ + stageName?: string; + + /** + * 阶段金额,公式计算 + */ + paymentAmount?: number; + + /** + * 阶段比例,冗余 + */ + paymentPercentage?: string; + + /** + * 阶段账期,冗余 + */ + paymentDeadline?: number; + + /** + * 阶段付款条款,冗余 + */ + paymentDescription?: string; + + /** + * 阶段要求日期,冗余 + */ + stageRequiredDate?: string; + + /** + * 阶段实际执行日期 + */ + stageRealDate?: string; + + /** + * 无日期的按结算日期,先自填 + */ + settlementDate?: string; + + /** + * 质保期(天),冗余,关联合同信息 + */ + warrantyPeriod?: number; + + /** + * 日期范围参数 + */ + params?: any; +} + + + diff --git a/src/api/oa/erp/projectInfo/index.ts b/src/api/oa/erp/projectInfo/index.ts index 6676c7b..28652bd 100644 --- a/src/api/oa/erp/projectInfo/index.ts +++ b/src/api/oa/erp/projectInfo/index.ts @@ -88,4 +88,16 @@ export function getErpProjectInfoList(query) { } +/** + * 查询项目信息列表,主要提供财务应收款使用 + * @param query + * @returns {*} + */ +export function getErpProjectInfoJoinList(query) { + return request({ + url: '/oa/erp/projectInfo/getErpProjectInfoJoinList', + method: 'get', + params: query + }); +} diff --git a/src/router/index.ts b/src/router/index.ts index b293147..fe7e562 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -180,19 +180,6 @@ export const constantRoutes: RouteRecordRaw[] = [ } ] }, - { - path: '/oa/erp', - component: Layout, - hidden: true, - children: [ - { - path: 'budgetInfo/edit', - component: () => import('@/views/oa/erp/budgetInfo/edit.vue'), - name: 'BudgetEdit', - meta: { title: '项目预算申请', activeMenu: '/erp/budgetInfo' } - } - ] - }, { path: '/customer', component: Layout, diff --git a/src/views/oa/components/ContractSelectDialog.vue b/src/views/oa/components/ContractSelectDialog.vue new file mode 100644 index 0000000..43c3a17 --- /dev/null +++ b/src/views/oa/components/ContractSelectDialog.vue @@ -0,0 +1,173 @@ + + + + + diff --git a/src/views/oa/components/ProjectSelectDialog.vue b/src/views/oa/components/ProjectSelectDialog.vue new file mode 100644 index 0000000..ec4bdaa --- /dev/null +++ b/src/views/oa/components/ProjectSelectDialog.vue @@ -0,0 +1,189 @@ + + + + + diff --git a/src/views/oa/erp/finAccountReceivable/edit.vue b/src/views/oa/erp/finAccountReceivable/edit.vue new file mode 100644 index 0000000..df5cab5 --- /dev/null +++ b/src/views/oa/erp/finAccountReceivable/edit.vue @@ -0,0 +1,1999 @@ + + + + + diff --git a/src/views/oa/erp/finAccountReceivable/index.vue b/src/views/oa/erp/finAccountReceivable/index.vue new file mode 100644 index 0000000..ae6f2e1 --- /dev/null +++ b/src/views/oa/erp/finAccountReceivable/index.vue @@ -0,0 +1,1384 @@ + + + + + diff --git a/src/views/oa/finAccountInstallment/index.vue b/src/views/oa/finAccountInstallment/index.vue new file mode 100644 index 0000000..71ecce7 --- /dev/null +++ b/src/views/oa/finAccountInstallment/index.vue @@ -0,0 +1,357 @@ + + +