锦水居民端小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

546 lines
14 KiB

// subpages/associationNew/pages/eventlist/eventlist.js
const app = getApp()
import { topiclist, commentSubmit, statement, shieldTopic, topTopic } from "../../utils/api"
import {
getTimestamp
} from "../../../../utils/common"
Page({
/**
* 页面的初始数据
*/
data: {
topiclist: [],
timestamp: "",
pageIndex: 1,
pageSize: 10,
partyGroupId: "",//党群id
topicType: "",//0:事好儿鼓个掌 1:话对捧个场
nodata: false,
loadMoreType: "none",
loadMoreVisible: false,
bannedFlag: "",//是否禁言 0:否 1:是
ifcomment: false,//是否显示评论
focus: false,
topicId: "",//被评论的话题ID
commentContent: "",
index: 0,//点击的第几条数据,用于评论的局部刷新用
infoCompleted: 0,
completeInfoDialogVisible: false,
ifpreviewImage:false,//解决图片放大刷新列表的问题
commentViewContent: "发个小看法", // 写评论按钮 文字内容
violationsCount: 0,
isConReview: false,
lastTopicId: "",
currentUserIdentity: "", //当前用户是否 -群主0-副群主1-群成员2
showModal: false, //是否显示屏蔽原因模态框
shieldId: '', //被屏蔽话题的ID
shieldReason: '', //屏蔽的原因
lock: false, //锁定发布状态,防止连击
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.setData({
partyGroupId: options.partyGroupId,
topicType: options.topicType,//0:事好儿鼓个掌 1:话对捧个场
infoCompleted: app.globalData.infoCompleted,
commentViewContent: '发个小看法' //options.topicType == 0 ? '鼓个掌' : '捧个场'
})
if (options.topicType == 0) {
wx.setNavigationBarTitle({
title: "事好鼓个掌"
})
} else {
wx.setNavigationBarTitle({
title: "话对捧个场"
})
}
},
// 查列表
topiclist () {
let that = this;
const para = {
pageIndex: this.data.pageIndex,
pageSize: this.data.pageSize,
timestamp: getTimestamp(),
topicType: this.data.topicType,
partyGroupId: this.data.partyGroupId, //党群id
partyTopicId:""
}
topiclist(para).then(res => {
wx.stopPullDownRefresh();
that.setData({
bannedFlag: res.data.bannedFlag,
currentUserIdentity: res.data.currentUserIdentity,
nodata: false,
topiclist: that.data.topiclist.concat(res.data.topicList),
loadMoreType: res.data.topicList.length === that.data.pageSize ? "loading" : "none",
loadMoreVisible: res.data.topicList.length === that.data.pageSize ? false : true
})
if (that.data.topiclist.length == 0) {//没有值
that.setData({
nodata: true,
loadMoreType: "none",
loadMoreVisible: false,
})
}
}).catch(err => {
wx.stopPullDownRefresh();
that.setData({
topiclist: [],
nodata: true,
loadMoreType: "none",
loadMoreVisible: false,
})
console.log(err)
})
},
// 跳转 发布话题
navigateToAddTopic () {
if (this.verifyCompleteInfo()) {
return false
}
wx.navigateTo({
url: `/subpages/associationNew/pages/addTopic/addTopic?partyGroupId=${this.data.partyGroupId}&topicType=${this.data.topicType}`
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
if(this.data.ifpreviewImage){
this.setData({
ifpreviewImage:false
})
} else {
this.setData({
pageIndex: 1,
pageSize: 10,
nodata: false,
loadMoreType: "none",
loadMoreVisible: false,
topiclist: [],
})
this.topiclist()
}
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
this.setData({
pageIndex: 1,
pageSize: 10,
nodata: false,
loadMoreType: "none",
loadMoreVisible: false,
topiclist: [],
})
this.topiclist()
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
this.setData({
loadMoreVisible: true
})
if (this.data.loadMoreType === "loading") {
this.setData({
pageIndex: this.data.pageIndex + 1,
pageSize: this.data.pageSize,
})
this.topiclist()
}
},
//点赞
clicklike (e) {
if (this.verifyCompleteInfo()) {
return false
}
this.setData({
index: e.currentTarget.dataset.index
})
// <!-- 用户是否已点赞 0否;1是 -->
if (this.data.bannedFlag == "1") {//被禁言
wx.showToast({
title: "您已经被禁言",
icon: "none",
duration: 2000
})
return false
}
let attitude = ""
if (e.currentTarget.dataset.likeflag == "0") {//点赞
attitude = 0
} else {
attitude = 2
}
let that = this;
const para = {
topicId: e.currentTarget.dataset.id,//被评论的话题ID
attitude: attitude,//表态 0赞;1踩;2取消赞;3取消踩
}
statement(para).then(() => {
// 点赞成功以后实现局部刷新功能
that.nowLikesList(e.currentTarget.dataset.id);
}).catch(err => {
console.log(err)
})
},
// Textarea获取焦点
clickTextarea (e) {
if (this.verifyCompleteInfo()) {
return false
}
let index = e.currentTarget.dataset.index
if (this.data.bannedFlag == "1") {//被禁言
wx.showToast({
title: "您已经被禁言",
icon: "none",
duration: 2000
})
return false
}
if (this.data.topicId != e.currentTarget.dataset.id) {
this.data.violationsCount = 0
}
this.setData({
ifcomment: true,
focus: true,
topicId: e.currentTarget.dataset.id,
index: index
})
},
// 失去焦点
bindAddressInput () {
setTimeout(() => {
if (this.data.violationsCount != 2){
this.setData({ //失去焦点以后view隐藏
ifcomment: false,
commentContent: ""
})
}
}, 500);
},
// 双向绑定
bindIdentity (e) {
this.setData({
commentContent: e.detail.value
})
},
// 评论按钮点击事件
commentSubmit () {
if (this.data.commentContent == '') {
wx.showToast({
title: "请输入评论内容",
icon: "none",
duration: 1500
})
return
}
this.setData({
lock: true
})
let that = this;
const para = {
topicId: that.data.topicId,//被评论的话题ID
faCommentId: "",//父评论(被评论)ID
content: that.data.commentContent,//评论内容
isConReview: that.data.isConReview
}
commentSubmit(para).then(res => {
// 评论成功以后,调用接口比对出当前评论列表的数据,对已有列表数据进行替换
this.setData({
lock: false
})
if (res.code == 0) {
this.setData({
violationsCount: 0,
isConReview: false,
ifcomment: false,
commentContent: ""
})
that.NowTopiclist()
} else if (res.code == 533) {
this.data.violationsCount++
if (this.data.violationsCount == 1){
wx.showToast({
title: res.msg,
icon: "none",
duration: 2000
})
} else if (this.data.violationsCount == 2) {
wx.showModal({
title: '提示',
content: '您提交的内容再次被判定为违规,您确定是否要提交?',
success (res) {
if (res.confirm) {
console.log('用户点击确定')
that.setData({
isConReview: true
})
that.commentSubmit()
} else if (res.cancel) {
console.log('用户点击取消')
that.setData({
violationsCount: 0,
isConReview: false,
ifcomment: false,
commentContent: ""
})
}
}
})
}
}
}).catch(err => {
console.log(err)
this.setData({
lock: false
})
})
},
// 列表内当前操作的数据
NowTopiclist () {
let that = this;
const para = {
pageIndex: 1,
pageSize: 1,
timestamp: getTimestamp(),
topicType: that.data.topicType,
partyGroupId: that.data.partyGroupId, //党群id
partyTopicId: that.data.topicId
}
topiclist(para).then(res => {
console.log(JSON.stringify(res))
// 评论成功以后实现局部刷新功能
var obj = that.data.topiclist[that.data.index]
// 评论成功以后评论数量加1
// obj.commentNum = obj.commentNum + 1
// obj.comments.splice(0, 0, {username:obj.nickname,content:para.content});
obj = res.data.topicList[0]
that.setData({
["topiclist[" + that.data.index + "]"]: obj
})
}).catch(err => {
console.log(err)
})
},
//列表照片的放大查看
previewImage (e) {
this.setData({
ifpreviewImage:true
})
app.globalData.previewImage = true
wx.previewImage({
urls: e.currentTarget.dataset.imgarry,
current: e.currentTarget.dataset.src
})
},
// 检查 是否完善信息
verifyCompleteInfo () {
if (this.data.infoCompleted == 0) {
this.setData({
completeInfoDialogVisible: !this.data.completeInfoDialogVisible
})
return true
} else {
return false
}
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
/**
* 点赞后局部更新内容
*/
nowLikesList (topicId) {
let that = this;
const para = {
pageIndex: 1,
pageSize: 10,
timestamp: getTimestamp(),
topicType: this.data.topicType,
partyGroupId: this.data.partyGroupId, //党群id
partyTopicId: topicId
}
topiclist(para).then(res => {
var obj = that.data.topiclist[that.data.index]
obj = res.data.topicList[0]
// <!-- 用户是否已点赞 0否;1是 -->
// obj.likeFlag = obj.likeFlag == '0' ? '1' : '0'
// obj.supportNum = obj.likeFlag == '1' ? obj.supportNum + 1 : obj.supportNum - 1
that.setData({
["topiclist[" + that.data.index + "]"]: obj
})
}).catch(err => {
console.log(err)
})
},
/*
* 前往论坛指南页面
*/
navToForumGuide () {
console.log("前往论坛指南")
wx.navigateTo({
url: `/subpages/associationNew/pages/guideInfo/guideInfo?partyGroupId=${this.data.partyGroupId}`
})
},
// 群主或副群主 屏蔽话题操作
shieldTopic (e) {
this.setData({
showModal: true,
shieldId: e.currentTarget.dataset.id,
shieldReason: ''
})
},
modalCancel (e) {
this.setData({
showModal: false,
shieldReason: ''
})
},
modalConfirm (e) {
this.setData({
showModal: false,
shieldReason: e.detail.data
})
const param = {
id: this.data.shieldId,
shieldReason: this.data.shieldReason
}
shieldTopic(param).then( res => {
console.log(res.data)
if (res.code == '0') {
wx.showToast({
title: '屏蔽成功',
icon: 'none',
duration: 2000
})
this.setData({
pageIndex: 1,
pageSize: 10,
nodata: false,
loadMoreType: "none",
loadMoreVisible: false,
topiclist: [],
})
this.topiclist()
}
})
},
topTopic (e) {
const param = {
topicId: e.currentTarget.dataset.id,
topFlag: '1'
}
let that = this
wx.showModal({
title: '提示',
content: '确定要把选择的话题置顶?',
confirmColor: '#04BCA0',
cancelColor: '#999',
success (res) {
if (res.confirm) {
console.log('用户点击确定')
topTopic(param).then( res => {
console.log(res.data)
if (res.code == '0') {
wx.showToast({
title: '置顶成功',
icon: 'none',
duration: 2000
})
that.setData({
pageIndex: 1,
pageSize: 10,
nodata: false,
loadMoreType: "none",
loadMoreVisible: false,
topiclist: [],
})
that.topiclist()
}
})
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
},
unTopTopic (e) {
const param = {
topicId: e.currentTarget.dataset.id,
topFlag: '0'
}
let that = this
wx.showModal({
title: '提示',
content: '确定要取消该话题的置顶?',
confirmColor: '#04BCA0',
cancelColor: '#999',
success (res) {
if (res.confirm) {
console.log('用户点击确定')
topTopic(param).then( res => {
console.log(res.data)
if (res.code == '0') {
wx.showToast({
title: '取消置顶成功',
icon: 'none',
duration: 2000
})
that.setData({
pageIndex: 1,
pageSize: 10,
nodata: false,
loadMoreType: "none",
loadMoreVisible: false,
topiclist: [],
})
that.topiclist()
}
})
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
}
})