From 81f9c98526ce6a29bdbc1c681db1ee56020272fe Mon Sep 17 00:00:00 2001
From: wersd <1523826083@qq.com>
Date: Sat, 2 Aug 2025 19:35:49 +0800
Subject: [PATCH] =?UTF-8?q?add=20=E9=A1=B9=E7=9B=AE=E7=BB=93=E7=AE=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/crm/project/index.ts | 135 +++---
src/api/crm/project/settlement/index.ts | 57 +++
src/api/crm/receivable/other/index.ts | 85 ++++
src/views/crm/finance/writeoff/index.vue | 4 +-
src/views/crm/project/index.vue | 350 +++++-----------
.../settlement/ProjectSettlementForm.vue | 150 +++++++
src/views/crm/project/settlement/index.vue | 232 +++++++++++
.../components/SummaryOtherForm.vue | 43 ++
.../crm/receivable/other/PaymentForm.vue | 311 ++++++++++++++
.../crm/receivable/other/ReceivableForm.vue | 312 ++++++++++++++
src/views/crm/receivable/other/index.vue | 393 ++++++++++++++++++
src/views/crm/receivable/plan/index.vue | 2 +-
12 files changed, 1770 insertions(+), 304 deletions(-)
create mode 100644 src/api/crm/project/settlement/index.ts
create mode 100644 src/api/crm/receivable/other/index.ts
create mode 100644 src/views/crm/project/settlement/ProjectSettlementForm.vue
create mode 100644 src/views/crm/project/settlement/index.vue
create mode 100644 src/views/crm/receivable/components/SummaryOtherForm.vue
create mode 100644 src/views/crm/receivable/other/PaymentForm.vue
create mode 100644 src/views/crm/receivable/other/ReceivableForm.vue
create mode 100644 src/views/crm/receivable/other/index.vue
diff --git a/src/api/crm/project/index.ts b/src/api/crm/project/index.ts
index 8cd8190e6..44d3f30a3 100644
--- a/src/api/crm/project/index.ts
+++ b/src/api/crm/project/index.ts
@@ -1,59 +1,76 @@
-import request from '@/config/axios'
-
-// 项目利润结算 VO
-export interface ProjectSettlementVO {
- id: number // 结算记录ID
- projectId: number // 关联项目ID
- settlementPeriod: string // 结算周期(如:2023-Q1)
- settlementDate: Date // 结算日期
- actualRevenue: number // 实际营收
- governmentSubsidy: number // 政府补贴收入
- otherIncome: number // 其他项目收入
- totalIncome: number // 总收入
- incomeRemark: string // 收入备注
- electricityCost: number // 电费成本
- venueRent: number // 场地租金
- venueDeposit: number // 项目押金
- projectPromotion: number // 项目推介费
- equipmentUpgrade: number // 设备更新购置费
- managementCost: number // 管理费用
- taxCost: number // 税收
- netProfit: number // 净利润
- expenseRemark: string // 支出备注
- settlementStatus: number // 结算状态
- proofAttachment: string // 结算凭证附件
- remark: string // 结算备注
-}
-
-// 项目利润结算 API
-export const ProjectSettlementApi = {
- // 查询项目利润结算分页
- getProjectSettlementPage: async (params: any) => {
- return await request.get({ url: `/crm/project-settlement/page`, params })
- },
-
- // 查询项目利润结算详情
- getProjectSettlement: async (id: number) => {
- return await request.get({ url: `/crm/project-settlement/get?id=` + id })
- },
-
- // 新增项目利润结算
- createProjectSettlement: async (data: ProjectSettlementVO) => {
- return await request.post({ url: `/crm/project-settlement/create`, data })
- },
-
- // 修改项目利润结算
- updateProjectSettlement: async (data: ProjectSettlementVO) => {
- return await request.put({ url: `/crm/project-settlement/update`, data })
- },
-
- // 删除项目利润结算
- deleteProjectSettlement: async (id: number) => {
- return await request.delete({ url: `/crm/project-settlement/delete?id=` + id })
- },
-
- // 导出项目利润结算 Excel
- exportProjectSettlement: async (params) => {
- return await request.download({ url: `/crm/project-settlement/export-excel`, params })
- },
-}
\ No newline at end of file
+import request from '@/config/axios'
+
+// CRM 项目信息 VO
+export interface ProjectVO {
+ id: number // 主键ID
+ deptId: number // 部门ID
+ name?: string
+ siteId: number // 场地ID
+ totalInvestment: number // 项目总投资额
+ ownerUserId: string // 项目合伙人
+ ratio: string // 比例
+ investment: string // 投资额
+ cooperationAgreement: number // 场地租赁合同
+ purchaseContractId: number // 设备采购合同ID
+ epcContractId: number // EPC施工合同ID
+ cooperationAgreementName?: String // 场地租赁合同名称
+ purchaseContractName?: String // 设备采购合同名称
+ epcContractName?: String // EPC施工合同名称
+ buildPermit: string // 同意建桩证明
+ ownershipProof: string // 场地权属证明
+ projectRecord: string // 项目备案
+ powerSupplyReply: string // 供电答复单
+ investmentAgreement: string // 合作投资协议
+ investmentShareAgreement: string // 合作投资分成协议
+ supplementaryMaterials: string // 其他补充材料文件路径
+ cooperationAgreementConfig?: number // 场地租赁合同配置
+ purchaseContractConfig?: number // 设备采购合同配置
+ epcContractConfig?: number // EPC施工合同配置
+ buildPermitConfig?: number // 同意建桩证明配置
+ ownershipProofConfig?: number // 场地权属证明配置
+ projectRecordConfig?: number // 项目备案配置
+ powerSupplyReplyConfig?: number // 供电答复单配置
+ investmentAgreementConfig?: number // 合作投资协议配置
+ investmentShareAgreementConfig?: number // 合作投资分成协议配置
+ supplementaryMaterialsConfig?: number // 其他补充材料配置
+ type: number // 类型
+ partners: []
+ RevenueSharePartners: []
+ projectStatus: number // 状态
+ estimatedPiles: number //枪数
+}
+
+// 查询CRM 项目信息分页
+export const getProjectPage = async (params: any) => {
+ return await request.get({ url: `/crm/project/page`, params })
+}
+
+// 查询CRM 项目信息详情
+export const getProject = async (id: number) => {
+ return await request.get({ url: `/crm/project/get?id=` + id })
+}
+
+// 新增CRM 项目信息
+export const createProject = async (data: ProjectVO) => {
+ return await request.post({ url: `/crm/project/create`, data })
+}
+
+// 修改CRM 项目信息
+export const updateProject = async (data: ProjectVO) => {
+ return await request.put({ url: `/crm/project/update`, data })
+}
+
+// 删除CRM 项目信息
+export const deleteProject = async (id: number) => {
+ return await request.delete({ url: `/crm/project/delete?id=` + id })
+}
+
+// 导出CRM 项目信息 Excel
+export const exportProject = async (params: any) => {
+ return await request.download({ url: `/crm/project/export-excel`, params })
+}
+
+// 获取项目列表
+export const getProjectSimpleList = async () => {
+ return await request.get({ url: `/crm/project/simple-list` })
+}
\ No newline at end of file
diff --git a/src/api/crm/project/settlement/index.ts b/src/api/crm/project/settlement/index.ts
new file mode 100644
index 000000000..3e489acdf
--- /dev/null
+++ b/src/api/crm/project/settlement/index.ts
@@ -0,0 +1,57 @@
+import request from '@/config/axios'
+
+// 项目利润结算 VO
+export interface ProjectSettlementVO {
+ id: number; // 结算记录ID
+ projectId: number; // 关联项目ID
+ settlementPeriod: string; // 结算周期(如:2023-Q1)
+ period: number; // 总期数
+ settlementDate: Date; // 结算日期
+ actualRevenue: number; // 实际营收
+ governmentSubsidy: number; // 政府补贴收入
+ otherIncome: number; // 其他项目收入
+ totalIncome: number; // 总收入
+ incomeRemark: string; // 收入备注
+ electricityCost: number; // 电费成本
+ venueRent: number; // 场地租金
+ venueDeposit: number; // 项目押金
+ projectPromotion: number; // 项目推介费
+ equipmentUpgrade: number; // 设备更新购置费
+ managementCost: number; // 管理费用
+ taxCost: number; // 税收
+ netProfit: number; // 净利润
+ expenseRemark: string; // 支出备注
+ settlementStatus: number; // 结算状态
+ proofAttachment: string; // 结算凭证附件
+ remark: string; // 结算备注
+}
+
+// 查询项目利润结算分页
+export const getProjectSettlementPage = async (params: any) => {
+ return await request.get({ url: `/crm/project-settlement/page`, params })
+}
+
+// 查询项目利润结算详情
+export const getProjectSettlement = async (id: number) => {
+ return await request.get({ url: `/crm/project-settlement/get?id=` + id })
+}
+
+// 新增项目利润结算
+export const createProjectSettlement = async (data: ProjectSettlementVO) => {
+ return await request.post({ url: `/crm/project-settlement/create`, data })
+}
+
+// 修改项目利润结算
+export const updateProjectSettlement = async (data: ProjectSettlementVO) => {
+ return await request.put({ url: `/crm/project-settlement/update`, data })
+}
+
+// 删除项目利润结算
+export const deleteProjectSettlement = async (id: number) => {
+ return await request.delete({ url: `/crm/project-settlement/delete?id=` + id })
+}
+
+// 导出项目利润结算 Excel
+export const exportProjectSettlement = async (params: any) => {
+ return await request.download({ url: `/crm/project-settlement/export-excel`, params })
+}
diff --git a/src/api/crm/receivable/other/index.ts b/src/api/crm/receivable/other/index.ts
new file mode 100644
index 000000000..f64dcdc7d
--- /dev/null
+++ b/src/api/crm/receivable/other/index.ts
@@ -0,0 +1,85 @@
+import request from '@/config/axios'
+
+export interface ReceivableVO {
+ id: number
+ no: string
+ planId?: number
+ period?: number // 期数
+ customerId?: number
+ customerName?: string
+ contractId?: number
+ receivableType: number
+ paymentType: number
+ deptId: number
+ deptName?: string
+ projectId?: number
+ contract?: {
+ id?: number
+ name?: string
+ no: string
+ totalPrice: number
+ }
+ auditStatus: number
+ processInstanceId: number
+ returnTime: Date
+ returnType: number
+ transactionType: number // 交易类型:0-付款,1-收款
+ price: number
+ ownerUserId: number
+ ownerUserName?: string
+ remark: string
+ creator: string // 创建人
+ creatorName?: string // 创建人名称
+ createTime: Date // 创建时间
+ updateTime: Date // 更新时间
+}
+
+// 查询回款列表
+export const getReceivablePage = async (params) => {
+ return await request.get({ url: `/crm/receivable-other/page`, params })
+}
+
+// 查询回款列表
+export const getReceivablePageByCustomer = async (params) => {
+ return await request.get({ url: `/crm/receivable-other/page-by-customer`, params })
+}
+
+// 查询回款详情
+export const getReceivable = async (id: number) => {
+ return await request.get({ url: `/crm/receivable-other/get?id=` + id })
+}
+
+// 新增回款
+export const createReceivable = async (data: ReceivableVO) => {
+ return await request.post({ url: `/crm/receivable-other/create`, data })
+}
+
+// 修改回款
+export const updateReceivable = async (data: ReceivableVO) => {
+ return await request.put({ url: `/crm/receivable-other/update`, data })
+}
+
+// 删除回款
+export const deleteReceivable = async (id: number) => {
+ return await request.delete({ url: `/crm/receivable-other/delete?id=` + id })
+}
+
+// 导出回款 Excel
+export const exportReceivable = async (params) => {
+ return await request.download({ url: `/crm/receivable-other/export-excel`, params })
+}
+
+// 提交审核
+export const submitReceivable = async (id: number) => {
+ return await request.put({ url: `/crm/receivable-other/submit?id=${id}` })
+}
+
+// 获得待审核回款数量
+export const getAuditReceivableCount = async () => {
+ return await request.get({ url: '/crm/receivable-other/audit-count' })
+}
+
+// 查询收付主体汇总金额
+export const queryReceivableSummary = async () => {
+ return await request.get({ url: '/crm/receivable-other/query-summary' })
+}
diff --git a/src/views/crm/finance/writeoff/index.vue b/src/views/crm/finance/writeoff/index.vue
index a7fc2fe7c..53178f24a 100644
--- a/src/views/crm/finance/writeoff/index.vue
+++ b/src/views/crm/finance/writeoff/index.vue
@@ -46,7 +46,7 @@
-
+
应收额
@@ -56,7 +56,7 @@
-
+
应付额
diff --git a/src/views/crm/project/index.vue b/src/views/crm/project/index.vue
index 8d1413eae..b614622f9 100644
--- a/src/views/crm/project/index.vue
+++ b/src/views/crm/project/index.vue
@@ -8,191 +8,46 @@
:inline="true"
label-width="68px"
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
+
-
-
-
搜索
重置
@@ -200,7 +55,7 @@
type="primary"
plain
@click="openForm('create')"
- v-hasPermi="['crm:project-settlement:create']"
+ v-hasPermi="['crm:project:create']"
>
新增
@@ -209,7 +64,7 @@
plain
@click="handleExport"
:loading="exportLoading"
- v-hasPermi="['crm:project-settlement:export']"
+ v-hasPermi="['crm:project:export']"
>
导出
@@ -220,40 +75,38 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+ {{ calculateCostPerPile(row) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
编辑
@@ -261,7 +114,7 @@
link
type="danger"
@click="handleDelete(scope.row.id)"
- v-hasPermi="['crm:project-settlement:delete']"
+ v-hasPermi="['crm:project:delete']"
>
删除
@@ -278,56 +131,46 @@
-
+
\ No newline at end of file
diff --git a/src/views/crm/project/settlement/ProjectSettlementForm.vue b/src/views/crm/project/settlement/ProjectSettlementForm.vue
new file mode 100644
index 000000000..c6832c50d
--- /dev/null
+++ b/src/views/crm/project/settlement/ProjectSettlementForm.vue
@@ -0,0 +1,150 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/views/crm/project/settlement/index.vue b/src/views/crm/project/settlement/index.vue
new file mode 100644
index 000000000..6f3d28837
--- /dev/null
+++ b/src/views/crm/project/settlement/index.vue
@@ -0,0 +1,232 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+ 新增
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/crm/receivable/components/SummaryOtherForm.vue b/src/views/crm/receivable/components/SummaryOtherForm.vue
new file mode 100644
index 000000000..867487877
--- /dev/null
+++ b/src/views/crm/receivable/components/SummaryOtherForm.vue
@@ -0,0 +1,43 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/views/crm/receivable/other/PaymentForm.vue b/src/views/crm/receivable/other/PaymentForm.vue
new file mode 100644
index 000000000..a8bd5aabc
--- /dev/null
+++ b/src/views/crm/receivable/other/PaymentForm.vue
@@ -0,0 +1,311 @@
+
+
+
+
diff --git a/src/views/crm/receivable/other/ReceivableForm.vue b/src/views/crm/receivable/other/ReceivableForm.vue
new file mode 100644
index 000000000..3a792e7fc
--- /dev/null
+++ b/src/views/crm/receivable/other/ReceivableForm.vue
@@ -0,0 +1,312 @@
+
+
+
+
diff --git a/src/views/crm/receivable/other/index.vue b/src/views/crm/receivable/other/index.vue
new file mode 100644
index 000000000..3c8423958
--- /dev/null
+++ b/src/views/crm/receivable/other/index.vue
@@ -0,0 +1,393 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+ 搜索
+
+
+
+ 重置
+
+
+
+ 新增收入
+
+
+
+ 新增支出
+
+
+
+ 导出
+
+
+
+ 查看汇总
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ erpPriceInputFormatter(scope.row.price) }}
+ -
+
+
+
+
+ {{ erpPriceInputFormatter(scope.row.price) }}
+ -
+
+
+
+
+
+ {{ scope.row.deptName }}
+
+
+
+
+
+
+
+ 编辑
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/crm/receivable/plan/index.vue b/src/views/crm/receivable/plan/index.vue
index 5e3bdbcd6..9991def21 100644
--- a/src/views/crm/receivable/plan/index.vue
+++ b/src/views/crm/receivable/plan/index.vue
@@ -245,7 +245,7 @@
-