Files
yunzerwebsiteallinone/backend/src/api/crmPipeline.js
T
2026-09-14 16:15:44 +08:00

191 lines
6.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import request from "@/utils/request";
/**
* CRM 业务管线接口:线索 → 商机 → 项目,回访贯穿全流程。
*
* 关联类型 related_type:1=线索 2=商机 3=项目
*/
/* --------------------------------- 线索 --------------------------------- */
export function getClueList(params) {
return request({ url: "/backend/crm/clue/list", method: "get", params });
}
export function getClueDetail(id) {
return request({ url: `/backend/crm/clue/${id}`, method: "get" });
}
export function createClue(data) {
return request({ url: "/backend/crm/clue", method: "post", data });
}
export function updateClue(id, data) {
return request({ url: `/backend/crm/clue/${id}`, method: "put", data });
}
export function deleteClue(id) {
return request({ url: `/backend/crm/clue/${id}`, method: "delete" });
}
/** 线索转化商机:会把线索客户名称落地为正式客户,并锁定线索 */
export function convertClueToBusiness(id, data) {
return request({ url: `/backend/crm/clue/${id}/convert`, method: "post", data });
}
/* --------------------------------- 商机 --------------------------------- */
export function getBusinessList(params) {
return request({ url: "/backend/crm/business/list", method: "get", params });
}
export function getBusinessDetail(id) {
return request({ url: `/backend/crm/business/${id}`, method: "get" });
}
export function createBusiness(data) {
return request({ url: "/backend/crm/business", method: "post", data });
}
export function updateBusiness(id, data) {
return request({ url: `/backend/crm/business/${id}`, method: "put", data });
}
export function deleteBusiness(id) {
return request({ url: `/backend/crm/business/${id}`, method: "delete" });
}
/** 商机转化项目 */
export function convertBusinessToProject(id, data) {
return request({ url: `/backend/crm/business/${id}/convert`, method: "post", data });
}
/* --------------------------------- 项目 --------------------------------- */
export function getProjectList(params) {
return request({ url: "/backend/crm/project/list", method: "get", params });
}
export function getProjectDetail(id) {
return request({ url: `/backend/crm/project/${id}`, method: "get" });
}
export function createProject(data) {
return request({ url: "/backend/crm/project", method: "post", data });
}
export function updateProject(id, data) {
return request({ url: `/backend/crm/project/${id}`, method: "put", data });
}
export function deleteProject(id) {
return request({ url: `/backend/crm/project/${id}`, method: "delete" });
}
/** 项目状态流转:仅更新状态(1未开始 / 2进行中 / 3已完成 / 4已暂停 / 5异常) */
export function changeProjectStatus(id, status) {
return request({ url: `/backend/crm/project/${id}/status`, method: "post", data: { status } });
}
/**
* 保存项目联系人:从对应企业通讯录中挑选的联系人ID集合(多选)。
* - upstream_contact_ids:上游(客户方)选中的联系人ID数组;
* - downstream_contact_ids:下游/中游(对方主体方)选中的联系人ID数组;
* - 单一项目后端会自动清空下游集合,传入不属于对应企业的ID会被过滤。
*/
export function saveProjectContacts(id, data) {
return request({ url: `/backend/crm/project/${id}/contacts`, method: "post", data });
}
/* --------------------------- 项目文档(OA 文档库) --------------------------- */
/**
* 项目文档列表:对应文档库「共享文档 / 项目文档 / {项目名称}」文件夹(含子文件夹)。
* 存量项目在首次调用时自动补建文件夹。
*/
export function getProjectDocs(id, params) {
return request({ url: `/backend/crm/project/${id}/docs`, method: "get", params });
}
/**
* 上传项目文档:文件先经 POST /backend/uploadfile 上传,
* 再调用本接口写入文档库项目文件夹并同步登记 CRM 附件。
*/
export function uploadProjectDoc(id, data) {
return request({ url: `/backend/crm/project/${id}/doc-upload`, method: "post", data });
}
/** 删除项目文档:同步软删文档库文档与对应 CRM 附件记录 */
export function deleteProjectDoc(id, data) {
return request({ url: `/backend/crm/project/${id}/doc-delete`, method: "post", data });
}
/**
* 新建项目文档文件夹(对应文档库中项目文件夹下的子分类),用于分类存放文档。
* data: { name, parent_id },parent_id 缺省时建在项目根文件夹下。
*/
export function createProjectDocFolder(id, data) {
return request({ url: `/backend/crm/project/${id}/doc-folder`, method: "post", data });
}
/** 删除项目文档文件夹(需为空:无子文件夹、无文档;项目根文件夹不可删除) */
export function deleteProjectDocFolder(id, data) {
return request({ url: `/backend/crm/project/${id}/doc-folder-delete`, method: "post", data });
}
/* --------------------------------- 回访 --------------------------------- */
export function getFollowList(params) {
return request({ url: "/backend/crm/follow/list", method: "get", params });
}
export function addFollow(data) {
return request({ url: "/backend/crm/follow/add", method: "post", data });
}
export function updateFollow(data) {
return request({ url: "/backend/crm/follow/edit", method: "post", data });
}
export function deleteFollow(data) {
return request({ url: "/backend/crm/follow/delete", method: "post", data });
}
/* --------------------------------- 附件 --------------------------------- */
export function getAttachList(params) {
return request({ url: "/backend/crm/attach/list", method: "get", params });
}
export function addAttach(data) {
return request({ url: "/backend/crm/attach/add", method: "post", data });
}
export function deleteAttach(data) {
return request({ url: "/backend/crm/attach/delete", method: "post", data });
}
/* ------------------------------ 联系人(实体) ------------------------------ */
export function getEntityContactList(params) {
return request({ url: "/backend/crm/entity/contact/list", method: "get", params });
}
export function addEntityContact(data) {
return request({ url: "/backend/crm/entity/contact/add", method: "post", data });
}
export function updateEntityContact(data) {
return request({ url: "/backend/crm/entity/contact/edit", method: "post", data });
}
export function deleteEntityContact(data) {
return request({ url: "/backend/crm/entity/contact/delete", method: "post", data });
}
/* ------------------------------- 操作日志 ------------------------------- */
export function getCrmOperateLogs(params) {
return request({ url: "/backend/crm/oplog/list", method: "get", params });
}