|
@@ -149,7 +149,7 @@
|
|
|
v-if="task.status === '0'"
|
|
v-if="task.status === '0'"
|
|
|
class="inline-block h-2 w-2 bg-[#f56c6c] rounded-full"
|
|
class="inline-block h-2 w-2 bg-[#f56c6c] rounded-full"
|
|
|
></span>
|
|
></span>
|
|
|
- <span class="text-white/90 pl-2">{{
|
|
|
|
|
|
|
+ <span class="pl-2 text-var(--tab-text)!">{{
|
|
|
task.title
|
|
task.title
|
|
|
}}</span>
|
|
}}</span>
|
|
|
</p>
|
|
</p>
|
|
@@ -196,7 +196,56 @@
|
|
|
<p class="message-title flex items-center gap-5">
|
|
<p class="message-title flex items-center gap-5">
|
|
|
<span
|
|
<span
|
|
|
v-if="item.status === '0'"
|
|
v-if="item.status === '0'"
|
|
|
- class="w-2 h-2 bg-[#f56c6c] rounded-full"
|
|
|
|
|
|
|
+ class="w-2 h-2 bg-[#f56c6c] rounded-full text-var(--tab-text)!"
|
|
|
|
|
+ ></span
|
|
|
|
|
+ >{{ item.contentMajor }}
|
|
|
|
|
+ </p>
|
|
|
|
|
+ <p class="message-desc">
|
|
|
|
|
+ {{ timestampToDateTime(item.createTime) }}
|
|
|
|
|
+ </p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div v-if="!messages.length" class="no-messages">
|
|
|
|
|
+ 暂无新消息
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </el-tab-pane>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- SRM消息 -->
|
|
|
|
|
+ <el-tab-pane label="SRM" name="srm">
|
|
|
|
|
+ <template #label>
|
|
|
|
|
+ <span class="custom-tabs-label">
|
|
|
|
|
+ <span>SRM</span>
|
|
|
|
|
+ <el-badge
|
|
|
|
|
+ :value="unreadSRMCount"
|
|
|
|
|
+ class="item ml-1"
|
|
|
|
|
+ v-if="hasUnreadSRMCount"
|
|
|
|
|
+ ></el-badge>
|
|
|
|
|
+ </span>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ <div class="tab-content">
|
|
|
|
|
+ <!-- 消息中心内容 -->
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <span
|
|
|
|
|
+ v-if="hasUnreadSRMCount"
|
|
|
|
|
+ class="cursor-pointer text-blue-500"
|
|
|
|
|
+ @click="markAllAsRead"
|
|
|
|
|
+ >全部标为已读</span
|
|
|
|
|
+ >
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div
|
|
|
|
|
+ class="message-item"
|
|
|
|
|
+ v-for="(item, index) in srmMessageList"
|
|
|
|
|
+ :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
|
|
></span
|
|
|
>{{ item.contentMajor }}
|
|
>{{ item.contentMajor }}
|
|
|
</p>
|
|
</p>
|
|
@@ -314,9 +363,9 @@
|
|
|
<p class="task-title">
|
|
<p class="task-title">
|
|
|
<span
|
|
<span
|
|
|
v-if="task.status === '0'"
|
|
v-if="task.status === '0'"
|
|
|
- class="inline-block h-2 w-2 bg-[#f56c6c] rounded-full text-white/90!"
|
|
|
|
|
|
|
+ class="inline-block h-2 w-2 bg-[#f56c6c] rounded-full text-var(--tab-text)!"
|
|
|
></span>
|
|
></span>
|
|
|
- {{ task.title }}666
|
|
|
|
|
|
|
+ {{ task.title }}
|
|
|
</p>
|
|
</p>
|
|
|
<p class="message-desc">
|
|
<p class="message-desc">
|
|
|
<span>{{ task.oaCreateTime }}</span>
|
|
<span>{{ task.oaCreateTime }}</span>
|
|
@@ -361,7 +410,55 @@
|
|
|
<p class="message-title flex items-center gap-5">
|
|
<p class="message-title flex items-center gap-5">
|
|
|
<span
|
|
<span
|
|
|
v-if="item.status === '0'"
|
|
v-if="item.status === '0'"
|
|
|
- class="w-2 h-2 bg-[#f56c6c] rounded-full text-white/90"
|
|
|
|
|
|
|
+ class="w-2 h-2 bg-[#f56c6c] rounded-full text-var(--tab-text)!"
|
|
|
|
|
+ ></span
|
|
|
|
|
+ >{{ item.contentMajor }}
|
|
|
|
|
+ </p>
|
|
|
|
|
+ <p class="message-desc">
|
|
|
|
|
+ {{ timestampToDateTime(item.createTime) }}
|
|
|
|
|
+ </p>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div v-if="!messages.length" class="no-messages">
|
|
|
|
|
+ 暂无新消息
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </el-tab-pane>
|
|
|
|
|
+
|
|
|
|
|
+ <el-tab-pane label="SRM" name="srm">
|
|
|
|
|
+ <template #label>
|
|
|
|
|
+ <span class="custom-tabs-label">
|
|
|
|
|
+ <span>SRM</span>
|
|
|
|
|
+ <el-badge
|
|
|
|
|
+ :value="unreadSRMCount"
|
|
|
|
|
+ class="item ml-1"
|
|
|
|
|
+ v-if="hasUnreadSRMCount"
|
|
|
|
|
+ ></el-badge>
|
|
|
|
|
+ </span>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ <div class="tab-content">
|
|
|
|
|
+ <!-- 消息中心内容 -->
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <span
|
|
|
|
|
+ v-if="hasUnreadSRMCount"
|
|
|
|
|
+ class="cursor-pointer text-blue-500"
|
|
|
|
|
+ @click="markAllAsRead"
|
|
|
|
|
+ >全部标为已读</span
|
|
|
|
|
+ >
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div
|
|
|
|
|
+ class="message-item"
|
|
|
|
|
+ v-for="(item, index) in srmMessageList"
|
|
|
|
|
+ :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
|
|
></span
|
|
|
>{{ item.contentMajor }}
|
|
>{{ item.contentMajor }}
|
|
|
</p>
|
|
</p>
|
|
@@ -507,6 +604,8 @@ import {
|
|
|
getOANotifyMessages,
|
|
getOANotifyMessages,
|
|
|
getOANotifyMessageList,
|
|
getOANotifyMessageList,
|
|
|
markOAMessageAsRead,
|
|
markOAMessageAsRead,
|
|
|
|
|
+ getSRMNotifyMessages,
|
|
|
|
|
+ getSRMNotifyMessageList,
|
|
|
} from "@api/user";
|
|
} from "@api/user";
|
|
|
|
|
|
|
|
import {
|
|
import {
|
|
@@ -546,9 +645,20 @@ const unreadMessageCount = computed(() => {
|
|
|
const oaUnreadCount = computed(() => {
|
|
const oaUnreadCount = computed(() => {
|
|
|
return oaMessagesList.value.filter((msg) => msg.status === "0").length;
|
|
return oaMessagesList.value.filter((msg) => msg.status === "0").length;
|
|
|
});
|
|
});
|
|
|
|
|
+
|
|
|
// oa未读
|
|
// oa未读
|
|
|
const oaMessagesList = ref([]);
|
|
const oaMessagesList = ref([]);
|
|
|
|
|
+let srmMessageList = ref([]);
|
|
|
|
|
|
|
|
|
|
+// srm未读
|
|
|
|
|
+const unreadSRMCount = computed(() => {
|
|
|
|
|
+ return srmMessageList.value.filter((msg) => msg.status === "0").length;
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
|
|
+// srm是否有未读消息
|
|
|
|
|
+const hasUnreadSRMCount = computed(() => {
|
|
|
|
|
+ return srmMessageList.value.some((msg) => msg.status === "0");
|
|
|
|
|
+});
|
|
|
const unreadCount = ref(0); // 未读消息数量
|
|
const unreadCount = ref(0); // 未读消息数量
|
|
|
const getUnreadCount = async () => {
|
|
const getUnreadCount = async () => {
|
|
|
if (!getAccessToken()) {
|
|
if (!getAccessToken()) {
|
|
@@ -564,35 +674,79 @@ let unreadTimer: ReturnType<typeof setInterval> | undefined;
|
|
|
onMounted(async () => {
|
|
onMounted(async () => {
|
|
|
if (isLoggedIn.value) {
|
|
if (isLoggedIn.value) {
|
|
|
getUnreadCount();
|
|
getUnreadCount();
|
|
|
- await getNotifyMessages(userStore.getUser.username);
|
|
|
|
|
- const messageList = await getNotifyMessageList(userStore.getUser.username);
|
|
|
|
|
- messages.value = messageList.filter((msg: any) => msg.status === "0");
|
|
|
|
|
|
|
+ try {
|
|
|
|
|
+ await getNotifyMessages(userStore.getUser.username);
|
|
|
|
|
+ const messageList = await getNotifyMessageList(
|
|
|
|
|
+ userStore.getUser.username,
|
|
|
|
|
+ );
|
|
|
|
|
+ messages.value = messageList.filter((msg) => msg.status === "0");
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ messages.value = [];
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
// oa消息
|
|
// oa消息
|
|
|
- await getOANotifyMessages(userStore.getUser.username);
|
|
|
|
|
- const oaMessageList = await getOANotifyMessageList(
|
|
|
|
|
- userStore.getUser.username,
|
|
|
|
|
- );
|
|
|
|
|
- oaMessagesList.value = oaMessageList.filter((msg) => msg.status === "0");
|
|
|
|
|
|
|
+ try {
|
|
|
|
|
+ await getOANotifyMessages(userStore.getUser.username);
|
|
|
|
|
+ const oaMessageList = await getOANotifyMessageList(
|
|
|
|
|
+ userStore.getUser.username,
|
|
|
|
|
+ );
|
|
|
|
|
+ oaMessagesList.value = oaMessageList.filter((msg) => msg.status === "0");
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ oaMessagesList.value = [];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ // srm消息
|
|
|
|
|
+ await getSRMNotifyMessages(userStore.getUser.username);
|
|
|
|
|
+ const srmMessageLists = await getSRMNotifyMessageList(
|
|
|
|
|
+ userStore.getUser.username,
|
|
|
|
|
+ );
|
|
|
|
|
+ srmMessageList.value = srmMessageLists.filter(
|
|
|
|
|
+ (msg) => msg.status === "0",
|
|
|
|
|
+ );
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ srmMessageList.value = [];
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
messageTimer = setInterval(
|
|
messageTimer = setInterval(
|
|
|
async () => {
|
|
async () => {
|
|
|
if (isLoggedIn.value) {
|
|
if (isLoggedIn.value) {
|
|
|
- await getNotifyMessages(userStore.getUser.username);
|
|
|
|
|
- const messageList = await getNotifyMessageList(
|
|
|
|
|
- userStore.getUser.username,
|
|
|
|
|
- );
|
|
|
|
|
- messages.value = messageList.filter((msg: any) => msg.status === "0");
|
|
|
|
|
|
|
+ try {
|
|
|
|
|
+ await getNotifyMessages(userStore.getUser.username);
|
|
|
|
|
+ const messageList = await getNotifyMessageList(
|
|
|
|
|
+ userStore.getUser.username,
|
|
|
|
|
+ );
|
|
|
|
|
+ messages.value = messageList.filter((msg: any) => msg.status === "0");
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ messages.value = [];
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
// oa消息
|
|
// oa消息
|
|
|
- await getOANotifyMessages(userStore.getUser.username);
|
|
|
|
|
- const oaMessageList = await getOANotifyMessageList(
|
|
|
|
|
- userStore.getUser.username,
|
|
|
|
|
- );
|
|
|
|
|
- oaMessagesList.value = oaMessageList.filter(
|
|
|
|
|
- (msg: any) => msg.status === "0",
|
|
|
|
|
- );
|
|
|
|
|
|
|
+ try {
|
|
|
|
|
+ await getOANotifyMessages(userStore.getUser.username);
|
|
|
|
|
+ const oaMessageList = await getOANotifyMessageList(
|
|
|
|
|
+ userStore.getUser.username,
|
|
|
|
|
+ );
|
|
|
|
|
+ oaMessagesList.value = oaMessageList.filter(
|
|
|
|
|
+ (msg: any) => msg.status === "0",
|
|
|
|
|
+ );
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ oaMessagesList.value = [];
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // srm消息
|
|
|
|
|
+ try {
|
|
|
|
|
+ await getSRMNotifyMessages(userStore.getUser.username);
|
|
|
|
|
+ const srmMessageLists = await getSRMNotifyMessageList(
|
|
|
|
|
+ userStore.getUser.username,
|
|
|
|
|
+ );
|
|
|
|
|
+ srmMessageList.value = srmMessageLists.filter(
|
|
|
|
|
+ (msg: any) => msg.status === "0",
|
|
|
|
|
+ );
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ srmMessageList.value = [];
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
1000 * 60 * 5,
|
|
1000 * 60 * 5,
|
|
@@ -741,6 +895,10 @@ const onUserCommand = async (command: string) => {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+.msg-title {
|
|
|
|
|
+ color: var(--text-primary-down) !important;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
.notification-dropdown {
|
|
.notification-dropdown {
|
|
|
width: 400px !important;
|
|
width: 400px !important;
|
|
|
max-height: 500px;
|
|
max-height: 500px;
|
|
@@ -782,7 +940,7 @@ const onUserCommand = async (command: string) => {
|
|
|
|
|
|
|
|
.message-title {
|
|
.message-title {
|
|
|
font-weight: 500;
|
|
font-weight: 500;
|
|
|
- color: #303133;
|
|
|
|
|
|
|
+ /* color: #303133; */
|
|
|
margin-bottom: 4px;
|
|
margin-bottom: 4px;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -824,7 +982,7 @@ const onUserCommand = async (command: string) => {
|
|
|
|
|
|
|
|
.task-title {
|
|
.task-title {
|
|
|
font-weight: 500;
|
|
font-weight: 500;
|
|
|
- color: #303133;
|
|
|
|
|
|
|
+ /* color: #303133; */
|
|
|
margin-bottom: 4px;
|
|
margin-bottom: 4px;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -937,12 +1095,12 @@ const onUserCommand = async (command: string) => {
|
|
|
max-height: 500px;
|
|
max-height: 500px;
|
|
|
overflow: hidden;
|
|
overflow: hidden;
|
|
|
border: 1px solid rgba(109, 137, 213, 0.18);
|
|
border: 1px solid rgba(109, 137, 213, 0.18);
|
|
|
- background: #081225;
|
|
|
|
|
|
|
+ background: var(--bg-card);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/* 修改 Tab 标签文字颜色 */
|
|
/* 修改 Tab 标签文字颜色 */
|
|
|
:deep(.el-tabs__item) {
|
|
:deep(.el-tabs__item) {
|
|
|
- color: #b4bbcb !important; /* 强制设置为白色 */
|
|
|
|
|
|
|
+ color: var(--text-primary) !important; /* 强制设置为白色 */
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/* 选中状态的标签文字颜色(保持白色或根据需要调整) */
|
|
/* 选中状态的标签文字颜色(保持白色或根据需要调整) */
|