diff --git a/src/api/crm/receivable/index.ts b/src/api/crm/receivable/index.ts
new file mode 100644
index 00000000..0828bf4b
--- /dev/null
+++ b/src/api/crm/receivable/index.ts
@@ -0,0 +1,51 @@
+import request from '@/config/axios'
+
+export interface ReceivableVO {
+ id: number
+ no: string
+ planId: number
+ customerId: number
+ contractId: number
+ checkStatus: number
+ processInstanceId: number
+ returnTime: Date
+ returnType: string
+ price: number
+ ownerUserId: number
+ batchId: number
+ sort: number
+ dataScope: number
+ dataScopeDeptIds: string
+ status: number
+ remark: string
+}
+
+// 查询回款管理列表
+export const getReceivablePage = async (params) => {
+ return await request.get({ url: `/crm/receivable/page`, params })
+}
+
+// 查询回款管理详情
+export const getReceivable = async (id: number) => {
+ return await request.get({ url: `/crm/receivable/get?id=` + id })
+}
+
+// 新增回款管理
+export const createReceivable = async (data: ReceivableVO) => {
+ return await request.post({ url: `/crm/receivable/create`, data })
+}
+
+// 修改回款管理
+export const updateReceivable = async (data: ReceivableVO) => {
+ return await request.put({ url: `/crm/receivable/update`, data })
+}
+
+// 删除回款管理
+export const deleteReceivable = async (id: number) => {
+ return await request.delete({ url: `/crm/receivable/delete?id=` + id })
+}
+
+// 导出回款管理 Excel
+export const exportReceivable = async (params) => {
+ return await request.download({ url: `/crm/receivable/export-excel`, params })
+}
diff --git a/src/api/crm/receivablePlan/index.ts b/src/api/crm/receivablePlan/index.ts
new file mode 100644
index 00000000..178b21b5
--- /dev/null
+++ b/src/api/crm/receivablePlan/index.ts
@@ -0,0 +1,49 @@
+import request from '@/config/axios'
+
+export interface ReceivablePlanVO {
+ id: number
+ indexNo: number
+ receivableId: number
+ status: number
+ checkStatus: string
+ processInstanceId: number
+ price: number
+ returnTime: Date
+ remindDays: number
+ remindTime: Date
+ customerId: number
+ contractId: number
+ ownerUserId: number
+ sort: number
+ remark: string
+}
+
+// 查询回款计划列表
+export const getReceivablePlanPage = async (params) => {
+ return await request.get({ url: `/crm/receivable-plan/page`, params })
+}
+
+// 查询回款计划详情
+export const getReceivablePlan = async (id: number) => {
+ return await request.get({ url: `/crm/receivable-plan/get?id=` + id })
+}
+
+// 新增回款计划
+export const createReceivablePlan = async (data: ReceivablePlanVO) => {
+ return await request.post({ url: `/crm/receivable-plan/create`, data })
+}
+
+// 修改回款计划
+export const updateReceivablePlan = async (data: ReceivablePlanVO) => {
+ return await request.put({ url: `/crm/receivable-plan/update`, data })
+}
+
+// 删除回款计划
+export const deleteReceivablePlan = async (id: number) => {
+ return await request.delete({ url: `/crm/receivable-plan/delete?id=` + id })
+}
+
+// 导出回款计划 Excel
+export const exportReceivablePlan = async (params) => {
+ return await request.download({ url: `/crm/receivable-plan/export-excel`, params })
+}
diff --git a/src/utils/dict.ts b/src/utils/dict.ts
index 1fc0ab27..448a03dd 100644
--- a/src/utils/dict.ts
+++ b/src/utils/dict.ts
@@ -182,5 +182,9 @@ export enum DICT_TYPE {
PROMOTION_ACTIVITY_STATUS = 'promotion_activity_status', // 优惠活动的状态
PROMOTION_CONDITION_TYPE = 'promotion_condition_type', // 营销的条件类型枚举
PROMOTION_BARGAIN_RECORD_STATUS = 'promotion_bargain_record_status', // 砍价记录的状态
- PROMOTION_COMBINATION_RECORD_STATUS = 'promotion_combination_record_status' // 拼团记录的状态
+ PROMOTION_COMBINATION_RECORD_STATUS = 'promotion_combination_record_status', // 拼团记录的状态
+
+ // ========== CRM - 客户管理模块 ==========
+ CRM_RECEIVABLE_CHECK_STATUS = 'crm_receivable_check_status',
+ CRM_RETURN_TYPE = 'crm_return_type'
}
diff --git a/src/views/crm/receivable/ReceivableForm.vue b/src/views/crm/receivable/ReceivableForm.vue
new file mode 100644
index 00000000..2b9278fe
--- /dev/null
+++ b/src/views/crm/receivable/ReceivableForm.vue
@@ -0,0 +1,187 @@
+
+
+
+
diff --git a/src/views/crm/receivable/index.vue b/src/views/crm/receivable/index.vue
new file mode 100644
index 00000000..8a07fdda
--- /dev/null
+++ b/src/views/crm/receivable/index.vue
@@ -0,0 +1,365 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+ 新增
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/crm/receivablePlan/ReceivablePlanForm.vue b/src/views/crm/receivablePlan/ReceivablePlanForm.vue
new file mode 100644
index 00000000..22022ea0
--- /dev/null
+++ b/src/views/crm/receivablePlan/ReceivablePlanForm.vue
@@ -0,0 +1,181 @@
+
+
+
+
diff --git a/src/views/crm/receivablePlan/index.vue b/src/views/crm/receivablePlan/index.vue
new file mode 100644
index 00000000..46857dcd
--- /dev/null
+++ b/src/views/crm/receivablePlan/index.vue
@@ -0,0 +1,326 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+ 新增
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+