| | |
| | | import { getAccessToken, removeToken } from '@/utils/auth' |
| | | import { CACHE_KEY, useCache, deleteUserCache } from '@/hooks/web/useCache' |
| | | import { getInfo, loginOut } from '@/api/login' |
| | | import { releaseBedOnExit } from '@/utils/releaseBed' |
| | | |
| | | const { wsCache } = useCache() |
| | | |
| | |
| | | wsCache.set(CACHE_KEY.USER, userInfo) |
| | | }, |
| | | async loginOut() { |
| | | // 先释放诊疗床位(医生常在「诊室选择」页占了床位就直接退出系统)。 |
| | | // 后端 `/system/auth/logout` 内部虽然也会离座,但: |
| | | // ① 若该请求失败/网络中断,床位就留在占用状态; |
| | | // ② 本接口失败也不会阻断退出流程(releaseBedOnExit 内部已兜底)。 |
| | | await releaseBedOnExit('manual-logout') |
| | | // 【本需求·选 B】退出登录**不再释放工位**。 |
| | | // |
| | | // 为什么: |
| | | // ① 一人多工位后,同一医生可能同时在多台电脑上各操作一个岗位 —— |
| | | // 其中一台退出登录若按 userId 释放"全部工位",会把另一台正在用的岗位也清掉; |
| | | // ② 工位释放改为三种明确途径:医生点「离座」;闭诊统一清空; |
| | | // 管理员「清空工位」/ 接班医生「接管」(`POST /clinic/room/take-over-bed`)。 |
| | | // 原先这里调用 `releaseBedOnExit('manual-logout')` → `/ecg/doctor/release-my-beds`。 |
| | | await loginOut() |
| | | removeToken() |
| | | deleteUserCache() // 删除用户缓存 |