后端(新增 7 控制器 + 2 服务 + 17 张表) - Prepare:排卵预测、BBT(双向体温识别)、试纸识别(规则引擎+额度)、备孕任务、同房指导 - Family:邀请码绑定(≤5)、话术库、爱心积分、私密留言、家庭健康视图 - Health:按周期阶段输出饮食/运动/睡眠/痛经四类建议 - Relation:关系测评、引导卡、冲突工具、课程下单、双人任务(联动记忆)、纪念日 - Parenting:宝宝档案、成长记录、月龄活动匹配、共育任务、育儿情绪、疫苗儿保排期 - Consult:咨询师(资质/定价/时段)、预约下单/取消、量表测评(4 套)、危机干预转介 - Setting:自定义提醒 CRUD、数据备份快照与恢复(保留 5 份) - Mood 增补急救包;Home 提醒合并自定义提醒 - 服务层:ContentService(统一内容/锁态/购买态)、AssessmentService(计分分级+危机识别) 前端(新增 8 页面) - 备孕、家人共护、健康建议、两性关系、亲子教育、心理咨询、测评执行页、情绪急救包 - 首页快捷入口扩至 8 个模块;我的页新增提醒中心与数据备份 - utils/api.js 扩至 84 个接口 数据(可重复执行脚本) - 03_modules.sql:fa_reminder/bbt/lh_test/task/family_bind/care_message/point_log/memory/ assessment(+record)/course_order/baby/growth_record/vaccine/counselor/consult_order/user_backup - 04_module_seed.sql:话术6/引导卡6/冲突3/急救4/同房3/课程6/活动6/育儿情绪4/知识7、 4 套量表、17 项疫苗儿保、3 位咨询师 验证(全部通过) - 接口全链路 82 项断言(M1–M9,含高风险测评危机干预、备份恢复) - 契约校验 84 接口 0 偏差;Vue SFC 19/19、SCSS 18/18 编译通过 - 修复 3 个真实缺陷:action 内调用 action 导致响应被劫持、coTasks 返回数组、 咨询时段跨年错误
122 行
6.7 KiB
JavaScript
122 行
6.7 KiB
JavaScript
import request from './request.js'
|
||
|
||
/**
|
||
* 接口清单(与后端 app/api/controller 一一对应)
|
||
* 后端:server/application/api/controller/*.php
|
||
*/
|
||
export const api = {
|
||
// ---------- 用户 ----------
|
||
login: (account, password) => request('/api/user/login', { method: 'POST', data: { account, password }, auth: false }),
|
||
detail: () => request('/api/user/detail'),
|
||
updateProfile: (data) => request('/api/user/updateprofile', { method: 'POST', data }),
|
||
|
||
// ---------- 首页 ----------
|
||
home: () => request('/api/home/index'),
|
||
|
||
// ---------- 周期 M1 ----------
|
||
cycleCalendar: (month) => request('/api/cycle/index', { data: { month } }),
|
||
cycleCurrent: () => request('/api/cycle/current'),
|
||
cyclePredict: () => request('/api/cycle/predict'),
|
||
cycleSave: (data) => request('/api/cycle/save', { method: 'POST', data }),
|
||
cycleLog: (data) => request('/api/cycle/log', { method: 'POST', data }),
|
||
cycleLogInfo: (date) => request('/api/cycle/loginfo', { data: { date } }),
|
||
cycleSummary: () => request('/api/cycle/summary'),
|
||
cycleReport: (type, month) => request('/api/cycle/report', { data: { type, month } }),
|
||
cycleTags: () => request('/api/cycle/tags'),
|
||
|
||
// ---------- 情绪 M2 ----------
|
||
moodSave: (data) => request('/api/mood/save', { method: 'POST', data }),
|
||
moodList: (params) => request('/api/mood/index', { data: params }),
|
||
moodTrend: (days) => request('/api/mood/trend', { data: { days } }),
|
||
moodRemove: (id) => request('/api/mood/remove', { method: 'POST', data: { id } }),
|
||
moodFirstaid: () => request('/api/mood/firstaid'),
|
||
|
||
// ---------- 内容 ----------
|
||
contentList: (params) => request('/api/content/index', { data: params }),
|
||
contentDetail: (id) => request('/api/content/detail', { data: { id } }),
|
||
|
||
// ---------- 健康建议 M5 ----------
|
||
healthIndex: () => request('/api/health/index'),
|
||
healthDetail: (type) => request('/api/health/detail', { data: { type } }),
|
||
|
||
// ---------- 科学备孕 M3 ----------
|
||
prepareIndex: () => request('/api/prepare/index'),
|
||
bbtSave: (data) => request('/api/prepare/bbtSave', { method: 'POST', data }),
|
||
bbtList: (days) => request('/api/prepare/bbtList', { data: { days } }),
|
||
lhTest: (data) => request('/api/prepare/lhtest', { method: 'POST', data }),
|
||
lhTestList: () => request('/api/prepare/lhtestList'),
|
||
prepareTasks: () => request('/api/prepare/taskList'),
|
||
prepareTaskSave: (data) => request('/api/prepare/taskSave', { method: 'POST', data }),
|
||
prepareTaskDone: (id) => request('/api/prepare/taskDone', { method: 'POST', data: { id } }),
|
||
prepareTaskRemove: (id) => request('/api/prepare/taskRemove', { method: 'POST', data: { id } }),
|
||
prepareGuide: () => request('/api/prepare/guide'),
|
||
|
||
// ---------- 家人共护 M4 ----------
|
||
familyIndex: () => request('/api/family/index'),
|
||
familyInvite: (data) => request('/api/family/invite', { method: 'POST', data }),
|
||
familyConfirm: (code) => request('/api/family/confirm', { method: 'POST', data: { invite_code: code } }),
|
||
familyRemove: (id) => request('/api/family/remove', { method: 'POST', data: { id } }),
|
||
familyScripts: () => request('/api/family/scripts'),
|
||
familyMessages: (bindId) => request('/api/family/messages', { data: { bind_id: bindId } }),
|
||
familyMessageSend: (data) => request('/api/family/messageSend', { method: 'POST', data }),
|
||
familyCareAction: () => request('/api/family/careAction', { method: 'POST' }),
|
||
familyPoints: () => request('/api/family/points'),
|
||
familyHealthView: () => request('/api/family/healthView'),
|
||
|
||
// ---------- 两性关系 M7 ----------
|
||
relationIndex: () => request('/api/relation/index'),
|
||
relationCards: () => request('/api/relation/cards'),
|
||
relationConflicts: () => request('/api/relation/conflicts'),
|
||
relationCourses: () => request('/api/relation/courses'),
|
||
courseBuy: (id) => request('/api/relation/courseBuy', { method: 'POST', data: { id } }),
|
||
relationTasks: () => request('/api/relation/taskList'),
|
||
relationTaskSave: (data) => request('/api/relation/taskSave', { method: 'POST', data }),
|
||
relationTaskDone: (id) => request('/api/relation/taskDone', { method: 'POST', data: { id } }),
|
||
memories: () => request('/api/relation/memories'),
|
||
memorySave: (data) => request('/api/relation/memorySave', { method: 'POST', data }),
|
||
memoryRemove: (id) => request('/api/relation/memoryRemove', { method: 'POST', data: { id } }),
|
||
|
||
// ---------- 亲子教育 M8 ----------
|
||
parentingIndex: () => request('/api/parenting/index'),
|
||
babySave: (data) => request('/api/parenting/babySave', { method: 'POST', data }),
|
||
babyInfo: () => request('/api/parenting/babyInfo'),
|
||
growthSave: (data) => request('/api/parenting/growthSave', { method: 'POST', data }),
|
||
parentingActivities: () => request('/api/parenting/activities'),
|
||
parentingCourses: () => request('/api/parenting/courses'),
|
||
coTasks: () => request('/api/parenting/coTasks'),
|
||
coTaskSave: (data) => request('/api/parenting/coTaskSave', { method: 'POST', data }),
|
||
coTaskDone: (id) => request('/api/parenting/coTaskDone', { method: 'POST', data: { id } }),
|
||
parentingEmotions: () => request('/api/parenting/emotions'),
|
||
vaccines: () => request('/api/parenting/vaccines'),
|
||
|
||
// ---------- 心理服务 M9 ----------
|
||
consultIndex: () => request('/api/consult/index'),
|
||
counselors: () => request('/api/consult/counselors'),
|
||
consultAssessments: (scope) => request('/api/consult/assessments', { data: { scope } }),
|
||
consultOrder: (data) => request('/api/consult/orderCreate', { method: 'POST', data }),
|
||
consultOrders: () => request('/api/consult/orders'),
|
||
consultCancel: (id) => request('/api/consult/cancel', { method: 'POST', data: { id } }),
|
||
crisis: () => request('/api/consult/crisis'),
|
||
|
||
// ---------- 量表(M7/M8/M9 共用) ----------
|
||
assessmentDetail: (id) => request('/api/consult/assessmentDetail', { data: { id } }),
|
||
assessmentSubmit: (id, answers) => request('/api/consult/assessmentSubmit', { method: 'POST', data: { id, answers: JSON.stringify(answers) } }),
|
||
|
||
// ---------- 会员 M6 ----------
|
||
memberPlans: () => request('/api/member/plans', { auth: false }),
|
||
memberStatus: () => request('/api/member/status'),
|
||
memberOrder: (planId, payType) => request('/api/member/order', { method: 'POST', data: { plan_id: planId, pay_type: payType } }),
|
||
|
||
// ---------- 设置 / 提醒 / 备份 ----------
|
||
settingIndex: () => request('/api/setting/index'),
|
||
settingSave: (data) => request('/api/setting/save', { method: 'POST', data }),
|
||
reminderList: () => request('/api/setting/reminderList'),
|
||
reminderSave: (data) => request('/api/setting/reminderSave', { method: 'POST', data }),
|
||
reminderRemove: (id) => request('/api/setting/reminderRemove', { method: 'POST', data: { id } }),
|
||
backupCreate: () => request('/api/setting/backupCreate', { method: 'POST' }),
|
||
backupList: () => request('/api/setting/backupList'),
|
||
backupRestore: (id) => request('/api/setting/backupRestore', { method: 'POST', data: { id } })
|
||
}
|
||
|
||
export default api
|