an_xiao/police_uniapp/pages/publishreview/publishreview.vue

394 lines
9.2 KiB
Vue
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="publishre">
<view class="publishreItem">
<view style="color: #333333;">{{optionItems.title}}</view>
<view class="publishreindex">发布时间{{optionItems.timestamp}}</view>
<view class="publishreindex">作者{{optionItems.creator}}</view>
<view class="publishreindex">单位{{optionItems.borough}}{{ '--'+optionItems.station}}</view>
</view>
<view class="imagetext">
<view>
<view v-for="(item,index) in optionItems.imageUrls" :key="index" style="text-align: center;">
<image :lazy-load="true"  show-menu-by-longpress='1' style="height: 460rpx;width: 95%;"
:src="'https://www.lonsungsh.com:8083' + item" @click="srcIndex(item,index)"></image>
</view>
<view class="Text" style="padding: 0 0 40rpx 30rpx">
<p class="TextITem">
{{optionItems.comment?optionItems.comment:'无'}}
</p>
</br>
</view>
</view>
</view>
<u-overlay :show="showUrl" @click="showUrl = false">
<view class="warp">
<movable-area :scale-area="true" style="width: 100vh;">
<movable-view direction="all" style="width: 348px; height: 300px;" @scale="onScale" scale="true"
scale-min="1" scale-max="4" :scale-value="scale" :x="1" :y="10">
<image class="rect" :src="showUrlList" mode="widthFix"></image>
</movable-view>
</movable-area>
</view>
</u-overlay>
<view>
<u-popup :show="popupshow" mode="bottom" @close="popupshow = false" @open="open" v-if="popupshow">
<view class="flex justify-between ai-end padding-sm mb-1 mt-1">
<view class="com-textarea-box">
<u--textarea :height="190" :cursorSpacing="100" class="com-textarea" :focus="focus"
:showConfirmBar="false" placeholder="请留下您的感想" maxlength="300"></u--textarea>
<span>回复</span>
</view>
</view>
</u-popup>
</view>
<!-- 评论点赞 -->
<view class="review">
<view style="display: flex;">
<!-- @tap.stop="showComments()" -->
<view class="reviewItem">
<image style="width: 100%;height: 100%;" src="../../static/campus/评论.png"></image>
</view>
<span style="color: #818181;font-size: 12px;margin-right: 10rpx;">{{this.reviewdataList.length}}</span>
<!-- <view style="width: 30rpx;height: 30rpx;">
<u-icon name="heart" color="#818181" size="32"></u-icon>
</view>
<span style="color: #818181;font-size: 12px;">1134</span> -->
</view>
<view style="display: flex;">
<!-- <view style="width: 30rpx;height: 30rpx;">
<u-icon name="heart" color="#818181" size="32"></u-icon>
</view>
<span style="color: #489dea;font-size: 12px;">赞一个</span> -->
</view>
</view>
<!-- 评论 -->
<view style="padding: 20rpx 0 0 30rpx;display: flex;width: 93%;">
<view style="width: 50rpx; height: 47rpx;">
<image style="width: 100%;height: 100%;" src="../../static/campus/评论区头像.png"></image>
</view>
<view :class="[!titleFocus?'reviewnumber':'reviewn']">
<view :class="[!titleFocus?'textareaItem':'textareaIndex']">
<textarea @focus="onfocus" class="textarea" auto-height v-model="titleFocus"
:placeholder="titleFocus || '请留下您的感想' " />
</view>
</view>
<view v-if="titleFocus">
<view style="color: ivory">1</view>
<view class="publish" @click="onSend">发送</view>
</view>
</view>
<!-- 评论数据展示 1-->
<view v-if="reviewdataList.length" style="padding-bottom: 50px">
<view v-for="(item,index) in reviewdataList" :key="item.id">
<view style="padding: 20rpx 0 0 30rpx;display: flex;width: 93%;">
<view style="width: 50rpx; height: 47rpx;">
<image style="width: 100%;height: 100%;" :src="item.url"></image>
</view>
<view class="reviewList">
<view>
<span
style="color: #333333;font-size: 13px;display: inline-block;width: 160rpx;">{{item.personName}}</span>
<span style="color: #818282; font-size: 12px;">{{item.timestamp}}</span>
</view>
<view style="color: #818282; font-size: 12px;margin: 10rpx 0 30rpx 0;">{{item.data}}</view>
</view>
</view>
</view>
</view>
<view v-else style="padding: 0 22px">
<u-divider text="暂无评论" textSize="24"></u-divider>
</view>
</view>
</template>
<script>
import urlTile from '../../static/campus/评论区头像.png'
import {
watch
} from 'vue'
import {
getremarkAdd,
getremarkgetlist
} from '@/api/login.js'
import {
mapGetters,
mapMutations
} from 'vuex';
import {
getTime
} from '@/utils/index.js'
export default {
data() {
return {
scale: 1,
showUrl: false,
showUrlList: '',
show: false,
title: '发布评论',
titleFocus: '',
reviewdataList: [],
optionItems: undefined,
popupshow: false
}
},
created() {},
onLoad: function(options) {
const that = this
// uni.$on('value', (data) => {
// data.imageUrls = JSON.parse(data.imageUrls)
// that.optionItems = data
// this.getremarkget()
// console.log(data);
// })
},
onShow() {
const that = this
const dataList = uni.getStorageSync('valueList')
const data = JSON.parse(dataList)
data.imageUrls = JSON.parse(data.imageUrls)
that.optionItems = data
this.getremarkget()
},
onUnload() {
// 移除监听事件
uni.$off('value');
},
beforeDestroy() {
uni.removeStorage({key:'valueList'})
},
computed: {
// 拿取vuex数据
...mapGetters({
userInfo: 'users/getLoginInfo',
})
},
methods: {
showComments() {
this.popupshow = true;
},
open() {
this.popupshow = true;
console.log('open');
},
onfocus(e) {},
cancel() {
this.titleFocus = ''
this.show = false
},
async getremarkget() {
const that = this
const resp = await getremarkgetlist({
newsId: that.optionItems.newsId,
personId: that.userInfo.id,
})
resp.data.map((item) => {
return item['url'] = require('../../static/campus/评论区头像.png')
})
// resp.data.map((item) => {
// return item['time'] = getTime(item.timestamp)
// })
that.reviewdataList = resp.data
},
// 发送评论
async onSend() {
const that = this
const listremark = {
newsId: that.optionItems.newsId,
personId: that.userInfo.id,
personName: that.userInfo.name,
data: that.titleFocus
}
const resp = await getremarkAdd(listremark)
uni.showLoading({
title: '正在评论中...'
});
setTimeout(() => {
uni.hideLoading();
uni.showToast({
title: '评论成功',
icon: 'success',
mask: true,
success() {
that.titleFocus = ''
that.getremarkget()
}
});
}, 800);
},
srcIndex(item, index) {
console.log(item, index);
this.showUrl = true
this.showUrlList = 'https://www.lonsungsh.com:8083' + item
},
// 缩放
onScale(e) {
console.log(e, '22');
}
}
}
</script>
<style lang="scss" scoped>
.publishre {
.publishreItem {
padding: 30rpx;
.publishreindex {
font-size: 12px;
margin-top: 18rpx;
color: #989898;
}
}
.imagetext {
.Text {
// height: 200rpx;
width: 97%;
font-size: 12px;
// border: 1px solid #989898;
.TextITem {
text-indent: 24px;
letter-spacing: 6rpx
}
}
}
.review {
padding: 30rpx 0 15rpx 0;
display: flex;
justify-content: space-between;
border-bottom: solid 1px #d6d6d6;
margin: 0 28rpx;
overflow: hidden;
.reviewItem {
width: 30rpx;
height: 30rpx;
}
}
.reviewnumber {
background-color: #f0f0f0;
// height: 60rpx;
margin-left: 15rpx;
width: 100%;
// width: 310px;
line-height: 50rpx;
border-radius: 18rpx;
transition: all 0.5s ease-out;
overflow: hidden;
}
.reviewn {
background-color: #f0f0f0;
// height: 60rpx;
margin-left: 15rpx;
width: 70%;
line-height: 50rpx;
border-radius: 18rpx;
transition: all 0.3s ease-out;
overflow: hidden;
}
.textareaItem {
margin-left: 20rpx;
font-size: 11px;
margin-top: 4rpx;
height: 38rpx
}
.textareaIndex {
margin-left: 20rpx;
font-size: 11px;
margin-top: 4rpx;
height: 38rpx
}
.publish {
width: 72rpx;
height: 35rpx;
border-radius: 23rpx;
background-color: #fc2b55;
color: #fff;
line-height: 35rpx;
font-size: 12px;
margin-top: 8rpx;
text-align: center;
margin-left: 10rpx;
}
.reviewList {
width: 100%;
margin-left: 15rpx;
border-bottom: solid 1px #d6d6d6;
}
.textarea {
width: 97%;
line-height: normal;
margin-top: 13rpx;
}
.warp {
display: flex;
align-items: center;
justify-content: center;
// width: 93%;
height: 258rpx;
transform: translate(15px, 86%); // height: 100%;
.rect {
width: 100%;
height: 100%;
// background-color: #fff;
}
}
.swiper {
height: 500rpx;
}
.swiper-item {
display: block;
height: 300rpx;
line-height: 300rpx;
text-align: center;
}
.swiper-list {
margin-top: 40rpx;
margin-bottom: 0;
}
}
</style>
<style lang="scss">
.justify-between {
height: 128px;
.com-textarea-box {
width: 85%;
display: flex;
align-items: baseline;
.com-textarea {
textarea {
min-height: 200rpx;
padding: 20rpx;
background: rgba(51, 51, 51, 0.02);
color: #000 !important;
}
}
}
}
</style>