Showing
2 changed files
with
101 additions
and
56 deletions
| @@ -3,6 +3,7 @@ import { WDRouterPage, WDRouterRule } from 'wdRouter/Index' | @@ -3,6 +3,7 @@ import { WDRouterPage, WDRouterRule } from 'wdRouter/Index' | ||
| 3 | import { WDMessageCenterMessageType } from '../../../model/InteractMessageModel' | 3 | import { WDMessageCenterMessageType } from '../../../model/InteractMessageModel' |
| 4 | import MinePageDatasModel from '../../../model/MinePageDatasModel' | 4 | import MinePageDatasModel from '../../../model/MinePageDatasModel' |
| 5 | import { MessageItem } from '../../../viewmodel/MessageItem' | 5 | import { MessageItem } from '../../../viewmodel/MessageItem' |
| 6 | +import { CustomPullToRefresh } from '../../reusable/CustomPullToRefresh' | ||
| 6 | import { CustomTitleUI } from '../../reusable/CustomTitleUI' | 7 | import { CustomTitleUI } from '../../reusable/CustomTitleUI' |
| 7 | import { MessageListItemUI } from './MessageListItemUI' | 8 | import { MessageListItemUI } from './MessageListItemUI' |
| 8 | 9 | ||
| @@ -11,6 +12,7 @@ const TAG = "MessageListUI" | @@ -11,6 +12,7 @@ const TAG = "MessageListUI" | ||
| 11 | @Component | 12 | @Component |
| 12 | export struct MessageListUI { | 13 | export struct MessageListUI { |
| 13 | @State msgData: MessageItem[] = [] | 14 | @State msgData: MessageItem[] = [] |
| 15 | + private scroller: Scroller = new Scroller(); | ||
| 14 | 16 | ||
| 15 | aboutToAppear() { | 17 | aboutToAppear() { |
| 16 | this.msgData = MinePageDatasModel.getMessageData() | 18 | this.msgData = MinePageDatasModel.getMessageData() |
| @@ -138,45 +140,72 @@ export struct MessageListUI { | @@ -138,45 +140,72 @@ export struct MessageListUI { | ||
| 138 | //标题栏目 | 140 | //标题栏目 |
| 139 | CustomTitleUI({ titleName: "消息" }) | 141 | CustomTitleUI({ titleName: "消息" }) |
| 140 | 142 | ||
| 141 | - List() { | ||
| 142 | - ForEach(this.msgData, (item: MessageItem, index: number) => { | ||
| 143 | - ListItem() { | ||
| 144 | - MessageListItemUI({ item: item, index: index }) | ||
| 145 | - } | ||
| 146 | - .padding({ left: "31lpx", right: "31lpx" }) | ||
| 147 | - .onClick(() => { | ||
| 148 | - switch (index) { | ||
| 149 | - case 0: //互动消息 | ||
| 150 | - if(item.unReadCount > 0){ | ||
| 151 | - this.sendEnterEvent(WDMessageCenterMessageType.WDMessageCenterMessageType_Interact) | ||
| 152 | - } | ||
| 153 | - WDRouterRule.jumpWithPage(WDRouterPage.interactMessagePage) | ||
| 154 | - break; | ||
| 155 | - case 1: //预约消息 | ||
| 156 | - if(item.unReadCount > 0){ | ||
| 157 | - this.sendEnterEvent(WDMessageCenterMessageType.WDMessageCenterMessageType_Subscribe) | ||
| 158 | - } | ||
| 159 | - WDRouterRule.jumpWithPage(WDRouterPage.subscribeMessagePage) | ||
| 160 | - break; | ||
| 161 | - case 2: //历史推送 | ||
| 162 | - break; | ||
| 163 | - case 3: //系统消息 | ||
| 164 | - break; | ||
| 165 | - } | ||
| 166 | - }) | ||
| 167 | - .height('154lpx') | ||
| 168 | - .width("100%") | ||
| 169 | - }) | ||
| 170 | - } | 143 | + CustomPullToRefresh({ |
| 144 | + alldata:this.msgData, | ||
| 145 | + scroller:this.scroller, | ||
| 146 | + customList:()=>{ | ||
| 147 | + this.ListLayout() | ||
| 148 | + }, | ||
| 149 | + onRefresh:(resolve)=>{ | ||
| 150 | + | ||
| 151 | + if(resolve) resolve('刷新成功') | ||
| 152 | + }, | ||
| 153 | + onLoadMore:(resolve)=> { | ||
| 154 | + } | ||
| 155 | + }) | ||
| 171 | } | 156 | } |
| 172 | .backgroundColor($r('app.color.white')) | 157 | .backgroundColor($r('app.color.white')) |
| 173 | .height('100%') | 158 | .height('100%') |
| 174 | .width('100%') | 159 | .width('100%') |
| 175 | } | 160 | } |
| 176 | 161 | ||
| 162 | + @Builder ListLayout(){ | ||
| 163 | + List({scroller: this.scroller}) { | ||
| 164 | + ForEach(this.msgData, (item: MessageItem, index: number) => { | ||
| 165 | + ListItem() { | ||
| 166 | + MessageListItemUI({ item: item, index: index }) | ||
| 167 | + } | ||
| 168 | + .padding({ left: "31lpx", right: "31lpx" }) | ||
| 169 | + .onClick(() => { | ||
| 170 | + switch (index) { | ||
| 171 | + case 0: //互动消息 | ||
| 172 | + if(item.unReadCount > 0){ | ||
| 173 | + this.sendEnterEvent(WDMessageCenterMessageType.WDMessageCenterMessageType_Interact) | ||
| 174 | + } | ||
| 175 | + WDRouterRule.jumpWithPage(WDRouterPage.interactMessagePage) | ||
| 176 | + break; | ||
| 177 | + case 1: //预约消息 | ||
| 178 | + if(item.unReadCount > 0){ | ||
| 179 | + this.sendEnterEvent(WDMessageCenterMessageType.WDMessageCenterMessageType_Subscribe) | ||
| 180 | + } | ||
| 181 | + WDRouterRule.jumpWithPage(WDRouterPage.subscribeMessagePage) | ||
| 182 | + break; | ||
| 183 | + case 2: //历史推送 | ||
| 184 | + break; | ||
| 185 | + case 3: //系统消息 | ||
| 186 | + break; | ||
| 187 | + } | ||
| 188 | + }) | ||
| 189 | + .height('154lpx') | ||
| 190 | + .width("100%") | ||
| 191 | + }) | ||
| 192 | + } | ||
| 193 | + } | ||
| 194 | + | ||
| 195 | + | ||
| 177 | sendEnterEvent(type:number){ | 196 | sendEnterEvent(type:number){ |
| 178 | MinePageDatasModel.sendEnterMessageData(type).then((value) => { | 197 | MinePageDatasModel.sendEnterMessageData(type).then((value) => { |
| 179 | - console.log(TAG, "消息已读") | 198 | + this.msgData.forEach((item) => { |
| 199 | + if (item.title == "预约消息" && type === 2) { | ||
| 200 | + if(item.unReadCount > 0){ | ||
| 201 | + item.unReadCount = 0 | ||
| 202 | + } | ||
| 203 | + }else if(item.title == "互动消息" && type === 1){ | ||
| 204 | + if(item.unReadCount > 0){ | ||
| 205 | + item.unReadCount = 0 | ||
| 206 | + } | ||
| 207 | + } | ||
| 208 | + }) | ||
| 180 | }).catch((err: Error) => { | 209 | }).catch((err: Error) => { |
| 181 | console.log(TAG, JSON.stringify(err)) | 210 | console.log(TAG, JSON.stringify(err)) |
| 182 | }) | 211 | }) |
| @@ -2,6 +2,7 @@ import { LazyDataSource, StringUtils } from 'wdKit/Index'; | @@ -2,6 +2,7 @@ import { LazyDataSource, StringUtils } from 'wdKit/Index'; | ||
| 2 | import { Remark, SubscribeMessageModel, | 2 | import { Remark, SubscribeMessageModel, |
| 3 | WDMessageCenterMessageType } from '../../../../model/InteractMessageModel'; | 3 | WDMessageCenterMessageType } from '../../../../model/InteractMessageModel'; |
| 4 | import MinePageDatasModel from '../../../../model/MinePageDatasModel'; | 4 | import MinePageDatasModel from '../../../../model/MinePageDatasModel'; |
| 5 | +import { CustomPullToRefresh } from '../../../reusable/CustomPullToRefresh'; | ||
| 5 | import { CustomTitleUI } from '../../../reusable/CustomTitleUI'; | 6 | import { CustomTitleUI } from '../../../reusable/CustomTitleUI'; |
| 6 | import { ListHasNoMoreDataUI } from '../../../reusable/ListHasNoMoreDataUI'; | 7 | import { ListHasNoMoreDataUI } from '../../../reusable/ListHasNoMoreDataUI'; |
| 7 | import { EmptyComponent } from '../../../view/EmptyComponent'; | 8 | import { EmptyComponent } from '../../../view/EmptyComponent'; |
| @@ -17,6 +18,7 @@ export struct SubscribeMessageComponent{ | @@ -17,6 +18,7 @@ export struct SubscribeMessageComponent{ | ||
| 17 | @State hasMore: boolean = true | 18 | @State hasMore: boolean = true |
| 18 | curPageNum: number = 1; | 19 | curPageNum: number = 1; |
| 19 | @State isGetRequest: boolean = false | 20 | @State isGetRequest: boolean = false |
| 21 | + private scroller: Scroller = new Scroller(); | ||
| 20 | 22 | ||
| 21 | aboutToAppear() { | 23 | aboutToAppear() { |
| 22 | this.getNewPageData() | 24 | this.getNewPageData() |
| @@ -32,33 +34,28 @@ export struct SubscribeMessageComponent{ | @@ -32,33 +34,28 @@ export struct SubscribeMessageComponent{ | ||
| 32 | .height('100%') | 34 | .height('100%') |
| 33 | .width('100%') | 35 | .width('100%') |
| 34 | } | 36 | } |
| 35 | - | ||
| 36 | } else { | 37 | } else { |
| 37 | - //刷新控件 TODO | ||
| 38 | - //List | ||
| 39 | - List() { | ||
| 40 | - LazyForEach(this.data, (item: SubscribeMessageModel, index: number) => { | ||
| 41 | - ListItem() { | ||
| 42 | - SubscribeListChildComponent({ item: item }) | ||
| 43 | - }.width('100%') | ||
| 44 | - .onClick(() => { | ||
| 45 | - }) | ||
| 46 | - }) | ||
| 47 | - | ||
| 48 | - //没有更多数据 显示提示 | ||
| 49 | - if (!this.hasMore) { | ||
| 50 | - ListItem() { | ||
| 51 | - ListHasNoMoreDataUI() | 38 | + CustomPullToRefresh({ |
| 39 | + alldata:this.data, | ||
| 40 | + scroller:this.scroller, | ||
| 41 | + customList:()=>{ | ||
| 42 | + this.ListLayout() | ||
| 43 | + }, | ||
| 44 | + onRefresh:(resolve)=>{ | ||
| 45 | + this.curPageNum = 1; | ||
| 46 | + this.hasMore = true | ||
| 47 | + this.isGetRequest = false | ||
| 48 | + this.data.clear() | ||
| 49 | + if (!this.isLoading) { | ||
| 50 | + this.getNewPageData() | ||
| 51 | + } | ||
| 52 | + if(resolve) resolve('刷新成功') | ||
| 53 | + }, | ||
| 54 | + onLoadMore:(resolve)=> { | ||
| 55 | + if (!this.isLoading) { | ||
| 56 | + //加载分页数据 | ||
| 57 | + this.getNewPageData() | ||
| 52 | } | 58 | } |
| 53 | - } | ||
| 54 | - }.width('100%') | ||
| 55 | - .cachedCount(4) | ||
| 56 | - .scrollBar(BarState.Off) | ||
| 57 | - .layoutWeight(1) | ||
| 58 | - .onReachEnd(() => { | ||
| 59 | - if (!this.isLoading) { | ||
| 60 | - //加载分页数据 | ||
| 61 | - this.getNewPageData() | ||
| 62 | } | 59 | } |
| 63 | }) | 60 | }) |
| 64 | } | 61 | } |
| @@ -68,6 +65,25 @@ export struct SubscribeMessageComponent{ | @@ -68,6 +65,25 @@ export struct SubscribeMessageComponent{ | ||
| 68 | .width('100%') | 65 | .width('100%') |
| 69 | } | 66 | } |
| 70 | 67 | ||
| 68 | + @Builder ListLayout(){ | ||
| 69 | + List({scroller: this.scroller}) { | ||
| 70 | + LazyForEach(this.data, (item: SubscribeMessageModel, index: number) => { | ||
| 71 | + ListItem() { | ||
| 72 | + SubscribeListChildComponent({ item: item }) | ||
| 73 | + }.width('100%') | ||
| 74 | + }) | ||
| 75 | + //没有更多数据 显示提示 | ||
| 76 | + if (!this.hasMore) { | ||
| 77 | + ListItem() { | ||
| 78 | + ListHasNoMoreDataUI() | ||
| 79 | + } | ||
| 80 | + } | ||
| 81 | + }.width('100%') | ||
| 82 | + .cachedCount(4) | ||
| 83 | + .scrollBar(BarState.Off) | ||
| 84 | + .layoutWeight(1) | ||
| 85 | + } | ||
| 86 | + | ||
| 71 | getNewPageData() { | 87 | getNewPageData() { |
| 72 | this.isLoading = true | 88 | this.isLoading = true |
| 73 | if (this.hasMore) { | 89 | if (this.hasMore) { |
-
Please register or login to post a comment