|
@@ -1,9 +1,11 @@
|
|
|
import { useUserStore } from "@/pinia/user-store";
|
|
|
import { useWebSocket, UseWebSocketReturn } from "@vueuse/core";
|
|
|
-import { ElNotification } from "element-plus";
|
|
|
+import { ElMessageBox, ElNotification } from "element-plus";
|
|
|
import { EmrStore } from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-func/useEmrStore";
|
|
|
import { EditType } from "@/utils/emr/edit";
|
|
|
import { stringIsBlank } from "@/utils/blank-utils";
|
|
|
+import { xcMessage } from "@/utils/xiaochan-element-plus";
|
|
|
+import XEUtils from "xe-utils";
|
|
|
|
|
|
const us = useUserStore().userInfo;
|
|
|
|
|
@@ -16,6 +18,7 @@ export enum MessageType {
|
|
|
notice = "notice",
|
|
|
VIEW_DOCUMENT = "VIEW_DOCUMENT",
|
|
|
CURRENT_DOCUMENT = "CURRENT_DOCUMENT",
|
|
|
+ ID = "ID",
|
|
|
}
|
|
|
|
|
|
export enum KickedType {
|
|
@@ -61,10 +64,15 @@ export function useEmrSocket(
|
|
|
) {
|
|
|
const sid = patInfo + "_" + us.code;
|
|
|
|
|
|
+ const socketId = ref("");
|
|
|
+
|
|
|
Object.assign(socketMsg, {
|
|
|
[MessageType.CURRENT_DOCUMENT]: data => {
|
|
|
store.currentDocumentData = JSON.parse(data);
|
|
|
},
|
|
|
+ [MessageType.ID]: data => {
|
|
|
+ socketId.value = data;
|
|
|
+ },
|
|
|
});
|
|
|
|
|
|
const setInfo = () => {
|
|
@@ -85,6 +93,7 @@ export function useEmrSocket(
|
|
|
heartbeat: {
|
|
|
message: setInfo(),
|
|
|
interval: 1000 * 60 * 3,
|
|
|
+ pongTimeout: 1000,
|
|
|
},
|
|
|
onConnected: ws => {
|
|
|
ws.send(setInfo());
|
|
@@ -138,12 +147,15 @@ export function useEmrSocket(
|
|
|
sendMsg,
|
|
|
status,
|
|
|
sendCurrentDocument,
|
|
|
+ socketId,
|
|
|
};
|
|
|
}
|
|
|
|
|
|
-export function documentSocket(kicked: EmrStore["kicked"]) {
|
|
|
- // @ts-ignore
|
|
|
- let socketFun: UseWebSocketReturn<any> = {
|
|
|
+export function documentSocket(
|
|
|
+ kicked: EmrStore["kicked"],
|
|
|
+ editor: () => EditType
|
|
|
+) {
|
|
|
+ let socketFun: UseWebSocketReturn<any> | any = {
|
|
|
send: () => {},
|
|
|
close: () => {},
|
|
|
status: ref(),
|
|
@@ -155,8 +167,12 @@ export function documentSocket(kicked: EmrStore["kicked"]) {
|
|
|
autoReconnect: true,
|
|
|
immediate: true,
|
|
|
onDisconnected(ws, event) {
|
|
|
- if (event.code === 3004) {
|
|
|
+ if (event.code > 3000) {
|
|
|
socketFun.close();
|
|
|
+ editor().setEditorMode("readonly");
|
|
|
+ ElMessageBox.alert(event.reason, "出错了", {
|
|
|
+ type: "error",
|
|
|
+ }).catch(XEUtils.noop);
|
|
|
}
|
|
|
},
|
|
|
onConnected(ws) {
|