Эх сурвалжийг харах

修改公告信息 增加排序

bzd_lxf 5 сар өмнө
parent
commit
ca7b7e873e

+ 1 - 0
pm-admin/src/main/java/com/pm/web/controller/system/SysMenuController.java

@@ -152,6 +152,7 @@ public class SysMenuController extends BaseController
     {
         PageData pd = this.getPageData();
         pd.put("userId",getUserId());
+        startPage(); // 使用这个可以设置分页信息和排序规则
         List<PageData> menus = menuService.listNoticeRead(pd);
         return success(menus);
     }

+ 2 - 5
pm_ui/src/api/system/menu.js

@@ -59,14 +59,11 @@ export function delMenu(menuId) {
   })
 }
 // 查询公告信息
-export function listNoticeRead() {
+export function listNoticeRead(query) {
   return request({
     url: '/system/menu/listNoticeRead',
     method: 'get',
-    params: {
-      pageNum: 1,
-      pageSize: 10000
-    }
+    params: query
   })
 }
 // 查询统计信息

+ 34 - 6
pm_ui/src/layout/components/Navbar.vue

@@ -19,7 +19,7 @@
           </div>
         </el-tooltip>
         <!-- 弹框组件 -->
-        <el-dialog v-model="dialogVisible2" title="通知" width="30%" :before-close="closeDetailDialog">
+        <el-dialog v-model="dialogVisible2" title="详情" width="30%" :before-close="closeDetailDialog">
           <el-row :gutter="20">
             <el-col :span="24">
               <div class="dialog-item">
@@ -54,7 +54,7 @@
           </template>
         </el-dialog>
         <el-dialog v-model="dialogVisible" title="通知" width="50%" :before-close="closeListDialog">
-          <el-table v-loading="loading" :data="noticeList">
+          <el-table v-loading="loading" :data="noticeList" :default-sort="defaultSort" @sort-change="handleSortChange">
             <el-table-column type="selection" width="55" align="center"/>
             <!--            <el-table-column label="序号" align="center" prop="notice_id" width="100" />-->
             <el-table-column
@@ -74,7 +74,7 @@
                           </template>
                         </el-table-column>-->
             <el-table-column label="创建者" align="center" prop="create_by" width="100"/>
-            <el-table-column label="创建时间" align="center" prop="create_time" width="100">
+            <el-table-column label="创建时间" align="center" prop="create_time" width="100" sortable="custom">
               <template #default="scope">
                 <span>{{ parseTime(scope.row.create_time, '{y}-{m}-{d}') }}</span>
               </template>
@@ -142,6 +142,7 @@ import {getNotice, show} from "@/api/system/notice";
 import useAppStore from '@/store/modules/app'
 import useUserStore from '@/store/modules/user'
 import useSettingsStore from '@/store/modules/settings'
+import { h } from 'vue';
 
 const {proxy} = getCurrentInstance();
 const {sys_notice_status, sys_notice_type} = proxy.useDict("sys_notice_status", "sys_notice_type");
@@ -162,11 +163,27 @@ connectToWebSocket((newAnnounce) => {
     //   duration: 5000,
     //   position: 'top-right'
     // });
-    txt("新公告", "您有新的公告,请注意查收",'warning',6000);
+    txt2("新公告", "您有新的公告,请注意查收",'warning',3000);
     getlistNotice()
   }
 })
 
+function txt2(title,msg,type,time) {
+  ElNotification({
+    title: title,
+    message: h('div', { style: 'display: flex; align-items: center;' }, [
+      msg,
+      h('a', {
+        style: 'margin-left: 5px; color: #409eff; text-decoration: underline;',
+        onClick: () => showDetail()
+      }, '查看')
+    ]),
+    type: type,
+    duration: time,
+    position: 'top-right'
+  });
+}
+
 const getNoticeTypeLabel = (type) => {
   const dict = sys_notice_type.value.find(item => item.value === type)
   return dict ? dict.label : type
@@ -201,6 +218,7 @@ const dialogVisible2 = ref(false); // 控制弹框显示/隐藏
 const noticeTitle = ref(''); // 通知标题
 const noticeType = ref(''); // 通知类型
 const uniqueKey = ref(0); // 新增的唯一键属性
+const defaultSort = ref({prop: 'create_time', order: 'descending'}) // 默认排序
 
 function toggleSideBar() {
   appStore.toggleSideBar()
@@ -262,12 +280,17 @@ function closeListDialog() {
 function closeDetailDialog() {
   dialogVisible2.value = false;
 }
-
+const queryParams = ref({
+  pageNum: 1,
+  pageSize: 10000,
+  orderByColumn: 'create_time',
+  isAsc: 'desc'
+});
 getlistNotice()
 
 function getlistNotice() {
   loading.value = true;
-  listNoticeRead().then((response) => {
+  listNoticeRead(queryParams.value).then((response) => {
     // 更新唯一键以强制重新渲染
     noticeCount.value = response.data.length;
 
@@ -276,6 +299,11 @@ function getlistNotice() {
     noticeContent.value = "您有" + noticeCount.value + "条未读的信息 (点击铃铛查看消息)";
   });
 }
+function handleSortChange({column, prop, order}) {
+  queryParams.value.orderByColumn = prop;
+  queryParams.value.isAsc = order === 'ascending' ? 'asc' : 'desc';
+  getlistNotice()
+}
 
 function handleUpdate(row) {
   const noticeId = row.notice_id || ids.value;