feat: 第二阶段核心业务模块(CRM/房务/护理/月子餐)

后端:
- 4个迁移文件新增23张业务表
- 23个Eloquent Model(含关联/类型转换/门店隔离)
- 20个Controller(含CRUD+业务操作: 合同审核/入住退房/护理异常处理等)
- 110+条API路由(crm/room/care/meal四大前缀)

前端:
- 4个API模块(crm.js/room.js/care.js/meal.js)
- 13个业务页面(线索/客户/合同/渠道/投诉/房型/房间/预定/护理档案/护理计划/护理记录/菜品/排餐)
This commit is contained in:
li
2026-03-13 20:18:29 +08:00
parent 11c177a432
commit 16bcd9bcf0
65 changed files with 4660 additions and 0 deletions
+61
View File
@@ -0,0 +1,61 @@
import request from '@/utils/request.js'
// ─── Channels ─────────────────────────────────────────────────────────────────
export const channelApi = {
getList: (params) => request.get('/crm/channels', { params }),
getDetail: (id) => request.get(`/crm/channels/${id}`),
create: (data) => request.post('/crm/channels', data),
update: (id, data) => request.put(`/crm/channels/${id}`, data),
delete: (id) => request.delete(`/crm/channels/${id}`)
}
// ─── Leads ────────────────────────────────────────────────────────────────────
export const leadApi = {
getList: (params) => request.get('/crm/leads', { params }),
getDetail: (id) => request.get(`/crm/leads/${id}`),
create: (data) => request.post('/crm/leads', data),
update: (id, data) => request.put(`/crm/leads/${id}`, data),
delete: (id) => request.delete(`/crm/leads/${id}`),
follow: (id, data) => request.post(`/crm/leads/${id}/follow`, data),
assign: (id, data) => request.put(`/crm/leads/${id}/assign`, data)
}
// ─── Customers ────────────────────────────────────────────────────────────────
export const customerApi = {
getList: (params) => request.get('/crm/customers', { params }),
getDetail: (id) => request.get(`/crm/customers/${id}`),
create: (data) => request.post('/crm/customers', data),
update: (id, data) => request.put(`/crm/customers/${id}`, data),
delete: (id) => request.delete(`/crm/customers/${id}`)
}
// ─── Contracts ────────────────────────────────────────────────────────────────
export const contractApi = {
getList: (params) => request.get('/crm/contracts', { params }),
getDetail: (id) => request.get(`/crm/contracts/${id}`),
create: (data) => request.post('/crm/contracts', data),
update: (id, data) => request.put(`/crm/contracts/${id}`, data),
delete: (id) => request.delete(`/crm/contracts/${id}`),
audit: (id, data) => request.put(`/crm/contracts/${id}/audit`, data)
}
// ─── Questionnaires ───────────────────────────────────────────────────────────
export const questionnaireApi = {
getList: (params) => request.get('/crm/questionnaires', { params }),
getDetail: (id) => request.get(`/crm/questionnaires/${id}`),
create: (data) => request.post('/crm/questionnaires', data),
update: (id, data) => request.put(`/crm/questionnaires/${id}`, data),
delete: (id) => request.delete(`/crm/questionnaires/${id}`),
submitAnswer: (data) => request.post('/crm/questionnaire-answers', data),
getAnswers: (params) => request.get('/crm/questionnaire-answers', { params })
}
// ─── Complaints ───────────────────────────────────────────────────────────────
export const complaintApi = {
getList: (params) => request.get('/crm/complaints', { params }),
getDetail: (id) => request.get(`/crm/complaints/${id}`),
create: (data) => request.post('/crm/complaints', data),
update: (id, data) => request.put(`/crm/complaints/${id}`, data),
delete: (id) => request.delete(`/crm/complaints/${id}`),
handle: (id, data) => request.put(`/crm/complaints/${id}/handle`, data)
}