From ae9a961a42265f7f92b229fcf696e264a79a2a8c Mon Sep 17 00:00:00 2001
From: zoujiandong <10130823232@qq.com>
Date: Fri, 6 Feb 2026 17:30:16 +0800
Subject: [PATCH] =?UTF-8?q?2.6=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pages.json | 86 +++++----
pages/education/education.vue | 8 +-
pages/live/live.vue | 22 ++-
pages/patientClass/patientClass.vue | 22 ++-
pages_app/msg/msg.vue | 281 ++++++++++++++++++++--------
pages_app/myPoint/myPoint.vue | 20 +-
pages_app/myWelfare/myWelfare.vue | 19 +-
pages_app/news/news.vue | 52 +++--
pages_app/newsList/newsList.vue | 71 +++++--
pages_app/video/video.vue | 16 +-
static/clear_message.png | Bin 0 -> 1470 bytes
static/ding_message_big.png | Bin 0 -> 2788 bytes
static/fu_message_big.png | Bin 0 -> 2850 bytes
static/gandanhuiyi.png | Bin 0 -> 4758 bytes
static/gandanxinwen.png | Bin 0 -> 3789 bytes
static/hui_message_big.png | Bin 0 -> 4030 bytes
static/sui_message_big.png | Bin 0 -> 5487 bytes
17 files changed, 416 insertions(+), 181 deletions(-)
create mode 100644 static/clear_message.png
create mode 100644 static/ding_message_big.png
create mode 100644 static/fu_message_big.png
create mode 100644 static/gandanhuiyi.png
create mode 100644 static/gandanxinwen.png
create mode 100644 static/hui_message_big.png
create mode 100644 static/sui_message_big.png
diff --git a/pages.json b/pages.json
index b7d9f54..a21e7a0 100644
--- a/pages.json
+++ b/pages.json
@@ -9,16 +9,16 @@
}
},
"pages": [
- {
- "path": "pages/upload/upload2",
- "style": {
- "navigationBarTitleText": "",
- "navigationStyle": "custom",
- "app": {
- "bounce": "none"
- }
- }
- },
+ // {
+ // "path": "pages/upload/upload2",
+ // "style": {
+ // "navigationBarTitleText": "",
+ // "navigationStyle": "custom",
+ // "app": {
+ // "bounce": "none"
+ // }
+ // }
+ // },
{
"path": "pages/loading/loading",
"style": {
@@ -600,6 +600,38 @@
"bounce": "none"
}
}
+ },
+ {
+ "path": "news/news",
+ "style": {
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "uni-app分页",
+ "app": {
+ "bounce": "none"
+ }
+ }
+ },
+
+ {
+ "path": "msg/msg",
+ "style": {
+ "navigationStyle": "custom",
+ "navigationBarTitleText": "uni-app分页",
+ "app": {
+ "bounce": "none"
+ }
+ }
+ },
+ {
+ "path": "myPatient/myPatient",
+ "style": {
+ "navigationStyle": "custom",
+ "navigationBarRightButton":{ "hide": true},
+ "navigationBarTitleText": "uni-app分页",
+ "app": {
+ "bounce": "none"
+ }
+ }
},
{
"path": "newsList/newsList",
@@ -741,17 +773,7 @@
// }
// }
// },
- // {
- // "path": "myPatient/myPatient",
- // "style": {
- // "navigationStyle": "custom",
- // "navigationBarRightButton":{ "hide": true},
- // "navigationBarTitleText": "uni-app分页",
- // "app": {
- // "bounce": "none"
- // }
- // }
- // },
+
// {
// "path": "patientSetting/patientSetting",
// "style": {
@@ -854,16 +876,7 @@
// }
// }
// },
- // {
- // "path": "news/news",
- // "style": {
- // "navigationStyle": "custom",
- // "navigationBarTitleText": "uni-app分页",
- // "app": {
- // "bounce": "none"
- // }
- // }
- // },
+
// {
@@ -887,16 +900,7 @@
// },
- // {
- // "path": "msg/msg",
- // "style": {
- // "navigationStyle": "custom",
- // "navigationBarTitleText": "uni-app分页",
- // "app": {
- // "bounce": "none"
- // }
- // }
- // },
+
// {
diff --git a/pages/education/education.vue b/pages/education/education.vue
index 56cff04..dc038a7 100644
--- a/pages/education/education.vue
+++ b/pages/education/education.vue
@@ -107,18 +107,18 @@
// 方法
// 方法
const goToCourse = (courseType) => {
- console.log('进入课程:', courseType);
+
// 根据课程类型进行不同的处理
switch(courseType) {
case 'course':
- navTo({
- url: '/pages_course/course/course'
+ uni.sendNativeEvent('goCourse',{
+ msg: 'course'
})
break;
case 'video':
navTo({
- url: '/pages_app/video/video'
+ url: '/pages_app/video/video?from=education'
})
break;
case 'ppt':
diff --git a/pages/live/live.vue b/pages/live/live.vue
index a94a7b5..890e97e 100644
--- a/pages/live/live.vue
+++ b/pages/live/live.vue
@@ -3,6 +3,7 @@
-
+
@@ -288,6 +290,7 @@ const pageSize = ref(10);
const scrollTop = ref(0);
const permissionListener=ref(null);
const topTipRef=ref(null);
+const from=ref('');
const goToMeetHistroy = () => {
navTo({
url: "/pages_app/meetHistroy/meetHistroy",
@@ -297,7 +300,10 @@ const goToMeetHistroy = () => {
onUnload (() => {
permissionListener.value?.stop();
});
- onLoad(()=>{
+ onLoad((options)=>{
+ if(options.from){
+ from.value=options.from;
+ }
// #ifdef APP-PLUS
permissionListener.value=uni.createRequestPermissionListener();
console.log('放在onLoad执行');
@@ -384,9 +390,15 @@ const goDetail = (item) => {
uni.navigateTo({
url: `/pages_app/webview/webview?url=${encoded}&sharetitle=${item.title}&bg=1&type=live_yugao&imgPath=${imgPath}&share=1&title=会议详情`,
});
+};
+const goBack = () => {
+ if(from.value){
+ uni.navigateBack();
+ }
};
onBackPress(() => {
- try{
+ if(!from.value){
+ try{
uni.sendNativeEvent('goTabbarPage', {
msg: 'home'
},ret => {
@@ -397,6 +409,7 @@ const goDetail = (item) => {
}
plus.runtime.quit()
return true;
+ }
})
const sendWebsocketMsg = (code) => {
let userInfo = uni.getStorageSync("userInfo");
@@ -1068,6 +1081,9 @@ $shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
right: 0;
bottom:120rpx; // 底部导航栏高度
width: 100%;
+ &.active{
+ bottom:10rpx;
+ }
}
// 筛选标签栏
diff --git a/pages/patientClass/patientClass.vue b/pages/patientClass/patientClass.vue
index 95ae117..761227d 100644
--- a/pages/patientClass/patientClass.vue
+++ b/pages/patientClass/patientClass.vue
@@ -130,9 +130,14 @@
import api from "@/api/api.js"
import docUrl from '@/utils/docUrl.js';
import navTo from '@/utils/navTo.js';
+ import {onBackPress} from '@dcloudio/uni-app';
import navBar from "@/components/navBar/navBar.vue"
import formatNumber from '@/utils/formatNumber.js';
const type=ref(1)
+ onBackPress(() => {
+ plus.runtime.quit();
+ return true;
+ });
// 分页相关状态
const currentPage = ref(1);
@@ -289,8 +294,8 @@
// 跳转到搜索页面
const goToSearch = () => {
- uni.navigateTo({
- url: '/pages_app/search/search'
+ uni.sendNativeEvent('goHomeSearch',{
+ msg: 'patientClass'
});
};
@@ -357,16 +362,16 @@
// 检查是否有选中的标签
const hasSelected = filterTags.value.some(tag => tag.selected);
isFilterActive.value = hasSelected;
-
+ let words='';
// 执行筛选逻辑
if (hasSelected) {
const selectedTags = filterTags.value.filter(tag => tag.selected).map(tag => tag.NAME);
console.log('选中的标签:', selectedTags);
- keywords.value = selectedTags.join(',');
+ words = selectedTags.join(',');
} else {
- keywords.value = '';
+ words = '';
}
-
+ keywords.value = words;
// 重置分页状态
currentPage.value = 1;
hasMore.value = true;
@@ -665,16 +670,15 @@ $padding-small: 20rpx;
.filter-tags {
display: flex;
flex-wrap: wrap;
- gap: 20rpx;
margin-bottom: 60rpx;
max-height: 65vh;
overflow-y: auto;
-
.tag-item {
background-color: #f8f8f8;
color: $gray-dark;
padding: 8rpx 0rpx;
- width:150rpx;
+ width:152rpx;
+ margin:8rpx;
text-align:center;
border-radius: 30rpx;
font-size: 26rpx;
diff --git a/pages_app/msg/msg.vue b/pages_app/msg/msg.vue
index be288ca..2fdd6bf 100644
--- a/pages_app/msg/msg.vue
+++ b/pages_app/msg/msg.vue
@@ -1,47 +1,53 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
{{ badgeData.Module_Welfare }}
福利
-
-
+
+
{{ badgeData.Module_Order }}
订单
-
-
+
+
{{ badgeData.Module_Relation }}
随访
-
-
+
+
{{ badgeData.Module_Comment }}
回复我的
@@ -53,11 +59,11 @@
class="msg-list"
scroll-y="true"
:show-scrollbar="false"
- refresher-enabled="true"
+ :refresher-enabled="true"
:refresher-triggered="refreshing"
@refresherrefresh="onRefresh"
@scrolltolower="onLoadMore"
- lower-threshold="80"
+ :lower-threshold="100"
>
@@ -78,23 +84,24 @@
- {{ msg.title }}
+ {{ msg.title }}
{{ msg.content }}
{{ msg.create_date }}
-
- 暂无消息
+
+
-
+
+
加载中...
-
- 没有更多数据了
+
+ — 没有更多数据了 —
@@ -105,6 +112,17 @@
import api from '@/api/api.js';
import docUrl from '@/utils/docUrl';
import navTo from '@/utils/navTo';
+ import clearImg from '@/static/clear_message.png';
+ import empty from '@/components/empty/empty.vue';
+ import fuliImg from '@/static/fu_message_big.png';
+ import orderImg from '@/static/ding_message_big.png';
+ import followImg from '@/static/sui_message_big.png';
+ import replyImg from '@/static/hui_message_big.png';
+ import {onBackPress} from '@dcloudio/uni-app';
+ onBackPress(() => {
+ plus.runtime.quit();
+ return true;
+ });
// 角标数据
const badgeData = ref({
@@ -123,44 +141,53 @@
const loading = ref(false);
const noMore = ref(false);
const page = ref(1);
- const pageSize = ref(10);
+ const pageSize = 10;
+
+ // 重置分页状态
+ const resetPagination = () => {
+ page.value = 1;
+ noMore.value = false;
+ msgList.value = [];
+ };
const goBack = () => {
- uni.navigateBack({
- fail() {
- uni.redirectTo({
- url: '/pages/index/index'
+ plus.runtime.quit();
+ };
+
+ // 切换模块
+ const switchModule = (module) => {
+ if (currentModule.value === module && msgList.value.length > 0) return; // 避免重复加载
+ currentModule.value = module;
+ resetPagination();
+ getAppMesageList(true);
+ };
+
+ const goBenefit = () => switchModule(1);
+ const goOrder = () => switchModule(2);
+ const goFollow = () => switchModule(3);
+ const goReply = () => switchModule(4);
+ const readMsg = (id) => {
+ api.appMesageRead({
+ id: id
+ }).then(res => {
+ if(res.code==200){
+ msgList.value.forEach(item => {
+ if(item.id==id){
+ item.is_read=1;
+ }
});
}
});
- };
-
- const goBenefit = () => {
- currentModule.value = 1;
- getAppMesageList(1);
- };
- const goOrder = () => {
- currentModule.value = 2;
- getAppMesageList(2);
- };
- const goFollow = () => {
- currentModule.value = 3;
- getAppMesageList(3);
- };
- const goReply = () => {
- currentModule.value = 4;
- getAppMesageList(4);
- };
-
+ }
const clearMsg = () => {
uni.showModal({
title: '提醒',
content: '是否要清除所有未读消息?',
success: (res) => {
if (res.confirm) {
- api.appMesageRead({}).then(res => {
+ api.appMesageRead().then(res => {
console.log(res);
});
getUnReadList();
@@ -170,46 +197,78 @@
}
const goMsgDetail = (msg) => {
console.log(msg);
- let url="";
+ if(msg.is_read==0){
+ readMsg(msg.id);
+ };
+ //readMsg(msg.id);
+ if(msg.extra.module==4){
+ uni.sendNativeEvent('goCourseDetail', {
+ msg: {
+ id:msg.extra.id
+ }
+ });
+
+ }else{
+ let url="";
if(msg.extra.module==1 && msg.extra.type==36){
- url=`/pages_app/myPoint/myPoint`
+ url=`/pages_app/myPoint/myPoint?from=msg`
+ }else if(msg.extra.module==1 && msg.extra.type==31){
+ url=`/pages_app/myPoint/myPoint?from=msg`
+ }else if(msg.extra.module==1 && msg.extra.type==35){
+ uni.setStorageSync('lookWelfare', 'useWelfare');
+ url=`/pages_app/myWelfare/myWelfare?from=msg`
}else if(msg.extra.module==3 && msg.extra.type==12){
url=`/pages_app/myPatient/myPatient`
}
navTo({
url: url
})
+ }
}
- // 下拉刷新=
+ // 下拉刷新
const onRefresh = async () => {
if (refreshing.value) return;
refreshing.value = true;
try {
- // 重新获取当前模块的消息列表
- getAppMesageList(currentModule.value);
- // 重新获取未读消息数量
- getUnReadList();
+ // 重置分页并重新获取数据
+ resetPagination();
+ await Promise.all([
+ getAppMesageList(true),
+ getUnReadList()
+ ]);
+ } catch (err) {
+ console.error('刷新失败:', err);
+ uni.showToast({
+ title: '刷新失败',
+ icon: 'none'
+ });
} finally {
refreshing.value = false;
}
};
- // 上拉加载
+ // 上拉加载更多
const onLoadMore = async () => {
- if (loading.value || noMore.value) return;
+ if (loading.value || noMore.value || refreshing.value) return;
loading.value = true;
try {
- // 这里可以根据需要实现分页加载
- // 目前接口返回的数据已经包含了分页信息
- // 如果需要加载更多,可以调用 getAppMesageList 并传入页码参数
- noMore.value = true; // 暂时设置为没有更多数据
+ page.value++;
+ await getAppMesageList(false);
+ } catch (err) {
+ // 加载失败时回退页码
+ page.value = Math.max(1, page.value - 1);
+ console.error('加载更多失败:', err);
+ uni.showToast({
+ title: '加载失败',
+ icon: 'none'
+ });
} finally {
loading.value = false;
}
};
const getUnReadList = () => {
- api.unReadList({}).then(res => {
+ return api.unReadList({}).then(res => {
console.log(res);
if (res.code === 200 && res.data) {
// 更新角标数据
@@ -220,17 +279,24 @@
Module_Relation: parseInt(res.data.Module_Relation) || 0
};
}
+ return res;
}).catch(err => {
console.error('获取未读消息列表失败:', err);
+ throw err;
});
};
- const getAppMesageList = (module) => {
- api.appMesageList({module: module}).then(res => {
+ // 获取消息列表
+ // isRefresh: true 表示刷新,false 表示加载更多
+ const getAppMesageList = (isRefresh = false) => {
+ return api.appMesageList({
+ module: currentModule.value,
+ page: page.value,
+ pageSize: pageSize
+ }).then(res => {
console.log(res);
if (res.code === 200 && res.data && res.data.list) {
- // 更新消息列表数据
- msgList.value = res.data.list.map(item => ({
+ const newList = res.data.list.map(item => ({
id: item.id,
title: item.title,
content: item.content,
@@ -245,9 +311,31 @@
`${getBaseUrl()}${item.extra.user_photo}`) :
'/static/default-avatar.png'
}));
+
+ // 刷新时替换数据,加载更多时追加数据
+ if (isRefresh || page.value === 1) {
+ msgList.value = newList;
+ } else {
+ msgList.value = [...msgList.value, ...newList];
+ }
+
+ // 判断是否还有更多数据
+ if (res.isLastPage || newList.length < pageSize) {
+ noMore.value = true;
+ } else {
+ noMore.value = false;
+ }
+ } else if (res.code === 200 && (!res.data || !res.data.list || res.data.list.length === 0)) {
+ // 没有数据的情况
+ if (isRefresh || page.value === 1) {
+ msgList.value = [];
+ }
+ noMore.value = true;
}
+ return res;
}).catch(err => {
console.error('获取消息列表失败:', err);
+ throw err;
});
};
@@ -264,7 +352,7 @@
onMounted(() => {
getUnReadList();
- getAppMesageList(1);
+ getAppMesageList(true); // 初始加载视为刷新
});
@@ -283,16 +371,27 @@
align-items: center;
justify-content: center;
}
-
+ .imgcell{
+ width:74rpx;
+ height: 74rpx;
+ }
+ .nav-right{
+ display: flex;
+ align-items: center;
+ .collect-img{
+ width: 34rpx;
+ height: 34rpx;
+ }
+ }
.msg-page {
min-height: 100vh;
background: $bg;
- padding-top: $nav-h; // 与导航栏高度一致
+
}
.shortcut-grid {
position: fixed;
- top: $nav-h;
+ top: calc(var(--status-bar-height) + 44px);
left: 0;
right: 0;
z-index: 9;
@@ -360,6 +459,33 @@
}
}
+ // 空状态样式
+ .empty-state {
+ flex-direction: column;
+ padding: 100rpx 0;
+ gap: 20rpx;
+ }
+
+ // 加载动画
+ .loading-more {
+ gap: 16rpx;
+
+ .loading-spinner {
+ width: 32rpx;
+ height: 32rpx;
+ border: 3rpx solid #eee;
+ border-top-color: $theme;
+ border-radius: 50%;
+ animation: spin 0.8s linear infinite;
+ }
+ }
+
+ @keyframes spin {
+ to {
+ transform: rotate(360deg);
+ }
+ }
+
.card {
background: #fff;
border-radius: 16rpx;
@@ -372,6 +498,9 @@
color: $text-primary;
font-weight: 600;
margin-bottom: 14rpx;
+ &.active{
+ color: red;
+ }
}
.card-content {
diff --git a/pages_app/myPoint/myPoint.vue b/pages_app/myPoint/myPoint.vue
index 96a7539..e4e91ef 100644
--- a/pages_app/myPoint/myPoint.vue
+++ b/pages_app/myPoint/myPoint.vue
@@ -194,12 +194,20 @@
@@ -332,6 +344,10 @@
align-items: center;
justify-content: center;
margin-right: 30rpx;
+ image{
+ width: 100%;
+ height: 100%;
+ }
&.blue {
background-color: $blue-color;
diff --git a/pages_app/newsList/newsList.vue b/pages_app/newsList/newsList.vue
index ac97395..76ca102 100644
--- a/pages_app/newsList/newsList.vue
+++ b/pages_app/newsList/newsList.vue
@@ -1,16 +1,27 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -130,7 +141,10 @@
import { onShow, onPullDownRefresh, onReachBottom } from '@dcloudio/uni-app';
import api from '@/api/api.js';
import docUrl from '@/utils/docUrl.js';
+ import navTo from "@/utils/navTo.js";
+ import navBar from '@/components/navBar/navBar.vue';
import dayjs from 'dayjs';
+ import searchImg from "@/static/search.png";
// Banner相关数据
const bannerList = ref([]);
const currentBannerIndex = ref(0);
@@ -167,10 +181,10 @@
currentBannerIndex.value = e.detail.current;
};
const playBannerVideo = (banner) => {
- let url=encodeURIComponent(docUrl+banner.path)
- uni.navigateTo({
- url: `/pages_app/webview/webview?url=${url}&title=${banner.title}`
- });
+ const encoded = encodeURIComponent(docUrl+banner.path);
+ navTo({
+ url: `/pages_app/webview/webview?url=${encoded}&type=news&share=1&sharetitle=${banner.title}`
+ });
};
// scroll-view 下拉刷新
const onRefresh = async () => {
@@ -477,10 +491,19 @@
};
const goToNewsDetail = (item) => {
- // Implement navigation to news detail page
console.log('Go to news detail:', item);
- uni.navigateTo({
- url: `/pages_app/newsDetail/newsDetail?id=${item.uuid || item.id}`
+ // Implement navigation to news detail page
+ const encoded = encodeURIComponent(docUrl+item.path);
+ navTo({
+ url: `/pages_app/webview/webview?url=${encoded}&type=news&share=1&sharetitle=${item.title}`
+ });
+ // uni.navigateTo({
+ // url: `/pages_app/newsDetail/newsDetail?id=${item.uuid || item.id}`
+ // });
+ };
+ const goSearch = () => {
+ uni.sendNativeEvent('goHomeSearch',{
+ msg: 'news'
});
};
@@ -499,6 +522,16 @@