当前位置:   article > 正文

若依移动端Ruoyi-App——使用uview2.0开发通知公告_ruoyi-app-master

ruoyi-app-master

背景:若依移动端Ruoyi-App没有通知公告内容,本文基于uview2开发通知公告列表及详情及界面前端,不改变后端内容。

1. 引入uview2.0 参照

若依移动端Ruoyi-App——引入uview2.0开发项目_鲸鱼姐的博客-CSDN博客_ruoyi-app

2.  新建通知公告列表页面

在RuoYi-App-master根目录的pages下新建项目目录如“whalesystem”,然后在whalesystem下新建notice目录,并新建list_notice.vue页面

  1. <template>
  2. <view class="page-notification">
  3. <view>
  4. <u-search placeholder="请输入查询内容" v-model="params.noticeTitle" height="60rpx" @search="searchData" @custom="searchData"></u-search>
  5. </view>
  6. <view>
  7. <u-list v-if="noticeList.length > 0" @scrolltolower="scrolltolower" >
  8. <u-list-item v-for="(item, index) in noticeList" :key="index" class="notice-item" >
  9. <view @click="navTo(item)">
  10. <view><text style="color: #606266;"></text><text>{{item.noticeTitle}}</text></view>
  11. <view class="article-meta">
  12. <span>{{item.noticeId}}</span><span>{{item.createBy}}</span> <span style="font-size: 26rpx;color: #999999;padding-left: 10px;">{{item.createTime}}</span></text>
  13. </view>
  14. </view>
  15. </u-list-item>
  16. </u-list>
  17. <u-empty v-else></u-empty>
  18. <!-- 触底显示加载状态 -->
  19. <uni-load-more :status="status"> </uni-load-more>
  20. </view>
  21. </view>
  22. </template>
  23. <script>
  24. import { getNoticelist } from "@/api/notice/notice"
  25. export default {
  26. data() {
  27. return {
  28. params: {
  29. pageNum: 0,
  30. pageSize: 20,
  31. title: ''
  32. },
  33. noticeList: [],
  34. total:0,
  35. status: "more",
  36. };
  37. },
  38. onLoad() {
  39. this.params.pageNum = 1
  40. this.getNoticeData();
  41. },
  42. methods: {
  43. getNoticeData(){
  44. this.status="loading"
  45. const app = this
  46. getNoticelist(app.params).then(res => {
  47. this.noticeList = this.noticeList.concat(res.rows);
  48. this.total=res.total
  49. if (res.code == '200' || res.code == '401')
  50. this.$modal.msgSuccess(res.code)
  51. });
  52. this.status="more"
  53. },
  54. // 查询按钮动作
  55. searchData () {
  56. this.params.pageNum = 1
  57. this.total=0
  58. this.noticeList = []
  59. this.getNoticeData();
  60. },
  61. // 滚动分页加载数据
  62. scrolltolower ()
  63. {
  64. console.log("scrolltolower=="+this.params.pageNum+"==="+this.params.pageSize+"==="+this.total)
  65. if(this.params.pageNum * this.params.pageSize >= this.total)
  66. {
  67. this.status="noMore"
  68. this.$modal.msgSuccess('scrolltolower没有更多数据了')
  69. }
  70. else
  71. {
  72. this.$modal.msgSuccess('scroll=getNoticeData')
  73. this.params.pageNum += 1;
  74. this.getNoticeData();
  75. }
  76. },
  77. navTo(row) {
  78. let noticeId = 0;
  79. if (row != 0) {
  80. noticeId = row.noticeId
  81. }
  82. this.$tab.navigateTo('/pages/feedback/list_notice/notice?noticeId='+noticeId)
  83. }
  84. }
  85. };
  86. </script>
  87. <style lang="scss">
  88. .notice-item {
  89. padding: 15rpx 0;
  90. }
  91. page {
  92. background-color: #ffffff;
  93. }
  94. .article-meta {
  95. padding: 10rpx 10rpx 10rpx;
  96. color: #999999;
  97. border-bottom: 0.5px solid #ededed;
  98. }
  99. .page-notification{
  100. padding: 40rpx;
  101. height: calc(100vh - 88rpx);
  102. overflow: hidden;
  103. .u-list{
  104. height: calc(100vh - 268rpx)!important;
  105. }
  106. }
  107. </style>

3. 新建通知公告详情界面

