import { $wuxActionSheet } from '../../../../dist/index' import { addTopic } from '../../utils/api' const QQMapWX = require('../../utils/qqmap-wx-jssdk') const config = require('../../../../utils/config') Page({ data: { topicValue: '', imageList: [], qqmapsdk: '', addressValue: '', imageId: 1, location: { latitude: '', longitude: '' }, groupId: '', groupName: '', addTopicPrevious: 0, placeholderShow:true, submitEvent: false, isFirstNum:0,//0:初始状态,1:提交一次审核违规不通过 isConReview:false,//true 强制发送 }, onShow () { }, onLoad (options) { const qqmapsdk = new QQMapWX({ key: 'CMJBZ-4DECI-JXGGN-5B4WU-QLV2H-B5BEJ' }) this.setData({ qqmapsdk, groupId: options.groupId, groupName: options.groupName }) this.getLocation() }, // 解决ios输入框遮挡占位符问题 bindTopicFocus(){ this.setData({ placeholderShow:false }) }, // 解决ios输入框遮挡占位符问题 bindTopicBlur(e){ this.setData({ topicValue: e.detail.value, }) if(this.data.topicValue.length==0){ this.setData({ placeholderShow:true }) } }, // 话题内容框 值双向绑定 bindTopicValue (e) { console.log('输入事件') this.setData({ topicValue: e.detail.value, }) }, // 地址框 值双向绑定 bindAddressValue (e) { this.setData({ addressValue: e.detail.value }) console.log(this.data.addressValue) }, // 选择图片 chooseImage () { const that = this $wuxActionSheet().showSheet({ buttons: [{ text: '拍照' }, { text: '从相册中获取' }, ], buttonClicked(index, item) { if (index === 0) { wx.chooseImage({ count: 1, sizeType: ['original', 'compressed'], sourceType: ['camera'], success (res) { const imageList = [...that.data.imageList] imageList.push({ img: res.tempFilePaths[0], upload: true, id: that.data.imageId++, ossUrl: '' }) that.setData({ imageList }) wx.uploadFile({ url: config.BASEURL() + 'group/topic/upload', filePath: res.tempFilePaths[0], name: 'file', header: { 'Content-Type': 'multipart/form-data' }, success (fileres) { const data = JSON.parse(fileres.data) if (data.code === 0 && data.msg === 'success') { imageList[imageList.length - 1].ossUrl = data.data imageList[imageList.length - 1].upload = false } else { imageList.pop() wx.showToast({ title: '上传图片失败,请重试', icon: 'none', duration: 2000 }) } that.setData({ imageList }) }, fail (err) { console.log(err) imageList.pop() wx.showToast({ title: '上传图片失败,请重试', icon: 'none', duration: 2000 }) that.setData({ imageList }) } }) } }) } else if (index === 1) { wx.chooseImage({ count: 3 - that.data.imageList.length, sizeType: ['original', 'compressed'], sourceType: ['album'], success (res) { let imageList = [] res.tempFilePaths.forEach(item => { imageList.push({ img: item, upload: true, id: that.data.imageId++, ossUrl: '' }) }) that.setData({ imageList: [...that.data.imageList, ...imageList] }) imageList.forEach((item, index) => { (function (index) { wx.uploadFile({ url: `${config.BASEURL()}group/topic/upload`, filePath: imageList[index].img, name: 'file', header: { 'Content-Type': 'multipart/form-data' }, success (fileRes) { const data = JSON.parse(fileRes.data) if (data.code === 0 && data.msg === 'success') { imageList[index].ossUrl = data.data imageList[index].upload = false } else { imageList.splice(index, 1) wx.showToast({ title: '上传图片失败,请重试', icon: 'none', duration: 2000 }) } that.data.imageList = that.data.imageList.slice(0, that.data.imageList.length - res.tempFilePaths.length) that.setData({ imageList: [...that.data.imageList, ...imageList] }) }, fail (err) { console.log(err) imageList.splice(index, 1) wx.showToast({ title: '上传图片失败,请重试', icon: 'none', duration: 2000 }) that.data.imageList = that.data.imageList.slice(0, that.data.imageList.length - res.tempFilePaths.length) that.setData({ imageList: [...that.data.imageList, ...imageList] }) } }) })(index) }) } }) } return true }, cancelText: '取消', cancel() {}, destructiveButtonClicked() {}, }) }, // 获取经纬度 getLocation () { wx.getLocation({ type: 'gcj02', success: (res) => { console.log('经纬度', res) this.reverseGeocoder(res) this.setData({ location: { latitude: res.latitude, longitude: res.longitude } }) } }) }, // 逆地址解析 reverseGeocoder ({latitude, longitude}) { this.data.qqmapsdk.reverseGeocoder({ location: { latitude, longitude }, success: (res) => { console.log('逆地址解析', res) if (res.message === 'query ok') { this.setData({ addressValue: res.result.address }) } } }) }, throttleAddTopic () { let now = new Date() if (now - this.data.addTopicPrevious > 2000) { this.addTopic() this.data.addTopicPrevious = now } }, // 添加话题事件 addTopic () { if (this.data.topicValue === '') { wx.showToast({ title: '请输入-话题内容', icon: 'none', duration: 2000 }) return false } else if (this.data.addressValue === '') { wx.showToast({ title: '请输入-地址', icon: 'none', duration: 2000 }) return false } const imagesList = [] if (this.data.imageList.length > 0) { const isUploadingStatus = this.data.imageList.some(item => item.upload) if (isUploadingStatus) { wx.showToast({ title: '请等待图片上传完成', icon: 'none', duration: 2000 }) return false } this.data.imageList.forEach(item => { imagesList.push(item.ossUrl) }) } // if (this.data.submitEvent) { // wx.showToast({ // title: '您的话题已提交,请勿重复提交', // icon: 'none', // duration: 3000 // }) // return false // } // this.setData({ // submitEvent: true, // }) const para = { topicContent: this.data.topicValue, topicAddress: this.data.addressValue, topicLatitude: this.data.location.latitude, topicLongitude: this.data.location.longitude, groupId: this.data.groupId, groupName: this.data.groupName, images: imagesList, isConReview:this.data.isConReview } wx.showLoading({ title: '加载中', mask:true, }) addTopic(para).then(res => { this.setData({ isConReview:false }) var pages = getCurrentPages() var prePages = pages[pages.length - 2] setTimeout(() => { prePages.pullRefreshGetTopicList() wx.navigateBack() wx.showToast({ title: '话题发布成功', icon: 'none', duration: 2000 }) wx.hideLoading() // this.setData({ // submitEvent: false, // }) }, 1000) }).catch(err => { let {code} =err if(code==533){ this.checkTitle() }else{ wx.showToast({ title: err, icon: 'none', duration: 6000, mask:true, complete: () => { setTimeout(() => { wx.hideLoading() }, 2000) } }) } }) }, // 删除图片 deleteImage (e) { const index = this.data.imageList.findIndex((item,index) => index === e.currentTarget.dataset.index) this.data.imageList.splice(index, 1) const imageList = this.data.imageList this.setData({ imageList }) }, checkTitle(){ let that = this if(this.data.isFirstNum==0){ this.setData({ isFirstNum:++this.data.isFirstNum }) // wx.hideLoading() // wx.showToast({ // title:'内容存在违规信息,请修改后重新提交!', // icon:'none', // duration: 3000, // mask:true // }) }else if(this.data.isFirstNum==1){ wx.hideLoading() wx.showToast({ title:'', icon:'none', duration: 100, mask:true }) wx.showModal({ title: '提示', content: '您提交的内容再次被判定为违规,您确定是否要提交?', success (res) { if (res.confirm) { that.setData({ isConReview:true }) that.addTopic () } else if (res.cancel) { } } }) } }, })