123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308 |
- <template>
- <view class="bg-white" >
- <cu-custom :bgColor="NavBarColor" :isBack="true" backRouterName="index">
- <block slot="backText">返回</block>
- <block slot="content">公告消息</block>
- </cu-custom>
- <view class="container">
- <view class="solid-bottom">
- <scroll-view scroll-x class="bg-white nav text-center ">
- <view class="flex text-center justify-around">
- <view class="cu-item" :class="item.value==TabCur?'text-blue cur':''" v-for="(item,index) in tabs" :key="index" @tap="tabSelect" :data-id="item.value">
- {{item.title}}
- </view>
- </view>
- </scroll-view>
- </view>
-
- <mescroll-uni ref="mescrollRef" @init="mescrollInit" :top="top" @down="downCallback" @up="upCallback">
- <!-- 数据列表 -->
- <view class="al-list cu-list">
- <view class="message_text bg-white cu-item flex justify-around align-center solid-bottom margin-bottom-sm margin-top-sm" style="width: 100vw;" v-for="(item,index) in msgList" :key="index" @tap="goAnnotationDetail(item)" :class="modalName=='move-box-'+ index?'move-cur':''"
- @touchstart="ListTouchStart" @touchmove="ListTouchMove" @touchend="ListTouchEnd" :data-target="'move-box-' + index">
- <view v-if="isEmail(item)" class="padding-left">
- <view class="cu-avatar radius cuIcon-mail bg-orange" ></view>
- </view>
- <view v-if="item.msgCategory == '1'&&!isEmail(item)" class="padding-left">
- <view class="cu-avatar radius cuIcon-notification bg-orange" ></view>
- </view>
- <view v-if="item.msgCategory == '2'&&!isEmail(item)" class="padding-left">
- <view class="cu-avatar radius cuIcon-notice bg-orange" ></view>
- </view>
- <view class="titlePad content" style="height: 4em;">
- <view class="flex justify-start text-cut text-lg" style="width:26em;color: #333;font-family: '黑体';">
- <!-- <view v-if="item.readFlag == '0'" class="cu-tag light bg-blue">未读</view> -->
- <view v-if="item.readFlag == '0'">
- <text class="cuIcon-title text-red padding-left-sm" style="margin-right: -0.8em;"></text>
- </view>
- <view class="padding-left">
- <text class="text-black" v-if="isEmail(item)&&item.emailTitle">{{titleFilter(item.emailTitle,12)}} </text>
- <text class="text-black" v-else>{{titleFilter(item.titile,12)}} </text>
- </view>
- </view>
- <view class="flex justify-between margin-top-xs" style="font-family: '黑体';color: #999;">
- <view v-if="isEmail(item)" class="text-content text-cut" style="padding-left: .8rem;width:18em;"
- v-html="item.msgContent" @click="goEmailDetailPage(item);">
- </view>
- <view v-else-if="!isEmail(item)" style="padding-left: .8rem;">
- <view class="text-content text-cut" v-if="item.msgAbstract && item.msgAbstract.length > 0" style="width:18em;"
- v-html="item.msgAbstract">
- </view>
- <view v-else>
- 无摘要
- </view>
- </view>
- </view>
-
- </view>
- <view class="action text-sm" style="color: #aaa;margin-top: -2em;margin-left: -13em;width: 10em;">
- <text >{{formatDate(item.sendTime,10)}}</text>
- </view>
- <view class="move">
- <view class="bg-red" style="margin-right: 3em;margin-left: 2px;" @tap.stop="deleteAnnotation(item)">删除</view>
- </view>
- </view>
- </view>
- </mescroll-uni>
- </view>
- </view>
- </template>
- <script>
- const tabs = [{title:'通知公告',value:0}, {title:'系统消息',value:1}];
- import MescrollMixin from "@/components/mescroll-uni/mescroll-mixins.js";
-
-
- export default {
- mixins: [MescrollMixin], // 使用mixin
- data() {
- return {
- tabs,
- TabCur: 0,
- scrollLeft: 0,
- NavBarColor:this.NavBarColor,
- upOption:{
- page: {
- num: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
- size: 10 // 每页数据的数量
- },
- noMoreSize: 4, //如果列表已无数据,可设置列表的总数量要大于半页才显示无更多数据;避免列表数据过少(比如只有一条数据),显示无更多数据会不好看; 默认5
- empty:{
- tip: '~ 暂无数据 ~', // 提示
-
- },
- loading:'',
- text:'全部',
- isShowNoMore:false,
- textNoMore:'我是有底线的 >_<'
- },
- msgList: [], //列表数据
- read: "all",
- announcement1:[],
- msg1Count:"",
- msg1Title:"",
- announcement2:[],
- msg2Count:"",
- msg2Title:"",
- url:"/sys/sysAnnouncementSend/getMyAnnouncementSend",
- delUrl:'/sys/sysAnnouncementSend/delete',
- listTouchStart: 0,
- modalName: null,
- listTouchDirection: null,
- }
- },
- onShow() {
- if(this.mescroll){
- this.mescroll.resetUpScroll()
- }
- },
- computed:{
- top() {
- return this.CustomBar * 2 + 95
- },
- style() {
- var StatusBar= this.StatusBar;
- var CustomBar= this.CustomBar;
- var style = `height:${CustomBar}px;padding-top:${StatusBar}px;`;
- return style
- },
- },
- methods: {
- // unique(arr) {
- // var obj = {};
- // return arr.filter(function(item, index, arr){
- // return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true)
- // })
- // },
- upCallback(page) {
- //联网加载数据
- console.log("tabindex",this.TabCur )
- let keyword = this.TabCur
- if(keyword == 0){
- this.$http.get(this.url,{params:{pageNo: page.num, pageSize:page.size,msgCategory: '1'}}).then(res=>{
- //联网成功的回调,隐藏下拉刷新和上拉加载的状态;
-
- this.announcement1 = res.data.result.records
- this.mescroll.endSuccess(this.announcement1.length);
- //console.log("url", res)
- //设置列表数据
- if (res.data.success) {
- console.log("res",res.data)
- this.msg1Count = res.data.result.total
- this.msg1Title = "通知(" + res.data.result.total + ")";
- for(let annItem of this.announcement1){
- this.msgList.push(annItem)
- }
- }
- if(page.num == 1){
- this.msgList = []; //如果是第一页需手动制空列表
- this.msgList = this.msgList.concat(this.announcement1); //追加新数据
- }
-
- }).catch(()=>{
- //联网失败, 结束加载
- this.mescroll.endErr();
- })
- }
- if(keyword == 1){
- this.$http.get(this.url,{params:{pageNo: page.num,pageSize: page.size,msgCategory: '2'}}).then(res=>{
- //联网成功的回调,隐藏下拉刷新和上拉加载的状态;
- this.announcement2 = res.data.result.records
- this.mescroll.endSuccess(this.announcement2.length,this.msgCount);
-
- //设置列表数据
- if (res.data.success) {
- console.log("res sys",res.data)
- this.msg2Count = res.data.result.total
- this.msg2Title = "通知(" + res.data.result.total + ")";
- // this.announcement2.filter((item,index) => {
- // // console.log("item",item)
- // if(item.anntId == this.announcement2[index+1].anntId){
- // this.announcement2.splice(item,1)
- for(let item of this.announcement2){
- this.msgList.push(item)
- }
- // }
- // })
- }
- if(page.num == 1){
- this.msgList = []; //如果是第一页需手动制空列表
- this.msgList = this.msgList.concat(this.announcement2); //追加新数据
- }
- }).catch(()=>{
- //联网失败, 结束加载
- this.mescroll.endErr();
- })
- }
-
- },
-
- tabSelect(e) {
- this.TabCur = e.currentTarget.dataset.id;
- this.scrollLeft = (e.currentTarget.dataset.id - 1) * 60;
- this.msgList = []// 先置空列表,显示加载进度
- this.mescroll.resetUpScroll() // 再刷新列表数据
- },
- goAnnotationDetail(item){
- //item.readFlag = '1'
- this.mescroll.resetUpScroll()
- if(item.openType=="component" && item.openPage.indexOf('email')>= 0){
- this.goEmailDetailPage(item)
- }else{
- // console.log("detail",encodeURIComponent(JSON.stringify(item)))
- uni.navigateTo({
- url: '/pages/annotation/annotationDetail?item='+ encodeURIComponent(JSON.stringify(item))
- });
- }
- },
- isEmail(item){
- if(item.openType=="component" &&item.openPage.indexOf('email')>=0){
- return true;
- }else{
- return false;
- }
- },
- goEmailDetailPage(item){
- console.log("go",item.anntId)
- console.log("item",item)
- if(item.readFlag == '0'){
- //item.readFlag = '1'
- this.mescroll.resetUpScroll()
- let readUrl = '/sys/sysAnnouncementSend/editByAnntIdAndUserId';
- this.$http.put(readUrl,{anntId:item.anntId})
- }
- // console.log("goe",item.busId)
-
- uni.navigateTo({
- url: '/pages/mail/mailDetail?id='+item.busId
- });
-
- },
- ListTouchStart(e) {
- this.listTouchStart = e.touches[0].pageX
- },
-
- // ListTouch计算方向
- ListTouchMove(e) {
- this.listTouchDirection = e.touches[0].pageX - this.listTouchStart > 0 ? 'right' : 'left'
- },
-
- // ListTouch计算滚动
- ListTouchEnd(e) {
- if (this.listTouchDirection == 'left') {
- this.modalName = e.currentTarget.dataset.target
- } else {
- this.modalName = null
- }
- this.listTouchDirection = null
- },
- deleteAnnotation(item) {
- this.$http.delete(this.delUrl+'?id='+item.id).then(res => {
- console.log("结果数据9", res)
- if (res.data.success) {
- this.mescroll.resetUpScroll()
- }
- }).catch(e => {
- console.log("al delUrl请求错误2", e)
- this.mescroll.endErr();
- })
- },
- formatDate(text,len){
- if(!text || text.length==0){
- return ''
- }
- if(text.length<len){
- return text;
- }
- return text.substr(0,len)
- },
- titleFilter(text,len){
- if(!text || text.length==0){
- return ''
- }
- if(text.length<len){
- return text;
- }
- return text.substr(0,len)+"..."
- }
-
- }
- }
- </script>
- <style scoped>
- .e-btn{margin-bottom: 1rem;}
- .titlePad{margin-top:0.6rem;}
- .cu-list>.move-cur{
- transform: translateX(-150rpx);
-
- }
- .nav .cu-item.cur {
- position: flex;
- z-index: 9;
- border-bottom: 4upx solid;
- }
- </style>
|