diff --git a/models/topic.js b/models/topic.js index a1c55c1..2d197a6 100644 --- a/models/topic.js +++ b/models/topic.js @@ -3,6 +3,7 @@ import {HTTP, Method} from '../utils/http.js' const TopicBaseUrl = { topic_list_url:'/api/group/page', // 议题列表 topic_addGroup_url:'/api/group/addGroup', // 新建议题 + topic_deleteGroup_url:'/api/group/deleteGroup/',// 删除议题 topic_goldenList_url:'/api/comment/goldenList', // 金点子列表 topic_detail_url:'/api/group/queryById/', // 议题详情 topic_detailComment_url:'/api/comment/page', // 评论列表 @@ -57,6 +58,17 @@ class TopicModel extends HTTP { this.request(params) } + deleteGroup(id, success) { + let params = { + url: TopicBaseUrl.topic_deleteGroup_url + `${id}`, + method: Method.POST, + data: {}, + success: success + } + this.request(params) + } + + getTopicDetailComment(id, page,success) { let params = { url: TopicBaseUrl.topic_detailComment_url, diff --git a/pages/topics/index.js b/pages/topics/index.js index df013a9..81fd443 100644 --- a/pages/topics/index.js +++ b/pages/topics/index.js @@ -61,7 +61,7 @@ Page({ const datas = res.result.list let tempDatas = [] - datas.forEach(item => { + datas.forEach((item,index) => { tempDatas.push({ topicId: item.id, userIcon: item.groupAvator || '', @@ -71,6 +71,8 @@ Page({ commentNum: item.commentNum, topicImg: item.image, time: item.createTime, + dataIndex:index+((page-1)*10), + isTouchMove:false, }) }) if (page == 1) { @@ -201,6 +203,30 @@ Page({ return this.fetchGoodIdeaList() } }, + deleteTopic(e) { + console.log(e.detail.id) + let that = this + topicModel.deleteGroup(e.detail.id, res => { + console.log(res) + if (res.code === 200) { + wx.showToast({ + title: '删除成功', + icon: 'none', + success() { + that.setData({ + currPage: 1, + }) + switch (that.data.segmentIndex) { + case 0: + return that.fetchTopicList() + case 1: + return that.fetchGoodIdeaList() + } + } + }) + } + }) + }, tapGoodIdeaPraise(e){ this.fetchGoodIdeaPraise(e.detail.commentId) }, diff --git a/pages/topics/index.wxml b/pages/topics/index.wxml index 526bee8..980a759 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 11df272..a5f1407 100644 --- a/pages/topics/interactive/cell/index.js +++ b/pages/topics/interactive/cell/index.js @@ -1,4 +1,5 @@ // pages/topics/common/interactive/common/imageCell/index.js +import { store } from '../../../../utils/store.js' Component({ /** @@ -11,14 +12,17 @@ Component({ userIcon:String, userName:String, time: String, - commentNum: Number + commentNum: Number, + dataIndex:Number, + isTouchMove:Boolean, }, /** * 组件的初始数据 */ data: { - + startX: 0, //开始坐标 + startY: 0 }, /** @@ -27,6 +31,56 @@ Component({ methods: { onTap() { this.triggerEvent('clickListItem', { topicId: this.properties.topicId }) + }, + + touchstart: function (e) { + let {nickName} = store.readUserInfo() + if (e.currentTarget.dataset.name === nickName) { + //开始触摸时 重置所有删除 + if (this.properties.isTouchMove) { + this.setData({ + isTouchMove: false + }) + } + this.setData({ + startX: e.changedTouches[0].clientX, + startY: e.changedTouches[0].clientY, + }) + } + + }, + touchmove: function (e) { + let { nickName } = store.readUserInfo() + if (e.currentTarget.dataset.name === nickName) { + var that = this + // index = e.currentTarget.dataset.index,//当前索引 + const startX = that.data.startX//开始X坐标 + const startY = that.data.startY//开始Y坐标 + const touchMoveX = e.changedTouches[0].clientX//滑动变化坐标 + const touchMoveY = e.changedTouches[0].clientY//滑动变化坐标 + //获取滑动角度 + const angle = that.angle({ X: startX, Y: startY }, { X: touchMoveX, Y: touchMoveY }) + if (Math.abs(angle) > 30) return; + if (touchMoveX > startX) //右滑 + that.setData({ + isTouchMove: false + }) + else //左滑 + that.setData({ + isTouchMove: true + }) + } + // console.log(e) + + }, + angle: function (start, end) { + var _X = end.X - start.X, + _Y = end.Y - start.Y + //返回角度 /Math.atan()返回数字的反正切值 + return 360 * Math.atan(_Y / _X) / (2 * Math.PI); + }, + del: function (e) { + this.triggerEvent('deleteTopic', { id: e.currentTarget.dataset.id }) } } }) diff --git a/pages/topics/interactive/cell/index.wxml b/pages/topics/interactive/cell/index.wxml index 7727ad6..fd60493 100644 --- a/pages/topics/interactive/cell/index.wxml +++ b/pages/topics/interactive/cell/index.wxml @@ -1,29 +1,34 @@ - - - {{title}} - - - - - - + + + + + {{title}} - {{userName}} - {{time}} - + + + + + + + {{userName}} + {{time}} + + + + + + + {{commentNum}} + - - - - {{commentNum}} - + + + - - - - + 删除 + diff --git a/pages/topics/interactive/cell/index.wxss b/pages/topics/interactive/cell/index.wxss index 48f4042..68e225e 100644 --- a/pages/topics/interactive/cell/index.wxss +++ b/pages/topics/interactive/cell/index.wxss @@ -1,10 +1,11 @@ /* pages/topics/common/interactive/common/imageCell/index.wxss */ .cell { - border-bottom: 1px solid #E7E7E7; + /* border-bottom: 1px solid #E7E7E7; display: flex; flex-direction: row; padding: 10px 20px; - align-items: center; + align-items: center; */ + /* min-height: 80px; */ } .left{ display: flex; @@ -23,6 +24,7 @@ justify-content: space-between; } .left-bottom-userInfo{ + padding: 5px 0; display: flex; flex: row; align-items: center; @@ -67,8 +69,8 @@ color: #3B3B3B; } .right{ - width: 30%; - height: 70px; + width: 35%; + height: 80px; border-radius: 5px; background-color: #EEEEEE; } @@ -96,16 +98,56 @@ image{ color: #9C9C9C; } .cell_info_meta { - padding-top: 10rpx; display: flex; flex-direction: row; align-items: center; font-size: 12px; - line-height: 12px; color: #D4D4D4; } .cell_info_top { padding: 0 10px; width: 20px; height: 12px; +} + +.touch-item { + font-size: 14px; + display: flex; + justify-content: space-between; + border-bottom:1px solid #ccc; + width: 100%; + overflow: hidden +} +.content { + width: 100%; + /* padding: 10px; */ + line-height: 22px; + margin-right:0; + -webkit-transition: all 0.4s; + transition: all 0.4s; + -webkit-transform: translateX(120px); + transform: translateX(120px); + margin-left: -120px; + display: flex; + flex-direction: row; + padding: 10px 20px; + align-items: center; +} +.del { + background-color: orangered; + width: 120px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + color: #fff; + -webkit-transform: translateX(120px); + transform: translateX(120px); + -webkit-transition: all 0.4s; + transition: all 0.4s; +} +.touch-move-active .content, +.touch-move-active .del { + -webkit-transform: translateX(0); + transform: translateX(0); } \ No newline at end of file diff --git a/pages/topics/interactive/index.js b/pages/topics/interactive/index.js index 00b76b1..c445b58 100644 --- a/pages/topics/interactive/index.js +++ b/pages/topics/interactive/index.js @@ -27,10 +27,14 @@ Component({ }) }, clickListItem(e) { + console.log(e) const topicId = e.detail.topicId; wx.navigateTo({ url: `/pages/topics/interactive/topicArticle/index?topicId=${topicId}`, }) + }, + deleteTopic(e){ + this.triggerEvent('deleteTopic', { id: e.detail.id }) } } }) diff --git a/pages/topics/interactive/index.wxml b/pages/topics/interactive/index.wxml index c29217f..2e0f503 100644 --- a/pages/topics/interactive/index.wxml +++ b/pages/topics/interactive/index.wxml @@ -9,7 +9,11 @@ userName="{{item.userName}}" time="{{item.time}}" commentNum="{{item.commentNum}}" - bind:clickListItem="clickListItem"/> + bind:clickListItem="clickListItem" + dataIndex="{{item.dataIndex}}" + isTouchMove="{{item.isTouchMove}}" + bind:deleteTopic="deleteTopic" + /> diff --git a/pages/topics/interactive/topicArticle/index.wxml b/pages/topics/interactive/topicArticle/index.wxml index 7393f61..a1df078 100644 --- a/pages/topics/interactive/topicArticle/index.wxml +++ b/pages/topics/interactive/topicArticle/index.wxml @@ -68,5 +68,5 @@