|
|
@@ -255,7 +255,56 @@
|
|
|
</p>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div v-if="!messages.length" class="no-messages">
|
|
|
+ <div v-if="!srmMessageList.length" class="no-messages">
|
|
|
+ 暂无新消息
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-tab-pane>
|
|
|
+
|
|
|
+ <!-- EHR消息 -->
|
|
|
+ <el-tab-pane label="EHR" name="ehr">
|
|
|
+ <template #label>
|
|
|
+ <span class="custom-tabs-label">
|
|
|
+ <span>EHR</span>
|
|
|
+ <el-badge
|
|
|
+ :value="unreadEHRCount"
|
|
|
+ class="item ml-1"
|
|
|
+ v-if="hasUnreadEHRCount"
|
|
|
+ ></el-badge>
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ <div class="tab-content">
|
|
|
+ <!-- 消息中心内容 -->
|
|
|
+ <div>
|
|
|
+ <span
|
|
|
+ v-if="hasUnreadEHRCount"
|
|
|
+ class="cursor-pointer text-blue-500"
|
|
|
+ @click="markEHRAsRead"
|
|
|
+ >全部标为已读</span
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class="message-item"
|
|
|
+ v-for="(item, index) in ehrMessageList"
|
|
|
+ :key="index"
|
|
|
+ >
|
|
|
+ <div class="message-icon"></div>
|
|
|
+ <div class="message-text">
|
|
|
+ <!-- 未读就显示小红点 -->
|
|
|
+
|
|
|
+ <p class="message-title flex items-center gap-5">
|
|
|
+ <span
|
|
|
+ v-if="item.status === '0'"
|
|
|
+ class="w-2 h-2 bg-[#f56c6c] rounded-full text-var(--tab-text)!"
|
|
|
+ ></span
|
|
|
+ >{{ item.title }}
|
|
|
+ </p>
|
|
|
+ <p class="message-desc">
|
|
|
+ {{ timestampToDateTime(item.createTime) }}
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-if="!ehrMessageList.length" class="no-messages">
|
|
|
暂无新消息
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -469,7 +518,56 @@
|
|
|
</p>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div v-if="!messages.length" class="no-messages">
|
|
|
+ <div v-if="!srmMessageList.length" class="no-messages">
|
|
|
+ 暂无新消息
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-tab-pane>
|
|
|
+
|
|
|
+ <!-- EHR消息 -->
|
|
|
+ <el-tab-pane label="EHR" name="ehr">
|
|
|
+ <template #label>
|
|
|
+ <span class="custom-tabs-label">
|
|
|
+ <span>EHR</span>
|
|
|
+ <el-badge
|
|
|
+ :value="unreadEHRCount"
|
|
|
+ class="item ml-1"
|
|
|
+ v-if="hasUnreadEHRCount"
|
|
|
+ ></el-badge>
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ <div class="tab-content">
|
|
|
+ <!-- 消息中心内容 -->
|
|
|
+ <div>
|
|
|
+ <span
|
|
|
+ v-if="hasUnreadEHRCount"
|
|
|
+ class="cursor-pointer text-blue-500"
|
|
|
+ @click="markEHRAsRead"
|
|
|
+ >全部标为已读</span
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class="message-item"
|
|
|
+ v-for="(item, index) in ehrMessageList"
|
|
|
+ :key="index"
|
|
|
+ >
|
|
|
+ <div class="message-icon"></div>
|
|
|
+ <div class="message-text">
|
|
|
+ <!-- 未读就显示小红点 -->
|
|
|
+
|
|
|
+ <p class="message-title flex items-center gap-5">
|
|
|
+ <span
|
|
|
+ v-if="item.status === '0'"
|
|
|
+ class="w-2 h-2 bg-[#f56c6c] rounded-full text-var(--tab-text)!"
|
|
|
+ ></span
|
|
|
+ >{{ item.title }}
|
|
|
+ </p>
|
|
|
+ <p class="message-desc">
|
|
|
+ {{ timestampToDateTime(item.createTime) }}
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-if="!ehrMessageList.length" class="no-messages">
|
|
|
暂无新消息
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -609,6 +707,9 @@ import {
|
|
|
getSRMNotifyMessages,
|
|
|
getSRMNotifyMessageList,
|
|
|
markSRMNotifyMessageRead,
|
|
|
+ getEHRNotifyMessages,
|
|
|
+ getEHRNotifyMessageList,
|
|
|
+ markEHRNotifyMessageRead,
|
|
|
} from "@api/user";
|
|
|
|
|
|
import {
|
|
|
@@ -652,6 +753,7 @@ const oaUnreadCount = computed(() => {
|
|
|
// oa未读
|
|
|
const oaMessagesList = ref([]);
|
|
|
let srmMessageList = ref([]);
|
|
|
+let ehrMessageList = ref([]);
|
|
|
|
|
|
// srm未读
|
|
|
const unreadSRMCount = computed(() => {
|
|
|
@@ -662,6 +764,15 @@ const unreadSRMCount = computed(() => {
|
|
|
const hasUnreadSRMCount = computed(() => {
|
|
|
return srmMessageList.value.some((msg) => msg.status === "0");
|
|
|
});
|
|
|
+
|
|
|
+// ehr未读
|
|
|
+const unreadEHRCount = computed(() => {
|
|
|
+ return ehrMessageList.value.filter((msg) => msg.status === "0").length;
|
|
|
+});
|
|
|
+// ehr是否有未读消息
|
|
|
+const hasUnreadEHRCount = computed(() => {
|
|
|
+ return ehrMessageList.value.some((msg) => msg.status === "0");
|
|
|
+});
|
|
|
const unreadCount = ref(0); // 未读消息数量
|
|
|
const getUnreadCount = async () => {
|
|
|
if (!getAccessToken()) {
|
|
|
@@ -710,6 +821,19 @@ onMounted(async () => {
|
|
|
} catch (error) {
|
|
|
srmMessageList.value = [];
|
|
|
}
|
|
|
+
|
|
|
+ // EHR消息
|
|
|
+ try {
|
|
|
+ await getEHRNotifyMessages(userStore.getUser.username);
|
|
|
+ const ehrMessageLists = await getEHRNotifyMessageList(
|
|
|
+ userStore.getUser.username,
|
|
|
+ );
|
|
|
+ ehrMessageList.value = ehrMessageLists.filter(
|
|
|
+ (msg) => msg.status === "0",
|
|
|
+ );
|
|
|
+ } catch (error) {
|
|
|
+ ehrMessageList.value = [];
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
messageTimer = setInterval(
|
|
|
@@ -750,6 +874,19 @@ onMounted(async () => {
|
|
|
} catch (error) {
|
|
|
srmMessageList.value = [];
|
|
|
}
|
|
|
+
|
|
|
+ // EHR消息
|
|
|
+ try {
|
|
|
+ await getEHRNotifyMessages(userStore.getUser.username);
|
|
|
+ const ehrMessageLists = await getEHRNotifyMessageList(
|
|
|
+ userStore.getUser.username,
|
|
|
+ );
|
|
|
+ ehrMessageList.value = ehrMessageLists.filter(
|
|
|
+ (msg) => msg.status === "0",
|
|
|
+ );
|
|
|
+ } catch (error) {
|
|
|
+ ehrMessageList.value = [];
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
1000 * 60 * 5,
|
|
|
@@ -824,6 +961,13 @@ const markSRMAsRead = async () => {
|
|
|
srmMessageList.value = messageList.filter((msg: any) => msg.status === "0");
|
|
|
};
|
|
|
|
|
|
+// EHR全部标为已读
|
|
|
+const markEHRAsRead = async () => {
|
|
|
+ await markEHRNotifyMessageRead(userStore.getUser.username);
|
|
|
+ const messageList = await getEHRNotifyMessageList(userStore.getUser.username);
|
|
|
+ ehrMessageList.value = messageList.filter((msg: any) => msg.status === "0");
|
|
|
+};
|
|
|
+
|
|
|
const goHome = () => {
|
|
|
router.push({ path: "/" });
|
|
|
};
|