Explorar o código

ehr消息通知

yanghao hai 1 mes
pai
achega
e6c200a9a3
Modificáronse 2 ficheiros con 166 adicións e 2 borrados
  1. 20 0
      src/api/user.ts
  2. 146 2
      src/components/home/header.vue

+ 20 - 0
src/api/user.ts

@@ -227,6 +227,26 @@ export const markSRMNotifyMessageRead = async (id) => {
   });
 };
 
+export const getEHRNotifyMessages = async (id) => {
+  return await request.get({
+    url: "/admin-api/portal/todo/ehr/notice?workcode=" + id,
+  });
+};
+
+// EHR消息列表
+export const getEHRNotifyMessageList = async (id) => {
+  return await request.get({
+    url: "/admin-api/portal/todo/ehr/notice/self?workcode=" + id,
+  });
+};
+
+// EHR 标为已读
+export const markEHRNotifyMessageRead = async (id) => {
+  return await request.get({
+    url: "/admin-api/portal/todo/ehr/notice/readed?workcode=" + id,
+  });
+};
+
 // 首页公告
 export const getNotices = async (params) => {
   return await request.get({

+ 146 - 2
src/components/home/header.vue

@@ -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: "/" });
 };