import deviceRequest from "@/utils/device-request" /** * 设备端API * 用于智慧校园设备(如家校通话设备)的接口调用 */ export const deviceApi = { /** * 设备登录 * @param {string} sn - 设备序列号(devId) * @param {string} cardNo - 卡号 * @returns {Promise} 返回登录结果,包含 userInfo 和 sessId * * 返回数据格式参考 h5-controller.vue handleLoginSuccess: * { * success: true, * userInfo: { * sessId: 'xxx', // JSESSIONID * ... // 其他用户信息 * } * } */ login(sn, cardNo) { return deviceRequest.get( `/service?ssServ=ss.login&devId=${sn}&cardNo=${cardNo}&sbmc=${sn}`, {}, { loading: { title: '设备登录中...' }, request: { timeout: 15000 } } ) }, /** * 查询家长信息(联系人) * @returns {Promise} 返回家长信息 * * 注意: * - 不需要传参数,后端通过 URL 中的 devId 和 sbmc 自动识别用户 * - device-request.js 会自动从 userInfo 中获取 devId 和 sbmc 添加到 URL * - 现在只返回一个家长,不是数组 * * 返回数据格式: * { * data: { * ssData: { * ryid: 111129603, // 人员ID * wbid: 'oKFvD4j...', // 外部ID(微信openid) * xm: '测试家长1', // 姓名 * yszwj: 'path/to/image.jpg' // 艺术照(可选,需要用 getImageUrl 转换) * }, * ssCode: 0 * } * } */ selParentInfo() { return deviceRequest.post( `/service?ssServ=selParentInfo`, {}, { loading: { title: '获取联系人...' }, formData: true } ) }, /** * 检查个人服务状态(刷卡进入时调用) * @param {string} grfwxmm - 个人服务项目码(如:视频电话、离校通知等) * @returns {Promise} 返回服务状态 * * 返回数据格式: * ssCode = 0 时: * { * jsfsm: '计数方式码', * zdsc: 最大时长, * zdll: 最大流量, * zdcs: 最大次数, * ljsc: 累计时长, * ljll: 累计流量, * ljcs: 累计次数, * sfmf: 是否免费, * sfty: 是否停用 * } * ssCode > 0 时: * { * ssMsg: '错误信息' * } */ grfw_chkGrfw(grfwxmm) { return deviceRequest.post( `/service?ssServ=grfw_chkGrfw`, { grfwxmm }, { loading: false, formData: true } ) }, /** * 办结个人服务(通话结束后调用) * @param {object} data - 办结参数 * @param {string} data.grfwxmm - 个人服务项目码 * @param {number} data.sc - 时长(秒/分钟) * @param {number} data.ll - 流量 * @param {string} data.ms - 附言/备注 * @returns {Promise} 返回办结后的服务状态 * * 返回数据格式: * ssCode = 0 时: * { * jsfsm: '计数方式码', * zdsc: 最大时长, * zdll: 最大流量, * zdcs: 最大次数, * ljsc: 累计时长, * ljll: 累计流量, * ljcs: 累计次数, * sfmf: 是否免费 * } * ssCode > 0 时: * { * ssMsg: '错误信息' * } */ grfw_endGrfw(data) { return deviceRequest.post( `/service?ssServ=grfw_endGrfw`, data, { loading: false, formData: true } ) } }