no message
This commit is contained in:
@@ -4,327 +4,335 @@
|
||||
<Meta name="keyword" :content="seo['keyword']" />
|
||||
<Meta name="description" :content="seo['description']" />
|
||||
</Head>
|
||||
<Header></Header>
|
||||
<!-- scrollTopValue -->
|
||||
<!-- <div @click="router.push(`/index.html`)">1111</div> -->
|
||||
<!-- <PageHeade></PageHeade> -->
|
||||
<div>
|
||||
<!-- <PageHead></PageHead> -->
|
||||
<TopHead></TopHead>
|
||||
|
||||
<!-- <div class="content flexflex" :style="{ position: scrollTopValue > 88 ? 'fixed' : '' }"> -->
|
||||
<div class="content flexflex">
|
||||
<div class="left" @scroll="handleListScroll">
|
||||
<div class="school-box flexcenter">
|
||||
<a class="school-box-icon" :href="info['school']?.['url']" target="_blank"><img class="school-icon" v-if="info['school']?.['image']" :src="info['school']?.['image']" /></a>
|
||||
<a class="school-name" :href="info['school']?.['url']" target="_blank">{{ info["school"]?.["name"] }}</a>
|
||||
<a class="school-en-name" :href="info['school']?.['url']" target="_blank">{{ info["school"]?.["enname"] }}</a>
|
||||
</div>
|
||||
<!-- <div class="content flexflex" :style="{ position: scrollTopValue > 88 ? 'fixed' : '' }"> -->
|
||||
<div class="content flexflex">
|
||||
<div class="left" @scroll="handleListScroll">
|
||||
<div class="school-box flexcenter">
|
||||
<a class="school-box-icon" :href="info['school']?.['url']" target="_blank"><img class="school-icon" v-if="info['school']?.['image']" :src="info['school']?.['image']" /></a>
|
||||
<a class="school-name" :href="info['school']?.['url']" target="_blank">{{ info["school"]?.["name"] }}</a>
|
||||
<a class="school-en-name" :href="info['school']?.['url']" target="_blank">{{ info["school"]?.["enname"] }}</a>
|
||||
</div>
|
||||
|
||||
<div class="mj-total flexacenter">
|
||||
该校共有
|
||||
<div class="value">{{ relatedcount }}</div>
|
||||
个面经
|
||||
<div class="mj-total flexacenter">
|
||||
该校共有
|
||||
<div class="value">{{ relatedcount }}</div>
|
||||
个面经
|
||||
</div>
|
||||
<div class="mj-list">
|
||||
<a class="mj-item flexflex" :class="{ pitch: pitchIndex == index }" v-for="(item, index) in relatedlist" :key="index" @click.stop.prevent="handleItem(item['uniqid'])" :href="`./details/${item['uniqid']}`">
|
||||
<img class="item-bj" src="@/assets/img/item-bj.svg" />
|
||||
<div class="mj-header flexacenter">
|
||||
<img class="mj-avatar" :src="item['avatar']" />
|
||||
<div class="user-name">{{ item["username"] || "匿名用户" }}</div>
|
||||
<div class="time">{{ handleDate(item["releasetime"]) }}发布</div>
|
||||
</div>
|
||||
|
||||
<div class="info-list flexflex">
|
||||
<div class="info-item flexacenter" v-if="item['profession']">
|
||||
<div class="info-name">专业</div>
|
||||
<div class="info-value flex1 ellipsis">{{ item["profession"] }}</div>
|
||||
</div>
|
||||
<div class="info-item flexacenter" v-if="item['project']">
|
||||
<div class="info-name">项目</div>
|
||||
<div class="info-value flex1 ellipsis">{{ item["project"] }}</div>
|
||||
</div>
|
||||
<div class="info-item flexacenter" v-if="item['interviewtime']">
|
||||
<div class="info-name">时间</div>
|
||||
<div class="info-value flex1 ellipsis">{{ item["interviewtime"] }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mj-list">
|
||||
<a class="mj-item flexflex" :class="{ pitch: pitchIndex == index }" v-for="(item, index) in relatedlist" :key="index" @click.stop.prevent="handleItem(item['uniqid'])" :href="`./details/${item['uniqid']}`">
|
||||
<img class="item-bj" src="@/assets/img/item-bj.svg" />
|
||||
<div class="right flex1" @scroll="handleCommentsScroll" v-loading="detailsLoading">
|
||||
<!-- <div class="right-loading"></div> -->
|
||||
<div class="header">
|
||||
<div class="title">{{ info["subject"] }}</div>
|
||||
<div class="mj-header flexacenter">
|
||||
<img class="mj-avatar" :src="item['avatar']" />
|
||||
<div class="user-name">{{ item["username"] || "匿名用户" }}</div>
|
||||
<div class="time">{{ handleDate(item["releasetime"]) }}发布</div>
|
||||
</div>
|
||||
|
||||
<div class="info-list flexflex">
|
||||
<div class="info-item flexacenter" v-if="item['profession']">
|
||||
<div class="info-name">专业</div>
|
||||
<div class="info-value flex1 ellipsis">{{ item["profession"] }}</div>
|
||||
</div>
|
||||
<div class="info-item flexacenter" v-if="item['project']">
|
||||
<div class="info-name">项目</div>
|
||||
<div class="info-value flex1 ellipsis">{{ item["project"] }}</div>
|
||||
</div>
|
||||
<div class="info-item flexacenter" v-if="item['interviewtime']">
|
||||
<div class="info-name">时间</div>
|
||||
<div class="info-value flex1 ellipsis">{{ item["interviewtime"] }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right flex1" @scroll="handleCommentsScroll" v-loading="detailsLoading">
|
||||
<!-- <div class="right-loading"></div> -->
|
||||
<div class="header">
|
||||
<div class="title">{{ info["subject"] }}</div>
|
||||
<div class="mj-header flexacenter">
|
||||
<div class="mj-header-left flexacenter">
|
||||
<el-popover placement="bottom-start" :width="140" trigger="click" popper-class="avatar-box-popper" :show-arrow="false">
|
||||
<template #reference>
|
||||
<img class="mj-avatar" :src="info['avatar']" />
|
||||
</template>
|
||||
|
||||
<div class="avatar-box flexflex" v-if="info['uin']">
|
||||
<!-- <div class="avatar-box flexflex"> -->
|
||||
<a class="avatar-item flexcenter" target="_blank" @click.prevent="sendMessage(info['uin'])">
|
||||
<img class="avatar-icon" src="@/assets/img/send-messages-icon.png" />
|
||||
发送信息
|
||||
</a>
|
||||
<a class="avatar-item flexcenter" target="_blank" @click.prevent="TAHomePage(info['uin'])">
|
||||
<img class="avatar-icon" src="@/assets/img/homepage-icon.png" />
|
||||
TA的主页
|
||||
</a>
|
||||
</div>
|
||||
</el-popover>
|
||||
|
||||
<div class="user-name">{{ info["nickname"] || "匿名用户" }}</div>
|
||||
<div class="time">{{ handleDate(info["releasetime"]) }}发布</div>
|
||||
</div>
|
||||
<div class="mj-header-right flexacenter" v-if="isBrowser">
|
||||
<img class="eye-icon" src="@/assets/img/eye-icon.svg" />
|
||||
{{ info["views"] }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="details-box">
|
||||
<div class="details-item">
|
||||
<div class="details-top">申请信息</div>
|
||||
<div class="details-list">
|
||||
<div class="details-list-item flexacenter" v-if="info['school']">
|
||||
<div class="details-name">学校</div>
|
||||
<a class="details-value" target="_blank" :href="info['school']?.['url']">{{ info["school"]?.name }}</a>
|
||||
</div>
|
||||
<div class="details-list-item flexacenter" v-if="info['profession']">
|
||||
<div class="details-name">专业</div>
|
||||
<div class="details-value">{{ info["profession"] }}</div>
|
||||
</div>
|
||||
<div class="details-list-item flexacenter" v-if="info['project']">
|
||||
<div class="details-name">项目</div>
|
||||
<div class="details-value">{{ info["project"] }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="details-item">
|
||||
<div class="details-top">面试时间</div>
|
||||
<div class="details-list">
|
||||
<div class="details-list-item flexacenter">
|
||||
<div class="details-name">日期</div>
|
||||
<div class="details-value date" v-if="info['interviewtime']">{{ timestampToDate(info["interviewtime"]) }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="details-item">
|
||||
<div class="details-top">面试过程及内容</div>
|
||||
<div class="details-list">
|
||||
<div class="details-list-item flexacenter">
|
||||
<div class="details-value describe" :class="{ 'unlock-unlock': !isdisplay }" v-if="info['message']">
|
||||
<!-- {{ info["message"] }} -->
|
||||
<div v-html="info['message']"></div>
|
||||
<div class="unlock-mask flexflex" style="width: 693px;">
|
||||
<div class="">作者设置了浏览限制</div>
|
||||
<div class="flexacenter">
|
||||
<div class="emphasis">“回复/点赞”</div>
|
||||
后即可查看完整内容
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 讨论 -->
|
||||
<div class="comment-box">
|
||||
<div class="comment-title flexacenter">
|
||||
讨论
|
||||
<div class="value">{{ commentComments || "" }}</div>
|
||||
</div>
|
||||
<div class="post-comment flexacenter">
|
||||
<textarea class="post-input flex1" placeholder="说说你的想法或疑问…" v-model="commentInputTop"></textarea>
|
||||
<div class="post-ok flexcenter" @click="submitAnswerComments()">发送</div>
|
||||
</div>
|
||||
|
||||
<template v-if="isEmptyState">
|
||||
<div class="empty-box">
|
||||
<Empty hint="说说你的观点吧"></Empty>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<div class="comment-list">
|
||||
<div class="comment-item flexflex" v-for="(item, index) in commentList" :key="item.id">
|
||||
<div class="mj-header-left flexacenter">
|
||||
<el-popover placement="bottom-start" :width="140" trigger="click" popper-class="avatar-box-popper" :show-arrow="false">
|
||||
<template #reference>
|
||||
<img class="comment-avatar" :src="item['avatar']" />
|
||||
<img class="mj-avatar" :src="info['avatar']" />
|
||||
</template>
|
||||
|
||||
<div class="avatar-box flexflex" v-if="item['uin']">
|
||||
<a class="avatar-item flexcenter" target="_blank" @click.prevent="sendMessage(item['uin'])">
|
||||
<div class="avatar-box flexflex" v-if="info['uin']">
|
||||
<!-- <div class="avatar-box flexflex"> -->
|
||||
<a class="avatar-item flexcenter" target="_blank" @click.prevent="sendMessage(info['uin'])">
|
||||
<img class="avatar-icon" src="@/assets/img/send-messages-icon.png" />
|
||||
发送信息
|
||||
</a>
|
||||
<a class="avatar-item flexcenter" target="_blank" @click.prevent="TAHomePage(item['uin'])">
|
||||
<a class="avatar-item flexcenter" target="_blank" @click.prevent="TAHomePage(info['uin'])">
|
||||
<img class="avatar-icon" src="@/assets/img/homepage-icon.png" />
|
||||
TA的主页
|
||||
</a>
|
||||
</div>
|
||||
</el-popover>
|
||||
<div class="comment-content flex1">
|
||||
<div class="comment-header flexacenter">
|
||||
<div class="comment-header-left flexacenter">
|
||||
<div class="comments-username">{{ item["nickname"] }}</div>
|
||||
<div class="comments-time">{{ handleDate(item["timestamp"]) }}</div>
|
||||
<div class="comments-identity" v-if="item['isauthor']">作者</div>
|
||||
</div>
|
||||
<div class="comment-header-right flexacenter">
|
||||
<div class="menu-box flexacenter">
|
||||
<img class="menu-icon" src="@/assets/img/menu-icon-gray.svg" />
|
||||
<div class="report-box flexcenter" @click="report(item['token'])">举报</div>
|
||||
</div>
|
||||
<img class="comment-icon" @click="openAnswerCommentsChild(index)" src="@/assets/img/comment-icon-gray.svg" />
|
||||
<div class="flexacenter like-box" @click="commentLike(index)">
|
||||
<img class="like-icon" v-if="item['islike'] == 1" src="@/assets/img/like-icon-colours.png" />
|
||||
<img class="like-icon" v-else src="@/assets/img/like-icon-gray.png" />
|
||||
<div class="like-quantity">{{ item["likenum"] || 0 }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comment-text">{{ item["content"] }}</div>
|
||||
<!-- <div class="comments-input-box flexacenter" v-if="item['childState']"> -->
|
||||
<div class="comments-input-box flexacenter" v-if="item['childState']">
|
||||
<div class="comments-input flexflex">
|
||||
<textarea class="flex1" placeholder="回复" v-model="commentInput"></textarea>
|
||||
<div class="comments-btn flexcenter" @click="submitAnswerComments(index)">发送</div>
|
||||
</div>
|
||||
<img class="forkfork" @click="closeAnswerCommentsChild(index)" src="@/assets/img/cross-icon.png" />
|
||||
</div>
|
||||
<!-- 子评论 -->
|
||||
<div class="child-comments" v-if="item['child'].length > 0">
|
||||
<div class="comment-item flexflex" v-for="(ite, i) in item['child']" :key="ite.id">
|
||||
<!-- <img class="comment-avatar" :src="ite['avatar']" /> -->
|
||||
<el-popover placement="bottom-start" :width="140" trigger="click" popper-class="avatar-box-popper" :show-arrow="false">
|
||||
<template #reference>
|
||||
<img class="comment-avatar" :src="ite['avatar']" />
|
||||
</template>
|
||||
|
||||
<div class="avatar-box flexflex" v-if="item['uin']">
|
||||
<a class="av atar-item flexcenter" target="_blank" @click.prevent="sendMessage(ite['uin'])">
|
||||
<img class="avatar-icon" src="@/assets/img/send-messages-icon.png" />
|
||||
发送信息
|
||||
</a>
|
||||
<a class="avatar-item flexcenter" target="_blank" @click.prevent="TAHomePage(ite['uin'])">
|
||||
<img class="avatar-icon" src="@/assets/img/homepage-icon.png" />
|
||||
TA的主页
|
||||
</a>
|
||||
</div>
|
||||
</el-popover>
|
||||
<div class="comment-content flex1">
|
||||
<div class="comment-header flexacenter">
|
||||
<div class="comment-header-left flexacenter">
|
||||
<div class="comments-username">{{ ite["nickname"] }}</div>
|
||||
<div class="comments-time">{{ handleDate(ite["timestamp"]) }}</div>
|
||||
<div class="comments-identity" v-if="ite['isauthor']">作者</div>
|
||||
</div>
|
||||
<div class="comment-header-right flexacenter">
|
||||
<div class="menu-box flexacenter">
|
||||
<img class="menu-icon" src="@/assets/img/menu-icon-gray.svg" />
|
||||
<div class="report-box flexcenter" @click="report(ite['token'])">举报</div>
|
||||
</div>
|
||||
<img class="comment-icon" @click="openAnswerCommentsChild(index, i)" src="@/assets/img/comment-icon-gray.svg" />
|
||||
<div class="flexacenter like-box" @click="commentLike(index, i)">
|
||||
<img class="like-icon" v-if="ite['islike'] == 1" src="@/assets/img/like-icon-colours.png" />
|
||||
<img class="like-icon" v-else src="@/assets/img/like-icon-gray.png" />
|
||||
<div class="like-quantity">{{ ite["likenum"] || 0 }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comment-text">
|
||||
<div class="comments-reply" v-if="ite?.reply?.nickname">@{{ ite?.reply?.nickname }}</div>
|
||||
{{ ite["content"] }}
|
||||
</div>
|
||||
<div class="comments-input-box flexacenter" v-if="ite['childState']">
|
||||
<div class="comments-input flexflex">
|
||||
<textarea class="flex1" placeholder="回复" v-model="commentInput"></textarea>
|
||||
<div class="comments-btn flexcenter" @click="submitAnswerComments(index, i)">发送</div>
|
||||
</div>
|
||||
<img class="forkfork" @click="closeAnswerCommentsChild(index, i)" src="@/assets/img/cross-icon.png" />
|
||||
</div>
|
||||
<div class="user-name">{{ info["nickname"] || "匿名用户" }}</div>
|
||||
<div class="time">{{ handleDate(info["releasetime"]) }}发布</div>
|
||||
</div>
|
||||
<div class="mj-header-right flexacenter" v-if="isBrowser">
|
||||
<img class="eye-icon" src="@/assets/img/eye-icon.svg" />
|
||||
{{ info["views"] }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="details-box">
|
||||
<div class="details-item">
|
||||
<div class="details-top">申请信息</div>
|
||||
<div class="details-list">
|
||||
<div class="details-list-item flexacenter" v-if="info['school']">
|
||||
<div class="details-name">学校</div>
|
||||
<a class="details-value" target="_blank" :href="info['school']?.['url']">{{ info["school"]?.name }}</a>
|
||||
</div>
|
||||
<div class="details-list-item flexacenter" v-if="info['profession']">
|
||||
<div class="details-name">专业</div>
|
||||
<div class="details-value">{{ info["profession"] }}</div>
|
||||
</div>
|
||||
<div class="details-list-item flexacenter" v-if="info['project']">
|
||||
<div class="details-name">项目</div>
|
||||
<div class="details-value">{{ info["project"] }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="details-item">
|
||||
<div class="details-top">面试时间</div>
|
||||
<div class="details-list">
|
||||
<div class="details-list-item flexacenter">
|
||||
<div class="details-name">日期</div>
|
||||
<div class="details-value date" v-if="info['interviewtime']">{{ timestampToDate(info["interviewtime"]) }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="details-item">
|
||||
<div class="details-top">面试过程及内容</div>
|
||||
<div class="details-list">
|
||||
<div class="details-list-item flexacenter">
|
||||
<div class="details-value describe" :class="{ 'unlock-unlock': !isdisplay }" v-if="info['message']">
|
||||
<!-- {{ info["message"] }} -->
|
||||
<div v-html="info['message']"></div>
|
||||
<div class="unlock-mask flexflex" style="width: 693px;">
|
||||
<div class="">作者设置了浏览限制</div>
|
||||
<div class="flexacenter">
|
||||
<div class="emphasis">“回复/点赞”</div>
|
||||
后即可查看完整内容
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 还有几个 -->
|
||||
<div class="comments-also flexacenter" v-if="item['childnum'] > item['child'].length" @click="alsoCommentsData(index)">
|
||||
<div class="">还有{{ item["childnum"] - item["child"].length }}条回复</div>
|
||||
<img class="also-icon" src="@/assets/img/arrow-circular-gray.png" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comment-end" v-if="commentPage == 0 && commentList.length != 0">· End ·</div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="floor-area flexacenter" v-if="floorAreaState">
|
||||
<div class="floor-content flexacenter">
|
||||
<div class="floor-left flexacenter">
|
||||
<div class="item flexacenter" @click="handleLike">
|
||||
<img class="icon" v-if="islike == 1" src="@/assets/img/like-icon-colours.png" />
|
||||
<img class="icon" v-else src="@/assets/img/like-icon.png" />
|
||||
{{ info["likenum"] || "" }}
|
||||
<!-- 讨论 -->
|
||||
<div class="comment-box">
|
||||
<div class="comment-title flexacenter">
|
||||
讨论
|
||||
<div class="value">{{ commentComments || "" }}</div>
|
||||
</div>
|
||||
<div class="item flexacenter"><img class="icon" src="@/assets/img/comment-icon.png" />{{ commentComments }}</div>
|
||||
|
||||
<div class="item flexacenter" @click="handleCollect()">
|
||||
<img class="icon" v-if="iscollection == 1" src="@/assets/img/collect-icon-colours.svg" />
|
||||
<img class="icon" v-else src="@/assets/img/collect-icon.png" />
|
||||
{{ info["favnum"] || "收藏" }}
|
||||
<div class="post-comment flexacenter">
|
||||
<textarea class="post-input flex1" placeholder="说说你的想法或疑问…" v-model="commentInputTop"></textarea>
|
||||
<div class="post-ok flexcenter" @click="submitAnswerComments()">发送</div>
|
||||
</div>
|
||||
|
||||
<el-popover placement="bottom" width="628px" trigger="click" popper-style="padding: 0;border-radius: 10px;" v-model:visible="transmitBoxState">
|
||||
<template #reference>
|
||||
<div class="item flexacenter"><img class="icon" src="@/assets/img/transmit-icon.png" />转发</div>
|
||||
</template>
|
||||
<template v-if="isEmptyState">
|
||||
<div class="empty-box">
|
||||
<Empty hint="说说你的观点吧"></Empty>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<div class="comment-list">
|
||||
<div class="comment-item flexflex" v-for="(item, index) in commentList" :key="item.id">
|
||||
<el-popover placement="bottom-start" :width="140" trigger="click" popper-class="avatar-box-popper" :show-arrow="false">
|
||||
<template #reference>
|
||||
<img class="comment-avatar" :src="item['avatar']" />
|
||||
</template>
|
||||
|
||||
<div class="transmit-box flexflex">
|
||||
<img class="cross-icon" @click="transmitBoxState = false" src="@/assets/img/cross-icon.png" />
|
||||
<div class="transmit-left transmit-web">
|
||||
<div class="transmit-title">转发网页版</div>
|
||||
<div class="transmit-content">
|
||||
<div class="transmit-headline">{{ info["subject"] }}</div>
|
||||
<div class="transmit-url">{{ getFullUrl() }}</div>
|
||||
</div>
|
||||
<div class="transmit-web-btn flexcenter" @click="copyText(`${info['subject']} + ${getFullUrl()}`)">复制链接</div>
|
||||
</div>
|
||||
<div class="transmit-right transmit-mini">
|
||||
<div class="transmit-title">转发小程序版</div>
|
||||
<div class="transmit-content flexcenter">
|
||||
<img class="transmit-mini-img" :src="qrcode" />
|
||||
<div class="flexcenter">
|
||||
<img class="give-sweep" src="@/assets/img/give-sweep.png" />
|
||||
扫码转发该问答
|
||||
<div class="avatar-box flexflex" v-if="item['uin']">
|
||||
<a class="avatar-item flexcenter" target="_blank" @click.prevent="sendMessage(item['uin'])">
|
||||
<img class="avatar-icon" src="@/assets/img/send-messages-icon.png" />
|
||||
发送信息
|
||||
</a>
|
||||
<a class="avatar-item flexcenter" target="_blank" @click.prevent="TAHomePage(item['uin'])">
|
||||
<img class="avatar-icon" src="@/assets/img/homepage-icon.png" />
|
||||
TA的主页
|
||||
</a>
|
||||
</div>
|
||||
</el-popover>
|
||||
<div class="comment-content flex1">
|
||||
<div class="comment-header flexacenter">
|
||||
<div class="comment-header-left flexacenter">
|
||||
<div class="comments-username">{{ item["nickname"] }}</div>
|
||||
<div class="comments-time">{{ handleDate(item["timestamp"]) }}</div>
|
||||
<div class="comments-identity" v-if="item['isauthor']">作者</div>
|
||||
</div>
|
||||
<div class="comment-header-right flexacenter">
|
||||
<div class="menu-box flexacenter">
|
||||
<img class="menu-icon" src="@/assets/img/menu-icon-gray.svg" />
|
||||
<div class="report-box flexcenter" @click="report(item['token'])">举报</div>
|
||||
</div>
|
||||
<img class="comment-icon" @click="openAnswerCommentsChild(index)" src="@/assets/img/comment-icon-gray.svg" />
|
||||
<div class="flexacenter like-box" @click="commentLike(index)">
|
||||
<img class="like-icon" v-if="item['islike'] == 1" src="@/assets/img/like-icon-colours.png" />
|
||||
<img class="like-icon" v-else src="@/assets/img/like-icon-gray.png" />
|
||||
<div class="like-quantity">{{ item["likenum"] || 0 }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comment-text">{{ item["content"] }}</div>
|
||||
<!-- <div class="comments-input-box flexacenter" v-if="item['childState']"> -->
|
||||
<div class="comments-input-box flexacenter" v-if="item['childState']">
|
||||
<div class="comments-input flexflex">
|
||||
<textarea class="flex1" placeholder="回复" v-model="commentInput"></textarea>
|
||||
<div class="comments-btn flexcenter" @click="submitAnswerComments(index)">发送</div>
|
||||
</div>
|
||||
<img class="forkfork" @click="closeAnswerCommentsChild(index)" src="@/assets/img/cross-icon.png" />
|
||||
</div>
|
||||
<!-- 子评论 -->
|
||||
<div class="child-comments" v-if="item['child'].length > 0">
|
||||
<div class="comment-item flexflex" v-for="(ite, i) in item['child']" :key="ite.id">
|
||||
<!-- <img class="comment-avatar" :src="ite['avatar']" /> -->
|
||||
<el-popover placement="bottom-start" :width="140" trigger="click" popper-class="avatar-box-popper" :show-arrow="false">
|
||||
<template #reference>
|
||||
<img class="comment-avatar" :src="ite['avatar']" />
|
||||
</template>
|
||||
|
||||
<div class="avatar-box flexflex" v-if="item['uin']">
|
||||
<a class="av atar-item flexcenter" target="_blank" @click.prevent="sendMessage(ite['uin'])">
|
||||
<img class="avatar-icon" src="@/assets/img/send-messages-icon.png" />
|
||||
发送信息
|
||||
</a>
|
||||
<a class="avatar-item flexcenter" target="_blank" @click.prevent="TAHomePage(ite['uin'])">
|
||||
<img class="avatar-icon" src="@/assets/img/homepage-icon.png" />
|
||||
TA的主页
|
||||
</a>
|
||||
</div>
|
||||
</el-popover>
|
||||
<div class="comment-content flex1">
|
||||
<div class="comment-header flexacenter">
|
||||
<div class="comment-header-left flexacenter">
|
||||
<div class="comments-username">{{ ite["nickname"] }}</div>
|
||||
<div class="comments-time">{{ handleDate(ite["timestamp"]) }}</div>
|
||||
<div class="comments-identity" v-if="ite['isauthor']">作者</div>
|
||||
</div>
|
||||
<div class="comment-header-right flexacenter">
|
||||
<div class="menu-box flexacenter">
|
||||
<img class="menu-icon" src="@/assets/img/menu-icon-gray.svg" />
|
||||
<div class="report-box flexcenter" @click="report(ite['token'])">举报</div>
|
||||
</div>
|
||||
<img class="comment-icon" @click="openAnswerCommentsChild(index, i)" src="@/assets/img/comment-icon-gray.svg" />
|
||||
<div class="flexacenter like-box" @click="commentLike(index, i)">
|
||||
<img class="like-icon" v-if="ite['islike'] == 1" src="@/assets/img/like-icon-colours.png" />
|
||||
<img class="like-icon" v-else src="@/assets/img/like-icon-gray.png" />
|
||||
<div class="like-quantity">{{ ite["likenum"] || 0 }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="comment-text">
|
||||
<div class="comments-reply" v-if="ite?.reply?.nickname">@{{ ite?.reply?.nickname }}</div>
|
||||
{{ ite["content"] }}
|
||||
</div>
|
||||
<div class="comments-input-box flexacenter" v-if="ite['childState']">
|
||||
<div class="comments-input flexflex">
|
||||
<textarea class="flex1" placeholder="回复" v-model="commentInput"></textarea>
|
||||
<div class="comments-btn flexcenter" @click="submitAnswerComments(index, i)">发送</div>
|
||||
</div>
|
||||
<img class="forkfork" @click="closeAnswerCommentsChild(index, i)" src="@/assets/img/cross-icon.png" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 还有几个 -->
|
||||
<div class="comments-also flexacenter" v-if="item['childnum'] > item['child'].length" @click="alsoCommentsData(index)">
|
||||
<div class="">还有{{ item["childnum"] - item["child"].length }}条回复</div>
|
||||
<img class="also-icon" src="@/assets/img/arrow-circular-gray.png" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-popover>
|
||||
<div class="comment-end" v-if="commentPage == 0 && commentList.length != 0">· End ·</div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="floor-right flexacenter" @mouseenter="handleFloorRight(true)" @mouseleave="handleFloorRight(false)">
|
||||
手机查看该投票
|
||||
<img class="arrows-icon" src="@/assets/img/arrows-icon.png" />
|
||||
<el-popover placement="bottom" width="160px" trigger="hover" v-model:visible="floorRightState" popper-style="padding: 24px;border-radius: 18px;">
|
||||
<template #reference>
|
||||
<div class="QR-code-ball flexcenter">
|
||||
<img class="" src="@/assets/img/QR-code-icon.svg" />
|
||||
<div class="floor-area flexacenter" v-if="floorAreaState">
|
||||
<div class="floor-content flexacenter">
|
||||
<div class="floor-left flexacenter">
|
||||
<div class="item flexacenter" @click="handleLike">
|
||||
<img class="icon" v-if="islike == 1" src="@/assets/img/like-icon-colours.png" />
|
||||
<img class="icon" v-else src="@/assets/img/like-icon.png" />
|
||||
{{ info["likenum"] || "" }}
|
||||
</div>
|
||||
<div class="item flexacenter"><img class="icon" src="@/assets/img/comment-icon.png" />{{ commentComments }}</div>
|
||||
|
||||
<div class="item flexacenter" @click="handleCollect()">
|
||||
<img class="icon" v-if="iscollection == 1" src="@/assets/img/collect-icon-colours.svg" />
|
||||
<img class="icon" v-else src="@/assets/img/collect-icon.png" />
|
||||
{{ info["favnum"] || "收藏" }}
|
||||
</div>
|
||||
|
||||
<el-popover placement="bottom" width="628px" trigger="click" popper-style="padding: 0;border-radius: 10px;" v-model:visible="transmitBoxState">
|
||||
<template #reference>
|
||||
<div class="item flexacenter"><img class="icon" src="@/assets/img/transmit-icon.png" />转发</div>
|
||||
</template>
|
||||
|
||||
<div class="transmit-box flexflex">
|
||||
<img class="cross-icon" @click="transmitBoxState = false" src="@/assets/img/cross-icon.png" />
|
||||
<div class="transmit-left transmit-web">
|
||||
<div class="transmit-title">转发网页版</div>
|
||||
<div class="transmit-content">
|
||||
<div class="transmit-headline">{{ info["subject"] }}</div>
|
||||
<div class="transmit-url">{{ getFullUrl() }}</div>
|
||||
</div>
|
||||
<div class="transmit-web-btn flexcenter" @click="copyText(`${info['subject']} + ${getFullUrl()}`)">复制链接</div>
|
||||
</div>
|
||||
<div class="transmit-right transmit-mini">
|
||||
<div class="transmit-title">转发小程序版</div>
|
||||
<div class="transmit-content flexcenter">
|
||||
<img class="transmit-mini-img" :src="qrcode" />
|
||||
<div class="flexcenter">
|
||||
<img class="give-sweep" src="@/assets/img/give-sweep.png" />
|
||||
扫码转发该问答
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<img class="examine-code" :src="qrcode" />
|
||||
</el-popover>
|
||||
</el-popover>
|
||||
</div>
|
||||
|
||||
<div class="floor-right flexacenter" @mouseenter="handleFloorRight(true)" @mouseleave="handleFloorRight(false)">
|
||||
手机查看该投票
|
||||
<img class="arrows-icon" src="@/assets/img/arrows-icon.png" />
|
||||
<el-popover placement="bottom" width="160px" trigger="hover" v-model:visible="floorRightState" popper-style="padding: 24px;border-radius: 18px;">
|
||||
<template #reference>
|
||||
<div class="QR-code-ball flexcenter">
|
||||
<img class="" src="@/assets/img/QR-code-icon.svg" />
|
||||
</div>
|
||||
</template>
|
||||
<img class="examine-code" :src="qrcode" />
|
||||
</el-popover>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<Report v-if="reportAlertShow" :reportToken="reportToken"></Report>
|
||||
</div>
|
||||
<Report v-if="reportAlertShow" :reportToken="reportToken"></Report>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ElMessage } from "element-plus"
|
||||
const route = useRoute()
|
||||
let uniqid = route.params.id
|
||||
let isNeedLogin = inject("isNeedLogin")
|
||||
const goLogin = inject("goLogin")
|
||||
|
||||
useHead({ script: [{ src: "https://app.gter.net/bottom?tpl=header&menukey=mj" }] })
|
||||
|
||||
onMounted(() => {
|
||||
// window.addEventListener("scroll", handleScroll)
|
||||
@@ -511,7 +519,6 @@ const getCommentListHttp = () => {
|
||||
token,
|
||||
})
|
||||
.then(res => {
|
||||
// console.log("res", res)
|
||||
if (res.code != 200) return
|
||||
|
||||
let data = res.data
|
||||
@@ -546,10 +553,6 @@ const alsoCommentsData = (index, ind) => {
|
||||
if (res.code != 200) return
|
||||
let data = res.data
|
||||
let childData = targetCommentItem.child.concat(data.data)
|
||||
// console.log(childData['id'], "childData")
|
||||
// childData.forEach(element => {
|
||||
// console.log(element["id"])
|
||||
// })
|
||||
|
||||
const filteredData = childData.filter((obj, index, self) => {
|
||||
// 检查当前对象在数组中的第一个索引是否与当前索引相等
|
||||
@@ -609,14 +612,12 @@ const handleScroll = () => {
|
||||
return
|
||||
const scrollTop = document.documentElement.scrollTop || document.body.scrollTop
|
||||
|
||||
console.log("scrollTop", scrollTop)
|
||||
scrollTopValue.value = scrollTop
|
||||
|
||||
return
|
||||
|
||||
const scrollHeight = document.documentElement.scrollHeight
|
||||
const clientHeight = document.documentElement.clientHeight
|
||||
// console.log(scrollTop + clientHeight >= scrollHeight - 40)
|
||||
// 列表下 滑动到底部 获取新数据
|
||||
// if (scrollTop + clientHeight >= scrollHeight - 40) getCommentListHttp()
|
||||
}
|
||||
@@ -644,6 +645,11 @@ let commentInput = ref("")
|
||||
|
||||
// 提交回答-评论
|
||||
const submitAnswerComments = (index, i) => {
|
||||
if (isNeedLogin.value) {
|
||||
goLogin()
|
||||
return
|
||||
}
|
||||
|
||||
const targetCommentList = [...commentList.value]
|
||||
let content = ""
|
||||
let parentid = null
|
||||
@@ -659,13 +665,15 @@ const submitAnswerComments = (index, i) => {
|
||||
token,
|
||||
parentid,
|
||||
}).then(res => {
|
||||
if (res.code != 200) return
|
||||
if (res.code != 200) {
|
||||
ElMessage.error(res.message)
|
||||
return
|
||||
}
|
||||
let data = res.data
|
||||
|
||||
isdisplay.value = true
|
||||
|
||||
if (i != null) {
|
||||
// console.log("111", targetCommentList[index]["child"][i])
|
||||
|
||||
let targetData = {
|
||||
id: data["commentid"],
|
||||
@@ -679,8 +687,6 @@ const submitAnswerComments = (index, i) => {
|
||||
...data,
|
||||
}
|
||||
|
||||
// console.log("targetData", targetData)
|
||||
|
||||
targetCommentList[index]["child"].unshift(targetData)
|
||||
targetCommentList[index]["childnum"]++
|
||||
} else {
|
||||
@@ -769,6 +775,10 @@ const handleLike = () => {
|
||||
ElMessage.error("不可取消点赞")
|
||||
return
|
||||
}
|
||||
if (isNeedLogin.value) {
|
||||
goLogin()
|
||||
return
|
||||
}
|
||||
operateLikeHttp({ token }).then(res => {
|
||||
if (res.code != 200) return
|
||||
let data = res.data
|
||||
@@ -776,26 +786,28 @@ const handleLike = () => {
|
||||
islike.value = data["status"]
|
||||
|
||||
isdisplay.value = true
|
||||
ElMessage({
|
||||
message: res.message,
|
||||
type: "success",
|
||||
})
|
||||
ElMessage.success(res.message)
|
||||
})
|
||||
}
|
||||
|
||||
// 点击 收藏
|
||||
const handleCollect = () => {
|
||||
if (isNeedLogin.value) {
|
||||
goLogin()
|
||||
return
|
||||
}
|
||||
|
||||
operateCollectHttp({ token }).then(res => {
|
||||
if (res.code != 200) return
|
||||
if (res.code != 200) {
|
||||
ElMessage.error(res["message"])
|
||||
return
|
||||
}
|
||||
let data = res.data
|
||||
|
||||
info.value["favnum"] = data["count"]
|
||||
iscollection.value = data["status"]
|
||||
|
||||
ElMessage({
|
||||
message: res["message"],
|
||||
type: "success",
|
||||
})
|
||||
ElMessage.success(res["message"])
|
||||
})
|
||||
}
|
||||
|
||||
@@ -805,6 +817,7 @@ const router = useRouter()
|
||||
const handleItem = uni => {
|
||||
// return
|
||||
router.push(`/details/${uni}`)
|
||||
// goToURL(`/details/${uni}`)
|
||||
// return
|
||||
|
||||
uniqid = uni
|
||||
@@ -843,6 +856,11 @@ let reportToken = ref("")
|
||||
|
||||
// 点击打开举报
|
||||
const report = token => {
|
||||
if (isNeedLogin.value) {
|
||||
goLogin()
|
||||
return
|
||||
}
|
||||
|
||||
reportToken.value = token
|
||||
reportAlertShow.value = true
|
||||
}
|
||||
@@ -893,7 +911,6 @@ const isBrowser = computed(() => {
|
||||
|
||||
// 点击发送信息
|
||||
const sendMessage = uin => {
|
||||
// console.log("uin", uin)
|
||||
redirectToExternalWebsite(`https://bbs.gter.net/home.php?mod=space&showmsg=1&uid=${uin}`)
|
||||
}
|
||||
|
||||
@@ -944,6 +961,8 @@ const handleListScroll = e => {
|
||||
padding-top: 30px;
|
||||
height: calc(100vh - 70px);
|
||||
overflow: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.school-box {
|
||||
flex-direction: column;
|
||||
@@ -990,6 +1009,8 @@ const handleListScroll = e => {
|
||||
|
||||
.mj-list {
|
||||
padding: 0 25px 15px 30px;
|
||||
flex: 1;
|
||||
overflow: auto;
|
||||
|
||||
.mj-item {
|
||||
flex-direction: column;
|
||||
@@ -1082,8 +1103,9 @@ const handleListScroll = e => {
|
||||
}
|
||||
|
||||
.right {
|
||||
height: calc(100vh - 70px);
|
||||
height: calc(100vh - 80px);
|
||||
overflow: auto;
|
||||
padding: 5px 0;
|
||||
|
||||
&::-webkit-scrollbar {
|
||||
width: 0 !important;
|
||||
|
@@ -2,7 +2,7 @@
|
||||
<Head>
|
||||
<Title>寄托面经</Title>
|
||||
</Head>
|
||||
<Header></Header>
|
||||
<TopHead></TopHead>
|
||||
<div class="search-result flexacenter" v-if="keyword">
|
||||
<div class="keyword flexacenter" @click="clearKeyword">{{ keyword }} <img class="keyword-icon" src="@/assets/img/cross-circle-icon.png" /></div>
|
||||
<div class="halving-line"></div>
|
||||
@@ -21,6 +21,9 @@
|
||||
|
||||
<script setup>
|
||||
import { ElMessage } from "element-plus"
|
||||
let isNeedLogin = inject("isNeedLogin")
|
||||
const goLogin = inject("goLogin")
|
||||
useHead({ script: [{ src: "https://app.gter.net/bottom?tpl=header&menukey=mj" }] })
|
||||
|
||||
const gridContainer = ref(null)
|
||||
let masonryInstance = null
|
||||
@@ -31,8 +34,6 @@ keyword.value = route.query["keyword"]
|
||||
|
||||
watchEffect(() => {
|
||||
if (keyword.value != route.query["keyword"]) {
|
||||
// keyword.value = route.query["keyword"]
|
||||
// console.log("keyword", keyword.value)
|
||||
list.value = []
|
||||
page.value = 1
|
||||
keyword.value = route.query["keyword"]
|
||||
@@ -52,6 +53,8 @@ onMounted(async () => {
|
||||
// masonryInstance.layout()
|
||||
|
||||
window.addEventListener("scroll", handleScroll)
|
||||
|
||||
getList()
|
||||
})
|
||||
|
||||
const handleScroll = () => {
|
||||
@@ -83,7 +86,6 @@ const getList = () => {
|
||||
})
|
||||
return
|
||||
}
|
||||
// console.log("res", res.code)
|
||||
let data = res.data
|
||||
// list.value = data.data
|
||||
|
||||
@@ -95,32 +97,33 @@ const getList = () => {
|
||||
count.value = data["count"]
|
||||
|
||||
nextTick(() => {
|
||||
masonryInstance.reloadItems()
|
||||
masonryInstance.layout()
|
||||
if (masonryInstance) {
|
||||
masonryInstance.reloadItems()
|
||||
masonryInstance.layout()
|
||||
}
|
||||
})
|
||||
})
|
||||
.finally(() => (loading = false))
|
||||
}
|
||||
|
||||
getList()
|
||||
|
||||
const handleLike = token => {
|
||||
if (isNeedLogin.value) {
|
||||
goLogin()
|
||||
return
|
||||
}
|
||||
|
||||
operateLikeHttp({ token }).then(res => {
|
||||
if (res.code != 200) return
|
||||
let data = res.data
|
||||
|
||||
list.value.forEach(element => {
|
||||
console.log(element, "element")
|
||||
if (element["token"] == token) {
|
||||
element["islike"] = data["status"]
|
||||
element["likenum"] = data["count"]
|
||||
}
|
||||
})
|
||||
|
||||
ElMessage({
|
||||
message: res.message,
|
||||
type: "success",
|
||||
})
|
||||
ElMessage.success(res.message)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -131,9 +134,8 @@ onUnmounted(() => {
|
||||
const router = useRouter()
|
||||
|
||||
// 清除搜索
|
||||
const clearKeyword = () => {
|
||||
router.push(`/index.html`)
|
||||
}
|
||||
// const clearKeyword = () => router.push(`/index.html`)
|
||||
const clearKeyword = () => goToURL(`/index.html`)
|
||||
|
||||
try {
|
||||
if (process.server) {
|
||||
@@ -182,7 +184,7 @@ try {
|
||||
}
|
||||
}
|
||||
.content {
|
||||
min-height: 540px;
|
||||
min-height: calc(100vh - 250px);
|
||||
width: 1200px;
|
||||
// height: 1000px;
|
||||
margin: 0 auto 93px;
|
||||
|
@@ -2,4 +2,4 @@
|
||||
<script setup>
|
||||
const router = useRouter()
|
||||
router.replace("/index.html")
|
||||
</script>
|
||||
</script>
|
||||
|
@@ -110,15 +110,6 @@ import { ElMessage } from "element-plus"
|
||||
import zhCn from "element-plus/dist/locale/zh-cn.mjs"
|
||||
const router = useRouter()
|
||||
|
||||
const pickerOptions = {
|
||||
disabledDate(time) {
|
||||
const today = new Date()
|
||||
const date = new Date(time)
|
||||
console.log(date > today)
|
||||
return date > today
|
||||
},
|
||||
}
|
||||
|
||||
const setDisabled = time => {
|
||||
return time.getTime() > Date.now() // 可选历史天、可选当前天、不可选未来天
|
||||
}
|
||||
@@ -126,6 +117,8 @@ const setDisabled = time => {
|
||||
onMounted(() => {
|
||||
getInit()
|
||||
})
|
||||
//
|
||||
// const
|
||||
let token = ""
|
||||
const getInit = () => {
|
||||
publishInitHttp().then(res => {
|
||||
@@ -138,10 +131,7 @@ const getInit = () => {
|
||||
let interviewtime = data["info"]["interviewtime"] || 0
|
||||
if (interviewtime) data["info"]["interviewtime"] = handleDate(interviewtime)
|
||||
|
||||
console.log(interviewtime, "interviewtime")
|
||||
info.value = { ...data["info"] }
|
||||
|
||||
console.log(token)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -232,7 +222,6 @@ const cutVisible = () => {
|
||||
|
||||
// 提交发布
|
||||
const submit = (status = 1) => {
|
||||
console.log(info.value, "status", status)
|
||||
publishSubmitHttp({ info: info.value, token, status }).then(res => {
|
||||
if (res.code != 200) {
|
||||
ElMessage.error(res.message)
|
||||
@@ -240,24 +229,21 @@ const submit = (status = 1) => {
|
||||
}
|
||||
|
||||
const data = res.data
|
||||
console.log("data", data)
|
||||
ElMessage.success(res.message)
|
||||
|
||||
router.push(`/details/${data["uniqid"]}`)
|
||||
// router.push(`/details/${data["uniqid"]}`)
|
||||
if (status == 0) goToURL(`/index.html`, false)
|
||||
else goToURL(`/details/${data["uniqid"]}`, false)
|
||||
})
|
||||
}
|
||||
|
||||
// 放弃保存 跳跃上一页或者首页
|
||||
const abandonSaving = () => {
|
||||
// console.log("router.currentRoute.value.meta.previousPage", router.currentRoute.value.meta.previousPage)
|
||||
if (router.currentRoute.value.meta.previousPage) router.go(-1)
|
||||
else router.push("./index.html") // 跳转到首页
|
||||
else goToURL("./index.html") // 跳转到首页
|
||||
// else router.push("./index.html") // 跳转到首页
|
||||
}
|
||||
|
||||
// 保存并退出
|
||||
const saveAndExit = () => {
|
||||
console.log("saveAndExit")
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
|
Reference in New Issue
Block a user