diff --git a/models/topic.js b/models/topic.js index ec2fa9e..b53fd93 100644 --- a/models/topic.js +++ b/models/topic.js @@ -1,19 +1,94 @@ import {HTTP, Method} from '../utils/http.js' +const TopicBaseUrl = { + topic_list_url:'/api/group/page', + topic_goldenList_url:'/api/comment/goldenList', + topic_detail_url:'/api/group/queryById/', + topic_detailComment_url:'/api/comment/page', + topic_collect:'/api/group/collectGroup/', + topic_commentPraise_url: '/api/comment/addSupport/', + // topic_commentUnPraise_url: '/api/comment/deleteComment/{id}', +} + class TopicModel extends HTTP { constructor () { super() } - // 首页列表 - getTopicList = (success) => { + // 议题列表 + getTopicList(page, success) { + let params = { + url: TopicBaseUrl.topic_list_url, + method: Method.POST, + data: { + page: page, + pageSize: 10, + }, + success: success + } + this.request(params) + } + + getTopicDetail(id, success){ + let params = { + url: TopicBaseUrl.topic_detail_url+`${id}`, + method: Method.POST, + success: success + } + this.request(params) + } + + getTopicDetailComment(id, page,success) { + let params = { + url: TopicBaseUrl.topic_detailComment_url, + method: Method.POST, + data:{ + groupId:id, + page: page, + pageSize: 10, + }, + success: success + } + this.request(params) + } + + topicCollect(id,success){ + let params = { + url: TopicBaseUrl.topic_collect + `${id}`, + method: Method.POST, + success: success + } + this.request(params) + } + + topicCommentPraise(id,success){ let params = { - url: '/fqsb/group/list', - sucess: success, - method: Method.GET + url: TopicBaseUrl.topic_commentPraise_url + `${id}`, + method: Method.POST, + success: success } this.request(params) + } + + goldenList(page, success) { + let params = { + url: TopicBaseUrl.topic_goldenList_url, + method: Method.POST, + data: { + type:1, + page: page, + pageSize: 10, + }, + success: success + } + this.request(params) + } + + + } + + export {TopicModel} diff --git a/pages/topics/goodIdea/cell/index.wxml b/pages/topics/goodIdea/cell/index.wxml index 154e1f3..426de48 100644 --- a/pages/topics/goodIdea/cell/index.wxml +++ b/pages/topics/goodIdea/cell/index.wxml @@ -19,7 +19,7 @@ - 评论内容 + {{itemData.comment}} {{itemData.detail.title}} diff --git a/pages/topics/goodIdea/index.js b/pages/topics/goodIdea/index.js index a5cbfe4..fa94499 100644 --- a/pages/topics/goodIdea/index.js +++ b/pages/topics/goodIdea/index.js @@ -4,7 +4,10 @@ Component({ * 组件的属性列表 */ properties: { - + list: { + type: Array, + value: [] + } }, /** diff --git a/pages/topics/goodIdea/index.wxml b/pages/topics/goodIdea/index.wxml index 4a7a164..4c9e515 100644 --- a/pages/topics/goodIdea/index.wxml +++ b/pages/topics/goodIdea/index.wxml @@ -1,6 +1,6 @@ - + diff --git a/pages/topics/index.js b/pages/topics/index.js index 5616eeb..f6e776d 100644 --- a/pages/topics/index.js +++ b/pages/topics/index.js @@ -1,4 +1,10 @@ // pages/topics/index.js +import dayjs from '../../utils/dayjs/index.js' +import relativeTime from '../../utils/dayjs/relativeTime.js' +dayjs.extend(relativeTime); +import { TopicModel } from '../../models/topic.js' +let topicModel = new TopicModel() + Page({ /** @@ -6,16 +12,114 @@ Page({ */ data: { headerTitles: ['互动区', '金点子', '留言箱'], - selectedTitle: 0 + segmentIndex: 0, + currPage: 1, + topicList: [], + goodIdeaList:[] }, /** * 生命周期函数--监听页面加载 */ - onLoad: function (options) { - + onLoad: function () { + this.fetchTopicList(); + }, + fetchTopicList(){ + let page = this.data.currPage + topicModel.getTopicList(page,res=>{ + console.log('议题列表') + console.log(res) + + const datas = res.result.list + let tempDatas = [] + datas.forEach(item => { + tempDatas.push({ + topicId: item.id, + title: item.title, + userName: item.author, + commentNum: item.commentNum, + topicImg:item.image, + time: item.createTime, + }) + }) + if (page == 1) { + this.setData({ + topicList: tempDatas + }) + } else { + if (tempDatas.length > 0) { + const list = [...this.data.topicList, ...tempDatas] + this.setData({ + topicList: list + }) + } else { + const page = this.data.currPage - 1 + this.setData({ + currPage: page + }) + wx.showToast({ + title: '已加载全部', + icon: 'none' + }) + } + } + console.log(this.data.topicList) + wx.stopPullDownRefresh() + }) }, + fetchGoodIdeaList(){ + let page = this.data.currPage + topicModel.goldenList(page, res => { + console.log('金点子列表') + console.log(res) + + const datas = res.result.list + let tempDatas = [] + datas.forEach(item => { + tempDatas.push({ + id: item.id, + userIcon:item.image, + groupId: item.groupId, + userName: item.username, + time: item.createTime, + comment: item.comment, + praiseNum: item.supportNum, + detail:{ + userIcon: item.groupAvator, + userName: item.author, + commentNum: item.commentNum, + title: item.title, + text:item.content, + + } + }) + }) + if (page == 1) { + this.setData({ + goodIdeaList: tempDatas + }) + } else { + if (tempDatas.length > 0) { + const list = [...this.data.goodIdeaList, ...tempDatas] + this.setData({ + goodIdeaList: list + }) + } else { + const page = this.data.currPage - 1 + this.setData({ + currPage: page + }) + wx.showToast({ + title: '已加载全部', + icon: 'none' + }) + } + } + console.log(this.data.goodIdeaList) + wx.stopPullDownRefresh() + }) + }, /** * 生命周期函数--监听页面初次渲染完成 */ @@ -47,14 +151,31 @@ Page({ * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { - + this.setData({ + currPage: 1, + }) + switch (this.data.segmentIndex) { + case 0: + return this.fetchTopicList() + case 1: + return this.fetchGoodIdeaList() + } }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { - + const page = this.data.currPage + 1 + this.setData({ + currPage: page + }) + switch (this.data.segmentIndex) { + case 0: + return this.fetchTopicList() + case 1: + return this.fetchGoodIdeaList() + } }, /** @@ -66,9 +187,19 @@ Page({ // 定义点击标题的事件处理函数,将选中标题的id赋值给selectedTitle tapSegment: function (e) { + console.log(e) + this.setData({ + currPage:1 + }) const item = e.detail; this.setData({ - selectedTitle: item.index + segmentIndex: item.index }); + switch(item.index){ + case 0: + return this.fetchTopicList() + case 1: + return this.fetchGoodIdeaList() + } } }) \ No newline at end of file diff --git a/pages/topics/index.json b/pages/topics/index.json index 372e0d0..64d42ad 100644 --- a/pages/topics/index.json +++ b/pages/topics/index.json @@ -1,4 +1,5 @@ { + "enablePullDownRefresh": true, "usingComponents": { "e-segment":"/components/segment/index", "message": "./message/index", diff --git a/pages/topics/index.wxml b/pages/topics/index.wxml index bcd070e..62bf97a 100644 --- a/pages/topics/index.wxml +++ b/pages/topics/index.wxml @@ -1,7 +1,7 @@ - - - + + + diff --git a/pages/topics/interactive/cell/index.js b/pages/topics/interactive/cell/index.js index e1c62a5..11df272 100644 --- a/pages/topics/interactive/cell/index.js +++ b/pages/topics/interactive/cell/index.js @@ -1,27 +1,24 @@ // pages/topics/common/interactive/common/imageCell/index.js + Component({ /** * 组件的属性列表 */ properties: { - articleId: String, + topicId: String, title: String, - articleImg:String, + topicImg:String, userIcon:String, userName:String, time: String, - commentNum: String, - showTop: { - type: Boolean, - value: false, - } + commentNum: Number }, /** * 组件的初始数据 */ data: { - + }, /** @@ -29,7 +26,7 @@ Component({ */ methods: { onTap() { - this.triggerEvent('clickListItem', { articleId: this.properties.articleId }) + this.triggerEvent('clickListItem', { topicId: this.properties.topicId }) } } }) diff --git a/pages/topics/interactive/cell/index.wxml b/pages/topics/interactive/cell/index.wxml index 4eba1d0..39e2700 100644 --- a/pages/topics/interactive/cell/index.wxml +++ b/pages/topics/interactive/cell/index.wxml @@ -23,7 +23,7 @@ - - + + diff --git a/pages/topics/interactive/cell/index.wxss b/pages/topics/interactive/cell/index.wxss index 98035e1..62efd5d 100644 --- a/pages/topics/interactive/cell/index.wxss +++ b/pages/topics/interactive/cell/index.wxss @@ -61,6 +61,7 @@ width: 30%; height: 70px; border-radius: 5px; + background-color: #EEEEEE; } image{ width: 100%; diff --git a/pages/topics/interactive/index.js b/pages/topics/interactive/index.js index 5df8e77..00b76b1 100644 --- a/pages/topics/interactive/index.js +++ b/pages/topics/interactive/index.js @@ -4,42 +4,17 @@ Component({ * 组件的属性列表 */ properties: { - + list:{ + type:Array, + value:[] + } }, /** * 组件的初始数据 */ data: { - list: [ - { - articleId: '1', - title: "市北区举行国际航运贸易金融创新中心核心区产业建设", - articleImg: "asdsad", - userIcon: "", - userName: "用户名", - time: "刚刚", - commentNum: "33", - }, - { - articleId: "2", - title: "《大众日报》市北区举行国际航运贸易金融创新中心核心区产业建设", - articleImg: "", - userIcon: "", - userName: "用户名", - time: "1分钟前", - commentNum: "33", - }, - { - articleId: "3", - title: "青岛医疗人工智能科技创新中心落户市北", - articleImg: "asdsadad", - userIcon: "", - userName: "用户名", - time: "1分钟前", - commentNum: "33", - } - ] + }, /** @@ -52,11 +27,9 @@ Component({ }) }, clickListItem(e) { - const articleId = e.detail.articleId; - console.log(articleId); - + const topicId = e.detail.topicId; wx.navigateTo({ - url: `/pages/topics/interactive/topicArticle/index?id=${articleId}`, + url: `/pages/topics/interactive/topicArticle/index?topicId=${topicId}`, }) } } diff --git a/pages/topics/interactive/index.wxml b/pages/topics/interactive/index.wxml index 09a121b..7eed0c1 100644 --- a/pages/topics/interactive/index.wxml +++ b/pages/topics/interactive/index.wxml @@ -1,14 +1,13 @@ - + diff --git a/pages/topics/interactive/topicArticle/index.js b/pages/topics/interactive/topicArticle/index.js index b6c31b5..4604a1f 100644 --- a/pages/topics/interactive/topicArticle/index.js +++ b/pages/topics/interactive/topicArticle/index.js @@ -1,4 +1,11 @@ // pages/topics/interactive/article/index.js +import dayjs from '../../../../utils/dayjs/index.js' +import relativeTime from '../../../../utils/dayjs/relativeTime.js' +dayjs.extend(relativeTime); +import { TopicModel } from '../../../../models/topic.js' +let topicModel = new TopicModel() + + Page({ /** @@ -39,14 +46,25 @@ Page({ unStar: '/images/common/star.png', star: '/images/common/star_light.png', - isStar:true + isStar:true, + topicId:String, + currPage: 1, + commentList: [], + unPraise: '/images/common/zan.png', + praise: '/images/common/star_light.png', + commentId:String }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { - + console.log(options.topicId) + this.setData({ + topicId: options.topicId + }) + this.fetchDetail() + this.fetchDetailComment() }, /** @@ -88,7 +106,11 @@ Page({ * 页面上拉触底事件的处理函数 */ onReachBottom: function () { - + const page = this.data.currPage + 1 + this.setData({ + currPage: page + }) + this.fetchDetailComment() }, /** @@ -96,14 +118,125 @@ Page({ */ onShareAppMessage: function () { + }, + fetchDetail(){ + let topicId = this.data.topicId + topicModel.getTopicDetail(topicId,res => { + console.log('议题详情') + console.log(res) + let data = res.result + this.setData({ + title:data.title, + time: data.createTime, + userInfo:{ + icon: data.groupAvator, + name:data.author, + company: data.company, + position: data.position, + }, + detail:data.content, + imgArr: data.images.split(";").slice(0, -1) + }) + console.log(this.data.imgArr) + }) + }, + fetchDetailComment(){ + let topicId = this.data.topicId + let page = this.data.currPage + topicModel.getTopicDetailComment(topicId,page,res => { + console.log('议题评论') + console.log(res) + + const datas = res.result.list + let tempDatas = [] + datas.forEach(item => { + tempDatas.push({ + isPraise: false, + id:item.id, + userIcon: item.commentAvator, + userName: item.username, + detail: item.comment, + time: item.createTime, + praiseNum: item.supportNum + }) + }) + if (page == 1) { + this.setData({ + commentList: tempDatas + }) + } else { + if (tempDatas.length > 0) { + const list = [...this.data.commentList, ...tempDatas] + this.setData({ + commentList: list + }) + } else { + const page = this.data.currPage - 1 + this.setData({ + currPage: page + }) + wx.showToast({ + title: '已加载全部', + icon: 'none' + }) + } + } + console.log(this.data.commentList) + wx.stopPullDownRefresh() + }) + }, + fetchTopicCollect(){ + let topicId = this.data.topicId + topicModel.topicCollect(topicId,res =>{ + console.log('收藏') + console.log(res) + if(res.code === 200){ + wx.showToast({ + title: '收藏成功', + icon: 'none' + }) + } + }) + }, + fetchTopicCommentPraise(){ + let commentId = this.data.commnetId + topicModel.topicCommentPraise(commentId,res =>{ + console.log(res) + if (res.code === 200) { + wx.showToast({ + title: '点赞', + icon: 'none' + }) + } + }) }, onClickCollect() { this.setData({ isStar: !this.data.isStar }) + this.fetchTopicCollect() // 收藏功能 }, + onClickPraise(e){ + console.log(e) + const sIndex = e.currentTarget.dataset.index + var selectItem = e.currentTarget.dataset.item + const commentList = this.data.commentList + const tempList = [] + commentList.forEach( (item,index)=>{ + if (sIndex === index){ + item.isPraise = !item.isPraise + } + tempList.push(item) + }) + this.setData({ + commentList:tempList, + commentId: selectItem.id + }) + this.fetchTopicCommentPraise() + // 评论点赞 + }, previewImg: function (e) { console.log(e.currentTarget.dataset.index); var index = e.currentTarget.dataset.index; diff --git a/pages/topics/interactive/topicArticle/index.json b/pages/topics/interactive/topicArticle/index.json index 8835af0..3e483f1 100644 --- a/pages/topics/interactive/topicArticle/index.json +++ b/pages/topics/interactive/topicArticle/index.json @@ -1,3 +1,6 @@ { + "enablePullDownRefresh": false, + + "navigationBarTitleText":"议题", "usingComponents": {} } \ No newline at end of file diff --git a/pages/topics/interactive/topicArticle/index.wxml b/pages/topics/interactive/topicArticle/index.wxml index 2ccfe49..8b40463 100644 --- a/pages/topics/interactive/topicArticle/index.wxml +++ b/pages/topics/interactive/topicArticle/index.wxml @@ -14,7 +14,7 @@ - + @@ -31,7 +31,7 @@ {{detail}} - + @@ -41,7 +41,7 @@ {{'评论 ' + comments.length}} - + @@ -50,9 +50,9 @@ {{item.detail}} {{item.time}} - + {{item.praiseNum}} - + diff --git a/pages/topics/interactive/topicArticle/index.wxss b/pages/topics/interactive/topicArticle/index.wxss index 7ec1ba0..1ed69c0 100644 --- a/pages/topics/interactive/topicArticle/index.wxss +++ b/pages/topics/interactive/topicArticle/index.wxss @@ -98,13 +98,13 @@ image{ } .topic_comment_top{ height: 40px; - border-bottom: 1px solid #E7E7E7; + /* border-bottom: 1px solid #E7E7E7; */ } .comment_info{ padding: 10px 0; display: flex; flex-direction: row; - border-bottom: 1px solid #E7E7E7; + border-top: 1px solid #E7E7E7; } .comment_info_left{ width: 30px; diff --git a/utils/http.js b/utils/http.js index 4f01f22..81535b6 100644 --- a/utils/http.js +++ b/utils/http.js @@ -20,6 +20,7 @@ class HTTP { } // token 拼接到 请求体中 let data = Object.assign({ token: token }, params.data) + console.log(data) wx.request({ url: url, data: data,