mirror of
https://github.com/continew-org/continew-admin.git
synced 2025-09-21 18:57:12 +08:00
fix: 修复消息管理部分格式及拼写错误
This commit is contained in:
@@ -1,19 +1,18 @@
|
||||
import axios from 'axios';
|
||||
import qs from 'query-string';
|
||||
import { DataRecord } from "@/api/system/dict";
|
||||
|
||||
const BASE_URL = '/system/message';
|
||||
|
||||
export interface MessageRecord {
|
||||
id?: number;
|
||||
type?: string;
|
||||
title?: string;
|
||||
subTitle?: string;
|
||||
avatar?: string;
|
||||
content?: string;
|
||||
createTime?: string;
|
||||
readStatus?: 0 | 1;
|
||||
messageType?: number;
|
||||
id: number;
|
||||
title: string;
|
||||
content: string;
|
||||
type: string;
|
||||
createUserString: string;
|
||||
createTime: string;
|
||||
subTitle: string;
|
||||
readStatus: boolean;
|
||||
readTime: string;
|
||||
}
|
||||
|
||||
export interface ChatRecord {
|
||||
@@ -30,12 +29,12 @@ export interface ListParam {
|
||||
type?: string;
|
||||
page?: number;
|
||||
size?: number;
|
||||
uid?:number
|
||||
uid?: number;
|
||||
sort?: Array<string>;
|
||||
}
|
||||
|
||||
export interface PageRes {
|
||||
list: DataRecord[];
|
||||
list: MessageRecord[];
|
||||
total: number;
|
||||
}
|
||||
|
||||
|
@@ -52,8 +52,6 @@
|
||||
list({ sort: ['createTime,desc'] }).then((res) => {
|
||||
messageData.messageList = res.data;
|
||||
});
|
||||
} catch (err) {
|
||||
// you can report use errorHandler or other
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
@@ -67,16 +65,16 @@
|
||||
async function readMessage(data: MessageListType) {
|
||||
const ids = data.map((item) => item.id);
|
||||
await read(ids);
|
||||
fetchSourceData();
|
||||
await fetchSourceData();
|
||||
}
|
||||
|
||||
/**
|
||||
* 每个消息类型下的消息列表
|
||||
*/
|
||||
const renderList = computed(() => {
|
||||
return messageData.messageList.filter(
|
||||
(item) => item.type === messageType.value && !item.readStatus
|
||||
).splice(0,3);
|
||||
return messageData.messageList
|
||||
.filter((item) => item.type === messageType.value && !item.readStatus)
|
||||
.splice(0, 3);
|
||||
});
|
||||
|
||||
/**
|
||||
@@ -115,15 +113,6 @@
|
||||
const handleItemClick = (items: MessageListType) => {
|
||||
if (renderList.value.length) readMessage([...items]);
|
||||
};
|
||||
|
||||
/**
|
||||
* 清空消息
|
||||
*/
|
||||
const emptyList = () => {
|
||||
read([]).then((res) => {
|
||||
messageData.messageList = [];
|
||||
});
|
||||
};
|
||||
fetchSourceData();
|
||||
</script>
|
||||
|
||||
|
@@ -5,17 +5,11 @@
|
||||
:key="item.id"
|
||||
action-layout="vertical"
|
||||
:style="{
|
||||
opacity: item.readStatus == 1 ? 0.5 : 1,
|
||||
opacity: item.readStatus ? 0.5 : 1,
|
||||
}"
|
||||
>
|
||||
<div class="item-wrap" @click="onItemClick(item)">
|
||||
<a-list-item-meta>
|
||||
<template v-if="item.avatar" #avatar>
|
||||
<a-avatar shape="circle">
|
||||
<img v-if="item.avatar" :src="item.avatar" />
|
||||
<icon-desktop v-else />
|
||||
</a-avatar>
|
||||
</template>
|
||||
<template #title>
|
||||
<a-space :size="4">
|
||||
<span>{{ item.title }}</span>
|
||||
@@ -90,9 +84,9 @@
|
||||
/**
|
||||
* 查看更多
|
||||
*/
|
||||
const toList = ()=>{
|
||||
const toList = () => {
|
||||
router.push({
|
||||
path: '/system/message',
|
||||
name: 'Message',
|
||||
});
|
||||
};
|
||||
|
||||
@@ -149,6 +143,9 @@
|
||||
}
|
||||
.footer-wrap {
|
||||
text-align: center;
|
||||
.arco-link {
|
||||
padding: 1px 10px;
|
||||
}
|
||||
}
|
||||
.arco-typography {
|
||||
margin-bottom: 0;
|
||||
|
@@ -190,7 +190,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed, ref, inject,watchEffect } from 'vue';
|
||||
import { computed, ref, inject, watchEffect } from 'vue';
|
||||
import { useDark, useToggle, useFullscreen } from '@vueuse/core';
|
||||
import { useAppStore, useUserStore } from '@/store';
|
||||
import { list } from '@/api/system/message';
|
||||
@@ -227,7 +227,7 @@
|
||||
|
||||
const unReadMessageCount = ref(0);
|
||||
watchEffect(async () => {
|
||||
const res = await list({ sort: ["createTime,desc"],readStatus:0 });
|
||||
const res = await list({ sort: ['createTime,desc'], readStatus: 0 });
|
||||
unReadMessageCount.value = res.data?.length ?? 0;
|
||||
});
|
||||
|
||||
|
@@ -39,6 +39,15 @@ const System: AppRouteRecordRaw = {
|
||||
requiresAuth: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Menu',
|
||||
path: '/system/menu',
|
||||
component: () => import('@/views/system/menu/index.vue'),
|
||||
meta: {
|
||||
locale: 'menu.system.menu.list',
|
||||
requiresAuth: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Announcement',
|
||||
path: '/system/announcement',
|
||||
@@ -49,11 +58,11 @@ const System: AppRouteRecordRaw = {
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Menu',
|
||||
path: '/system/menu',
|
||||
component: () => import('@/views/system/menu/index.vue'),
|
||||
name: 'Message',
|
||||
path: '/system/message',
|
||||
component: () => import('@/views/system/message/index.vue'),
|
||||
meta: {
|
||||
locale: 'menu.system.menu.list',
|
||||
locale: 'menu.system.message',
|
||||
requiresAuth: true,
|
||||
},
|
||||
},
|
||||
@@ -75,15 +84,6 @@ const System: AppRouteRecordRaw = {
|
||||
requiresAuth: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'Message',
|
||||
path: '/system/message',
|
||||
component: () => import('@/views/system/message/index.vue'),
|
||||
meta: {
|
||||
locale: 'menu.system.message',
|
||||
requiresAuth: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
|
@@ -27,7 +27,12 @@
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item field="type" hide-label>
|
||||
<a-select :style="{width:'150px'}" placeholder="是否已读" allow-clear v-model="queryParams.readStatus">
|
||||
<a-select
|
||||
v-model="queryParams.readStatus"
|
||||
:style="{ width: '150px' }"
|
||||
placeholder="是否已读"
|
||||
allow-clear
|
||||
>
|
||||
<a-option :value="true">是</a-option>
|
||||
<a-option :value="false">否</a-option>
|
||||
</a-select>
|
||||
@@ -66,7 +71,7 @@
|
||||
<template #icon><icon-check /></template>全部已读
|
||||
</a-button>
|
||||
<a-button
|
||||
v-permission="['system:announcement:delete']"
|
||||
v-permission="['system:message:delete']"
|
||||
type="primary"
|
||||
status="danger"
|
||||
:disabled="multiple"
|
||||
@@ -136,7 +141,9 @@
|
||||
</a-table-column>
|
||||
<a-table-column title="发送时间" data-index="createTime" />
|
||||
<a-table-column
|
||||
v-if="checkPermission(['system:message:delete'])"
|
||||
v-if="
|
||||
checkPermission(['system:message:delete'])
|
||||
"
|
||||
title="操作"
|
||||
align="center"
|
||||
>
|
||||
@@ -157,7 +164,7 @@
|
||||
@ok="handleDelete([record.id])"
|
||||
>
|
||||
<a-button
|
||||
v-permission="['system:announcement:delete']"
|
||||
v-permission="['system:message:delete']"
|
||||
type="text"
|
||||
size="small"
|
||||
title="删除"
|
||||
@@ -202,7 +209,9 @@
|
||||
<a-skeleton v-if="detailLoading" :animation="true">
|
||||
<a-skeleton-line :rows="1" />
|
||||
</a-skeleton>
|
||||
<span v-else-if="dataDetail.createUserString">{{ dataDetail.createUserString }}</span>
|
||||
<span v-else-if="dataDetail.createUserString">{{
|
||||
dataDetail.createUserString
|
||||
}}</span>
|
||||
<dict-tag
|
||||
v-if="dataDetail.createUserString == null"
|
||||
:value="dataDetail.type"
|
||||
@@ -221,9 +230,9 @@
|
||||
<a-skeleton v-if="detailLoading" :animation="true">
|
||||
<a-skeleton-line :rows="1" />
|
||||
</a-skeleton>
|
||||
<span color="green" v-else>
|
||||
<a-tag v-if="dataDetail.readStatus" color="green">已读</a-tag>
|
||||
<a-tag v-else color="red">未读</a-tag>
|
||||
<span v-else>
|
||||
<a-tag v-if="dataDetail.readStatus" color="green">是</a-tag>
|
||||
<a-tag v-else color="red">否</a-tag>
|
||||
</span>
|
||||
</a-descriptions-item>
|
||||
|
||||
@@ -262,7 +271,17 @@
|
||||
const { message_type } = proxy.useDict('message_type');
|
||||
|
||||
const dataList = ref<MessageRecord[]>([]);
|
||||
const dataDetail = ref<MessageRecord>({});
|
||||
const dataDetail = ref<MessageRecord>({
|
||||
id: 0,
|
||||
title: '',
|
||||
content: '',
|
||||
type: '',
|
||||
createUserString: '',
|
||||
createTime: '',
|
||||
subTitle: '',
|
||||
readStatus: false,
|
||||
readTime: '',
|
||||
});
|
||||
const total = ref(0);
|
||||
const ids = ref<Array<number>>([]);
|
||||
const single = ref(true);
|
||||
@@ -319,7 +338,6 @@
|
||||
*/
|
||||
const handleDetailCancel = () => {
|
||||
detailVisible.value = false;
|
||||
dataDetail.value = {};
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -369,7 +387,7 @@
|
||||
* 批量所以消息设置为已读
|
||||
*/
|
||||
const handleAllRedaMessage = () => {
|
||||
handleReadMessage([]);
|
||||
handleReadMessage([]);
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -391,14 +409,13 @@
|
||||
* @param rowKeys ID 列表
|
||||
*/
|
||||
const handleSelectionChange = (rowKeys: Array<any>) => {
|
||||
const unReadMessageList = dataList.value.filter(
|
||||
(item) => rowKeys.indexOf(item.id)!==-1 && !item.readStatus
|
||||
const unReadMessageList = dataList.value.filter(
|
||||
(item) => rowKeys.indexOf(item.id) !== -1 && !item.readStatus
|
||||
);
|
||||
readMultiple.value=!unReadMessageList.length
|
||||
readMultiple.value = !unReadMessageList.length;
|
||||
ids.value = rowKeys;
|
||||
single.value = rowKeys.length !== 1;
|
||||
multiple.value = !rowKeys.length;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -439,7 +456,7 @@
|
||||
|
||||
<script lang="ts">
|
||||
export default {
|
||||
name: 'Announcement',
|
||||
name: 'Message',
|
||||
};
|
||||
</script>
|
||||
|
||||
|
Reference in New Issue
Block a user