notice.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. <template>
  2. <view class="notice" :style="'padding-top:196rpx;'">
  3. <view class="pfixed" style="background: transparent;">
  4. <tab-list :tablist="tablist" :height="height" :tabidx="tabidx" @getCheck="getCheck"></tab-list>
  5. <!-- 筛选条件 -->
  6. <view class="flexc checkbox" :class="scroflag?'scbg':''">
  7. <!-- <picker mode="date" @change='bindDateChangea'>
  8. <view class="chekt">
  9. <view>{{tzsj|| "通知时间"}}</view>
  10. <image :src="upimg"></image>
  11. </view>
  12. </picker> -->
  13. <picker range-key='label' :value="ydidx" :range="ydztlist" @change='bindDateChangeb'>
  14. <view class="chekt">
  15. <view>{{ydzt || "阅读状态"}}</view>
  16. <image :src="upimg"></image>
  17. </view>
  18. </picker>
  19. <view class="reset" @click="getResetFn">
  20. <image :src="resetimg" ></image>
  21. <!-- <image :src="wresetimg" v-else></image> -->
  22. </view>
  23. </view>
  24. </view>
  25. <view class="mt12">
  26. <wait-list :type='tabidx' :datalist="list" :wtdt="wtdt" @getDetail="getDetail"></wait-list>
  27. </view>
  28. </view>
  29. </template>
  30. <script>
  31. import { checkPermi, checkRole } from "@/utils/permission"; // 权限判断函数
  32. import {getNoticeList,getRemindList} from "@/api/common.js"
  33. import {getDictionaryFn} from "@/api/mine/register.js"
  34. import waitList from "@/components/wait/list.vue"
  35. import tabList from '@/components/toptab/tab.vue'
  36. export default{
  37. components:{tabList,waitList},
  38. data(){
  39. return{
  40. tablist:[{tit:'系统通知',val:'xttz'},{tit:'待办通知',val:'dbtz'}],
  41. resetimg:require('@/work/static/images/reset.png'),
  42. wresetimg:require('@/work/static/images/wreset.png'),
  43. upimg:require('@/work/static/images/sup.png'),
  44. tabidx:'xttz',
  45. height:100,
  46. scroflag:false,
  47. list:[],
  48. pageSize: 10,
  49. pageNum: 1,
  50. reachflag: true,
  51. wtdt:'',
  52. tzsj:'',//通知时间
  53. ydidx:0,
  54. ytzt:'',
  55. ydztlist:[],//阅读状态
  56. isRead:'',
  57. userId:this.$store.state.user.userId,
  58. }
  59. },
  60. onPageScroll(e) {
  61. var scrollTop = Number(e.scrollTop);
  62. // var listTop=Number(this.listTop)-Number(this.nvaHeight)
  63. if(scrollTop>2){
  64. this.scroflag=true
  65. }else{
  66. this.scroflag=false
  67. }
  68. },
  69. // 上拉触底加载更多触发事件
  70. onReachBottom() {
  71. if (this.reachflag) {
  72. this.pageNum++
  73. this.getDataFn()
  74. }
  75. },
  76. onLoad(e) {
  77. if(e.type){
  78. this.tabidx=e.type
  79. }
  80. this.init();
  81. this.getDataFn()
  82. },
  83. methods:{
  84. checkPermi, checkRole,
  85. init(){
  86. // 阅读状态
  87. getDictionaryFn('is_read').then(res=>{
  88. if(res.code==200){
  89. this.ydztlist = res.data.map(v => {
  90. return {
  91. label: v.dictLabel,
  92. value: v.dictValue
  93. }
  94. })
  95. }
  96. })
  97. },
  98. bindDateChangea(e){
  99. var val=e.detail.value;
  100. this.tzsj=val;
  101. this.getrefreshData()
  102. },
  103. bindDateChangeb(e){
  104. var val=e.detail.value;
  105. this.ydzt=this.ydztlist[val].label;
  106. this.isRead=this.ydztlist[val].value;
  107. this.getrefreshData()
  108. },
  109. getResetFn(){
  110. this.ydzt='';
  111. this.tzsj='';
  112. this.ydidx=0;
  113. this.getrefreshData()
  114. },
  115. getCheck(val){
  116. this.tabidx=val;
  117. this.getrefreshData()
  118. },
  119. getrefreshData(){
  120. this.pageNum=1;
  121. this.list=[];
  122. this.reachflag=true;
  123. this.getDataFn()
  124. },
  125. getDetail(e){
  126. this.$tab.navigateTo("/pages/index/noticedetail?type="+this.tabidx+'&id='+e)
  127. },
  128. getDataFn(){
  129. var params={
  130. pageSize:this.pageSize,
  131. pageNum: this.pageNum,
  132. }
  133. // if(this.tzsj){
  134. // params.createTime=this.tzsj
  135. // }
  136. if(this.ydzt){
  137. params.isRead=this.isRead
  138. }
  139. var tabidx=this.tabidx;
  140. if(tabidx=='xttz'){
  141. getNoticeList(params).then(res=>{
  142. if(res.code==200){
  143. if (res.rows.length < this.pageSize) {
  144. this.reachflag = false
  145. this.wtdt = '到底了~';
  146. } else {
  147. var num = parseInt(res.rows.length) + parseInt(this.pageSize) * parseInt(this.pageNum - 1)
  148. if (num < res.total) {
  149. this.reachflag = true
  150. this.wtdt = ''
  151. } else {
  152. this.reachflag = false
  153. this.wtdt = '到底了~';
  154. }
  155. }
  156. if (this.pageNum == 1) {
  157. this.list = res.rows;
  158. } else {
  159. this.list = this.list.concat(res.rows)
  160. }
  161. }else{
  162. this.$toast(res.msg)
  163. }
  164. })
  165. }else {
  166. params.userId=this.userId;
  167. getRemindList(params).then(res=>{
  168. if(res.code==200){
  169. if (res.rows.length < this.pageSize) {
  170. this.reachflag = false
  171. this.wtdt = '到底了~';
  172. } else {
  173. var num = parseInt(res.rows.length) + parseInt(this.pageSize) * parseInt(this.pageNum - 1)
  174. if (num < res.total) {
  175. this.reachflag = true
  176. this.wtdt = ''
  177. } else {
  178. this.reachflag = false
  179. this.wtdt = '到底了~';
  180. }
  181. }
  182. if (this.pageNum == 1) {
  183. this.list = res.rows;
  184. } else {
  185. this.list = this.list.concat(res.rows)
  186. }
  187. }else{
  188. this.$toast(res.msg)
  189. }
  190. })
  191. }
  192. },
  193. }
  194. }
  195. </script>
  196. <style lang="scss" scoped>
  197. .notice /deep/ uni-picker{flex: 1;}
  198. .checkbox{padding-top: 4rpx;
  199. &.scbg{background-color: #FFFFFF;}
  200. .chekt{display: flex;align-items: center;margin:0 20rpx;height:88rpx;
  201. view{text-align: center;font-weight: bold;font-size: 26rpx;color: #374B61;flex:1;word-break: break-all;text-overflow: ellipsis;overflow: hidden;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;white-space: normal;}
  202. image{width: 16rpx;height: 12rpx;flex: 0 0 auto;margin-left: 4rpx;}
  203. }
  204. }
  205. .reset{width:56rpx; height: 88rpx;display: flex;align-items: center;justify-content: center;flex: 1;
  206. image{width: 26rpx;height: 30rpx;}
  207. }
  208. </style>