1.评价,问答
parent
fa55764a43
commit
30b2cf552e
|
|
@ -13,7 +13,7 @@
|
|||
</view>
|
||||
<view v-if="(item.images || null) != null && item.images.length > 0" class="images oh margin-top-lg">
|
||||
<block v-for="(iv, ix) in item.images" :key="ix">
|
||||
<image class="br radius" @tap="comment_images_show_event" :data-index="index" :data-ix="ix" :src="iv" mode="aspectFit"></image>
|
||||
<image class="br radius margin-right-sm" @tap="comment_images_show_event" :data-index="index" :data-ix="ix" :src="iv" mode="aspectFit"></image>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
|
|
@ -48,7 +48,17 @@
|
|||
|
||||
created: function () {},
|
||||
|
||||
methods: {},
|
||||
methods: {
|
||||
// 评价图片预览
|
||||
comment_images_show_event(e) {
|
||||
var index = e.currentTarget.dataset.index;
|
||||
var ix = e.currentTarget.dataset.ix;
|
||||
uni.previewImage({
|
||||
current: this.propData[index]["images"][ix],
|
||||
urls: this.propData[index]["images"],
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
|
|
@ -0,0 +1,610 @@
|
|||
<template>
|
||||
<view>
|
||||
<view v-if="(data || null) != null && (data_base || null) != null" class="padding-bottom-main">
|
||||
<view>
|
||||
<!-- 点赞、评论、分享 -->
|
||||
<view v-if="propType == 'detail'" class="tr ask-comments-bottom-container spacing-mt cr-grey padding-horizontal-main">
|
||||
<view v-if="(data_base.is_blog_comments_show || 0) == 1" class="item dis-inline-block" :data-value="'/pages/plugins/blog/comments/comments?id=' + data.id" @tap="url_event">
|
||||
<iconfont name="icon-bowenxiangqing-huifu" size="28rpx" class="pr top-sm margin-right-xs"></iconfont>
|
||||
<text class="text-size-xs">评论({{ data.comments_count }})</text>
|
||||
</view>
|
||||
<view v-if="(data_base.is_blog_give_thumbs || 0) == 1" :class="'item dis-inline-block cr-' + ((data.is_give_thumbs || 0) == 1 ? 'main' : 'grey')" :data-blogid="data.id" @tap="give_thumbs_event">
|
||||
<iconfont :name="(data.is_give_thumbs || 0) == 1 ? 'icon-bowenxiangqing-dianzan-xuaz' : 'icon-bowenxiangqing-dianzan'" size="28rpx" class="pr top-sm margin-right-xs"></iconfont>
|
||||
<text class="va-m text-size-xs">点赞({{ data.give_thumbs_count }})</text>
|
||||
</view>
|
||||
<view class="item dis-inline-block" @tap="popup_share_event">
|
||||
<iconfont name="icon-bowenxiangqing-fenxiang" size="28rpx" class="pr top-sm margin-right-xs"></iconfont>
|
||||
<text class="text-size-xs">分享</text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 评论回复表单 -->
|
||||
<view v-if="(data_base.is_blog_comments_add || 0) == 1 && !input_comments_modal_status" class="padding-top-xxxl padding-bottom-xxl padding-horizontal-main blog-comments-reply-container flex-row jc-sb spacing-mb">
|
||||
<image :src="avatar" mode="aspectFill" class="user-avatar fl circle"></image>
|
||||
<view class="right-base flex-1 flex-width">
|
||||
<view class="bg-white border-radius-main padding-main">
|
||||
<textarea placeholder="期待您的发言..." placeholder-class="cr-grey" class="wh-auto" :value="input_comments_value" :maxlength="input_comments_length_max" @input="comments_input_event" @blur="comments_input_event"></textarea>
|
||||
<view class="oh flex-row jc-sb align-e">
|
||||
<image :src="common_static_url + 'emoji-icon.png'" mode="aspectFill" class="emoji-icon va-m" @tap="emoji_event"></image>
|
||||
<view class="flex-row align-e">
|
||||
<text class="text-size-xs cr-grey-d margin-right-sm">剩余{{ input_comments_length_value }}字</text>
|
||||
<button type="default" size="mini" class="comment-btn cr-white border-radius-sm text-size-md va-m" :class="input_comments_value.length > 0 ? 'bg-main br-main ' : 'br-grey-d bg-grey-d'" @tap="comments_event">评论</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 评论回复内容 -->
|
||||
<view v-if="(data_base.is_blog_comments_show || 0) == 1 && (data.comments_list || null) != null && data.comments_list.length > 0" class="blog-comments-list margin-bottom-xxxl padding-left-main">
|
||||
<block v-for="(item, index) in data.comments_list" :key="index">
|
||||
<view class="item oh flex-row jc-sb">
|
||||
<image :src="item.user.avatar" mode="aspectFill" class="user-avatar circle fl"></image>
|
||||
<view class="right-content padding-bottom-main margin-bottom-main br-b-e flex-1 flex-width">
|
||||
<view class="comments-base oh">
|
||||
<span class="username fw-b">{{ item.user.user_name_view }}</span>
|
||||
<span class="cr-grey-9 margin-left-main">{{ item.add_time }}</span>
|
||||
</view>
|
||||
<view class="margin-top-sm comments-content">{{ item.content }}</view>
|
||||
<view class="blog-comments-right-content-operate margin-top-main flex-row jc-e align-c text-size-xs cr-grey-9">
|
||||
<view v-if="(data_base.is_blog_comments_show || 0) == 1" class="item dis-inline-block" :data-index="index" :data-username="item.user.user_name_view" :data-blogcommentsid="item.id" @tap="modal_open_event">
|
||||
<iconfont name="icon-bowenxiangqing-huifu" size="28rpx" class="pr top-md margin-right-xs"></iconfont>
|
||||
<text class="va-m">回复({{ item.comments_count }})</text>
|
||||
</view>
|
||||
<view
|
||||
v-if="(data_base.is_blog_give_thumbs || 0) == 1"
|
||||
:class="'item dis-inline-block margin-left-xxxl padding-left-sm cr-' + ((item.is_give_thumbs || 0) == 1 ? 'main' : '')"
|
||||
data-type="1"
|
||||
:data-index="index"
|
||||
:data-blogid="item.blog_id"
|
||||
:data-blogcommentsid="item.id"
|
||||
@tap="give_thumbs_event"
|
||||
>
|
||||
<iconfont :name="(item.is_give_thumbs || 0) == 1 ? 'icon-bowenxiangqing-dianzan-xuaz' : 'icon-bowenxiangqing-dianzan'" size="28rpx" class="pr top-md margin-right-xs"></iconfont>
|
||||
<text class="va-m">点赞({{ item.give_thumbs_count }})</text>
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="(item.reply_comments_list || null) != null && item.reply_comments_list.length > 0" class="reply-blog-comments-list">
|
||||
<block v-for="(comments, index2) in item.reply_comments_list" :key="index2">
|
||||
<view class="bg-grey-e">
|
||||
<view class="item padding-main oh flex-row jc-sb">
|
||||
<image :src="comments.user.avatar" mode="aspectFill" class="user-avatar circle fl"></image>
|
||||
<view class="right-content flex-1 flex-width">
|
||||
<view class="comments-reply-base oh">
|
||||
<span class="username fw-b">{{ comments.user.user_name_view }}</span>
|
||||
<span class="cr-grey-9 margin-left-main">{{ comments.add_time }}</span>
|
||||
</view>
|
||||
<view v-if="(comments.reply_comments_text || null) != null" class="margin-top-sm reply-content">{{ comments.reply_comments_text }}</view>
|
||||
<view class="margin-top-sm">{{ comments.content }}</view>
|
||||
<view class="blog-comments-right-content-operate flex-row jc-e align-c text-size-xs cr-grey-9 padding-0">
|
||||
<view
|
||||
v-if="(data_base.is_blog_comments_show || 0) == 1"
|
||||
class="item dis-inline-block"
|
||||
:data-index="index"
|
||||
:data-username="comments.user.user_name_view"
|
||||
:data-blogcommentsid="comments.blog_comments_id"
|
||||
:data-replycommentsid="comments.id"
|
||||
@tap="modal_open_event"
|
||||
>
|
||||
<iconfont name="icon-bowenxiangqing-huifu" size="28rpx" class="pr top-md margin-right-xs"></iconfont>
|
||||
<text class="va-m">回复({{ comments.comments_count }})</text>
|
||||
</view>
|
||||
<view
|
||||
v-if="(data_base.is_blog_give_thumbs || 0) == 1"
|
||||
:class="'item dis-inline-block margin-left-xxxl padding-left-sm cr-' + ((comments.is_give_thumbs || 0) == 1 ? 'main' : '')"
|
||||
data-type="2"
|
||||
:data-index="index"
|
||||
:data-indexs="index2"
|
||||
:data-blogid="comments.blog_id"
|
||||
:data-blogcommentsid="comments.id"
|
||||
:data-replycommentsid="comments.blog_comments_id"
|
||||
@tap="give_thumbs_event"
|
||||
>
|
||||
<iconfont :name="(comments.is_give_thumbs || 0) == 1 ? 'icon-bowenxiangqing-dianzan-xuaz' : 'icon-bowenxiangqing-dianzan'" size="28rpx" class="pr top-md margin-right-xs"></iconfont>
|
||||
<text class="va-m">点赞({{ comments.give_thumbs_count }})</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<view v-if="(item.comments_count || 0) > 0 && (item.is_comments_list_submit == undefined || item.is_comments_list_submit == 1)" class="margin-top-lg text-size-xs">
|
||||
<text :data-index="index" :data-blogid="item.blog_id" :data-blogcommentsid="item.id" @tap="comments_list_reply_event">
|
||||
<text v-if="item.is_comments_list_submit == undefined" class="cr-grey">查看全部{{ item.comments_count }}条回复</text>
|
||||
<text v-else class="cr-grey">查看更多回复</text>
|
||||
<iconfont name="icon-mendian-jiantou2" size="24rpx" class="margin-left-xs pr top-xs"></iconfont>
|
||||
</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
<block v-if="((data_base.blog_detail_comments_more_page_number || 0) == 0 && (data.comments_count || 0) > 20) || ((data_base.blog_detail_comments_more_page_number || 0) > 0 && data.comments_count > data_base.blog_detail_comments_more_page_number)">
|
||||
<view v-if="propType == 'detail'" class="margin-top-xxl tc padding-bottom-xxl">
|
||||
<text :data-value="'/pages/plugins/blog/comments/comments?id=' + data.id" @tap="url_event">
|
||||
<text class="cr-grey">查看全部{{ data.comments_count }}条评论</text>
|
||||
<iconfont name="icon-qiandao-jiantou2" size="24rpx" class="margin-left-xs pr top-xs"></iconfont>
|
||||
</text>
|
||||
</view>
|
||||
<view v-if="propType == 'comments' && (data.is_comments_list_submit == undefined || data.is_comments_list_submit == 1)" class="margin-top-xxl tc padding-bottom-xxl">
|
||||
<text :data-blogid="data.id" @tap="comments_list_reply_event">
|
||||
<text class="cr-grey">查看更多评论</text>
|
||||
<iconfont name="icon-mendian-jiantou2" size="24rpx" class="margin-left-xs pr top-xs"></iconfont>
|
||||
</text>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 回复弹窗 -->
|
||||
<view v-if="input_comments_modal_status" class="blog-comments-modal pf">
|
||||
<view class="blog-comments-modal-content bg-white border-radius-main pr">
|
||||
<view class="tc margin-bottom-lg">
|
||||
<text>回复 @{{ input_comments_modal_username }}</text>
|
||||
<view class="close pa">
|
||||
<view @tap.stop="modal_close_event">
|
||||
<uni-icons type="clear" size="46rpx" color="#999"></uni-icons>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<textarea placeholder="期待您的发言..." placeholder-class="cr-grey" class="wh-auto br padding-main" :value="input_comments_value" :maxlength="input_comments_length_max" @input="comments_input_event" @blur="comments_input_event"></textarea>
|
||||
<view class="margin-top-lg oh">
|
||||
<image :src="common_static_url + 'emoji-icon.png'" mode="aspectFill" class="emoji-icon va-m" @tap="emoji_event"></image>
|
||||
<view class="fr">
|
||||
<text class="va-m text-size-xs cr-grey margin-right-lg">剩余{{ input_comments_length_value }}字</text>
|
||||
<button type="default" size="mini" class="comment-btn cr-white border-radius-sm text-size-xs va-m" :class="input_comments_value.length > 0 ? 'bg-main br-main ' : 'br-grey-d bg-grey-d'" @tap="comments_event">评论</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 表情弹窗 -->
|
||||
<component-emoji-popup ref="emoji" v-on:choiceConfirmEvent="emoji_choice_confirm_event"></component-emoji-popup>
|
||||
|
||||
<!-- 分享弹窗 -->
|
||||
<component-share-popup ref="share"></component-share-popup>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
const app = getApp();
|
||||
var common_static_url = app.globalData.get_static_url('common');
|
||||
import componentPopup from '../../components/popup/popup';
|
||||
import componentSharePopup from '../../components/share-popup/share-popup';
|
||||
import componentEmojiPopup from '../../components/emoji-popup/emoji-popup';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
common_static_url: common_static_url,
|
||||
avatar: app.globalData.data.default_user_head_src,
|
||||
user: null,
|
||||
data_base: null,
|
||||
data: null,
|
||||
emoji_list: [],
|
||||
input_comments_value: '',
|
||||
input_comments_cursor: 0,
|
||||
input_comments_length_value: 500,
|
||||
input_comments_length_max: 500,
|
||||
input_comments_modal_status: false,
|
||||
input_comments_modal_index: 0,
|
||||
input_comments_modal_username: '',
|
||||
input_comments_modal_blog_comments_id: 0,
|
||||
input_comments_modal_reply_comments_id: 0,
|
||||
};
|
||||
},
|
||||
props: {
|
||||
propType: {
|
||||
type: String,
|
||||
default: 'detail',
|
||||
},
|
||||
propData: {
|
||||
type: [Object, null],
|
||||
default: null,
|
||||
},
|
||||
propDataBase: {
|
||||
type: [Object, null],
|
||||
default: null,
|
||||
},
|
||||
propEmojiList: {
|
||||
type: [Array, null],
|
||||
default: [],
|
||||
},
|
||||
},
|
||||
components: {
|
||||
componentPopup,
|
||||
componentSharePopup,
|
||||
componentEmojiPopup,
|
||||
},
|
||||
|
||||
// 页面被展示
|
||||
created: function (e) {
|
||||
var avatar = app.globalData.data.default_user_head_src;
|
||||
var user = app.globalData.get_user_cache_info() || null;
|
||||
this.setData({
|
||||
user: user,
|
||||
avatar: user == null ? avatar : user.avatar || avatar,
|
||||
data: this.propData,
|
||||
data_base: this.propDataBase,
|
||||
emoji_list: this.propEmojiList,
|
||||
});
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 分享开启弹层
|
||||
popup_share_event(e) {
|
||||
if ((this.$refs.share || null) != null) {
|
||||
this.$refs.share.init();
|
||||
}
|
||||
},
|
||||
|
||||
// 评论弹窗关闭
|
||||
modal_close_event(e) {
|
||||
this.setData({
|
||||
input_comments_modal_status: false,
|
||||
input_comments_modal_index: 0,
|
||||
input_comments_modal_username: '',
|
||||
input_comments_modal_blog_comments_id: 0,
|
||||
input_comments_modal_reply_comments_id: 0,
|
||||
input_comments_value: '',
|
||||
});
|
||||
},
|
||||
|
||||
// 评论弹窗开启
|
||||
modal_open_event(e) {
|
||||
if (!app.globalData.is_single_page_check()) {
|
||||
return false;
|
||||
}
|
||||
var user = app.globalData.get_user_info();
|
||||
if (user != false) {
|
||||
// 用户未绑定用户则转到登录页面
|
||||
if (app.globalData.user_is_need_login(user)) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/login/login?event_callback=favor_event',
|
||||
});
|
||||
return false;
|
||||
} else {
|
||||
var index = parseInt(e.currentTarget.dataset.index || 0);
|
||||
var username = e.currentTarget.dataset.username;
|
||||
var blog_comments_id = e.currentTarget.dataset.blogcommentsid || 0;
|
||||
var reply_comments_id = e.currentTarget.dataset.replycommentsid || 0;
|
||||
this.setData({
|
||||
input_comments_modal_status: true,
|
||||
input_comments_value: '',
|
||||
input_comments_modal_index: index,
|
||||
input_comments_modal_username: username,
|
||||
input_comments_modal_blog_comments_id: blog_comments_id,
|
||||
input_comments_modal_reply_comments_id: reply_comments_id,
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 表情选择事件
|
||||
emoji_event() {
|
||||
if (this.input_comments_length_value == 0) {
|
||||
app.globalData.showToast('已超过最大输入字符限制');
|
||||
return false;
|
||||
}
|
||||
if ((this.$refs.emoji || null) != null) {
|
||||
this.$refs.emoji.init({ emoji_list: this.emoji_list });
|
||||
}
|
||||
},
|
||||
|
||||
// 评论输入和失去焦点事件
|
||||
comments_input_event(e) {
|
||||
var value = e.detail.value.trim();
|
||||
var length = this.input_comments_length_max - value.length;
|
||||
this.setData({
|
||||
input_comments_cursor: e.detail.cursor || 0,
|
||||
input_comments_value: value,
|
||||
input_comments_length_value: length <= 0 ? 0 : length,
|
||||
});
|
||||
},
|
||||
|
||||
// 表情选择确认事件
|
||||
emoji_choice_confirm_event(emoji) {
|
||||
var value = this.input_comments_value;
|
||||
var cursor = parseInt(this.input_comments_cursor || 0);
|
||||
if (value != '') {
|
||||
if (cursor == 0) {
|
||||
value = emoji + value;
|
||||
} else {
|
||||
var first = value.substr(0, cursor);
|
||||
var last = value.substr(cursor, value.length);
|
||||
value = first + emoji + last;
|
||||
}
|
||||
} else {
|
||||
value = emoji;
|
||||
}
|
||||
var length = this.input_comments_length_max - value.length;
|
||||
this.setData({
|
||||
input_comments_value: value,
|
||||
input_comments_length_value: length <= 0 ? 0 : length,
|
||||
});
|
||||
},
|
||||
|
||||
// 获取评论列表
|
||||
comments_list_reply_event(e) {
|
||||
var temp_data = this.data;
|
||||
var page = 1;
|
||||
var index = parseInt(e.currentTarget.dataset.index || 0);
|
||||
var blog_id = e.currentTarget.dataset.blogid;
|
||||
var blog_comments_id = e.currentTarget.dataset.blogcommentsid || 0;
|
||||
if (blog_comments_id == 0) {
|
||||
if ((temp_data['page'] || null) == null) {
|
||||
temp_data['page'] = 1;
|
||||
} else {
|
||||
temp_data['page'] += 1;
|
||||
}
|
||||
page = temp_data['page'];
|
||||
} else {
|
||||
if ((temp_data['comments_list'][index]['page'] || null) == null) {
|
||||
temp_data['comments_list'][index]['page'] = 1;
|
||||
} else {
|
||||
temp_data['comments_list'][index]['page'] += 1;
|
||||
}
|
||||
page = temp_data['comments_list'][index]['page'];
|
||||
}
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
});
|
||||
uni.request({
|
||||
url: app.globalData.get_request_url('commentsreplylist', 'index', 'blog'),
|
||||
method: 'POST',
|
||||
data: {
|
||||
blog_id: blog_id,
|
||||
blog_comments_id: blog_comments_id,
|
||||
page: page,
|
||||
},
|
||||
dataType: 'json',
|
||||
success: (res) => {
|
||||
uni.hideLoading();
|
||||
if (res.data.code == 0) {
|
||||
if (blog_comments_id == 0) {
|
||||
var temp_list = temp_data['comments_list'] || [];
|
||||
} else {
|
||||
var temp_list = temp_data['comments_list'][index]['reply_comments_list'] || [];
|
||||
}
|
||||
var data = res.data.data.data;
|
||||
for (var i in data) {
|
||||
temp_list.push(data[i]);
|
||||
}
|
||||
if (blog_comments_id == 0) {
|
||||
temp_data['comments_list'] = temp_list;
|
||||
temp_data['is_comments_list_submit'] = res.data.data.page >= res.data.data.page_total ? 0 : 1;
|
||||
} else {
|
||||
temp_data['comments_list'][index]['reply_comments_list'] = temp_list;
|
||||
temp_data['comments_list'][index]['is_comments_list_submit'] = res.data.data.page >= res.data.data.page_total ? 0 : 1;
|
||||
}
|
||||
this.setData({ data: temp_data });
|
||||
} else {
|
||||
app.globalData.showToast(res.data.msg);
|
||||
}
|
||||
},
|
||||
fail: () => {
|
||||
uni.hideLoading();
|
||||
app.globalData.showToast('服务器请求出错');
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
// 评论
|
||||
comments_event() {
|
||||
if (!app.globalData.is_single_page_check()) {
|
||||
return false;
|
||||
}
|
||||
var user = app.globalData.get_user_info();
|
||||
if (user != false) {
|
||||
// 用户未绑定用户则转到登录页面
|
||||
if (app.globalData.user_is_need_login(user)) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/login/login?event_callback=favor_event',
|
||||
});
|
||||
return false;
|
||||
} else {
|
||||
if (this.input_comments_value == '') {
|
||||
app.globalData.showToast('请填写评论内容');
|
||||
return false;
|
||||
}
|
||||
uni.showLoading({
|
||||
title: '提交中...',
|
||||
});
|
||||
uni.request({
|
||||
url: app.globalData.get_request_url('comments', 'index', 'blog'),
|
||||
method: 'POST',
|
||||
data: {
|
||||
blog_id: this.data.id,
|
||||
content: this.input_comments_value,
|
||||
blog_comments_id: this.input_comments_modal_blog_comments_id,
|
||||
reply_comments_id: this.input_comments_modal_reply_comments_id,
|
||||
},
|
||||
dataType: 'json',
|
||||
success: (res) => {
|
||||
uni.hideLoading();
|
||||
if (res.data.code == 0) {
|
||||
var temp_data = this.data;
|
||||
if ((this.input_comments_modal_blog_comments_id || 0) == 0) {
|
||||
var temp_list = temp_data.comments_list || [];
|
||||
temp_list.splice(0, 0, res.data.data);
|
||||
temp_data['comments_list'] = temp_list;
|
||||
temp_data['comments_count'] = parseInt(temp_data['comments_count']) + 1;
|
||||
} else {
|
||||
var index = this.input_comments_modal_index;
|
||||
var temp_list = temp_data.comments_list[index]['reply_comments_list'] || [];
|
||||
temp_list.splice(0, 0, res.data.data);
|
||||
if ((this.input_comments_modal_reply_comments_id || 0) != 0) {
|
||||
for (var i in temp_list) {
|
||||
if (temp_list[i]['id'] == this.input_comments_modal_reply_comments_id) {
|
||||
temp_list[i]['comments_count'] = parseInt(temp_list[i]['comments_count']) + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
temp_data.comments_list[index]['reply_comments_list'] = temp_list;
|
||||
temp_data.comments_list[index]['comments_count'] = parseInt(temp_data.comments_list[index]['comments_count']) + 1;
|
||||
}
|
||||
this.setData({
|
||||
data: temp_data,
|
||||
input_comments_value: '',
|
||||
input_comments_length_value: this.input_comments_length_max,
|
||||
input_comments_modal_status: false,
|
||||
});
|
||||
} else {
|
||||
app.globalData.showToast(res.data.msg);
|
||||
}
|
||||
},
|
||||
fail: () => {
|
||||
uni.hideLoading();
|
||||
app.globalData.showToast('服务器请求出错');
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// 点赞
|
||||
give_thumbs_event(e) {
|
||||
if (!app.globalData.is_single_page_check()) {
|
||||
return false;
|
||||
}
|
||||
var user = app.globalData.get_user_info();
|
||||
if (user != false) {
|
||||
// 用户未绑定用户则转到登录页面
|
||||
if (app.globalData.user_is_need_login(user)) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/login/login?event_callback=favor_event',
|
||||
});
|
||||
return false;
|
||||
} else {
|
||||
var type = parseInt(e.currentTarget.dataset.type || 0);
|
||||
var blog_id = e.currentTarget.dataset.blogid;
|
||||
var blog_comments_id = e.currentTarget.dataset.blogcommentsid || 0;
|
||||
var reply_comments_id = e.currentTarget.dataset.replycommentsid || 0;
|
||||
uni.request({
|
||||
url: app.globalData.get_request_url('givethumbs', 'index', 'blog'),
|
||||
method: 'POST',
|
||||
data: {
|
||||
blog_id: blog_id,
|
||||
blog_comments_id: blog_comments_id,
|
||||
reply_comments_id: reply_comments_id,
|
||||
},
|
||||
dataType: 'json',
|
||||
success: (res) => {
|
||||
if (res.data.code == 0) {
|
||||
var data = res.data.data;
|
||||
var temp_data = this.data;
|
||||
switch (type) {
|
||||
// 博客
|
||||
case 0:
|
||||
temp_data.is_give_thumbs = data.is_active;
|
||||
temp_data.give_thumbs_count = data.count;
|
||||
break;
|
||||
// 博客评论
|
||||
case 1:
|
||||
var index = parseInt(e.currentTarget.dataset.index || 0);
|
||||
temp_data['comments_list'][index]['is_give_thumbs'] = data.is_active;
|
||||
temp_data['comments_list'][index]['give_thumbs_count'] = data.count;
|
||||
break;
|
||||
// 博客评论回复
|
||||
case 2:
|
||||
var index = parseInt(e.currentTarget.dataset.index || 0);
|
||||
var indexs = parseInt(e.currentTarget.dataset.indexs || 0);
|
||||
temp_data['comments_list'][index]['reply_comments_list'][indexs]['is_give_thumbs'] = data.is_active;
|
||||
temp_data['comments_list'][index]['reply_comments_list'][indexs]['give_thumbs_count'] = data.count;
|
||||
break;
|
||||
}
|
||||
this.setData({ data: temp_data });
|
||||
} else {
|
||||
if (app.globalData.is_login_check(res.data)) {
|
||||
app.globalData.showToast(res.data.msg);
|
||||
}
|
||||
}
|
||||
},
|
||||
fail: () => {
|
||||
app.globalData.showToast('服务器请求出错');
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// url事件
|
||||
url_event(e) {
|
||||
app.globalData.url_event(e);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
/**
|
||||
* 聚合点赞、评论、分享
|
||||
*/
|
||||
.ask-comments-bottom-container .item:not(:last-child) {
|
||||
margin-right: 64rpx;
|
||||
}
|
||||
.blog-comments-reply-container .emoji-icon,
|
||||
.blog-comments-modal .emoji-icon {
|
||||
width: 40rpx;
|
||||
height: 40rpx !important;
|
||||
}
|
||||
.blog-comments-reply-container .user-avatar {
|
||||
width: 72rpx;
|
||||
height: 72rpx !important;
|
||||
border: 1px solid #eee;
|
||||
}
|
||||
.blog-comments-reply-container .right-base {
|
||||
padding-left: 16rpx;
|
||||
}
|
||||
.blog-comments-reply-container .right-base textarea {
|
||||
height: 120rpx;
|
||||
}
|
||||
.blog-comments-modal {
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: calc(100% - 80rpx);
|
||||
height: 100%;
|
||||
background: rgba(0, 0, 0, 0.6);
|
||||
padding: 40rpx;
|
||||
z-index: 10;
|
||||
}
|
||||
.blog-comments-modal-content {
|
||||
padding: 10px;
|
||||
border-radius: 10px;
|
||||
margin: 0 auto;
|
||||
margin-top: 30%;
|
||||
max-width: calc(800px - 180rpx);
|
||||
}
|
||||
.blog-comments-modal-content textarea {
|
||||
height: 200rpx;
|
||||
}
|
||||
.blog-comments-modal-content .close {
|
||||
top: 8rpx;
|
||||
right: 14rpx;
|
||||
}
|
||||
.comment-btn {
|
||||
height: 56rpx;
|
||||
line-height: 56rpx;
|
||||
padding: 0 24rpx;
|
||||
}
|
||||
|
||||
/**
|
||||
* 评论列表
|
||||
*/
|
||||
.blog-comments-list > .item .user-avatar {
|
||||
width: 50rpx;
|
||||
height: 50rpx;
|
||||
border: 1px solid #eee;
|
||||
}
|
||||
.blog-comments-list .comments-base,
|
||||
.blog-comments-list .comments-content {
|
||||
padding-left: 16rpx;
|
||||
padding-right: 20rpx;
|
||||
}
|
||||
.blog-comments-right-content-operate,
|
||||
.reply-blog-comments-list {
|
||||
padding-right: 20rpx;
|
||||
}
|
||||
.reply-blog-comments-list {
|
||||
margin-top: 28rpx;
|
||||
}
|
||||
.reply-blog-comments-list .right-content {
|
||||
padding-left: 16rpx;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
<view v-if="(data || null) != null && (data_base || null) != null" class="padding-bottom-main">
|
||||
<view>
|
||||
<!-- 点赞、评论、分享 -->
|
||||
<view v-if="propType == 'detail'" class="tr blog-comments-bottom-container spacing-mt cr-grey padding-horizontal-main">
|
||||
<view v-if="propType == 'detail'" class="tr blog-comments-bottom-container spacing-mt cr-grey">
|
||||
<view v-if="(data_base.is_blog_comments_show || 0) == 1" class="item dis-inline-block" :data-value="'/pages/plugins/blog/comments/comments?id=' + data.id" @tap="url_event">
|
||||
<iconfont name="icon-bowenxiangqing-huifu" size="28rpx" class="pr top-sm margin-right-xs"></iconfont>
|
||||
<text class="text-size-xs">评论({{ data.comments_count }})</text>
|
||||
|
|
@ -18,10 +18,10 @@
|
|||
</view>
|
||||
</view>
|
||||
<!-- 评论回复表单 -->
|
||||
<view v-if="(data_base.is_blog_comments_add || 0) == 1 && !input_comments_modal_status" class="padding-top-xxxl padding-bottom-xxl padding-horizontal-main blog-comments-reply-container flex-row jc-sb spacing-mb">
|
||||
<view v-if="(data_base.is_blog_comments_add || 0) == 1 && !input_comments_modal_status" class="padding-top-xxxl padding-bottom-xxl blog-comments-reply-container flex-row jc-sb spacing-mb">
|
||||
<image :src="avatar" mode="aspectFill" class="user-avatar fl circle"></image>
|
||||
<view class="right-base flex-1 flex-width">
|
||||
<view class="bg-white border-radius-main padding-main">
|
||||
<view class="comments border-radius-main padding-main">
|
||||
<textarea placeholder="期待您的发言..." placeholder-class="cr-grey" class="wh-auto" :value="input_comments_value" :maxlength="input_comments_length_max" @input="comments_input_event" @blur="comments_input_event"></textarea>
|
||||
<view class="oh flex-row jc-sb align-e">
|
||||
<image :src="common_static_url + 'emoji-icon.png'" mode="aspectFill" class="emoji-icon va-m" @tap="emoji_event"></image>
|
||||
|
|
@ -552,6 +552,9 @@
|
|||
.blog-comments-reply-container .right-base {
|
||||
padding-left: 16rpx;
|
||||
}
|
||||
.blog-comments-reply-container .right-base .comments {
|
||||
background-color: #f8f8f8;
|
||||
}
|
||||
.blog-comments-reply-container .right-base textarea {
|
||||
height: 120rpx;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1002,7 +1002,7 @@
|
|||
"path": "goods-list/goods-list",
|
||||
"style": {
|
||||
"enablePullDownRefresh": true,
|
||||
"navigationBarTitleText": "问答列表"
|
||||
"navigationBarTitleText": "问答专区"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -22,6 +22,13 @@
|
|||
</view>
|
||||
<view class="text-size-md padding-top-main">{{ detail_data.reply }}</view>
|
||||
</view>
|
||||
<view class="padding-main spacing-mt br-t-dashed">
|
||||
<view class="fw-b">共3个回答</view>
|
||||
<view class="spacing-mt">
|
||||
<!-- 评论内容 -->
|
||||
<component-comments :propData="data" :propDataBase="data_base" :propEmojiList="emoji_list"></component-comments>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 猜你喜欢 -->
|
||||
<view v-if="goods_list.length > 0" class="padding-horizontal-main padding-top-sm">
|
||||
|
|
@ -34,13 +41,13 @@
|
|||
</view>
|
||||
<view class="bottom-fixed ask-btn-content">
|
||||
<view class="flex-row jc-sa align-c text-size fw-b bottom-line-exclude">
|
||||
<navigator url="/pages/user-form/user-form" hover-class="none" class="flex-1 tc flex-col jc-c align-c">
|
||||
<navigator url="/pages/plugins/ask/user-form/user-form" hover-class="none" class="flex-1 tc flex-col jc-c align-c">
|
||||
<view class="divider-r-d wh-auto">
|
||||
<iconfont name="icon-wenda-wytw" size="30rpx" color="#333" class="margin-right-sm"></iconfont>
|
||||
我要提问
|
||||
</view>
|
||||
</navigator>
|
||||
<navigator url="/pages/user-question/user-question" hover-class="none" class="flex-1 tc flex-col jc-c align-c">
|
||||
<navigator url="/pages/plugins/ask/user-list/user-list" hover-class="none" class="flex-1 tc flex-col jc-c align-c">
|
||||
<view class="wh-auto">
|
||||
<iconfont name="icon-wenda-wdtw" size="32rpx" color="#333" class="margin-right-sm pr top-xs"></iconfont>
|
||||
我的提问
|
||||
|
|
@ -59,6 +66,7 @@
|
|||
import componentNoData from '@/components/no-data/no-data';
|
||||
import componentBottomLine from '@/components/bottom-line/bottom-line';
|
||||
import componentGoodsList from '@/components/goods-list/goods-list';
|
||||
import componentComments from '@/components/blog-comments/blog-comments';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
|
|
@ -87,6 +95,7 @@
|
|||
componentNoData,
|
||||
componentBottomLine,
|
||||
componentGoodsList,
|
||||
componentComments,
|
||||
},
|
||||
props: {},
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
|
||||
|
||||
.question .title{
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
line-height: 40rpx;
|
||||
background: #fd9525;
|
||||
border-radius: 4rpx;
|
||||
}
|
||||
.question .avatar,
|
||||
.ask .avatar {
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
border-radius: 4rpx;
|
||||
background: #F5F5F5;
|
||||
}
|
||||
.ask .title{
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
line-height: 40rpx;
|
||||
background: #99BB12;
|
||||
border-radius: 4rpx;
|
||||
}
|
||||
|
|
@ -1,8 +1,220 @@
|
|||
<template>
|
||||
<view class="padding-main">
|
||||
<block v-if="data_list.length > 0">
|
||||
<view v-for="(item, index) in data_list" :key="index" class="bg-white border-radius-main padding-main oh" :class="data_list.length > index + 1 ? 'spacing-b':''">
|
||||
<view class="title flex-row jc-sb align-c wh-auto">
|
||||
<view class="name flex-1 flex-width cr-base">{{ item.name }}的提问</view>
|
||||
<view class="date cr-grey-9">{{ item.add_time_date }}</view>
|
||||
</view>
|
||||
<view class="question flex-row spacing-mt">
|
||||
<view class="title cr-white tc margin-right-sm">问</view>
|
||||
<view class="flex-1 flex-width">
|
||||
<view class="fw-b">{{ item.content }}</view>
|
||||
<view v-if="(item.images || null) != null && item.images.length > 0" class="avatar spacing-mt-10 radius margin-right-sm oh">
|
||||
<image class="wh-auto" @tap="comment_images_show_event" :data-index="index" :data-ix="ix" :src="iv" mode="aspectFit"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<block v-if="item.is_reply == 1 || item.comments_count > 0 ">
|
||||
<view class="ask flex-row spacing-mt">
|
||||
<view class="title cr-white tc margin-right-sm">答</view>
|
||||
<view class="flex-1 flex-width">
|
||||
<view class="cr-base">
|
||||
<block v-if="item.reply">
|
||||
{{ item.reply }}
|
||||
</block>
|
||||
<block v-if="(item.comments_list || null ) !== null && item.comments_list.length > 0 ">
|
||||
{{ item.comments_list[0].content }}
|
||||
</block>
|
||||
</view>
|
||||
<view v-if="(item.images || null) != null && item.images.length > 0" class="avatar spacing-mt-10 radius margin-right-sm oh">
|
||||
<image class="wh-auto" @tap="comment_images_show_event" :data-index="index" :data-ix="ix" :src="iv" mode="aspectFit"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="more flex-row jc-e align-c spacing-mt">
|
||||
<navigator :url="item.url" hover-class="none">
|
||||
<view class="cr-red text-size-xs">
|
||||
查看全部{{ item.comments_count }}个回答
|
||||
<iconfont name="icon-qiandao-jiantou2" size="24rpx" class="pr top-xs"></iconfont>
|
||||
</view>
|
||||
</navigator>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<!-- 结尾 -->
|
||||
<component-bottom-line :propStatus="data_bottom_line_status"></component-bottom-line>
|
||||
</block>
|
||||
<block v-else>
|
||||
<!-- 提示信息 -->
|
||||
<component-no-data :propStatus="data_list_loding_status"></component-no-data>
|
||||
</block>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
</script>
|
||||
const app = getApp();
|
||||
import componentNoData from '@/components/no-data/no-data';
|
||||
import componentBottomLine from '@/components/bottom-line/bottom-line';
|
||||
|
||||
<style>
|
||||
</style>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
data_list: [],
|
||||
data_total: 0,
|
||||
data_page_total: 0,
|
||||
data_page: 1,
|
||||
data_list_loding_status: 1,
|
||||
data_bottom_line_status: false,
|
||||
data_is_loading: 0,
|
||||
goods_id: null,
|
||||
};
|
||||
},
|
||||
|
||||
components: {
|
||||
componentNoData,
|
||||
componentBottomLine,
|
||||
},
|
||||
props: {},
|
||||
|
||||
onLoad(params) {
|
||||
if (params || params.goods_id) {
|
||||
this.setData({
|
||||
goods_id: params.goods_id,
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
onShow() {
|
||||
this.init();
|
||||
},
|
||||
|
||||
methods: {
|
||||
init() {
|
||||
var user = app.globalData.get_user_info(this, 'init');
|
||||
if (user != false) {
|
||||
// 用户未绑定用户则转到登录页面
|
||||
if (app.globalData.user_is_need_login(user)) {
|
||||
uni.redirectTo({
|
||||
url: '/pages/login/login?event_callback=init',
|
||||
});
|
||||
return false;
|
||||
} else {
|
||||
// 获取数据
|
||||
this.get_data_list();
|
||||
}
|
||||
} else {
|
||||
this.setData({
|
||||
data_list_loding_status: 0,
|
||||
data_bottom_line_status: false,
|
||||
});
|
||||
}
|
||||
},
|
||||
get_data_list(is_mandatory) {
|
||||
// 分页是否还有数据
|
||||
if ((is_mandatory || 0) == 0) {
|
||||
if (this.data_bottom_line_status == true) {
|
||||
uni.stopPullDownRefresh();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// 是否加载中
|
||||
if (this.data_is_loading == 1) {
|
||||
return false;
|
||||
}
|
||||
this.setData({
|
||||
data_is_loading: 1,
|
||||
data_list_loding_status: 1,
|
||||
});
|
||||
|
||||
// 加载loding
|
||||
uni.showLoading({
|
||||
title: '加载中...',
|
||||
});
|
||||
|
||||
// 获取数据
|
||||
uni.request({
|
||||
url: app.globalData.get_request_url('datalist', 'index', 'ask'),
|
||||
method: 'POST',
|
||||
data: {
|
||||
page: this.data_page,
|
||||
goods_id: this.goods_id,
|
||||
is_comments: 1,
|
||||
},
|
||||
dataType: 'json',
|
||||
success: (res) => {
|
||||
uni.hideLoading();
|
||||
uni.stopPullDownRefresh();
|
||||
if (res.data.code == 0) {
|
||||
if (res.data.data.data.length > 0) {
|
||||
if (this.data_page <= 1) {
|
||||
var temp_data_list = res.data.data.data;
|
||||
} else {
|
||||
var temp_data_list = this.data_list || [];
|
||||
var temp_data = res.data.data.data;
|
||||
for (var i in temp_data) {
|
||||
temp_data_list.push(temp_data[i]);
|
||||
}
|
||||
}
|
||||
this.setData({
|
||||
data_list: temp_data_list,
|
||||
data_total: res.data.data.total,
|
||||
data_page_total: res.data.data.page_total,
|
||||
data_list_loding_status: 3,
|
||||
data_page: this.data_page + 1,
|
||||
data_is_loading: 0,
|
||||
});
|
||||
console.log(this.data_list);
|
||||
|
||||
// 是否还有数据
|
||||
this.setData({
|
||||
data_bottom_line_status: this.data_page > 1 && this.data_page > this.data_page_total,
|
||||
});
|
||||
} else {
|
||||
this.setData({
|
||||
data_list_loding_status: 0,
|
||||
data_is_loading: 0,
|
||||
});
|
||||
}
|
||||
} else {
|
||||
this.setData({
|
||||
data_list_loding_status: 0,
|
||||
data_is_loading: 0,
|
||||
});
|
||||
if (app.globalData.is_login_check(res.data, this, 'get_data_list')) {
|
||||
app.globalData.showToast(res.data.msg);
|
||||
}
|
||||
}
|
||||
},
|
||||
fail: () => {
|
||||
uni.hideLoading();
|
||||
uni.stopPullDownRefresh();
|
||||
this.setData({
|
||||
data_list_loding_status: 2,
|
||||
data_is_loading: 0,
|
||||
});
|
||||
app.globalData.showToast('服务器请求出错');
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
// 滚动加载
|
||||
scroll_lower(e) {
|
||||
this.get_data_list();
|
||||
},
|
||||
// 评价图片预览
|
||||
comment_images_show_event(e) {
|
||||
var index = e.currentTarget.dataset.index;
|
||||
var ix = e.currentTarget.dataset.ix;
|
||||
uni.previewImage({
|
||||
current: this.data_list[index]['images'][ix],
|
||||
urls: this.data_list[index]['images'],
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
@import './goods-list.css';
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<view class="page-bottom-fixed">
|
||||
<view v-if="data_list.length > 0" class="padding-main">
|
||||
<view v-for="(item, index) in data_list" :key="index">
|
||||
<navigator :url="'/pages/user-detail/user-detail?id=' + item.id" hover-class="none" class="padding-main border-radius-main bg-white oh spacing-mb">
|
||||
<navigator :url="'/pages/plugins/ask/detail/detail?id=' + item.id" hover-class="none" class="padding-main border-radius-main bg-white oh spacing-mb">
|
||||
<view class="margin-bottom-xs flex-row jc-sb align-c">
|
||||
<text class="fw-b text-size">{{ item.name }}</text>
|
||||
<text class="ask-status cr-white border-radius-sm text-size-xss" :class="item.is_reply === '1' ? 'ask-bg-green' : 'ask-bg-yellow'">{{ item.is_reply === '1' ? '已回' : '未回' }}</text>
|
||||
|
|
|
|||
|
|
@ -3,29 +3,30 @@
|
|||
<view v-if="(data || null) != null" class="padding-top-main">
|
||||
<view class="padding-horizontal-main">
|
||||
<view class="padding-main border-radius-main bg-white spacing-mb">
|
||||
<view class="fw-b text-size-xl">{{ data.title }}</view>
|
||||
<view class="cr-grey-9 margin-top-lg oh br-t padding-top-main text-size-xs">
|
||||
<view class="fl">
|
||||
<text>时间:</text>
|
||||
<text>{{ data.add_time }}</text>
|
||||
</view>
|
||||
<view class="fr">
|
||||
<text class="margin-left-xxxl">浏览:</text>
|
||||
<text>{{ data.access_count }}</text>
|
||||
<view class="spacing-mb">
|
||||
<view class="fw-b text-size-xl">{{ data.title }}</view>
|
||||
<view class="cr-grey-9 margin-top-lg oh br-t padding-top-main text-size-xs">
|
||||
<view class="fl">
|
||||
<text>时间:</text>
|
||||
<text>{{ data.add_time }}</text>
|
||||
</view>
|
||||
<view class="fr">
|
||||
<text class="margin-left-xxxl">浏览:</text>
|
||||
<text>{{ data.access_count }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="padding-main border-radius-main bg-white oh web-html-content spacing-mb">
|
||||
<view v-if="(data.video_url || null) != null && ((data.is_live_play || 0) == 0 || client_type == 'weixin')">
|
||||
<video :src="data.video_url" class="wh-auto" :autoplay="false" :controls="true"></video>
|
||||
<view class="oh web-html-content spacing-mb">
|
||||
<view v-if="(data.video_url || null) != null && ((data.is_live_play || 0) == 0 || client_type == 'weixin')">
|
||||
<video :src="data.video_url" class="wh-auto" :autoplay="false" :controls="true"></video>
|
||||
</view>
|
||||
<mp-html :content="data.content" />
|
||||
</view>
|
||||
<mp-html :content="data.content" />
|
||||
<!-- 评论内容 -->
|
||||
<component-blog-comments :propData="data" :propDataBase="data_base" :propEmojiList="emoji_list"></component-blog-comments>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 评论内容 -->
|
||||
<component-blog-comments :propData="data" :propDataBase="data_base" :propEmojiList="emoji_list"></component-blog-comments>
|
||||
|
||||
<view class="padding-horizontal-main">
|
||||
<!-- 上一篇、下一篇 -->
|
||||
<view v-if="(last_next || null) != null" class="last-next-data spacing-mb">
|
||||
|
|
|
|||
|
|
@ -57,6 +57,7 @@
|
|||
},
|
||||
|
||||
components: {
|
||||
componentNoData,
|
||||
componentUpload,
|
||||
},
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue