Files
car_client_app/pages/index/detail.vue
2024-04-26 15:13:12 +08:00

1838 lines
48 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
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="detail">
<!-- use-page-scroll -->
<z-paging :hide-empty-view="true" :auto-scroll-to-top-when-reload="false" ref="paging" v-model="replyListAll"
@query="queryList" @scroll="scrollFn" :safe-area-inset-bottom="true">
<view class="nav">
<u-navbar safeAreaInsetTop placeholder>
<view class="u-nav-slot flex align-center justify-between" slot="left">
<u-icon name="arrow-left" size="19" color="#000000" @click="goBack"></u-icon>
</view>
<view :style="{'margin-right': `${menuWidth}px`,'margin-left':'24rpx'}" slot="right">
<view class="posi_r">
<image class="r_img" @click="dropBtn"
:src="`${config.aliyunOssUrl}/static/images/app/icon/drop.png`" mode=""></image>
</view>
</view>
</u-navbar>
</view>
<!-- 帖子内容 -->
<view class="content">
<view class="con_up">
<view class="up_l" @click.stop="linkPersonalCenter(detailObj.authorId)">
<image class="l_img" :src="detailObj.authorAvatar" mode="aspectFill"></image>
<view class="l_nickname">
<view class="nickname"> {{ detailObj.authorName }} </view>
<view class="time"> {{ detailObj.createTime |filtersTime}} </view>
</view>
</view>
<!-- v-show="!showNavImg" -->
<view>
<view v-if="myInfo.id !== detailObj.authorId">
<view class="up_r" @click="addLike" v-if="!detailObj.isConcerned">
<image class="r_img" :src="`${config.aliyunOssUrl}/static/images/app/icon/add.png`"
mode=""></image>
<view class="r_txt"> 关注 </view>
</view>
<view class="r_txt1" @click="addLike" v-if="detailObj.isConcerned"> 已关注 </view>
</view>
</view>
</view>
<view class="con_txt">
<view v-if="type==2">
<image class="ads" style="width: 44rpx;height: 44rpx;top: 12rpx;left: 0;"
:src="`${config.aliyunOssUrl}/static/images/app/mine/ask.png`" mode=""></image>
<text class="questions-and-answers-text-color">
<text class="" v-for="(topic) in detailObj.topicList" :key="topic.id"> #{{topic.name}}#
</text>
</text>
</view>
{{ detailObj.content }}
</view>
<video v-if="detailObj.video" style="position: relative;" :src="detailObj.video" initial-time="1s"
class="video-box1" :style="{width:`${detailObj.wide}`,height:`${detailObj.high}`}">
<!-- </cover-view> -->
</video>
<view class="image-list-box " v-if="detaImage.length">
<view v-if="detaImage.length==1">
<view v-for="(itemImage,imageIndex) in detaImage" :key="imageIndex">
<image class="image-one" :src="itemImage" mode="widthFix"
@click="examineFn(detaImage,imageIndex)">
</image>
</view>
</view>
<view v-if="detaImage.length>1" class="flex-wrap flex justify-between">
<view v-for="(itemImage,imageIndex) in detaImage" :key="imageIndex">
<image class="image-three" :src="itemImage" mode="aspectFill"
@click="examineFn(detaImage,imageIndex)"></image>
</view>
<view v-for="(a,b) in (detaImage.length%3-1)<0?0:(detaImage.length%3-1)">
<view class="image-three"></view>
</view>
</view>
</view>
<view class="con_foot">
<view class="foot_l"> {{ detailObj.city || "未知" }} </view>
<view class="foot_r">
<u-icon name="eye" size="19" color="#999999"></u-icon>
<view class="r_num"> {{ detailObj.views || '0' }} 浏览量 </view>
</view>
</view>
</view>
<!-- 评论 -->
<view class="all_comment">
<view class="com_title">
<view class="tit_l">
<view :class="showAll?'l_click':'l_l'" @click="allLook(1)"> 评论 ({{ replyAllTotal }}) </view>
<!-- <view :class="showLook?'r_click':'l_r'" @click="allLook(2)"> 只看楼主 </view> -->
</view>
</view>
<view class="com_content" v-for="(item,replyIndex) in replyListAll" :key="item.id">
<view class="con_title">
<view class="title_l" @click.stop="linkPersonalCenter(item.uid)">
<image :src="item.avatar" class="imgRadius" mode="aspectFill"></image>
<view class="tit_name"> {{ item.nickname }} </view>
</view>
<!-- #ifdef MP-WEIXIN -->
<image @click="moreBtn(item,2)" :src="`${config.aliyunOssUrl}/static/images/app/icon/more.png`"
style="width: 32rpx;height: 32rpx;"></image>
<!-- #endif -->
<!-- #ifdef APP -->
<image @click="moreBtn(item,2)" src="@/static/images/app/icon/more.png"
style="width: 32rpx;height: 32rpx;"></image>
<!-- #endif -->
</view>
<view class="con_txt" @click="replyToComments(item,2)">
<view style="margin-bottom: 8rpx;">
{{ item.content }}
</view>
<image @click.stop="examineFn1(item.image)" v-if="item.image" :src="item.image"
style="width: 100rpx; height: 100rpx;"></image>
</view>
<view class="con_info">
<view class="info_l">{{ item.createTime|filtersTime }} {{item.ipLocation||'未知'}} </view>
<view class="info_r">
<view @click.stop="likeNo(item)">
<!-- #ifdef APP -->
<image v-if="!item.isLike" src="@/static/images/app/icon/like_no.png" class="imgSize">
</image>
<image v-if="item.isLike" src="@/static/images/app/icon/like.png" class="imgSize">
</image>
<!-- #endif -->
<!-- #ifdef MP-WEIXIN -->
<image v-if="!item.isLike"
:src="`${config.aliyunOssUrl}/static/images/app/icon/like_no.png`"
class="imgSize" />
<image v-if="item.isLike"
:src="`${config.aliyunOssUrl}/static/images/app/icon/like.png`" class="imgSize">
</image>
<!-- #endif -->
</view>
<view class="info_num"> {{ item.countStart||0 }} </view>
</view>
</view>
<view class="con_list" v-if="item.replyList.length">
<view class="item_view" v-for="(el,elIndex) in item.replyList" :key="elIndex">
<view v-if="elIndex<2" @click="replyToComments(el,2)">
<view class="view_up">
<text class="up_name"> {{ el.nickname }} </text>
<image v-if='el.uid===detailObj.authorId'
:src="`${config.aliyunOssUrl}/static/images/app/icon/author.png`"
style="width: 76rpx;height: 38rpx;margin-right: 4rpx;"></image>
<image v-if='el.uid==myInfo.id && el.uid!==detailObj.authorId'
:src="`${config.aliyunOssUrl}/static/images/app/icon/my.png`"
style="width: 54rpx;height: 38rpx;margin-right: 4rpx;"></image>
<text class="down_l" style="margin-bottom: 8rpx;"> : {{ el.content }} </text>
</view>
<!-- <view class="view_down">
<view class="down_l">
<view style="margin-bottom: 8rpx;">
{{ el.content }}
</view>
<image @click.stop="examineFn1(el.image)" v-if="el.image" :src="el.image" style="width: 100rpx; height: 100rpx;"></image>
</view>
<view class="down_r" @click.stop="likeNo(el)">
<image v-if="!el.isLike" :src="`${config.aliyunOssUrl}/static/images/app/icon/like_no.png`" class="imgSize"/>
<image v-if="el.isLike" :src="`${config.aliyunOssUrl}/static/images/app/icon/like.png`" class="imgSize"></image>
<view class="down_num"> {{el.countStart}} </view>
</view>
</view> -->
</view>
</view>
<view class="list_foot" @click="openShowComment(item)" v-if="item.replyList.length>2">
<view class="foot_num"> {{item.replyList.length || '--'}} 条回复 </view>
<u-icon name="arrow-right" size="12" color="#13AFA8 "></u-icon>
</view>
</view>
<view class="con_xian"></view>
</view>
<!-- </z-paging> -->
</view>
<view style="height: 200rpx;"></view>
</z-paging>
<!-- 底部输入框 -->
<view class="bottom_up">
<view v-if="isInput">
<chatInputBar @sendSMS="sendSMS" :placeholder="placeholder" @keyboardheightchange="keyboardheightchange"
@gridItemTap="gridItemTap" ref="chatInputBar" />
</view>
<view v-else style="display: flex;align-items: center;justify-content: space-between;">
<view class="bottom_l" @click="isInputFn">
{{placeholder}}
</view>
<view class="bottom_r" v-if="!textareaFlag">
<view class="r_img_txt">
<image :src="`${config.aliyunOssUrl}/static/images/app/icon/information1.png`" class="imgSize4">
</image>
<view class="txt"> {{detailObj.replyNum||0}} </view>
</view>
<view class="r_img_txt" @click="collectBtn">
<image v-if="!detailObj.userIsCollect"
:src="`${config.aliyunOssUrl}/static/images/app/icon/xingxing1.png`" class="imgSize4" />
<image v-if="detailObj.userIsCollect"
:src="`${config.aliyunOssUrl}/static/images/app/icon/xingxing_end1.png`" class="imgSize4">
</image>
<view class="txt"> {{detailObj.collectNum||0}} </view>
</view>
<view class="r_img_txt" @click="likeDetailBtn">
<image v-if="!detailObj.userIsLike"
:src="`${config.aliyunOssUrl}/static/images/app/icon/like_no1.png`" class="imgSize4" />
<image v-if="detailObj.userIsLike"
:src="`${config.aliyunOssUrl}/static/images/app/icon/like1.png`" class="imgSize4"></image>
<view class="txt"> {{detailObj.likeNum||0}} </view>
</view>
</view>
</view>
</view>
<!-- drop的弹层 -->
<u-popup :show="show" :round="10" mode="bottom" @close="show=false">
<view class="popup_view">
<view class="pop_up">
<!-- #ifdef MP-WEIXIN -->
<view class="up_view" open-type="share" style="position:relative;">
<image :src="`${config.aliyunOssUrl}/static/images/app/icon/in_weixin.png`" class="imgRadius">
</image>
<view class="up_txt"> 微信好友 </view>
<button id="shareBtn" open-type="share" @click="shareBtnInfo(detailObj,1)"> </button>
</view>
<view class="up_view" open-type="share" style="position:relative;"
@click="shareBtnInfo(detailObj,2)">
<image :src="`${config.aliyunOssUrl}/static/images/app/icon/in_pengyouquan.png`"
class="imgRadius"></image>
<view class="up_txt"> 朋友圈 </view>
<!-- <button id="shareBtn" open-type="share" @click="shareBtnInfo(detailObj)"> </button> -->
</view>
<!-- #endif -->
<!-- #ifdef APP -->
<view class="up_view" open-type="share" style="position:relative;"
@click="shareFn('WXSceneSession')">
<image src="@/static/images/app/icon/in_weixin.png" class="imgRadius"></image>
<view class="up_txt"> 微信好友 </view>
</view>
<view class="up_view" open-type="share" style="position:relative;"
@click="shareFn('WXSceneTimeline')">
<image src="@/static/images/app/icon/in_pengyouquan.png" class="imgRadius"></image>
<view class="up_txt"> 朋友圈 </view>
</view>
<!-- #endif -->
<view class="up_view" @click="whoBtn(1)">
<!-- #ifdef MP-WEIXIN -->
<image :src="`${config.aliyunOssUrl}/static/images/app/icon/in_invite.png`" class="imgRadius">
</image>
<!-- #endif -->
<!-- #ifdef APP -->
<image src="@/static/images/app/icon/in_invite.png" class="imgRadius"></image>
<!-- #endif -->
<view class="up_txt"> 复制链接 </view>
</view>
</view>
<view class="pop_down">
<!-- pages/mine/personal_center/personal_center -->
<view class="up_view" @click="toPersonalPages">
<!-- #ifdef MP-WEIXIN -->
<image :src="`${config.aliyunOssUrl}/static/images/app/icon/in_home.png`" class="imgRadius">
</image>
<!-- #endif -->
<!-- #ifdef APP -->
<image src="@/static/images/app/icon/in_home.png" class="imgRadius"></image>
<!-- #endif -->
<view class="up_txt"> 作者主页 </view>
</view>
<view class="up_view" v-if="!detailObj.isConcerned" @click="addLike">
<!-- #ifdef MP-WEIXIN -->
<image :src="`${config.aliyunOssUrl}/static/images/app/icon/in_guanzhu.png`" class="imgRadius">
</image>
<!-- #endif -->
<!-- #ifdef APP -->
<image src="@/static/images/app/icon/in_guanzhu.png" class="imgRadius"></image>
<!-- #endif -->
<view class="up_txt"> 关注 </view>
</view>
<view class="up_view" v-else @click="addLike">
<!-- #ifdef MP-WEIXIN -->
<image :src="`${config.aliyunOssUrl}/static/images/app/icon/in_unguan.png`" class="imgRadius">
</image>
<!-- #endif -->
<!-- #ifdef APP -->
<image src="@/static/images/app/icon/in_unguan.png" class="imgRadius"></image>
<!-- #endif -->
<view class="up_txt"> 取消关注 </view>
</view>
<view class="up_view" @click="whoBtn(2)">
<!-- #ifdef MP-WEIXIN -->
<image :src="`${config.aliyunOssUrl}/static/images/app/icon/in_unlike.png`" class="imgRadius">
</image>
<!-- #endif -->
<!-- #ifdef APP -->
<image src="@/static/images/app/icon/in_unlike.png" class="imgRadius"></image>
<!-- #endif -->
<view class="up_txt"> 不喜欢 </view>
</view>
<view class="up_view" @click="toReportPages">
<!-- #ifdef MP-WEIXIN -->
<image :src="`${config.aliyunOssUrl}/static/images/app/icon/in_report.png`" class="imgRadius">
</image>
<!-- #endif -->
<!-- #ifdef APP -->
<image src="@/static/images/app/icon/in_report.png" class="imgRadius"></image>
<!-- #endif -->
<view class="up_txt"> 举报 </view>
</view>
</view>
<view class="pop_foot" @click="show=false"> 取消 </view>
</view>
</u-popup>
<!-- 显示复制链接已设置不喜欢 -->
<!-- <view class="img_view_weixin">
<image v-if="imgShow1" :src="`${config.aliyunOssUrl}/static/images/app/config/link.png`" style="width: 260rpx;height: 76rpx; border-radius: 16rpx"></image>
<image v-if="imgShow2" :src="`${config.aliyunOssUrl}/static/images/app/config/unlike.png`" style="width: 326rpx;height: 76rpx; border-radius: 16rpx"></image>
</view> -->
<!-- more 的弹层 -->
<u-popup :show="showMore" :round="10" mode="bottom" @close="showMore=false" zIndex='11000'>
<view class="more_view">
<view class="txt" @click="toReportPages"> 举报 </view>
<view class="txt" @click="replyToCommentsCopy"> 回复 </view>
<view class="txt" @click="cloneFn(moreItem)"> 复制 </view>
<view class="foot" @click="showMore=false"> 取消 </view>
</view>
</u-popup>
<!-- 评论弹层 -->
<u-popup :show="showComment" :round="12" mode="bottom" @close="closeBtn">
<view class="pop_comment">
<view class="title_view">
<u-icon name="arrow-left" size="19" color="#999999" @click="showComment=false"></u-icon>
<view class="title"> {{ replyListLength }} 条评论 </view>
<!-- #ifdef MP-WEIXIN -->
<image @click="showComment=false" class="r_img"
src="https://qicheoss.oss-cn-shanghai.aliyuncs.com/static/images/app/icon/report_close.png"
mode=""></image>
<!-- #endif -->
<!-- #ifdef APP -->
<image @click="showComment=false" class="r_img" src="@/static/images/app/icon/report_close.png"
mode=""></image>
<!-- #endif -->
</view>
<view class="all_con">
<view class="pop_content">
<view class="con_l" @click="linkPersonalCenter(itemObj.uid)">
<image :src="itemObj.avatar" class="imgRadius" mode="aspectFill"></image>
</view>
<view class="col_r">
<view class="con_title">
<view class="tit_name"> {{ itemObj.nickname }} </view>
<!-- #ifdef MP-WEIXIN -->
<image @click="moreBtn(itemObj,3)"
:src="`${config.aliyunOssUrl}/static/images/app/icon/more.png`"
style="width: 32rpx;height: 32rpx;"></image>
<!-- #endif -->
<!-- #ifdef APP -->
<image @click="moreBtn(itemObj,3)" src="@/static/images/app/icon/more.png"
style="width: 32rpx;height: 32rpx;"></image>
<!-- #endif -->
</view>
<view class="con_txt" @click="replyToComments(itemObj,3)">
<view style="margin-bottom: 8rpx;">
{{ itemObj.content }}
</view>
<image @click.stop="examineFn1(itemObj.image)" v-if="itemObj.image" :src="itemObj.image"
style="width: 100rpx; height: 100rpx;"></image>
</view>
<view class="con_info">
<view class="info_l"> {{ itemObj.createTime|filtersTime }} {{itemObj.ipLocation||'未知'}}
</view>
<view class="info_r">
<view @click.stop="likeNo(itemObj)">
<!-- #ifdef APP -->
<image v-if="!itemObj.isLike" src="@/static/images/app/icon/like_no.png"
class="imgSize"></image>
<image v-if="itemObj.isLike" src="@/static/images/app/icon/like.png"
class="imgSize"></image>
<!-- #endif -->
<!-- #ifdef MP-WEIXIN -->
<image v-if="!itemObj.isLike"
:src="`${config.aliyunOssUrl}/static/images/app/icon/like_no.png`"
class="imgSize" />
<image v-if="itemObj.isLike"
:src="`${config.aliyunOssUrl}/static/images/app/icon/like.png`"
class="imgSize"></image>
<!-- #endif -->
</view>
<view class="info_num"> {{ itemObj.countStart||0 }} </view>
</view>
</view>
<!-- <view class="con_xian"></view> -->
<!-- 回复的评论 -->
<view class="pop_content1" v-for="ele in itemObj.replyList" :key="ele.id">
<view class="con_l" @click.stop="linkPersonalCenter(ele.uid)">
<image :src="ele.avatar" class="imgRadius" mode="aspectFill"></image>
</view>
<view class="col_r">
<view class="con_title">
<view class="tit_name"> {{ ele.nickname }} </view>
<!-- #ifdef MP-WEIXIN -->
<image :src="`${config.aliyunOssUrl}/static/images/app/icon/more.png`"
style="width: 32rpx;height: 32rpx;"></image>
<!-- #endif -->
<!-- #ifdef APP -->
<image src="@/static/images/app/icon/more.png"
style="width: 32rpx;height: 32rpx;"></image>
<!-- #endif -->
</view>
<!-- 点击回复 -->
<view class="con_txt1" @click="replyToComments(ele,3)">
<text class="txt_a">回复</text>
<text class="txt_b">
{{ele.reviewUid !==0 ? ele.reviewUserNickname : itemObj.nickname}} </text> :
<!-- <text class="txt_b"> {{itemObj.nickname}} </text> : -->
<view class="txt_d" v-if="ele.image">
<view style="margin-bottom: 8rpx;">
{{ ele.content }}
</view>
<image @click.stop="examineFn1(ele.image)" :src="ele.image"
style="width: 100rpx; height: 100rpx;"></image>
</view>
<text class="txt_d" v-else> {{ ele.content }} </text>
</view>
<view class="con_info">
<view class="info_l"> {{ele.createTime|filtersTime }} {{ele.ipLocation||'未知'}}
</view>
<view class="info_r">
<view @click.stop="likeNo(ele)">
<!-- #ifdef APP -->
<image v-if="!ele.isLike" src="@/static/images/app/icon/like_no.png"
class="imgSize"></image>
<image v-if="ele.isLike" src="@/static/images/app/icon/like.png"
class="imgSize"></image>
<!-- #endif -->
<!-- #ifdef MP-WEIXIN -->
<image v-if="!ele.isLike"
:src="`${config.aliyunOssUrl}/static/images/app/icon/like_no.png`"
class="imgSize" />
<image v-if="ele.isLike"
:src="`${config.aliyunOssUrl}/static/images/app/icon/like.png`"
class="imgSize"></image>
<!-- #endif -->
</view>
<view class="info_num"> {{ ele.countStart || '0' }} </view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="pop_bottom">
<chatInputBar @sendSMS="sendSMS" :placeholder="placeholder"
@keyboardheightchange="keyboardheightchange" @gridItemTap="gridItemTap" ref="chatInputBar" />
</view>
</view>
<!-- <view style="height: 200rpx;"></view> -->
</u-popup>
</view>
</template>
<script>
import {
shareApi,
formatNumber,
getTimeDifference
} from "@/utils/index.js"
import chatInputBar from "./components/chat-input-bar/chat-input-bar.vue";
import config from '@/config'
import {
getDetailAPI,
concernedAuthor,
getReplyListAPI,
replyLikeAPI,
like,
collectAPI,
replyAddAPI,
noteNoteDislike,
getNoteShare
} from '@/api/discover/discover'
import {
userInfo,
} from "@/api/user/index"
import {
userCenterPersonalInfo,
getUserInfo
} from "@/api/system/user.js"
import utils from "@/utils/util.js";
import notify from "../../uni_modules/uview-ui/libs/config/props/notify";
export default {
components: {
chatInputBar
},
filters: {
filtersTime(value) {
if (!value) return '当前';
return getTimeDifference(value);
},
},
data() {
return {
menuWidth: getApp().globalData.menuWidth,
borderRadius: 50, //评论框圆角大小
autoFocus: false, //自动焦点
focus: false,
focusPop: false,
emoicon: [
"😁", "😋", "😜", "😉", "😌", "😅", "😳", "😊", "😝", "😰", "😠", "😩", "😲", "😞", "😭", "😍",
"😖", "😱", "😡", "😚", "😤", "🐼", "🐲", "😺", "😸", "😹", "😽", "🙀", "🐴", "🐮", "🍺", "🔥",
"💔", "♥", "🉑", "💢", "💣", "💩", "💪", "👍", "👊", "👋", "👌", "👐"
],
config,
value: '',
emojiShow: false, //表情显示
placeholder: "我也来说两句...",
disabled: false,
open: true,
more: false,
// tabs
list: [{
name: '最新'
}, {
name: '最热'
}],
showAll: true,
showLook: false,
// 弹 dropBtn
show: false,
imgShow1: false,
imgShow2: false,
timer1: '',
timer2: '',
// more
showMore: false,
moreItem: {},
moreNum: 2,
// 判断小手
IsLike: false,
// 评论弹层
showComment: false,
allList: [],
itemObj: {},
placeholderReply: '友善评论、文明发言',
// 详情数据
noteId: null,
authorId: null,
detailObj: {},
detaImage: [],
// 评论列表
replyListAll: [],
replyAllTotal: null,
typeNum: -1,
sortType: 'new',
// 回复评论的列表
miniReplyList: [],
replyListLength: '',
// 个人信息
myInfo: {},
// 添加评论
replyAddData: {
authorUserId: null, // 帖子的作者的用户ID移动端不传值
content: '', // 评论/回复内容
noteId: null, // 笔记ID
replyId: 0, // 评论ID一级评论传0
userId: null, // 用户ID移动端不传值
image: '' // 评论图片
},
//type==2 问答,话题
type: 1,
shareItem: {},
showNavImg: false,
//选择当前的聊天
actPData: {},
//回复类型
replyType: 2,
//监听滚动条滑动
headerFFlag: true,
//评论框长度
textareaFlag: false,
contentValue: '',
isInput: false
}
},
onLoad(query) {
this.noteId = query.id
this.getDetail(query.id)
this.authorId = query.authorId
this.type = query.type
},
onShow() {
this.getUserInfo1()
},
onShareAppMessage(res) {
if (res.from === 'button') {
// 来自页面内分享按钮
getNoteShare(this.noteId).then(res => {
// console.log(res, '分享成功');
})
}
return {
title: this.shareItem.content, //分享的名称
path: '/pages/index/index',
imageUrl: this.detaImage.length ? this.detaImage[0] : '',
};
},
onShareTimeline(res) {
return {
title: this.shareItem.content,
imageUrl: this.detaImage.length ? this.detaImage[0] : '',
// channel:''
};
},
watch: {
replyAddData: {
handler(nV, oV) {
// this.cardType=nV
this.replyAddData.image = nV.image
},
deep: true
},
focus: {
handler(a, b) {
},
deep: true
}
},
onPageScroll(e) {
// console.log(e,'onPageScroll');
if (e.scrollTop >= 96) {
this.showNavImg = true
} else {
this.showNavImg = false
}
},
methods: {
//点击输入框打开输入框
isInputFn() {
this.isInput = true
this.replyAddData.noteId = this.noteId
},
//监听
scrollFn(e) {
// console.log(e,'1111');
if (e.target.scrollTop >= 96) {
this.showNavImg = true
} else {
this.showNavImg = false
}
// console.log(this.showNavImg,'this.showNavImg');
},
// 个人主页
linkPersonalCenter(id) {
if (id) {
this.$tab.navigateTo(`/pages/mine/personal_center/personal_center?uid=${id}`)
}
},
//评论 发图
gridItemTap(index) {
// this.$toast('开发中~')
// // 从相册选择图片
utils.uploadImageOne({
count: 1,
sizeType: ['original'],
sourceType: ['album', 'camera'],
dir: 'crmebimage/public/product/'
}, null, (res) => {
// console.log(res,'评论 发图');
this.replyAddData.image = res.data
});
},
shareBtnInfo(item, num) {
// console.log(item,'小程序分享');
this.shareItem = item
if (num == 2) {
uni.showToast({
title: '请点击右上角胶囊中的三个点进行朋友圈分享',
duration: 3000,
icon: 'none'
});
}
},
//分享
shareFn(type) {
// console.log(this.detailObj.image);
let shareData = {
href: 'http',
type: this.detailObj.image.length ? 0 : 1,
imageUrl: this.detaImage.length ? this.detaImage[0] : '',
summary: this.detailObj.content ? this.detailObj.content : '分享图片'
}
shareApi(type, shareData).then(res => {
getNoteShare(this.noteId).then(res => {
// console.log(res, '分享成功');
})
})
},
//查看
examineFn(urlList, index) {
// console.log(urlList,index);
uni.previewImage({
urls: urlList,
current: index,
loop: true
})
},
//查看
examineFn1(urlList, index) {
// console.log(urlList,index);
uni.previewImage({
urls: [urlList],
current: index,
loop: true
})
},
getUserInfo1() {
// userCenterPersonalInfo().then(res => {
// console.log(res,'55555555555555555');
// this.myInfo = res.data
// })
getUserInfo().then(res1 => {
// console.log(res1,'登录者的信息');
this.myInfo = res1.data
})
},
// 帖子收藏
collectBtn() {
collectAPI(this.detailObj.id).then(res => {
if (this.detailObj.userIsCollect) this.detailObj.collectNum -= 1
else this.detailObj.collectNum += 1
this.detailObj.userIsCollect = !this.detailObj.userIsCollect
})
},
// 帖子点赞
likeDetailBtn() {
like(this.detailObj.id).then(res => {
if (this.detailObj.userIsLike) this.detailObj.likeNum -= 1
else this.detailObj.likeNum += 1
this.detailObj.userIsLike = !this.detailObj.userIsLike
let data = this.$store.state.pageManager.trendsData
data.userIsLike = this.detailObj.userIsLike
data.likeNum = this.detailObj.likeNum
this.$store.dispatch('changeTrendsData', data)
})
},
// 评论点赞
likeNo(item) {
replyLikeAPI(item.id).then(res => {
// this.$refs.paging.reload()
if (item.isLike) item.countStart -= 1
else item.countStart += 1
item.isLike = !item.isLike
})
},
// 评论列表
// sortType 最新new,最热hot
// type -1=全部 1=只看楼主
queryList(pageNo, pageSize) {
getReplyListAPI({
limit: pageSize,
page: pageNo,
noteId: this.noteId,
type: this.typeNum,
sortType: this.sortType
}).then(res => {
// console.log(res,'888评论列表888 ');
res.data.list.forEach(item => {
item.countStart = formatNumber(item.countStart)
// item.diffDays = this.formatTime(item.createTime)
if (!item.replyList) {
item.replyList = []
}
})
this.replyAllTotal = res.data.total
this.$refs.paging.complete(res.data.list)
}).catch(err => {
this.$refs.paging.complete(false)
})
},
// 时间处理
formatTime(createTime) {
const date = new Date(createTime)
const now = new Date()
const inter = parseInt((now.getTime() - date.getTime()) / 1000 / 60)
// console.log(inter,'时间间隔----分钟');
if (inter == 0) {
return '刚刚'
} else if (inter < 60) {
return inter.toString() + '分钟前'
} else if (inter < 60 * 24) {
return parseInt(inter / 60).toString() + '小时前'
} else if (now.getFullYear() == date.getFullYear()) {
return (date.getMonth() + 1).toString() + "-" + date.getDate().toString()
// return (date.getMonth()+1).toString()+"-"+date.getDate().toString()+" " +date.getHours()+":"+date.getMinutes()
} else {
return date.getFullYear().toString().substring(2, 3) + "-" + (date.getMonth() + 1).toString() + "-" +
date.getDate().toString()
}
},
// 点击关注
addLike(authorId) {
concernedAuthor(this.detailObj.authorId).then(res => {
this.detailObj.isConcerned = !this.detailObj.isConcerned
if (this.detailObj.isConcerned) this.detailObj.concernedNum += 1
else this.detailObj.concernedNum -= 1
})
},
// 社区用户笔记详情
getDetail(noteId) {
getDetailAPI(noteId).then(res => {
// console.log(res,'111详情数据111');
// formatNumber
this.detailObj = res.data
// this.detailObj.image = res.data.image.split(",")
this.detailObj.views = formatNumber(res.data.views)
this.detailObj.replyNum = formatNumber(res.data.replyNum)
this.detailObj.collectNum = formatNumber(res.data.collectNum)
this.detailObj.likeNum = formatNumber(res.data.likeNum)
this.detailObj.shareNum = formatNumber(res.data.shareNum)
if (res.data.image) {
this.detaImage = res.data.image.split(",")
} else {
this.detaImage = []
}
// console.log(this.detaImage,'tupian图片');
if (Number(this.detailObj.wide) > Number(this.detailObj.high)) {
let num = 686 / uni.$u.getPx(`${this.detailObj.wide}rpx`)
this.detailObj.wide = uni.$u.getPx(`${this.detailObj.wide}rpx`) * num + 'rpx'
this.detailObj.high = uni.$u.getPx(`${this.detailObj.high}rpx`) * num + 'rpx'
} else {
let num = 686 / uni.$u.getPx(`${this.detailObj.wide}rpx`)
this.detailObj.wide = uni.$u.getPx(`${this.detailObj.wide}rpx`) * num + 'rpx'
this.detailObj.high = uni.$u.getPx(`${this.detailObj.high}rpx`) * num + 'rpx'
}
// console.log(this.detailObj.wide,this.detailObj.high,'111111111111111');
this.replyAddData.noteId = res.data.id
this.replyAddData.authorUserId = res.data.authorId
let data = this.$store.state.pageManager.trendsData
data.replyNum = this.detailObj.replyNum
this.$store.dispatch('changeTrendsData', data)
})
// this.focus=false
// this.focusPop=false
},
// 打开评论弹层
openShowComment(item) {
this.showComment = true
this.itemObj = item
this.itemObj.countStart = formatNumber(item.countStart)
this.replyListLength = item.replyList.length
this.replyAddData.replyId = item.id
this.replyAddData.userId = this.myInfo.id
this.replyAddData.noteId = this.detailObj.id
this.replyAddData.authorUserId = this.detailObj.authorId
},
// 去举报页
toReportPages() {
uni.navigateTo({
url: '/pages/index/report?id=' + this.detailObj.id
})
},
// 更多
moreBtn(item, num) {
this.showMore = true
this.moreItem = item
this.moreNum = num
},
// nav上的三个点按钮
dropBtn() {
this.show = true
},
// 去作者主页
toPersonalPages() {
if (this.detailObj.authorId) {
this.$tab.navigateTo(`/pages/mine/personal_center/personal_center?uid=${this.detailObj.authorId}`)
}
},
// 链接 或 不喜欢
whoBtn(num) {
// console.log(num,'链接或不喜欢');
if (num == 1) {
uni.showToast({
title: '已复制链接',
icon: 'none'
})
} else {
noteNoteDislike(this.detailObj.authorId).then(res => {
// console.log(res);
uni.showToast({
title: '已设置不喜欢',
icon: 'none',
success: (resToa) => {
uni.navigateBack()
// uni.switchTab({
// url:'/page'
// })
}
})
})
}
},
// 全部/楼主/最新/最热
allLook(num) {
if (num == 1) {
// console.log('全部');
this.showAll = true
this.showLook = false
this.typeNum = -1
} else {
// console.log('只看楼主');
this.showLook = true
this.showAll = false
this.typeNum = 1
}
this.$refs.paging.reload()
},
tabsBtn(item) {
// console.log(item,'tabs');
if (item.name == '最新') this.sortType = 'new'
if (item.name == '最热') this.sortType = 'hot'
this.$refs.paging.reload()
},
//输入框行数变化时
linechange({
detail
}) {
if (Math.abs(detail.height) < 26) {
this.borderRadius = 50
} else {
this.borderRadius = 10
}
},
// 底部评论
confirm() {
replyAddAPI(this.replyAddData).then(res => {
this.replyAddData.content = ''
res.data.replyList = []
this.replyListAll.push(res.data)
this.getDetail(this.noteId)
})
},
//复制
cloneFn(item) {
uni.setClipboardData({
data: item.content,
success: () => {
this.showMore = false
uni.showToast({
title: '复制成功',
duration: 2000,
})
}
});
},
replyToCommentsCopy() {
if (this.moreNum == 2) {
this.showMore = false
this.focus = true
this.replyAddData.replyId = this.moreItem.id
this.replyAddData.userId = this.myInfo.id
this.getDetail(this.noteId)
} else {
this.showMore = false
this.focusPop = true
this.replyAddData.replyId = this.moreItem.id
this.replyAddData.userId = this.myInfo.id
this.getDetail(this.noteId)
}
},
// 回复评论
replyToComments(ele, num) {
this.placeholder = '回复' + ' ' + ele.nickname + ' ' + ':'
this.replyType = num
//回复的评论i
this.replyAddData.replyId = ele.id
this.replyAddData.userId = this.myInfo.id
if (num != 3) {
this.isInput = true
}
this.getDetail(this.noteId)
},
// 发送
sendSMS(e) {
this.replyAddData.content = e.msg
this.replyAddAPIFn()
},
// 发送评论数据
replyAddAPIFn() {
replyAddAPI(this.replyAddData).then(res => {
// type == 1评论 2回复/
if (res.data.type == 1) {
this.replyAddData.content = ''
res.data.replyList = []
this.replyListAll.unshift(res.data)
this.getDetail(this.noteId)
} else {
this.replyListAll.forEach(item => {
if (res.data.replyId == item.id) {
item.replyList.unshift(res.data)
}
})
}
uni.hideKeyboard();
this.isInput = false
this.resetData()
})
this.textareaFlag = false
this.emojiShow = false
this.placeholder = '我要发言'
},
resetData() {
// this.placeholder='友善评论、文明发言'
// this.placeholderReply='友善评论、文明发言'
this.replyAddData = {
authorUserId: null,
content: '',
noteId: null,
replyId: 0,
userId: null,
image: ''
}
},
closeBtn() {
this.showComment = false
this.placeholder = '我也来说两句...'
},
goBack() {
uni.navigateBack({
delta: 1
})
},
},
beforeDestroy() {
clearTimeout(this.timer1)
clearTimeout(this.timer2)
}
}
</script>
<style lang="scss">
.clear {
top: -4rpx;
left: 60rpx;
width: 32rpx;
height: 32rpx;
}
//视频
.video-box {
width: 686rpx;
border-radius: 8rpx;
margin-top: 24rpx;
}
.video-box1 {
width: 100%;
// width: 450rpx;
margin-top: 24rpx;
border-radius: 8rpx;
}
#shareBtn {
position: absolute;
z-index: 2;
opacity: 0;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.imgSize {
width: 30rpx;
height: 30rpx;
}
.imgSize4 {
width: 40rpx;
height: 40rpx;
// border: 1px solid red;
}
.imgRadius {
width: 80rpx;
height: 80rpx;
border-radius: 40rpx;
}
.reply_pop {
padding: 20rpx 32rpx;
background: #FFFFFF;
z-index: 999;
.rep_btn {
// border: 1px solid red;
margin-top: 30rpx;
display: flex;
justify-content: space-between;
.btn_l {
display: flex;
align-items: center;
}
.btn_r {
padding: 14rpx 32rpx;
background-color: #13AFA8;
border-radius: 8rpx;
font-size: 24rpx;
font-weight: 400;
color: #FFFFFF;
}
}
}
.pop_comment {
// border-top: 1rpx solid #EDEDED;
position: relative;
height: 85vh;
// border: 1px solid blue;
.title_view {
position: absolute;
top: 0;
width: 100%;
background-color: #fff;
z-index: 99;
padding: 43rpx 24rpx;
border-radius: 25rpx 25rpx 0rpx 0rpx;
display: flex;
align-items: center;
justify-content: space-between;
.title {
font-size: 30rpx;
font-weight: bold;
color: #222222;
}
.r_img {
width: 26rpx;
height: 26rpx;
}
}
.all_con {
height: 1200rpx;
padding: 120rpx 0 20rpx;
overflow: auto;
}
.pop_content {
// border: 1px solid blue;
padding: 0 32rpx;
display: flex;
margin-top: 8rpx;
}
.pop_content1 {
// border: 1px solid pink;
// padding: 0 32rpx;
display: flex;
margin-top: 32rpx;
}
.pop_bottom {
// border: 1px solid blue;
position: absolute;
bottom: 0;
width: 100%;
padding: 14rpx 32rpx 26rpx;
background-color: #fff;
}
.con_l {
margin-right: 16rpx;
}
.col_r {
// border: 1px solid green;
margin-top: 20rpx;
}
.con_title {
display: flex;
justify-content: space-between;
align-items: center;
}
.tit_name {
font-size: 28rpx;
font-weight: bold;
color: #666666;
}
.con_txt {
// border: 1px solid;
width: 590rpx;
font-size: 32rpx;
font-weight: 400;
color: #111111;
margin-top: 24rpx;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
// white-space: nowrap; // 不换行
word-break: break-all;
}
.con_txt1 {
// border: 1px solid green;
margin-top: 24rpx;
width: 500rpx;
.txt_a {
font-size: 32rpx;
font-weight: 400;
color: #111111;
margin-right: 16rpx;
}
.txt_b {
font-size: 32rpx;
font-weight: 400;
color: #666666;
margin-right: 16rpx;
}
.txt_d {
font-size: 32rpx;
font-weight: 400;
color: #111111;
word-break: break-all;
}
}
.con_info {
margin-top: 24rpx;
display: flex;
justify-content: space-between;
align-items: center;
.info_l {
font-size: 24rpx;
font-weight: 400;
color: #999999;
}
.info_r {
display: flex;
align-items: center;
.info_num {
font-size: 28rpx;
font-weight: 400;
color: #666666;
margin-left: 16rpx;
}
}
}
.con_xian {
margin-top: 32rpx;
height: 0;
border-bottom: 1rpx solid #666666;
opacity: 0.1;
}
}
.more_view {
padding: 0 32rpx;
.txt {
padding: 32rpx 0;
text-align: center;
font-size: 34rpx;
font-weight: 400;
color: #111111;
}
.foot {
padding: 32rpx 0;
text-align: center;
font-size: 34rpx;
font-weight: 400;
color: rgba(153, 153, 153, 0.9);
border-top: 1px solid #f1f1ff;
}
}
.popup_view {
padding: 48rpx 48rpx 20rpx;
// border: 1px solid red;
.pop_up {
// border: 1px solid blue;
margin-bottom: 48rpx;
display: flex;
align-items: center;
}
.up_view {
// border: 1px solid red;
margin-right: 60rpx;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
.up_txt {
font-size: 24rpx;
font-weight: 400;
color: #111111;
margin-top: 8rpx;
}
}
.pop_down {
// border: 1px solid red;
padding-bottom: 48rpx;
display: flex;
align-items: center;
border-bottom: 1rpx solid #EDEDED;
}
.pop_foot {
padding: 20rpx 200rpx;
font-size: 34rpx;
font-weight: 400;
color: #222222;
text-align: center;
}
}
.all_comment {
padding: 24rpx 32rpx;
border-top: 1rpx solid #EDEDED;
.com_title {
display: flex;
align-items: center;
justify-content: space-between;
.tit_l {
display: flex;
align-items: center;
.l_click {
font-size: 30rpx;
font-weight: bold;
color: #222222;
}
.l_r {
font-size: 28rpx;
font-weight: bold;
color: #666666;
margin-left: 32rpx;
}
.l_l {
font-size: 28rpx;
font-weight: bold;
color: #666666;
}
.r_click {
font-size: 30rpx;
font-weight: bold;
color: #222222;
margin-left: 32rpx;
}
}
}
.com_content {
// border: 1px solid red;
margin-top: 32rpx;
.con_title {
display: flex;
justify-content: space-between;
align-items: center;
.title_l {
display: flex;
align-items: center;
.tit_name {
font-size: 28rpx;
font-weight: bold;
color: #111111;
margin-left: 16rpx;
}
}
}
.con_txt {
font-size: 32rpx;
font-weight: 400;
color: #111111;
// color: #444444;
margin-top: 24rpx;
margin-left: 80rpx;
word-break: break-all;
}
.con_info {
margin-top: 24rpx;
margin-left: 80rpx;
display: flex;
justify-content: space-between;
align-items: center;
.info_l {
font-size: 24rpx;
font-weight: 400;
color: #999999;
}
.info_r {
display: flex;
align-items: center;
.info_num {
font-size: 28rpx;
font-weight: 400;
color: #666666;
margin-left: 16rpx;
}
}
}
.con_list {
// border: 1px solid blue;
background: #F8F8F8;
padding: 0 24rpx 24rpx 24rpx;
margin-top: 24rpx;
margin-left: 80rpx;
.item_view {
.view_up {
padding-top: 24rpx;
width: 560rpx;
.up_name {
// border: 1px solid red;
margin-right: 16rpx;
font-size: 28rpx;
font-weight: bold;
color: #111111;
}
.down_l {
// border: 1px solid green;
font-size: 28rpx;
font-weight: 400;
color: #111111;
word-break: break-all;
}
}
.view_down {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 8rpx;
.down_l {
font-size: 32rpx;
font-weight: 400;
color: #444444;
}
.down_r {
display: flex;
align-items: center;
.down_num {
font-size: 28rpx;
font-weight: 400;
color: #666666;
margin-left: 8rpx;
}
}
}
}
.list_foot {
display: flex;
align-items: flex-end;
font-size: 24rpx;
font-weight: 400;
color: #13AFA8;
margin-top: 24rpx;
.foot_num {
margin-right: 16rpx;
}
}
}
.con_xian {
margin-top: 32rpx;
margin-left: 80rpx;
height: 0;
border-bottom: 1rpx solid #666666;
opacity: 0.1;
}
}
}
.content {
// border: 1px solid red;
padding: 18rpx 32rpx 48rpx;
.con_up {
display: flex;
justify-content: space-between;
align-items: center;
.up_l {
display: flex;
// justify-content: space-between;
align-items: center;
.l_img {
width: 80rpx;
height: 80rpx;
border-radius: 40rpx 40rpx 40rpx 40rpx;
}
.l_nickname {
margin-left: 16rpx;
.nickname {
font-size: 28rpx;
font-weight: bold;
color: #111111;
}
.time {
margin-top: 2rpx;
font-size: 24rpx;
font-weight: 400;
color: #999999;
}
}
}
}
.con_txt {
font-size: 32rpx;
font-weight: 400;
color: #222222;
margin-top: 32rpx;
letter-spacing: 2rpx; // 字符间距
}
.con_img {
margin-top: 24rpx;
border-radius: 8rpx 8rpx 8rpx 8rpx;
image {
width: 686rpx;
height: 386rpx;
}
}
.con_foot {
margin-top: 24rpx;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 24rpx;
font-weight: 400;
color: #666666;
.foot_r {
display: flex;
justify-content: space-between;
align-items: center;
.r_num {
margin-left: 8rpx;
}
}
}
.r_txt1 {
padding: 12rpx 34rpx;
font-size: 30rpx;
font-weight: 400;
color: #999999;
border: 2rpx solid #999999;
border-radius: 44rpx;
margin-right: 20rpx;
}
}
.up_r {
padding: 12rpx 34rpx;
border: 2rpx solid #13AFA8;
border-radius: 44rpx;
display: flex;
align-items: center;
.r_img {
width: 29rpx;
height: 29rpx;
}
.r_txt {
font-size: 30rpx;
font-weight: 400;
color: #13AFA8;
margin-left: 16rpx;
}
}
.image-list-box {
// border: 1px solid red;
width: 100%;
margin-top: 24rpx;
.image-one {
width: 686rpx;
// height: 686rpx;
border-radius: 8rpx;
}
.image-two {
width: 338rpx;
height: 338rpx;
box-shadow: 0rpx 0rpx 4rpx 0rpx rgba(0, 0, 0, 0.09);
border-radius: 8rpx;
margin-bottom: 8rpx;
}
.image-three {
// border: 1px solid red;
width: 224rpx;
height: 224rpx;
box-shadow: 0rpx 0rpx 4rpx 0rpx rgba(0, 0, 0, 0.09);
border-radius: 8rpx;
margin-bottom: 2rpx;
}
}
.bottom_up {
// border: 1px solid red;
border-top: 1rpx solid #EDEDED;
width: 100%;
position: fixed;
bottom: 0;
padding: 30rpx 32rpx 58rpx;
// display: flex;
// justify-content: space-between;
// align-items: center;
background-color: #fff;
z-index: 999;
.bottom_r {
// border: 1px solid red;
width: 350rpx;
display: flex;
justify-content: space-around;
.r_img_txt {
display: flex;
align-items: center;
.txt {
font-size: 28rpx;
font-weight: 400;
color: #666666;
margin-top: 10rpx;
margin-left: 8rpx;
// overflow: hidden; // 超出的文本部分隐藏起来
// text-overflow: ellipsis; // 超出部分使用省略号(…)
white-space: nowrap; // 不换行
// display: -webkit-box; // 使用弹性盒子模型,并支持多行文本
// -webkit-box-orient: vertical; // 弹性盒子内部的子元素在垂直方向上排列
// -webkit-line-clamp: 2; // 最多显示两行文本,超出部分使用省略号表示。
}
}
}
}
.bottom_l {
// border: 1px solid red;
height: 72rpx;
background: #f2f0f4;
border-radius: 50rpx;
// display: flex;
// align-items: center;
// justify-content: center;
font-size: 32rpx;
width: 326rpx;
color: #999;
line-height: 72rpx;
padding-left: 16rpx;
// width: 100%;
// height: 90rpx;
}
.bottom_send {
// border: 1px solid red;
display: flex;
// flex-direction: row;
align-items: center;
justify-content: space-around;
flex: 1;
}
.bottom {
width: 100%;
position: fixed;
bottom: 0;
}
.administration {
margin-right: 170rpx;
}
.posi_l {
// border: 1px solid red;
display: flex;
// justify-content: space-between;
align-items: center;
.l_txt {
font-size: 28rpx;
font-weight: bold;
color: #111111;
margin: 0 10rpx;
}
.img_name {
display: flex;
align-items: center;
margin-left: 16rpx;
.nav_name {
width: 140rpx;
font-size: 28rpx;
font-weight: 400;
color: #111111;
margin-left: 16rpx;
overflow: hidden; // 超出的文本部分隐藏起来
text-overflow: ellipsis; // 超出部分使用省略号(…)
white-space: nowrap; // 不换行
// display: -webkit-box; // 使用弹性盒子模型,并支持多行文本
// -webkit-box-orient: vertical; // 弹性盒子内部的子元素在垂直方向上排列
// -webkit-line-clamp: 2; // 最多显示两行文本,超出部分使用省略号表示。
}
}
}
.r_txt1 {
padding: 10rpx 35rpx;
font-size: 30rpx;
font-weight: 400;
color: #999999;
border: 2rpx solid #999999;
border-radius: 44rpx;
margin-right: 20rpx;
}
.up_r {
padding: 10rpx 30rpx;
border: 2rpx solid #13AFA8;
border-radius: 44rpx;
display: flex;
align-items: center;
.r_img {
width: 29rpx;
height: 29rpx;
}
.r_txt {
font-size: 30rpx;
font-weight: 400;
color: #13AFA8;
margin-left: 16rpx;
}
}
.posi_r {
display: flex;
align-items: center;
justify-content: space-between;
.r_img {
width: 48rpx;
height: 48rpx;
}
}
.nav {
border-bottom: 1rpx solid #E6E6E6;
}
.detail {
position: relative;
}
.img_view {
position: absolute;
top: 52%;
left: 50%;
transform: translate(-50%, -50%);
}
.img_view_weixin {
position: absolute;
top: 42%;
left: 50%;
transform: translate(-50%, -50%);
}
</style>