文件
huaqiapp/utils/api.js
linda d243ece39c feat: 补齐 M1–M9 全部 47 个功能点并打通前后端
后端(新增 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 返回数组、
  咨询时段跨年错误
2026-11-05 23:27:21 +08:00

122 行
6.7 KiB
JavaScript

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

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