import { getIssueDetail, getIssueTypeStatistics, getRemarkList, // showRemarkStatement, issueComLike, issueComUnlike, itemComLike, itemComUnlike, // showIssueStatement, issueSupport, issueOpposition, itemSupport, itemOpposition, getProjectDetail, getProjectTypeStatistics, getIssueHandleProgressV2, getProjectHandleProgressV2 } from '../../utils/api' import { formatTimestamp } from '../../utils/common' const app = getApp() Page({ data: { loadMoreVisible: false, // loadMoreVisible 和 loadMoreType 控制 超出一屏时的 加载和没有更多的显示与隐藏 loadMoreType: 'none', issueId: '', // 议题id projectId: '', // 项目id detailId: '', // 页面获得项目或议题id detailType: 'issue', // 议题详情 还是 项目详情 detailObj: { // 详情内容对象 id: '', content: '', distributeTime: '', partyFlag: '', nickname: '', avatar: '', browseNum: '', approveNum: 0, opposeNum: '', images: '', userLike: '', categoryCode: '', firstCategoryCode: '', // 一级分类code userDislike: '', isOperational: '', address: '', operational: true, // 议题是否可操作 itemState: '', // 项目状态 0-处理中 5-已关闭 10-已结案 showSatisfactionEvaluation: false, issueToProjectId: '', // 项目当中,之前的议题id }, typeStatisticsObj: { // 列表统计对象 attitudeNum: '', categoryCode: '', categoryName: '', issueNum: '', itemNum: '' }, handleProgressList: [], // 处理进展列表 timeStamp: '', // 加载评论列表 需要的时间戳 remarkType: 'new', // 评论 最新最热类型 pageNo: 1, // 页码 pageSize: 10, // 页长 remarkObj: { // 评论列表 statementNum: 0, commentsList: [] }, supportTimer: '', // 点赞 支持的计时器 dispportTimer: '', // 点踩 反对的计时器 dialogVisible: false, // 提示信息探矿所需入参 dialogTitle: '', dialogContent: '', dialogConformText: '', dialogCancelText: '', completeInfoDialogVisible: false, // 完善信息弹窗 infoCompleted: 0, // 当前用户是否完善信息 showClassify: 'hide' // 是否显示 议题/项目分类列表 }, onLoad(options) { if (options.showClassify === 'show') { this.setData({ showClassify: 'show' }) } if (options.type === 'issue') { this.setData({ detailType: 'issue', detailId: options.detailId, issueId: options.detailId }) this.getIssueDetail().then(() => { this.getIssueTypeStatistics(this.data.detailObj.firstCategoryCode) }) this.getIssueHandleProgressV2(this.data.issueId).then(res => { const handleProgressList = [] res.forEach((item, index) => { if (index === res.length - 1) { item.type = 'point' item.isFirst = true handleProgressList.push(item) } else { item.type = 'issue' item.isFirst = false handleProgressList.push(item) } }) this.setData({ handleProgressList }) }) this.getRemarkList() wx.setNavigationBarTitle({ title: '议题详情' }) } else if (options.type === 'project') { wx.setNavigationBarTitle({ title: '项目详情' }) this.setData({ detailType: 'project', projectId: options.detailId, detailId: options.detailId }) this.getProjectDetail().then(() => { this.getProjectTypeStatistics(this.data.detailObj.firstCategoryCode) Promise.all([this.getIssueHandleProgressV2(this.data.detailObj.issueToProjectId), this.getProjectHandleProgressV2()]).then(res => { console.log('项目和议题处理进展', res) const issueList = [] const projectList = [] res[0].forEach((item, index) => { if (index === res[0].length - 1) { item.type = 'point' item.isFirst = true issueList.push(item) } else { item.type = 'issue' item.isFirst = false issueList.push(item) } }) res[1].forEach((item, index) => { if (index === res[1].length - 1) { item.type = 'issueToProject' item.isFirst = false projectList.push(item) } else { item.type = 'project' item.isFirst = false projectList.push(item) } }) this.setData({ handleProgressList: [...projectList, ...issueList] }) }).catch(err => { console.log(err) }) }) this.getRemarkList() } this.setData({ infoCompleted: app.globalData.infoCompleted }) }, onReachBottom() { this.setData({ loadMoreVisible: true }) if (this.data.loadMoreType === 'loading') { this.setData({ pageNo: this.data.pageNo + 1 }) this.loadMoreGetRemarkList() } }, // 获取议题详情 getIssueDetail() { return new Promise((resolve, reject) => { getIssueDetail(this.data.issueId).then(res => { console.log('议题详情', res) const detailObj = {} for (const key in this.data.detailObj) { detailObj[key] = res.data[key] } this.setData({ detailObj }) resolve(true) }).catch(err => { console.log(err) reject(false) }) }) }, // 获取项目详情 getProjectDetail() { return new Promise((resolve, reject) => { getProjectDetail(this.data.projectId).then(res => { console.log('项目详情', res) const detailObj = {} for (const key in this.data.detailObj) { detailObj[key] = res.data[key] } detailObj.issueToProjectId = res.data.issueId this.setData({ detailObj }) resolve(true) }).catch(err => { console.log(err) reject(false) }) }) }, // 议题类别统计 getIssueTypeStatistics(categoryCode) { getIssueTypeStatistics(categoryCode).then(res => { console.log('议题类别统计', res) const typeStatisticsObj = {} for (const key in this.data.typeStatisticsObj) { typeStatisticsObj[key] = res.data[key] || '' } this.setData({ typeStatisticsObj }) }).catch(err => { console.log(err) }) }, // 项目类别统计 getProjectTypeStatistics(categoryCode) { getProjectTypeStatistics(categoryCode).then(res => { console.log('项目类别统计', res) const typeStatisticsObj = {} for (const key in this.data.typeStatisticsObj) { typeStatisticsObj[key] = res.data[key] || '' } this.setData({ typeStatisticsObj }) }).catch(err => { console.log(err) }) }, // 议题处理进展 v2 getIssueHandleProgressV2(issueId) { return new Promise((resolve, reject) => { getIssueHandleProgressV2(issueId).then(res => { console.log('议题处理进度v2', res) resolve(res.data) }).catch(err => { console.log(err) reject(err) }) }) }, // 项目处理进展 v2 getProjectHandleProgressV2() { return new Promise((resolve, reject) => { getProjectHandleProgressV2(this.data.projectId).then(res => { console.log('项目处理进展', res) resolve(res.data) }).catch(err => { console.log(err) reject(err) }) }) }, // 最新最热 评论列表切换 changeRemarkType(e) { this.setData({ remarkType: e.detail.type, loadMoreVisible: false }) this.getRemarkList() }, // 获取评论列表 下拉刷新 getRemarkList() { this.setData({ timeStamp: formatTimestamp(), pageNo: 1, pageSize: 10 }) const para = { pageIndex: this.data.pageNo, pageSize: this.data.pageSize, timestamp: this.data.timestamp, orderType: this.data.remarkType === 'new' ? 0 : 1, issueId: this.data.detailType === 'issue' ? this.data.issueId : '', itemId: this.data.detailType === 'project' ? this.data.projectId : '' } getRemarkList(para).then(res => { console.log('评论列表', res) this.setData({ remarkObj: { statementNum: res.data.statementNum, commentsList: [...res.data.commentsList] }, loadMoreType: res.data.commentsList.length === 10 ? 'loading' : 'none' }) }).catch(err => { console.log(err) }) }, // 获取评论列表 上拉加载 loadMoreGetRemarkList() { const para = { pageIndex: this.data.pageNo, pageSize: this.data.pageSize, timestamp: this.data.timestamp, orderType: this.data.remarkType === 'new' ? 0 : 1, issueId: this.data.detailType === 'issue' ? this.data.issueId : '', itemId: this.data.detailType === 'project' ? this.data.projectId : '' } getRemarkList(para).then(res => { console.log('评论列表', res) this.setData({ remarkObj: { statementNum: res.data.statementNum, commentsList: [...this.data.remarkObj.commentsList, ...res.data.commentsList] }, loadMoreType: res.data.commentsList.length === 10 ? 'loading' : 'none' }) }).catch(err => { console.log(err) }) }, debounceSupportRemark(e) { clearTimeout(this.data.supportTimer) this.data.supportTimer = setTimeout(() => { this.supportRemark(e) }, 300) }, // 评论 支持 点赞 supportRemark(e) { if (this.verifyCompleteInfo()) { return false } if (this.verifyState()) { return false } const hasAttitude = this.data.remarkObj.commentsList.some(item => item.commentId === e.detail.commentId && (item.userLike || item.userDislike)) if (hasAttitude) { this.setData({ dialogConformText: '知道了', dialogContent: ['已表达过态度,不可以更改哦!'], dialogTitle: '已表态', dialogVisible: !this.data.dialogVisible }) return false } const index = this.data.remarkObj.commentsList.findIndex(item => item.commentId === e.detail.commentId) this.setData({ [`remarkObj.commentsList[${index}].userLike`]: true, [`remarkObj.commentsList[${index}].approveNum`]: parseInt(this.data.remarkObj.commentsList[index].approveNum) + 1, ['remarkObj.statementNum']: parseInt(this.data.remarkObj.statementNum) + 1 }) const para = { attitude: '0', commentId: e.detail.commentId, issueId: this.data.detailType === 'issue' ? this.data.issueId : '', itemId: this.data.detailType === 'project' ? this.data.projectId : '' } if (this.data.detailType == 'issue') { //议题 issueComLike(para).then(res => { console.log('评论支持', res) }).catch(err => { console.log(err) }) } else { itemComLike(para).then(res => { console.log('评论支持', res) }).catch(err => { console.log(err) }) } // showRemarkStatement(para).then(res => { // console.log('评论支持', res) // }).catch(err => { // console.log(err) // }) }, debounceDispportRemark(e) { clearTimeout(this.data.dispportTimer) this.data.dispportTimer = setTimeout(() => { this.dispportRemark(e) }, 300) }, // 评论 不支持 点踩 dispportRemark(e) { if (this.verifyCompleteInfo()) { return false } if (this.verifyState()) { return false } const hasAttitude = this.data.remarkObj.commentsList.some(item => item.commentId === e.detail.commentId && (item.userLike || item.userDislike)) if (hasAttitude) { this.setData({ dialogConformText: '知道了', dialogContent: ['已表达过态度,不可以更改哦!'], dialogTitle: '已表态', dialogVisible: !this.data.dialogVisible }) return false return false } const index = this.data.remarkObj.commentsList.findIndex(item => item.commentId === e.detail.commentId) this.setData({ [`remarkObj.commentsList[${index}].userDislike`]: true, [`remarkObj.commentsList[${index}].opposeNum`]: parseInt(this.data.remarkObj.commentsList[index].opposeNum) + 1, ['remarkObj.statementNum']: parseInt(this.data.remarkObj.statementNum) + 1 }) const para = { attitude: '1', commentId: e.detail.commentId, issueId: this.data.detailType === 'issue' ? this.data.issueId : '', itemId: this.data.detailType === 'project' ? this.data.projectId : '' } if (this.data.detailType == 'issue') { //议题 issueComUnlike(para).then(res => { console.log('评论不支持', res) }).catch(err => { console.log(err) }) } else { itemComUnlike(para).then(res => { console.log('评论不支持', res) }).catch(err => { console.log(err) }) } // showRemarkStatement(para).then(res => { // console.log('评论不支持', res) // }).catch(err => { // console.log(err) // }) }, // 对 议题/项目 进行评论 navigateToReply() { if (this.verifyCompleteInfo()) { return false } if (this.verifyState()) { return false } wx.navigateTo({ url: `/subpages/discussion/pages/remarkOrReply/remarkOrReply?detailId=${this.data.detailId}&faCommentId=&detailType=${this.data.detailType}` }) }, // 评论 回复 回调 replyRemark(e) { if (this.verifyCompleteInfo()) { return false } if (this.verifyState()) { return false } wx.navigateTo({ url: `/subpages/discussion/pages/remarkOrReply/remarkOrReply?detailId=${this.data.detailId}&faCommentId=${e.detail.commentId}&detailType=${this.data.detailType}` }) }, debounceSupportIssueOrProject() { clearTimeout(this.data.supportTimer) this.data.supportTimer = setTimeout(() => { this.supportIssueOrProject() }, 300) }, // 点赞 议题或评论 supportIssueOrProject() { if (this.verifyCompleteInfo()) { return false } if (this.verifyState()) { return false } if (this.data.detailObj.userDislike || this.data.detailObj.userLike) { this.setData({ dialogConformText: '知道了', dialogContent: ['已表达过态度,不可以更改哦!'], dialogTitle: '已表态', dialogVisible: !this.data.dialogVisible }) return false } this.setData({ ['detailObj.userLike']: true, ['detailObj.approveNum']: parseInt(this.data.detailObj.approveNum) + 1 }) const para = { attitude: '0', issueId: this.data.detailType === 'issue' ? this.data.issueId : '', itemId: this.data.detailType === 'project' ? this.data.projectId : '' } // showIssueStatement(para).then(res => { // console.log('点赞议题或项目', res) // }).catch(err => { // console.log(err) // }) if (this.data.detailType == 'issue') { //议题 issueSupport(para).then(res => { //v2新接口 2020.5.8 console.log('点赞议题', res) }).catch(err => { console.log(err) }) } else { //项目 itemSupport, itemSupport(para).then(res => { //v2新接口 2020.5.8 console.log('点赞项目', res) }).catch(err => { console.log(err) }) } }, debounceDispportIssueOrProject() { clearTimeout(this.data.dispportTimer) this.data.dispportTimer = setTimeout(() => { this.dispportIssueOrProject() }, 300) }, // 点踩 议题活评论 dispportIssueOrProject() { if (this.verifyCompleteInfo()) { return false } if (this.verifyState()) { return false } if (this.data.detailObj.userDislike || this.data.detailObj.userLike) { this.setData({ dialogConformText: '知道了', dialogContent: ['已表达过态度,不可以更改哦!'], dialogTitle: '已表态', dialogVisible: !this.data.dialogVisible }) return false } this.setData({ ['detailObj.userDislike']: true, ['detailObj.opposeNum']: parseInt(this.data.detailObj.opposeNum) + 1 }) const para = { attitude: '1', issueId: this.data.detailType === 'issue' ? this.data.issueId : '', itemId: this.data.detailType === 'project' ? this.data.projectId : '' } // showIssueStatement(para).then(res => { // console.log('点踩议题或项目', res) // }).catch(err => { // console.log(err) // }) if (this.data.detailType == 'issue') { //议题 issueOpposition(para).then(res => { //v2新接口 2020.5.8 console.log('点踩议题', res) }).catch(err => { console.log(err) }) } else { itemOpposition(para).then(res => { //v2新接口 2020.5.8 console.log('点踩项目', res) }).catch(err => { console.log(err) }) } }, // 跳转到 分类列表 navigateToCategoryList() { if (this.data.showClassify === 'show') { wx.navigateTo({ url: `/subpages/discussion/pages/categoryList/categoryList?type=${this.data.detailType}&categoryCode=${this.data.detailObj.firstCategoryCode}` }) } }, // 满意度评价 publishEvaluation() { if (this.verifyCompleteInfo()) { return false } if (this.data.detailObj.itemState !== 10) { this.setData({ dialogConformText: '知道了', dialogContent: ['项目未处理完毕或已关闭', '不能进行评价!'], dialogTitle: '满意度评价', dialogVisible: !this.data.dialogVisible }) return false } wx.navigateTo({ url: `/subpages/discussion/pages/publishEvaluation/publishEvaluation?itemId=${this.data.projectId}` }) }, // 检查 议题/项目的状态 verifyState() { if (this.data.detailType === 'issue' && !this.data.detailObj.operational) { this.setData({ dialogConformText: '知道了', dialogContent: ['议题已关闭,不可再进行', '评论/回复/支持/不支持等表达态度'], dialogTitle: '已关闭', dialogVisible: !this.data.dialogVisible }) return true } else if (this.data.detailType === 'project') { if (this.data.detailObj.itemState === 5) { this.setData({ dialogConformText: '知道了', dialogContent: ['项目已关闭,不可再进行', '评论/回复/支持/不支持等表达态度'], dialogTitle: '已关闭', dialogVisible: !this.data.dialogVisible }) return true } else if (this.data.detailObj.itemState === 10) { this.setData({ dialogConformText: '知道了', dialogContent: ['项目已结案,不可再进行', '评论/回复/支持/不支持等表达态度'], dialogTitle: '已结案', dialogVisible: !this.data.dialogVisible }) return true } } }, // 检查 是否完善信息 verifyCompleteInfo() { if (this.data.infoCompleted == 0) { this.setData({ completeInfoDialogVisible: !this.data.completeInfoDialogVisible }) return true } else { return false } } })