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.
515 lines
16 KiB
515 lines
16 KiB
import { getTopicDetail, SetTopTopic, closeTopic, topicStatement, getCommentList, commentStatement } from '../../../../api/clerkOnline'
|
|
Page({
|
|
data: {
|
|
detailObj: {},
|
|
remarkObj: { // 评论列表
|
|
statementNum: 0,
|
|
commentsList: []
|
|
},
|
|
pageIndex: 1,
|
|
pageSize: 10,
|
|
remarkType: 'new', // 评论 最新最热类型
|
|
topicId: '',
|
|
topList: [],
|
|
manageFlag: '',//管理员标识:0否,1是
|
|
TopFlag: '',//置顶标识:0否,1是 只有管理员有置顶的权限
|
|
topType: '',//操作类型:1,置顶,2取消
|
|
selfPublishFlag: '',//发布者标识:0否,1是
|
|
attitude: '',//表态 0赞;1踩
|
|
userLike: '',//用户是否赞过:0否,1是
|
|
userDislike: '',//用户是否踩过:0否,1是
|
|
likesTotal: '',
|
|
opposeLTotal: '',
|
|
orderType: '0', //排序方式 0: 获取最新列表,1: 获取最热列表
|
|
commentList: [],//评论列表
|
|
commentUserLike: '',
|
|
commentUserDislike: "",
|
|
commentUlikesTotal: '',
|
|
commentUopposeLTotal: '',
|
|
commentAttitude: '',
|
|
commentId: '',
|
|
commentIndex: 0,
|
|
loadVisible: false,
|
|
loadType: 'more',
|
|
isShowDetailContent: false,
|
|
isShowDetailRemark: false,
|
|
commentListLength: 0,
|
|
isShow: false,
|
|
iscommentStatement: false,
|
|
remarkTypeLoading:false,
|
|
isBackOpenTopic:true,//true刷新 false不刷新
|
|
},
|
|
async onShow(){
|
|
this.setData({
|
|
isBackOpenTopic:wx.getStorageSync('isBackOpenTopic')
|
|
})
|
|
if(!this.data.isBackOpenTopic){return}
|
|
this.setData({
|
|
// loadVisible: false,
|
|
isShowDetailContent: false,
|
|
isShowDetailRemark: false,
|
|
topicId: wx.getStorageSync('topicId'),
|
|
isShow:false,
|
|
loadVisible: true,
|
|
loadType:'more',
|
|
remarkTypeLoading:true
|
|
})
|
|
await this.getTopicDetail()
|
|
await this.getCommentList()
|
|
this.setData({
|
|
// loadVisible: false,
|
|
isShowDetailContent: true,
|
|
isShowDetailRemark: true,
|
|
remarkTypeLoading:false
|
|
})
|
|
},
|
|
onHide(){
|
|
console.log('hide')
|
|
},
|
|
onLoad(options) {
|
|
wx.setStorageSync('topicId',options.id)
|
|
console.log('onLoad')
|
|
},
|
|
/*******************点赞踩start************************/
|
|
async supportIssueOrProject() {
|
|
if (this.data.userLike == '0' && this.data.userDislike == '0') {
|
|
// 用户未赞过未踩过
|
|
this.setData({
|
|
attitude: "0",
|
|
})
|
|
let obj = {
|
|
topicId: this.data.topicId,
|
|
attitude: this.data.attitude
|
|
}
|
|
if (this.data.userLike == '0') {
|
|
// 点赞
|
|
this.setData({
|
|
'topList.likesTotal': this.data.likesTotal += 1,
|
|
'topList.userLike': '1',
|
|
userLike: '1'
|
|
})
|
|
}
|
|
let res: any = await topicStatement(obj)
|
|
console.log('赞', res)
|
|
} else if (this.data.userLike == '1' || this.data.userDislike == '1') {
|
|
wx.showModal({
|
|
title: '', //提示的标题,
|
|
content: '已表达过态度,不可以更改哦!', //提示的内容,
|
|
showCancel: false, //是否显示取消按钮,
|
|
confirmText: '确定', //确定按钮的文字,默认为取消,最多 4 个字符,
|
|
confirmColor: '#3CC51F', //确定按钮的文字颜色,
|
|
success: res => {
|
|
if (res.confirm) {
|
|
console.log('用户点击确定')
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
},
|
|
async dispportIssueOrProject() {
|
|
if (this.data.userLike == '0' && this.data.userDislike == '0') {
|
|
// 用户未赞过未踩过
|
|
this.setData({
|
|
attitude: "1",
|
|
})
|
|
let obj = {
|
|
topicId: this.data.topicId,
|
|
attitude: this.data.attitude
|
|
}
|
|
if (this.data.userDislike == '0') {
|
|
// 点赞
|
|
this.setData({
|
|
'topList.opposeLTotal': this.data.opposeLTotal += 1,
|
|
'topList.userDislike': '1',
|
|
userDislike: '1'
|
|
})
|
|
}
|
|
let res: any = await topicStatement(obj)
|
|
console.log('赞', res)
|
|
} else if (this.data.userLike == '1' || this.data.userDislike == '1') {
|
|
wx.showModal({
|
|
title: '', //提示的标题,
|
|
content: '已表达过态度,不可以更改哦!', //提示的内容,
|
|
showCancel: false, //是否显示取消按钮,
|
|
confirmText: '确定', //确定按钮的文字,默认为取消,最多 4 个字符,
|
|
confirmColor: '#3CC51F', //确定按钮的文字颜色,
|
|
success: res => {
|
|
if (res.confirm) {
|
|
console.log('用户点击确定')
|
|
}
|
|
}
|
|
});
|
|
}
|
|
},
|
|
debounceSupportRemark(e: any) {
|
|
this.setData({
|
|
commentId: e.detail.commentId
|
|
})
|
|
this.data.commentList.forEach((element: any, index: number) => {
|
|
if (e.detail.commentId == element.commentId) {
|
|
this.setData({
|
|
commentUserLike: element.userLike,
|
|
commentUserDislike: element.userDislike,
|
|
// @ts-ignore
|
|
commentUlikesTotal: parseInt(element.approveNum),
|
|
commentUopposeLTotal: element.opposeNum,
|
|
commentIndex: index
|
|
})
|
|
}
|
|
})
|
|
// 点击的时候
|
|
if (this.data.commentUserLike == '0' && this.data.commentUserDislike == '0') {
|
|
if (this.data.commentUserLike == '0') {
|
|
// 用户未赞过未踩过
|
|
this.setData({
|
|
commentAttitude: '0',
|
|
})
|
|
console.log('commentAttitude', this.data.commentAttitude)
|
|
// 点赞
|
|
this.setData({
|
|
[`commentList[${this.data.commentIndex}].approveNum`]: this.data.commentUlikesTotal += 1,
|
|
[`commentList[${this.data.commentIndex}].userLike`]: '1',
|
|
commentUserLike: '1'
|
|
})
|
|
}
|
|
this.commentStatement()
|
|
} else if (this.data.commentUserLike == '1' || this.data.commentUserDislike == '1') {
|
|
wx.showModal({
|
|
title: '', //提示的标题,
|
|
content: '已表达过态度,不可以更改哦!', //提示的内容,
|
|
showCancel: false, //是否显示取消按钮,
|
|
confirmText: '确定', //确定按钮的文字,默认为取消,最多 4 个字符,
|
|
confirmColor: '#3CC51F', //确定按钮的文字颜色,
|
|
success: res => {
|
|
if (res.confirm) {
|
|
console.log('用户点击确定')
|
|
}
|
|
}
|
|
});
|
|
}
|
|
},
|
|
debounceDispportRemark(e: any) {
|
|
this.setData({
|
|
commentId: e.detail.commentId
|
|
})
|
|
this.data.commentList.forEach((element: any, index: number) => {
|
|
if (e.detail.commentId == element.commentId) {
|
|
this.setData({
|
|
commentUserLike: element.userLike,
|
|
commentUserDislike: element.userDislike,
|
|
// @ts-ignore
|
|
commentUlikesTotal: parseInt(element.approveNum),
|
|
// @ts-ignore
|
|
commentUopposeLTotal: parseInt(element.opposeNum),
|
|
commentIndex: index
|
|
})
|
|
}
|
|
})
|
|
// 点击的时候
|
|
if (this.data.commentUserLike == '0' && this.data.commentUserDislike == '0') {
|
|
// 用户未赞过未踩过
|
|
this.setData({
|
|
commentAttitude: "1",
|
|
})
|
|
if (this.data.commentUserDislike == '0') {
|
|
// 点踩
|
|
this.setData({
|
|
[`commentList[${this.data.commentIndex}].opposeNum`]: this.data.commentUopposeLTotal += 1,
|
|
[`commentList[${this.data.commentIndex}].userDislike`]: '1',
|
|
commentUserDislike: '1'
|
|
})
|
|
}
|
|
this.commentStatement()
|
|
} else if (this.data.commentUserLike == '1' || this.data.commentUserDislike == '1') {
|
|
wx.showModal({
|
|
title: '', //提示的标题,
|
|
content: '已表达过态度,不可以更改哦!', //提示的内容,
|
|
showCancel: false, //是否显示取消按钮,
|
|
confirmText: '确定', //确定按钮的文字,默认为取消,最多 4 个字符,
|
|
confirmColor: '#3CC51F', //确定按钮的文字颜色,
|
|
success: res => {
|
|
if (res.confirm) {
|
|
console.log('用户点击确定')
|
|
}
|
|
}
|
|
});
|
|
}
|
|
},
|
|
/*******************点赞踩end************************/
|
|
// 最新最热 评论列表切换
|
|
async changeRemarkType(e: any) {
|
|
if (this.data.iscommentStatement) {
|
|
return wx.showModal({
|
|
title: '', //提示的标题,
|
|
content: '表态正在生成,请稍等切换', //提示的内容,
|
|
showCancel: false, //是否显示取消按钮,
|
|
confirmText: '确定', //确定按钮的文字,默认为取消,最多 4 个字符,
|
|
confirmColor: '#3CC51F', //确定按钮的文字颜色,
|
|
});
|
|
}
|
|
// this.setData({
|
|
// remarkType: e.detail.type,
|
|
// })
|
|
this.setData({
|
|
remarkType: e.detail.type,
|
|
isShow: false,
|
|
loadVisible: true,
|
|
loadType: 'more',
|
|
remarkTypeLoading:true,
|
|
})
|
|
if (e.detail.type == "hot") {
|
|
this.setData({
|
|
commentList: [],
|
|
pageIndex: 1,
|
|
orderType: '1',
|
|
})
|
|
await this.getCommentList()
|
|
this.setData({
|
|
remarkTypeLoading:false
|
|
})
|
|
} else if (e.detail.type == "new") {
|
|
this.setData({
|
|
commentList: [],
|
|
pageIndex: 1,
|
|
orderType: '0',
|
|
})
|
|
await this.getCommentList()
|
|
this.setData({
|
|
remarkTypeLoading:false
|
|
})
|
|
}
|
|
|
|
},
|
|
/***********************关闭,置顶 **************************/
|
|
closeContent() {
|
|
wx.showModal({
|
|
title: '确认要将本条内容关闭吗?', //提示的标题,
|
|
content: '关闭后,在群内不显示话题内容,管理后台保留数据,可以查看', //提示的内容,
|
|
showCancel: true, //是否显示取消按钮,
|
|
cancelText: '取消', //取消按钮的文字,默认为取消,最多 4 个字符,
|
|
cancelColor: '#000000', //取消按钮的文字颜色,
|
|
confirmText: '确定', //确定按钮的文字,默认为取消,最多 4 个字符,
|
|
confirmColor: '#04BCA0', //确定按钮的文字颜色,
|
|
success: res => {
|
|
if (res.confirm) {
|
|
this.closeTopic()
|
|
wx.showToast({
|
|
title: '关闭话题成功', //提示的内容,
|
|
icon: 'success', //图标,
|
|
duration: 2000, //延迟时间,
|
|
mask: true, //显示透明蒙层,防止触摸穿透,
|
|
success: res => { }
|
|
});
|
|
wx.setStorageSync('isBackOpen', false)
|
|
wx.navigateTo({ url: '/subpages/clerkOnline/pages/myGroup/myGroup' });
|
|
} else if (res.cancel) {
|
|
console.log('用户点击取消')
|
|
}
|
|
}
|
|
});
|
|
},
|
|
fixedTop() {
|
|
if (this.data.TopFlag == '1') {
|
|
this.setData({
|
|
topType: '2'
|
|
})
|
|
wx.showModal({
|
|
title: '确认要将本条内容取消置顶吗?', //提示的标题,
|
|
content: '取消置顶后,话题会按照发布时间排序需要在群内滑动查找内容', //提示的内容
|
|
showCancel: true, //是否显示取消按钮,
|
|
cancelText: '取消', //取消按钮的文字,默认为取消,最多 4 个字符,
|
|
cancelColor: '#000000', //取消按钮的文字颜色,
|
|
confirmText: '确定', //确定按钮的文字,默认为取消,最多 4 个字符,
|
|
confirmColor: '#04BCA0', //确定按钮的文字颜色,
|
|
success: async res => {
|
|
if (res.confirm) {
|
|
await this.SetTopTopic()
|
|
wx.showToast({
|
|
title: '取消置顶成功', //提示的内容,
|
|
icon: 'success', //图标,
|
|
duration: 2000, //延迟时间,
|
|
mask: true, //显示透明蒙层,防止触摸穿透,
|
|
success: res => { }
|
|
});
|
|
this.setData({
|
|
TopFlag: '0'
|
|
})
|
|
wx.setStorageSync('isBackOpen', false)
|
|
// wx.navigateTo({ url: '/subpages/clerkOnline/pages/myGroup/myGroup' });
|
|
} else if (res.cancel) {
|
|
}
|
|
}
|
|
});
|
|
} else if (this.data.TopFlag == '0') {
|
|
this.setData({
|
|
topType: '1'
|
|
})
|
|
wx.showModal({
|
|
title: '确认要将本条内容置顶吗?', //提示的标题,
|
|
content: '置顶后,话题会被群成员优先看到查看内容', //提示的内容
|
|
showCancel: true, //是否显示取消按钮,
|
|
cancelText: '取消', //取消按钮的文字,默认为取消,最多 4 个字符,
|
|
cancelColor: '#000000', //取消按钮的文字颜色,
|
|
confirmText: '确定', //确定按钮的文字,默认为取消,最多 4 个字符,
|
|
confirmColor: '#04BCA0', //确定按钮的文字颜色,
|
|
success: async (res) => {
|
|
if (res.confirm) {
|
|
await this.SetTopTopic()
|
|
wx.showToast({
|
|
title: '置顶成功', //提示的内容,
|
|
icon: 'success', //图标,
|
|
duration: 2000, //延迟时间,
|
|
mask: true, //显示透明蒙层,防止触摸穿透,
|
|
success: res => { }
|
|
});
|
|
this.setData({
|
|
TopFlag: '1'
|
|
})
|
|
wx.setStorageSync('isBackOpen', false)
|
|
// wx.navigateTo({ url: '/subpages/clerkOnline/pages/myGroup/myGroup' });
|
|
} else if (res.cancel) {
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
},
|
|
// 置顶的请求
|
|
async SetTopTopic() {
|
|
let obj = {
|
|
topicId: this.data.topicId,
|
|
topType: this.data.topType
|
|
}
|
|
let res: any = await SetTopTopic(obj)
|
|
|
|
},
|
|
// 关闭话题
|
|
async closeTopic() {
|
|
try {
|
|
let res: any = await closeTopic(this.data.topicId)
|
|
console.log('关闭', res)
|
|
} catch{
|
|
|
|
}
|
|
},
|
|
/***********************去回复页 **************************/
|
|
replyRemark(e: any) {
|
|
wx.setStorageSync('isBackOpenTopic',false)
|
|
wx.navigateTo({
|
|
url: `/subpages/clerkOnline/pages/remarkOrReply/remarkOrReply?type=${e.detail.type}&topicId=${e.detail.topicId}&faCommentId=${e.detail.commentId}`
|
|
})
|
|
},
|
|
/***********************去评论页 **************************/
|
|
commentsIndex(e: any) {
|
|
wx.setStorageSync('isBackOpenTopic',false)
|
|
console.log('e.currentTarget.dataset.topicid', e.currentTarget.dataset)
|
|
wx.navigateTo({
|
|
url: `/subpages/clerkOnline/pages/remarkOrReply/remarkOrReply?type=${e.currentTarget.dataset.type}&topicId=${e.currentTarget.dataset.topicid}`
|
|
})
|
|
},
|
|
|
|
/***********************获取话题详情内容 **************************/
|
|
async getTopicDetail() {
|
|
try {
|
|
let res: any = await getTopicDetail(this.data.topicId)
|
|
this.setData({
|
|
topList: res.data,
|
|
manageFlag: res.data.manageFlag,
|
|
selfPublishFlag: res.data.selfPublishFlag,
|
|
TopFlag: res.data.topFlag,
|
|
userLike: res.data.userLike,
|
|
userDislike: res.data.userDislike,
|
|
//@ts-ignore
|
|
likesTotal: res.data.likesTotal - 0,
|
|
//@ts-ignore
|
|
opposeLTotal: res.data.opposeLTotal - 0
|
|
})
|
|
console.log('res话题详情', res)
|
|
} catch{
|
|
|
|
}
|
|
|
|
},
|
|
/***********************获取话题详情评论列表 **************************/
|
|
async getCommentList() {
|
|
this.setData({
|
|
loadVisible: true,
|
|
loadType: 'more',
|
|
isShow: false,
|
|
// commentList:[]
|
|
})
|
|
let obj = {
|
|
pageIndex: this.data.pageIndex,
|
|
pageSize: this.data.pageSize,
|
|
topicId: this.data.topicId,
|
|
orderType: this.data.orderType
|
|
}
|
|
try {
|
|
let res: any = await getCommentList(obj)
|
|
if(this.data.pageIndex==1){
|
|
this.setData({
|
|
commentList: res.data,
|
|
commentListLength: res.data.length,
|
|
loadVisible: false,
|
|
})
|
|
}else {
|
|
this.setData({
|
|
commentList: this.data.commentList.concat(res.data),
|
|
commentListLength: res.data.length,
|
|
loadVisible: false,
|
|
})
|
|
}
|
|
|
|
|
|
if (this.data.commentListLength < this.data.pageSize) {
|
|
console.log('6666666666666666666')
|
|
this.setData({
|
|
loadVisible: true,
|
|
loadType: 'none'
|
|
})
|
|
}
|
|
if (this.data.pageIndex==1 && this.data.commentListLength == 0) {
|
|
this.setData({
|
|
isShow: true,
|
|
loadVisible: false,
|
|
})
|
|
}
|
|
} catch{
|
|
this.setData({
|
|
loadVisible: false
|
|
})
|
|
}
|
|
},
|
|
/***************************评论点赞 ******/
|
|
async commentStatement() {
|
|
this.setData({
|
|
iscommentStatement: true
|
|
})
|
|
let obj = {
|
|
attitude: this.data.commentAttitude,
|
|
topicId: this.data.topicId,
|
|
commentId: this.data.commentId
|
|
}
|
|
try {
|
|
let res: any = await commentStatement(obj)
|
|
this.setData({
|
|
iscommentStatement: false
|
|
})
|
|
} catch{
|
|
this.setData({
|
|
iscommentStatement: false
|
|
})
|
|
}
|
|
},
|
|
async onReachBottom() {
|
|
if(this.data.remarkTypeLoading){return }
|
|
if (this.data.commentListLength < this.data.pageSize) {
|
|
return
|
|
}
|
|
this.setData({
|
|
pageIndex: ++this.data.pageIndex,
|
|
})
|
|
await this.getCommentList()
|
|
},
|
|
})
|