|
|
<template> <view> <lf-nav title="发表" :showIcon="true" :backInquiry="backInquiry"></lf-nav> <view class="content"> <!-- 文本输入 --> <textarea class="textarea" placeholder="这一刻的想法…" v-model="content"></textarea> <!-- 上传图片 --> <view class="my-images"> <view class="my-image-item" @click="uploadImage" v-if="image_list.length < 6"> <text class="lf-iconfont icon-jia my-image-item-after"></text> </view> <view class="my-image-item" v-for="(item, index) in image_list" :key="index" @click="lookImage(index)"> <image :src="item" mode="aspectFill"></image> <view class="remove-image" @click.stop="removeInage(index)"> <text class="lf-iconfont icon-shanchu"></text> </view> </view> </view> <!-- 发表按钮 --> <button class="my-btn" hover-class="lf-opacity" @click="send()">发表</button> </view> </view></template>
<script> export default { data(){ return { image_list: [], image_count: 6, content: '', backInquiry: false, uploadImg: [] } }, watch: { content(val){ if(String(val).length){ this.backInquiry = true; }else{ this.backInquiry = false; } } }, onLoad(){ }, methods: { send() { if(!this.content) { this.$msg('请输入文字内容!'); return } if(this.uploadImg.length == 0) { this.$msg('请上传图片!'); return } this.$http .post({ api: 'api/discover/create', data: { images: this.uploadImg, content: this.content }, header: { Authorization: this.$cookieStorage.get('user_token') }, }) .then(res => { if (res.data.code == 200) { if (res.data.status) { this.$msg('发布成功').then(() => { this.$toBack(); }) } else { wx.showModal({ content: res.data.message || '发布失败,请稍后尝试!', showCancel: false }); } } else { wx.showModal({ content: res.data.message || '发布失败,请稍后尝试!', showCancel: false }); } wx.hideLoading(); }) .catch(() => { wx.hideLoading(); wx.showModal({ content: '请求失败', showCancel: false }); }); }, uploadDiscover(img) { uni.uploadFile({ header: { Authorization: this.$cookieStorage.get('user_token') }, url: this.$config.GLOBAL.baseUrl+'api/discover/upload_image', filePath: img, fileType: 'image', name: 'image', success: res => { var result = JSON.parse(res.data).data.url; this.uploadImg.push(result) console.log('上传后的图片路径',this.uploadImg) }, fail: err => { console.log(err) } }) }, // 上传凭证图片
uploadImage(){ let current_count = this.image_count - this.image_list.length; if(current_count == 0) return; uni.chooseImage({ count: 1, complete: result => { if(result.errMsg == "chooseImage:fail cancel"){ return; // 取消选择图片
} let tempFiles = result.tempFiles; let image_list = []; let overstep = false; tempFiles.map(item => { // 上传的图片需小于10MB
if(item.size < 1000000){ image_list.push(item.path); }else{ overstep = true; } }) if(overstep){ uni.showModal({ title: '温馨提示', content: '您上传的图片含有超出10M大小的限制,请优化大小后再上传!', showCancel: false }) } this.image_list.push(...image_list); this.uploadDiscover(tempFiles[0].path) console.log('当前选择的图片列表',this.image_list); } }) }, // 预览图片
lookImage(current){ if(this.image_list.length <= 0) return; this.$u.throttle(() => { uni.previewImage({ urls: this.image_list, current: current }); }, 500); }, // 移除图片
removeInage(current){ this.image_list.splice(current, 1); this.uploadImg.splice(current, 1); console.log('删除的图片列表',this.uploadImg); } } }</script>
<style lang="scss" scoped="scoped"> .content{ width: 750rpx; height: max-content; box-sizing: border-box; padding: 30rpx 32rpx; .textarea{ width: 100%; height: 160rpx; } } .my-images{ display: flex; flex-wrap: wrap; margin-top: 30rpx; margin-bottom: 18rpx; .my-image-item{ width: 220rpx; height: 220rpx; background: #DDDDDD; position: relative; margin-right: 12rpx; &:nth-child(3n){ margin-right: 0rpx; } &:nth-child(n+4){ margin-top: 12rpx; } image{ width: 100%; height: 100%; } .remove-image{ position: absolute; right: -4rpx; top: -18rpx; color: #e74c3c; font-size: 40rpx; padding: 8rpx; } } .my-image-item-after{ position: absolute; width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; font-size: 60rpx; color: #999999; } } .my-btn{ margin-top: 30rpx; background-color: #15716E; color: #FFFFFF; } /deep/.textarea-placeholder{ color: #999999; line-height: 1; vertical-align: middle; }</style>
|