在notice目录下新建notice.vue页面

  1. <template>
  2. <view class="wrap">
  3. <view class="article-title">{{notice.noticeTitle}}</view>
  4. <view class="article-meta">
  5. <span>{{notice.createBy}}</span> <span style="font-size: 26rpx;color: #999999;padding-left: 10px;">{{notice.createTime}}</span></text>
  6. </view>
  7. <view class="article-content">
  8. <u-parse :content="notice.noticeContent"></u-parse>
  9. </view>
  10. <view class="article-foot"></view>
  11. </view>
  12. </template>
  13. <script>
  14. import { getNoticeData } from "@/api/notice/notice"
  15. export default {
  16. data() {
  17. return {
  18. noticeId: undefined,
  19. notice : {},
  20. };
  21. },
  22. onLoad(option) {
  23. // 获取设备信息
  24. const app = this
  25. app.noticeId = option.noticeId;
  26. getNoticeData(app.noticeId).then(res => {
  27. console.log(res.data)
  28. app.notice = res.data
  29. })
  30. },
  31. methods: {
  32. }
  33. };
  34. </script>
  35. <style lang="scss">
  36. page {
  37. background-color: #ffffff;
  38. }
  39. .article-title {
  40. font-size: 35rpx;
  41. font-weight: 400;
  42. text-align: left;
  43. padding-bottom: 10rpx;
  44. font-weight: bold;
  45. margin: 30rpx 30rpx 0;
  46. color: #333333;
  47. }
  48. .article-meta {
  49. padding: 10rpx 30rpx 30rpx;
  50. color: #999999;
  51. border-bottom: 1px solid #ededed;
  52. }
  53. .article-content {
  54. padding: 30rpx 30rpx 0rpx;
  55. font-size: 30rpx;
  56. }
  57. .article-foot{
  58. padding:0 30rpx 20rpx;
  59. font-size: 26rpx;
  60. color: #999999;
  61. }
  62. </style>

4. 增加api

在RuoYi-App-master根目录的api目录下新建notice目录,并新建notice.js

  1. import request from '@/utils/request'
  2. // 查询所有通知公告
  3. export function getNoticelist(data) {
  4. return request({
  5. url: '/system/notice/list',
  6. method: 'get',
  7. data: data
  8. })
  9. }
  10. // 查询通知公告详情
  11. export function getNoticeData(noticeId) {
  12. return request({
  13. url: '/system/notice/'+noticeId,
  14. method: 'get'
  15. })
  16. }

5.增加路由配置

在RuoYi-App-master根目录的pages.json文件里路由,新增如下

  1. {
  2. "path": "pages/whalesystem/notice/list_notice",
  3. "style": {
  4. "navigationBarTitleText": "通知公告"
  5. }
  6. }
  7. ,
  8. {
  9. "path": "pages/whalesystem/notice/notice",
  10. "style": {
  11. "navigationBarTitleText": "公告内容"
  12. }
  13. }

6.后端代码不改变

后端代码对应的是SysNoticeController下的list()和getInfo()

  1. /**
  2. * 获取通知公告列表
  3. */
  4. @PreAuthorize("@ss.hasPermi('system:notice:list')")
  5. @GetMapping("/list")
  6. public TableDataInfo list(SysNotice notice)
  7. {
  8. startPage();
  9. List<SysNotice> list = noticeService.selectNoticeList(notice);
  10. return getDataTable(list);
  11. }
  12. /**
  13. * 根据通知公告编号获取详细信息
  14. */
  15. @PreAuthorize("@ss.hasPermi('system:notice:query')")
  16. @GetMapping(value = "/{noticeId}")
  17. public AjaxResult getInfo(@PathVariable Long noticeId)
  18. {
  19. return AjaxResult.success(noticeService.selectNoticeById(noticeId));
  20. }

7. 并运行如下

显示出通知公告,但是公告内容的图片无法显示。

       

8. 修改manifest.json的源码视图如下,解决富文本文件图片预览的问题

没有此配置,预览的图片的路径是/dev-api/profile/upload/2022/11/11/list1_1

配置参照如下完成后,一定要重新编译!!!!!!!

  1. "devServer" : {
  2. "port" : 9090,
  3. "https" : false,
  4. "disableHostCheck" : true, //设置跳过host检查
  5. "proxy" : {
  6. "/dev-api" : {
  7. "target" : "http://127.0.0.1:8080", //目标接口域名
  8. "changeOrigin" : true, //是否跨域
  9. "secure" : false, // 设置支持https协议的代理
  10. "pathRewrite":{"^/dev-api":""}
  11. }
  12. }

配置完成后,一定要重新编译!!!!!!!

注意 target地址是后端的8080地址,pathRewrite里也是写/dev-api

示例:
http://localhost:9092/dev-api/profile/upload/2023/01/11/222.png

经过代理转为

http://127.0.0.1:8080/profileupload/2023/01/11/222.png

9. 编译完重新运行公告结果如下,显示正常

  

图片解析的地址如下 

10  本文移动端的上下滑动滚动使用scrolltolower 

  1. // 滚动分页加载数据
  2. scrolltolower ()
  3. {
  4. console.log("scrolltolower=="+this.params.pageNum+"==="+this.params.pageSize+"==="+this.total)
  5. if(this.params.pageNum * this.params.pageSize >= this.total)
  6. {
  7. this.status="noMore"
  8. this.$modal.msgSuccess('scrolltolower没有更多数据了')
  9. }
  10. else
  11. {
  12. this.$modal.msgSuccess('scroll=getNoticeData')
  13. this.params.pageNum += 1;
  14. this.getNoticeData();
  15. }
  16. },

 11.如果要在小程序或者app运行,请查看下一篇文章

若依移动端Ruoyi-App——开发通知公告解决上拉onReachBottom失效_鲸鱼姐的博客-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/244700
推荐阅读
相关标签
  

闽ICP备14008679号