You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

275 lines
6.2 KiB

  1. <template>
  2. <view class="message_list">
  3. <!-- 公告 -->
  4. <view class="m-nav">
  5. <view class="m-n-lside">
  6. <image src="@/static/images/notice.png" mode=""></image>
  7. 全部102条消息
  8. </view>
  9. <view class="m-n-rside">
  10. 全部已读
  11. </view>
  12. </view>
  13. <!-- 选项卡 -->
  14. <view class="m-tabs">
  15. <u-tabs :list="list" :current="current" :is-scroll="false" @change="change"></u-tabs>
  16. </view>
  17. <template v-if="current == 0">
  18. <scroll-view :scroll-top="scrollTop" refresher-enabled="true" :refresher-triggered="triggered"
  19. @refresherpulling="onPulling" @refresherrefresh="onRefresh" @refresherrestore="onRestore"
  20. :scroll-y="true" class="scroll-Y" @scrolltolower="lower">
  21. <template v-if="updateAnnList.length!=0">
  22. <block v-for="(item,index) in updateAnnList" :key="index">
  23. <view class="upgradeItem" @click="goReception(item)">
  24. <view class="right">
  25. <view class="title">
  26. {{item.title}}
  27. <template v-if="item.readFlag==0">
  28. <view class="notRead"></view>
  29. </template>
  30. </view>
  31. <view class="time">{{item.createTime}}</view>
  32. </view>
  33. </view>
  34. </block>
  35. </template>
  36. <template v-else>
  37. <view style="padding: 100rpx 0;">
  38. <u-empty text="暂无数据" mode="list"></u-empty>
  39. </view>
  40. </template>
  41. </scroll-view>
  42. </template>
  43. <!-- 升级公告 -->
  44. <template v-if="current == 1">
  45. <scroll-view :scroll-top="scrollTop" refresher-enabled="true" :refresher-triggered="triggered"
  46. @refresherpulling="onPulling" @refresherrefresh="onRefresh" @refresherrestore="onRestore"
  47. :scroll-y="true" class="scroll-Y" @scrolltolower="lower">
  48. <template v-if="updateAnnList.length!=0">
  49. <block v-for="(item,index) in updateAnnList" :key="index">
  50. <view class="upgradeItem" @click="goDetail(item.content,item.id,item.title)">
  51. <view class="right">
  52. <view class="title">
  53. {{item.title}}
  54. <template v-if="item.readFlag==0">
  55. <view class="notRead"></view>
  56. </template>
  57. </view>
  58. <view class="time">{{item.createTime}}</view>
  59. </view>
  60. </view>
  61. </block>
  62. </template>
  63. <template v-else>
  64. <view style="padding: 100rpx 0;">
  65. <u-empty text="暂无数据" mode="list"></u-empty>
  66. </view>
  67. </template>
  68. </scroll-view>
  69. </template>
  70. </view>
  71. </template>
  72. <script>
  73. var util = require("../../utils/util.js");
  74. var config = require("../../config");
  75. export default {
  76. data() {
  77. return {
  78. triggered: true,
  79. scrollTop: 0,
  80. old: {
  81. scrollTop: 0
  82. },
  83. updateAnnList: [],
  84. sysItemList: [],
  85. list: [{
  86. name: '接待报告'
  87. }, {
  88. name: '升级公告',
  89. }],
  90. current: 0,
  91. pageNum: 1,
  92. pageSize: 10,
  93. };
  94. },
  95. onShow() {
  96. this.updateAnnList = []
  97. this.pageNum = 1
  98. this.updateInit()
  99. },
  100. onLoad() {
  101. this._freshing = false;
  102. setTimeout(() => {
  103. this.triggered = true;
  104. }, 1000)
  105. },
  106. onPullDownRefresh() {
  107. this.updateInit()
  108. setTimeout(function() {
  109. uni.stopPullDownRefresh();
  110. }, 1000);
  111. },
  112. methods: {
  113. onPulling(e) {
  114. console.log("onpulling", e);
  115. },
  116. onRefresh() {
  117. if (this._freshing) return;
  118. this.updateInit()
  119. this._freshing = true;
  120. setTimeout(() => {
  121. this.triggered = false;
  122. this._freshing = false;
  123. }, 3000)
  124. },
  125. onRestore() {
  126. this.triggered = 'restore'; // 需要重置
  127. console.log("onRestore");
  128. },
  129. lower(e) {
  130. this.pageNum++
  131. this.updateInit()
  132. },
  133. updateInit() {
  134. uni.request({
  135. url: config.service.updateList,
  136. method: "GET",
  137. data: {
  138. id: uni.getStorageSync('weapp_session_userInfo_data').accountId,
  139. num: this.pageNum,
  140. size: this.pageSize
  141. },
  142. header: {
  143. 'content-type': 'application/json',
  144. 'Access-Token': uni.getStorageSync('weapp_session_login_data').token
  145. },
  146. success: (res) => {
  147. // this.updateAnnList = res.data.data.list.results
  148. if (res.data.data == null) {
  149. console.log(11)
  150. uni.showToast({
  151. title: '已经到底了!',
  152. duration: 2000
  153. });
  154. } else {
  155. if (this.pageNum != 1) {
  156. this.updateAnnList = [...this.updateAnnList, ...res.data.data.list.results];
  157. } else {
  158. this.updateAnnList = res.data.data.list.results
  159. }
  160. }
  161. }
  162. })
  163. },
  164. goDetail(text, id, title) {
  165. let link = encodeURIComponent(JSON.stringify(text))
  166. uni.navigateTo({
  167. url: "./messageDetail?content=" + link + "&id=" + id + "&tit=" + title
  168. })
  169. },
  170. // 跳转日报
  171. goReception(item) {
  172. uni.navigateTo({
  173. url: `/pages/mine/reportExcel/dayReport`
  174. })
  175. },
  176. change(index) {
  177. this.current = index;
  178. if (this.current == 1) {
  179. this.updateInit()
  180. }
  181. }
  182. }
  183. }
  184. </script>
  185. <style lang="scss">
  186. .message_list {
  187. width: 100vw;
  188. height: calc(100vh - var(--window-top));
  189. background: #F8F8F8;
  190. display: flex;
  191. flex-direction: column;
  192. .m-nav {
  193. flex-shrink: 0;
  194. padding: 0 30rpx;
  195. width: 100%;
  196. height: 68rpx;
  197. display: flex;
  198. align-items: center;
  199. .m-n-lside {
  200. flex-grow: 1;
  201. display: flex;
  202. align-items: center;
  203. image {
  204. margin-right: 16rpx;
  205. width: 36rpx;
  206. height: 36rpx;
  207. }
  208. }
  209. .m-n-rside {
  210. flex-shrink: 0;
  211. padding: 6rpx 14rpx;
  212. border: 1rpx solid #E0E0E0;
  213. font-size: 24rpx;
  214. }
  215. }
  216. .m-tabs {
  217. flex-shrink: 0;
  218. }
  219. .scroll-Y {
  220. padding: 20rpx 0 0 0;
  221. flex-grow: 1;
  222. overflow-y: scroll;
  223. .upgradeItem {
  224. margin: 0 0 20rpx 0;
  225. padding: 24rpx 30rpx 28rpx;
  226. height: 156rpx;
  227. display: flex;
  228. background: #fff;
  229. .right {
  230. .title {
  231. font-size: 32rpx;
  232. font-weight: bold;
  233. display: flex;
  234. .notRead {
  235. width: 14rpx;
  236. height: 14rpx;
  237. background: #FF0000;
  238. border-radius: 100%;
  239. }
  240. }
  241. .time {
  242. margin: 18rpx 0 0 0;
  243. color: #6f6f6f;
  244. font-size: 24rpx;
  245. }
  246. }
  247. }
  248. }
  249. }
  250. </style>