mirror of
https://gitee.com/zongzhige/shopxo.git
synced 2024-11-30 10:59:47 +08:00
商品评论
This commit is contained in:
parent
71a7c9b778
commit
8e548619b5
@ -77,14 +77,13 @@ class Answer extends Common
|
||||
'm' => $page->GetPageStarNumber(),
|
||||
'n' => $number,
|
||||
'where' => $where,
|
||||
'is_public' => 0,
|
||||
);
|
||||
$data = AnswerService::AnswerList($data_params);
|
||||
$this->assign('data_list', $data['data']);
|
||||
|
||||
// 状态
|
||||
// 静态数据
|
||||
$this->assign('common_is_show_list', lang('common_is_show_list'));
|
||||
|
||||
// 是否
|
||||
$this->assign('common_is_text_list', lang('common_is_text_list'));
|
||||
|
||||
// 参数
|
||||
@ -110,10 +109,11 @@ class Answer extends Common
|
||||
{
|
||||
// 获取列表
|
||||
$data_params = array(
|
||||
'm' => 0,
|
||||
'n' => 1,
|
||||
'where' => ['id'=>intval($params['id'])],
|
||||
'field' => '*',
|
||||
'm' => 0,
|
||||
'n' => 1,
|
||||
'where' => ['id'=>intval($params['id'])],
|
||||
'field' => '*',
|
||||
'is_public' => 0,
|
||||
);
|
||||
$ret = AnswerService::AnswerList($data_params);
|
||||
|
||||
@ -133,10 +133,8 @@ class Answer extends Common
|
||||
}
|
||||
$this->assign('data', $data);
|
||||
|
||||
// 状态
|
||||
// 静态数据
|
||||
$this->assign('common_is_show_list', lang('common_is_show_list'));
|
||||
|
||||
// 是否
|
||||
$this->assign('common_is_text_list', lang('common_is_text_list'));
|
||||
|
||||
// 参数
|
||||
|
@ -13,7 +13,7 @@ namespace app\admin\controller;
|
||||
use app\service\GoodsCommentsService;
|
||||
|
||||
/**
|
||||
* 商品评价管理
|
||||
* 商品评论管理
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 0.0.1
|
||||
@ -85,6 +85,7 @@ class Goodscomments extends Common
|
||||
// 静态数据
|
||||
$this->assign('common_is_show_list', lang('common_is_show_list'));
|
||||
$this->assign('common_is_text_list', lang('common_is_text_list'));
|
||||
$this->assign('rating_list', GoodsCommentsService::$rating_list);
|
||||
$this->assign('business_type_list', GoodsCommentsService::$business_type_list);
|
||||
|
||||
// 参数
|
||||
@ -110,34 +111,21 @@ class Goodscomments extends Common
|
||||
{
|
||||
// 获取列表
|
||||
$data_params = array(
|
||||
'm' => 0,
|
||||
'n' => 1,
|
||||
'where' => ['id'=>intval($params['id'])],
|
||||
'field' => '*',
|
||||
'm' => 0,
|
||||
'n' => 1,
|
||||
'where' => ['id'=>intval($params['id'])],
|
||||
'is_public' => 0,
|
||||
);
|
||||
$ret = GoodsCommentsService::AnswerList($data_params);
|
||||
|
||||
// 内容
|
||||
if(!empty($ret['data'][0]['content']))
|
||||
{
|
||||
$ret['data'][0]['content'] = str_replace('<br />', "\n", $ret['data'][0]['content']);
|
||||
}
|
||||
|
||||
// 回复内容
|
||||
if(!empty($ret['data'][0]['reply']))
|
||||
{
|
||||
$ret['data'][0]['reply'] = str_replace('<br />', "\n", $ret['data'][0]['reply']);
|
||||
}
|
||||
|
||||
$ret = GoodsCommentsService::GoodsCommentsList($data_params);
|
||||
$data = empty($ret['data'][0]) ? [] : $ret['data'][0];
|
||||
}
|
||||
$this->assign('data', $data);
|
||||
|
||||
// 状态
|
||||
// 静态数据
|
||||
$this->assign('common_is_show_list', lang('common_is_show_list'));
|
||||
|
||||
// 是否
|
||||
$this->assign('common_is_text_list', lang('common_is_text_list'));
|
||||
$this->assign('rating_list', GoodsCommentsService::$rating_list);
|
||||
$this->assign('business_type_list', GoodsCommentsService::$business_type_list);
|
||||
|
||||
// 参数
|
||||
unset($params['id']);
|
||||
@ -163,7 +151,7 @@ class Goodscomments extends Common
|
||||
|
||||
// 开始处理
|
||||
$params = input();
|
||||
return GoodsCommentsService::AnswerSave($params);
|
||||
return GoodsCommentsService::GoodsCommentsSave($params);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -78,15 +78,15 @@
|
||||
<table class="am-table am-table-striped am-table-hover am-text-middle m-t-10">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="am-hide-sm-only">用户信息</th>
|
||||
<th class="am-hide-md-down">用户信息</th>
|
||||
<th class="am-hide-sm-only">联系信息</th>
|
||||
<th>标题</th>
|
||||
<th class="am-hide-sm-only">内容</th>
|
||||
<th class="am-hide-sm-only">标题</th>
|
||||
<th>内容</th>
|
||||
<th class="am-hide-sm-only">回复内容</th>
|
||||
<th class="am-hide-sm-only">访问次数</th>
|
||||
<th class="am-hide-sm-only">回复时间</th>
|
||||
<th class="am-hide-sm-only">创建时间</th>
|
||||
<th>是否显示</th>
|
||||
<th class="am-hide-sm-only">显示</th>
|
||||
<th>更多</th>
|
||||
<th>操作</th>
|
||||
</tr>
|
||||
@ -95,23 +95,19 @@
|
||||
{{if !empty($data_list)}}
|
||||
{{foreach $data_list as $v}}
|
||||
<tr id="data-list-{{$v.id}}" {{if $v['is_show'] eq 0}}class="am-active"{{/if}}>
|
||||
<td class="am-hide-sm-only">
|
||||
{{if !empty($v['username'])}}
|
||||
{{$v.username}}
|
||||
{{if !empty($v['nickname'])}}
|
||||
({{$v.nickname}})
|
||||
{{/if}}
|
||||
{{if !empty($v['gender_text'])}}
|
||||
({{$v.gender_text}})
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{if !empty($v['mobile'])}}
|
||||
<br />{{$v.mobile}}
|
||||
{{/if}}
|
||||
{{if empty($v['username']) and empty($v['mobile'])}}
|
||||
<span class="cr-ddd">空</span>
|
||||
{{/if}}
|
||||
</td>
|
||||
<td class="user-info am-hide-md-down">
|
||||
{{if !empty($v['user'])}}
|
||||
<img src="{{$v.user.avatar}}" alt="{{$v.user.user_name_view}}" class="am-img-thumbnail am-radius am-align-left" />
|
||||
<ul class="user-base">
|
||||
<li>名称:{{if empty($v['user']['username'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$v.user.username}}{{/if}}</li>
|
||||
<li>昵称:{{if empty($v['user']['nickname'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$v.user.nickname}}{{/if}}</li>
|
||||
<li>手机:{{if empty($v['user']['mobile'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$v.user.mobile}}{{/if}}</li>
|
||||
<li>邮箱:{{if empty($v['user']['email'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$v.user.email}}{{/if}}</li>
|
||||
</ul>
|
||||
{{else /}}
|
||||
用户信息异常
|
||||
{{/if}}
|
||||
</td>
|
||||
<td class="am-hide-sm-only">
|
||||
{{if !empty($v['name']) and !empty($v['tel'])}}
|
||||
{{$v.name}}
|
||||
@ -125,8 +121,8 @@
|
||||
<span class="cr-ddd">未填写</span>
|
||||
{{/if}}
|
||||
</td>
|
||||
<td>{{$v.title}}</td>
|
||||
<td class="am-hide-sm-only">
|
||||
<td class="am-hide-sm-only">{{$v.title}}</td>
|
||||
<td class="content-info">
|
||||
<div class="reply-content">
|
||||
{{$v.content|raw}}
|
||||
</div>
|
||||
@ -143,7 +139,7 @@
|
||||
<td class="am-hide-sm-only">{{$v.access_count}}</td>
|
||||
<td class="am-hide-sm-only">{{$v.reply_time}}</td>
|
||||
<td class="am-hide-sm-only">{{$v.add_time}}</td>
|
||||
<td>
|
||||
<td class="am-hide-sm-only">
|
||||
<a href="javascript:;" class="am-icon-btn am-icon-check submit-state {{if $v['is_show'] eq 1}}am-success{{else /}}am-default{{/if}}" data-url="{{:MyUrl('admin/answer/statusupdate')}}" data-id="{{$v.id}}" data-state="{{$v['is_show']}}" data-is-update-status="1"></a>
|
||||
</td>
|
||||
<td>
|
||||
@ -158,22 +154,18 @@
|
||||
<div class="am-popup-bd">
|
||||
<dl class="dl-content">
|
||||
<dt>用户信息</dt>
|
||||
<dd>
|
||||
{{if !empty($v['username'])}}
|
||||
{{$v.username}}
|
||||
{{if !empty($v['nickname'])}}
|
||||
({{$v.nickname}})
|
||||
{{/if}}
|
||||
{{if !empty($v['gender_text'])}}
|
||||
({{$v.gender_text}})
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{if !empty($v['mobile'])}}
|
||||
<br />{{$v.mobile}}
|
||||
{{/if}}
|
||||
{{if empty($v['username']) and empty($v['mobile'])}}
|
||||
<span class="cr-ddd">空</span>
|
||||
{{/if}}
|
||||
<dd class="user-info">
|
||||
{{if !empty($v['user'])}}
|
||||
<img src="{{$v.user.avatar}}" alt="{{$v.user.user_name_view}}" class="am-img-thumbnail am-radius am-align-left" />
|
||||
<ul class="user-base">
|
||||
<li>名称:{{if empty($v['user']['username'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$v.user.username}}{{/if}}</li>
|
||||
<li>昵称:{{if empty($v['user']['nickname'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$v.user.nickname}}{{/if}}</li>
|
||||
<li>手机:{{if empty($v['user']['mobile'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$v.user.mobile}}{{/if}}</li>
|
||||
<li>邮箱:{{if empty($v['user']['email'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$v.user.email}}{{/if}}</li>
|
||||
</ul>
|
||||
{{else /}}
|
||||
用户信息异常
|
||||
{{/if}}
|
||||
</dd>
|
||||
|
||||
<dt>联系人</dt>
|
||||
@ -223,13 +215,11 @@
|
||||
</div>
|
||||
</td>
|
||||
<td class="view-operation">
|
||||
<a href="{{:MyUrl('admin/answer/saveinfo', array_merge($params, ['id'=>$v['id']]))}}">
|
||||
<button class="am-btn am-btn-secondary am-btn-xs am-radius am-icon-edit"> 编辑</button>
|
||||
</a>
|
||||
<a href="{{:MyUrl('admin/answer/saveinfo', array_merge($params, ['id'=>$v['id']]))}}" class="am-btn am-btn-secondary am-btn-xs am-radius am-btn-block am-icon-edit"> 编辑</a>
|
||||
{{if $v['is_reply'] eq 0}}
|
||||
<button class="am-btn am-btn-success am-btn-xs am-radius submit-reply am-icon-gavel" data-am-modal="{target: '#my-popup-reply'}" data-json='{{:json_encode($v)}}'> 回复</button>
|
||||
<button class="am-btn am-btn-success am-btn-xs am-radius am-btn-block submit-reply am-icon-gavel" data-am-modal="{target: '#my-popup-reply'}" data-json='{{:json_encode($v)}}'> 回复</button>
|
||||
{{/if}}
|
||||
<button class="am-btn am-btn-danger am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/answer/delete')}}" data-id="{{$v.id}}"> 删除</button>
|
||||
<button class="am-btn am-btn-danger am-btn-xs am-radius am-btn-block am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/answer/delete')}}" data-id="{{$v.id}}"> 删除</button>
|
||||
</td>
|
||||
</tr>
|
||||
{{/foreach}}
|
||||
@ -250,21 +240,27 @@
|
||||
</div>
|
||||
<div class="am-popup-bd">
|
||||
<dl class="dl-content">
|
||||
<dt>联系人</dt>
|
||||
<dd>
|
||||
<span class="reply-name"></span> - <span class="reply-tel"></span>
|
||||
</dd>
|
||||
<dt>用户信息</dt>
|
||||
<dd class="user-info">
|
||||
<img src="{{$attachment_host}}/static/common/images/user-img-sm.gif" class="am-img-thumbnail am-radius am-align-left" />
|
||||
<ul class="user-base">
|
||||
<li class="username">名称:<span>...</span></li>
|
||||
<li class="nickname">昵称:<span>...</span></li>
|
||||
<li class="mobile">手机:<span>...</span></li>
|
||||
<li class="email">邮箱:<span>...</span></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<form class="am-form form-validation" action="{{:MyUrl('admin/answer/reply')}}" method="POST" request-type="ajax-reload" enctype="multipart/form-data">
|
||||
<form class="am-form form-validation-reply" action="{{:MyUrl('admin/answer/reply')}}" method="POST" request-type="ajax-reload" enctype="multipart/form-data">
|
||||
<div class="am-form-group">
|
||||
<label>回复内容</label>
|
||||
<textarea name="reply" rows="5" class="am-radius" placeholder="回复内容格式 2~230 个字符" data-validation-message="回复内容格式 2~230 个字符" maxlength="230"></textarea>
|
||||
<textarea name="reply" rows="5" class="am-radius" placeholder="回复内容格式 2~230 个字符" data-validation-message="回复内容格式 2~230 个字符" minlength="2" maxlength="230" required></textarea>
|
||||
</div>
|
||||
|
||||
<div class="am-form-group reply-submit am-form-group-refreshing t-c">
|
||||
<input type="hidden" name="id" value="" />
|
||||
<button type="submit" class="am-btn am-btn-success am-radius am-btn-sm" data-am-loading="{loadingText:'处理中...'}" data-status="0">回复</button>
|
||||
<button type="submit" class="am-btn am-btn-success am-radius am-btn-sm" data-am-loading="{loadingText:'处理中...'}">回复</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
@ -15,6 +15,21 @@
|
||||
</span>
|
||||
<a href="{{:MyUrl('admin/answer/index', $params)}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> 返回</a>
|
||||
</legend>
|
||||
<div class="am-alert am-alert-secondary user-info" data-am-alert>
|
||||
<p class="title">用户信息</p>
|
||||
{{if !empty($data['user'])}}
|
||||
<img src="{{$data.user.avatar}}" alt="{{$data.user.user_name_view}}" class="am-img-thumbnail am-radius am-align-left" />
|
||||
<ul class="user-base">
|
||||
<li>名称:{{if empty($data['user']['username'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$data.user.username}}{{/if}}</li>
|
||||
<li>昵称:{{if empty($data['user']['nickname'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$data.user.nickname}}{{/if}}</li>
|
||||
<li>手机:{{if empty($data['user']['mobile'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$data.user.mobile}}{{/if}}</li>
|
||||
<li>邮箱:{{if empty($data['user']['email'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$data.user.email}}{{/if}}</li>
|
||||
</ul>
|
||||
{{else /}}
|
||||
用户信息异常
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label>联系人</label>
|
||||
<input type="text" name="name" placeholder="联系人" maxlength="30" data-validation-message="联系人格式最多 30 个字符" class="am-radius" value="{{if !empty($data['name'])}}{{$data.name}}{{/if}}" />
|
||||
|
@ -97,8 +97,9 @@
|
||||
<th class="am-hide-md-down">商品信息</th>
|
||||
<th class="am-hide-md-down">用户信息</th>
|
||||
<th class="am-hide-sm-only">业务类型</th>
|
||||
<th>评价内容</th>
|
||||
<th class="am-hide-sm-only">是否回复</th>
|
||||
<th>评论内容</th>
|
||||
<th class="am-hide-sm-only">评分</th>
|
||||
<th class="am-hide-sm-only">回复</th>
|
||||
<th class="am-hide-sm-only">匿名</th>
|
||||
<th class="am-hide-sm-only">显示</th>
|
||||
<th>更多</th>
|
||||
@ -110,20 +111,14 @@
|
||||
{{foreach $data_list as $v}}
|
||||
<tr id="data-list-{{$v.id}}" {{if $v['is_show'] eq 0}}class="am-active"{{/if}}>
|
||||
<td class="goods-info am-hide-md-down">
|
||||
{{if !empty($v['user'])}}
|
||||
{{if !empty($v['goods'])}}
|
||||
<div class="base">
|
||||
<a href="{{$v.goods.goods_url}}" target="_blank">
|
||||
<img src="{{$v.goods.images}}" alt="{{$v.goods.title}}" class="am-img-thumbnail am-radius am-align-left" />
|
||||
</a>
|
||||
<a class="am-text-top" href="{{$v.goods.goods_url}}" target="_blank">
|
||||
{{if mb_strlen($v['goods']['title']) gt 23}}
|
||||
{{:mb_substr($v['goods']['title'], 0, 23, 'utf-8')}} ...
|
||||
{{else /}}
|
||||
{{$v.goods.title}}
|
||||
{{/if}}
|
||||
</a>
|
||||
<a class="am-text-top" href="{{$v.goods.goods_url}}" target="_blank">{{$v.goods.title}}</a>
|
||||
</div>
|
||||
<p>¥{{$v.goods.min_price}}</p>
|
||||
<p>¥{{$v.goods.price}}</p>
|
||||
{{else /}}
|
||||
商品信息异常
|
||||
{{/if}}
|
||||
@ -142,21 +137,22 @@
|
||||
{{/if}}
|
||||
</td>
|
||||
<td class="am-hide-sm-only">{{$v.business_type_text}}</td>
|
||||
<td>
|
||||
<td class="content-info">
|
||||
<div class="reply-content">
|
||||
{{$v.content}}
|
||||
</div>
|
||||
</td>
|
||||
<td class="am-hide-sm-only">
|
||||
{{if $v['is_reply'] eq 1 and !empty($v['reply'])}}
|
||||
已回复
|
||||
{{else /}}
|
||||
<span class="cr-ddd">未回复</span>
|
||||
{{/if}}
|
||||
<span class="am-badge am-radius {{$rating_list[$v['rating']]['badge']}}">{{$v.rating_text}}</span>
|
||||
</td>
|
||||
<td class="am-hide-sm-only">{{$v.is_anonymous_text}}</td>
|
||||
<td class="am-hide-sm-only">
|
||||
<a href="javascript:;" class="am-icon-btn am-icon-check submit-state {{if $v['is_show'] eq 1}}am-success{{else /}}am-default{{/if}}" data-url="{{:MyUrl('admin/goodscomments/statusupdate')}}" data-id="{{$v.id}}" data-state="{{$v['is_show']}}" data-is-update-status="1"></a>
|
||||
<a href="javascript:;" class="am-icon-btn am-icon-check submit-state {{if $v['is_reply'] eq 1}}am-success{{else /}}am-default{{/if}}" data-url="{{:MyUrl('admin/goodscomments/statusupdate')}}" data-id="{{$v.id}}" data-state="{{$v['is_reply']}}" data-field="is_reply"></a>
|
||||
</td>
|
||||
<td class="am-hide-sm-only">
|
||||
<a href="javascript:;" class="am-icon-btn am-icon-check submit-state {{if $v['is_anonymous'] eq 1}}am-success{{else /}}am-default{{/if}}" data-url="{{:MyUrl('admin/goodscomments/statusupdate')}}" data-id="{{$v.id}}" data-state="{{$v['is_anonymous']}}" data-field="is_anonymous"></a>
|
||||
</td>
|
||||
<td class="am-hide-sm-only">
|
||||
<a href="javascript:;" class="am-icon-btn am-icon-check submit-state {{if $v['is_show'] eq 1}}am-success{{else /}}am-default{{/if}}" data-url="{{:MyUrl('admin/goodscomments/statusupdate')}}" data-id="{{$v.id}}" data-state="{{$v['is_show']}}" data-field="is_show" data-is-update-status="1"></a>
|
||||
</td>
|
||||
<td>
|
||||
<span class="am-icon-caret-down c-p" data-am-modal="{target: '#my-popup{{$v.id}}'}"> 查看更多</span>
|
||||
@ -171,20 +167,14 @@
|
||||
<dl class="dl-content">
|
||||
<dt>商品信息</dt>
|
||||
<dd class="goods-info am-hide-md-down">
|
||||
{{if !empty($v['user'])}}
|
||||
{{if !empty($v['goods'])}}
|
||||
<div class="base">
|
||||
<a href="{{$v.goods.goods_url}}" target="_blank">
|
||||
<img src="{{$v.goods.images}}" alt="{{$v.goods.title}}" class="am-img-thumbnail am-radius am-align-left" />
|
||||
</a>
|
||||
<a class="am-text-top" href="{{$v.goods.goods_url}}" target="_blank">
|
||||
{{if mb_strlen($v['goods']['title']) gt 23}}
|
||||
{{:mb_substr($v['goods']['title'], 0, 23, 'utf-8')}} ...
|
||||
{{else /}}
|
||||
{{$v.goods.title}}
|
||||
{{/if}}
|
||||
</a>
|
||||
<a class="am-text-top" href="{{$v.goods.goods_url}}" target="_blank">{{$v.goods.title}}</a>
|
||||
</div>
|
||||
<p>¥{{$v.goods.min_price}}</p>
|
||||
<p>¥{{$v.goods.price}}</p>
|
||||
{{else /}}
|
||||
商品信息异常
|
||||
{{/if}}
|
||||
@ -208,8 +198,13 @@
|
||||
<dt>业务类型</dt>
|
||||
<dd>{{$v.business_type_text}}</dd>
|
||||
|
||||
<dt>评价内容</dt>
|
||||
<dd>{{$v.content|raw}}</dd>
|
||||
<dt>评论内容</dt>
|
||||
<dd>{{$v.content}}</dd>
|
||||
|
||||
<dt>评分</dt>
|
||||
<dd>
|
||||
<span class="am-badge am-radius {{$rating_list[$v['rating']]['badge']}}">{{$v.rating_text}}</span>
|
||||
</dd>
|
||||
|
||||
<dt>是否匿名</dt>
|
||||
<dd>{{$v.is_anonymous_text}}</dd>
|
||||
@ -224,7 +219,7 @@
|
||||
<dd>
|
||||
{{if $v['is_reply'] eq 1 and !empty($v['reply'])}}
|
||||
<div class="reply-content">
|
||||
{{$v.reply|raw}}
|
||||
{{$v.reply}}
|
||||
</div>
|
||||
{{else /}}
|
||||
<span class="cr-ddd">未回复</span>
|
||||
@ -270,21 +265,40 @@
|
||||
</div>
|
||||
<div class="am-popup-bd">
|
||||
<dl class="dl-content">
|
||||
<dt>联系人</dt>
|
||||
<dd>
|
||||
<span class="reply-name"></span> - <span class="reply-tel"></span>
|
||||
<dt>商品信息</dt>
|
||||
<dd class="goods-info">
|
||||
<div class="base">
|
||||
<a href="javascript:;" target="_blank">
|
||||
<img src="{{$attachment_host}}/static/common/images/user-img-sm.gif" alt="{{$v.goods.title}}" class="am-img-thumbnail am-radius am-align-left" />
|
||||
</a>
|
||||
<a class="am-text-top title" href="javascript:;" target="_blank">...</a>
|
||||
</div>
|
||||
<p class="price">...</p>
|
||||
</dd>
|
||||
|
||||
<dt>用户信息</dt>
|
||||
<dd class="user-info">
|
||||
<img src="{{$attachment_host}}/static/common/images/user-img-sm.gif" class="am-img-thumbnail am-radius am-align-left" />
|
||||
<ul class="user-base">
|
||||
<li class="username">名称:<span>...</span></li>
|
||||
<li class="nickname">昵称:<span>...</span></li>
|
||||
<li class="mobile">手机:<span>...</span></li>
|
||||
<li class="email">邮箱:<span>...</span></li>
|
||||
</ul>
|
||||
</dd>
|
||||
<dt>评论内容</dt>
|
||||
<dd class="content">...</dd>
|
||||
</dl>
|
||||
|
||||
<form class="am-form form-validation" action="{{:MyUrl('admin/goodscomments/reply')}}" method="POST" request-type="ajax-reload" enctype="multipart/form-data">
|
||||
<form class="am-form form-validation-reply" action="{{:MyUrl('admin/goodscomments/reply')}}" method="POST" request-type="ajax-reload">
|
||||
<div class="am-form-group">
|
||||
<label>回复内容</label>
|
||||
<textarea name="reply" rows="5" class="am-radius" placeholder="回复内容格式 2~230 个字符" data-validation-message="回复内容格式 2~230 个字符" maxlength="230"></textarea>
|
||||
<textarea name="reply" rows="5" class="am-radius" placeholder="回复内容格式 1~230 个字符" data-validation-message="回复内容格式 1~230 个字符" minlength="1" maxlength="230" required></textarea>
|
||||
</div>
|
||||
|
||||
<div class="am-form-group reply-submit am-form-group-refreshing t-c">
|
||||
<input type="hidden" name="id" value="" />
|
||||
<button type="submit" class="am-btn am-btn-success am-radius am-btn-sm" data-am-loading="{loadingText:'处理中...'}" data-status="0">回复</button>
|
||||
<button type="submit" class="am-btn am-btn-success am-radius am-btn-sm" data-am-loading="{loadingText:'处理中...'}">回复</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
106
application/admin/view/default/goodscomments/save_info.html
Normal file
106
application/admin/view/default/goodscomments/save_info.html
Normal file
@ -0,0 +1,106 @@
|
||||
{{include file="public/header" /}}
|
||||
|
||||
<!-- right content start -->
|
||||
<div class="content-right">
|
||||
<div class="content">
|
||||
<!-- form start -->
|
||||
<form class="am-form form-validation view-save" action="{{:MyUrl('admin/goodscomments/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/goodscomments/index', $params)}}" enctype="multipart/form-data">
|
||||
<legend>
|
||||
<span class="fs-16">商品评论编辑</span>
|
||||
<a href="{{:MyUrl('admin/goodscomments/index', $params)}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> 返回</a>
|
||||
</legend>
|
||||
<div class="am-alert am-alert-secondary goods-info" data-am-alert>
|
||||
<p class="title">商品信息</p>
|
||||
{{if !empty($data['goods'])}}
|
||||
<div class="base">
|
||||
<a href="{{$data.goods.goods_url}}" target="_blank">
|
||||
<img src="{{$data.goods.images}}" alt="{{$data.goods.title}}" class="am-img-thumbnail am-radius am-align-left" />
|
||||
</a>
|
||||
<a class="am-text-top" href="{{$data.goods.goods_url}}" target="_blank">{{$data.goods.title}}</a>
|
||||
</div>
|
||||
<p>¥{{$data.goods.price}}</p>
|
||||
{{else /}}
|
||||
商品信息异常
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
<div class="am-alert am-alert-secondary user-info" data-am-alert>
|
||||
<p class="title">用户信息</p>
|
||||
{{if !empty($data['user'])}}
|
||||
<img src="{{$data.user.avatar}}" alt="{{$data.user.user_name_view}}" class="am-img-thumbnail am-radius am-align-left" />
|
||||
<ul class="user-base">
|
||||
<li>名称:{{if empty($data['user']['username'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$data.user.username}}{{/if}}</li>
|
||||
<li>昵称:{{if empty($data['user']['nickname'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$data.user.nickname}}{{/if}}</li>
|
||||
<li>手机:{{if empty($data['user']['mobile'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$data.user.mobile}}{{/if}}</li>
|
||||
<li>邮箱:{{if empty($data['user']['email'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$data.user.email}}{{/if}}</li>
|
||||
</ul>
|
||||
{{else /}}
|
||||
用户信息异常
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label>业务类型<span class="am-form-group-label-tips-must">必选</span></label>
|
||||
<select name="business_type" class="chosen-select" data-placeholder="业务类型..." data-validation-message="请选择业务类型" required>
|
||||
{{if !empty($business_type_list)}}
|
||||
{{foreach $business_type_list as $k=>$v}}
|
||||
<option value="{{$k}}" {{if isset($data['business_type']) and $data['business_type'] eq $k}}selected{{/if}}>{{$v}}</option>
|
||||
{{/foreach}}
|
||||
{{/if}}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label>评论内容<span class="am-form-group-label-tips-must">必填</span></label>
|
||||
<textarea name="content" class="am-radius" rows="4" minlength="6" maxlength="230" data-validation-message="评论内容 6~230 个字符之间" required>{{if !empty($data['content'])}}{{$data.content}}{{/if}}</textarea>
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label>回复内容</label>
|
||||
<textarea class="am-radius" name="reply" rows="4" maxlength="230" placeholder="回复内容最多 230 个字符" data-validation-message="回复内容最多 230 个字符">{{if !empty($data['reply'])}}{{$data.reply}}{{/if}}</textarea>
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label>回复时间</label>
|
||||
<input type="text" name="reply_time" class="am-form-field am-radius Wdate" placeholder="生日" data-validation-message="生日格式有误" {{if !empty($data)}} value="{{if isset($data['reply_time_time'])}}{{$data.reply_time_time}}{{/if}}"{{/if}} onclick="WdatePicker({firstDayOfWeek:1,dateFmt:'yyyy-MM-dd'})" autocomplete="off" />
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label>评分<span class="am-form-group-label-tips-must">必选</span></label>
|
||||
<select name="rating" class="chosen-select" data-placeholder="评分..." data-validation-message="请选择评分" required>
|
||||
{{if !empty($business_type_list)}}
|
||||
{{foreach $rating_list as $k=>$v}}
|
||||
<option value="{{$k}}" {{if isset($data['rating']) and $data['rating'] eq $k}}selected{{/if}}>{{$v.name}}</option>
|
||||
{{/foreach}}
|
||||
{{/if}}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否已回复</label>
|
||||
<input name="is_reply" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if isset($data['is_reply']) and $data['is_reply'] eq 1}}checked="true"{{/if}} />
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否匿名</label>
|
||||
<input name="is_anonymous" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if isset($data['is_anonymous']) and $data['is_anonymous'] eq 1}}checked="true"{{/if}} />
|
||||
</div>
|
||||
|
||||
<div class="am-form-group">
|
||||
<label class="block">是否显示</label>
|
||||
<input name="is_show" value="1" type="checkbox" data-off-text="否" data-on-text="是" data-size="xs" data-on-color="success" data-off-color="default" data-handle-width="50" data-am-switch {{if isset($data['is_show']) and $data['is_show'] eq 1}}checked="true"{{/if}} />
|
||||
</div>
|
||||
|
||||
<div class="am-form-group am-form-group-refreshing">
|
||||
<input type="hidden" name="id" {{if !empty($data['id'])}} value="{{$data.id}}"{{/if}} />
|
||||
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm w100" data-am-loading="{loadingText:'处理中...'}">保存</button>
|
||||
</div>
|
||||
</form>
|
||||
<!-- form end -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- right content end -->
|
||||
|
||||
<!-- footer start -->
|
||||
{{include file="public/footer" /}}
|
||||
<!-- footer end -->
|
@ -80,10 +80,8 @@ class Answer extends Common
|
||||
$data = AnswerService::AnswerList($data_params);
|
||||
$this->assign('data_list', $data['data']);
|
||||
|
||||
// 状态
|
||||
// 静态数据
|
||||
$this->assign('common_is_show_list', lang('common_is_show_list'));
|
||||
|
||||
// 是否
|
||||
$this->assign('common_is_text_list', lang('common_is_text_list'));
|
||||
|
||||
// 参数
|
||||
@ -91,5 +89,26 @@ class Answer extends Common
|
||||
return $this->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* 问答删除
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 0.0.1
|
||||
* @datetime 2016-12-15T11:03:30+0800
|
||||
*/
|
||||
public function Delete()
|
||||
{
|
||||
// 是否ajax请求
|
||||
if(!IS_AJAX)
|
||||
{
|
||||
return $this->error('非法访问');
|
||||
}
|
||||
|
||||
// 开始处理
|
||||
$params = input();
|
||||
$params['user_type'] = 'user';
|
||||
$params['user'] = $this->user;
|
||||
return AnswerService::AnswerDelete($params);
|
||||
}
|
||||
}
|
||||
?>
|
@ -91,6 +91,10 @@ class Goods extends Common
|
||||
// 二维码
|
||||
$this->assign('qrcode_url', MyUrl('index/qrcode/index', ['content'=>urlencode(base64_encode(MyUrl('index/goods/index', ['id'=>$goods_id], true, true)))]));
|
||||
|
||||
// 商品评分
|
||||
$goods_score = GoodsCommentsService::GoodsCommentsScore($goods_id);
|
||||
$this->assign('goods_score', $goods_score['data']);
|
||||
|
||||
// 商品访问统计
|
||||
GoodsService::GoodsAccessCountInc(['goods_id'=>$goods_id]);
|
||||
|
||||
|
@ -90,12 +90,13 @@
|
||||
<th class="am-hide-sm-only">是否显示</th>
|
||||
<th class="am-hide-sm-only">回复时间</th>
|
||||
<th class="am-hide-sm-only">时间</th>
|
||||
<th class="am-hide-sm-only">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{if !empty($data_list)}}
|
||||
{{foreach $data_list as $v}}
|
||||
<tr>
|
||||
<tr id="data-list-{{$v.id}}">
|
||||
<td>{{$v.name}}</td>
|
||||
<td>{{$v.tel}}</td>
|
||||
<td>{{$v.title}}</td>
|
||||
@ -110,6 +111,9 @@
|
||||
<td class="am-hide-sm-only">{{$v.is_show_text}}</td>
|
||||
<td class="am-hide-sm-only">{{$v.reply_time}}</td>
|
||||
<td class="am-hide-sm-only">{{$v.add_time}}</td>
|
||||
<td class="view-operation">
|
||||
<button class="am-btn am-btn-danger am-btn-xs am-radius am-btn-block am-icon-trash-o submit-delete" data-url="{{:MyUrl('index/answer/delete')}}" data-id="{{$v.id}}"> 删除</button>
|
||||
</td>
|
||||
</tr>
|
||||
{{/foreach}}
|
||||
{{/if}}
|
||||
|
@ -432,6 +432,36 @@
|
||||
|
||||
<!-- 评论 -->
|
||||
<div class="am-tab-panel am-fade goods-comment" data-goods-id="{{$goods.id}}" data-url="{{:MyUrl('index/goods/comment')}}">
|
||||
<div class="am-cf score-container">
|
||||
<div class="score am-fl">
|
||||
<p class="name">动态评分</p>
|
||||
<p class="value">{{$goods_score.avg}}</p>
|
||||
</div>
|
||||
<div class="am-progress am-fr">
|
||||
{{if isset($goods_score['avg']) and $goods_score['avg'] gt 0 and !empty($goods_score['rating'])}}
|
||||
{{foreach $goods_score.rating as $score}}
|
||||
<div class="am-progress-bar
|
||||
{{switch score.rating}}
|
||||
{{case 1}}
|
||||
am-progress-bar-danger
|
||||
{{/case}}
|
||||
{{case 2}}
|
||||
am-progress-bar-warning
|
||||
{{/case}}
|
||||
{{case 3}}
|
||||
am-progress-bar-secondary
|
||||
{{/case}}
|
||||
{{case 5}}
|
||||
am-progress-bar-success
|
||||
{{/case}}
|
||||
{{/switch}}"
|
||||
style="width: {{$score.portion}}%">{{$score.name}}({{$score.portion}}%)</div>
|
||||
{{/foreach}}
|
||||
{{else /}}
|
||||
没有评分数据
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="goods-comment-content"></div>
|
||||
<div class="goods-page-container"></div>
|
||||
<div class="table-no goods-page-no-data none">
|
||||
|
@ -32,7 +32,7 @@
|
||||
<tr>
|
||||
<th>商品信息</th>
|
||||
<th class="am-hide-sm-only">单价</th>
|
||||
<th>评价内容</th>
|
||||
<th>评论内容</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -79,7 +79,7 @@
|
||||
</ul>
|
||||
<input type="text" name="rating[]" value="" class="input-rating" data-validation-message="请选择评分" required />
|
||||
</div>
|
||||
<textarea name="content[]" class="am-radius" rows="4" minlength="6" maxlength="200" data-validation-message="评价内容 6~200 个字符之间" required></textarea>
|
||||
<textarea name="content[]" class="am-radius" rows="4" minlength="6" maxlength="230" data-validation-message="评论内容 6~230 个字符之间" required></textarea>
|
||||
<input type="hidden" name="goods_id[]" value="{{$goods.goods_id}}" />
|
||||
</td>
|
||||
</tr>
|
||||
@ -100,7 +100,7 @@
|
||||
</div>
|
||||
</form>
|
||||
{{else /}}
|
||||
<div class="table-no"><i class="am-icon-warning"></i> 你已进行过评价</div>
|
||||
<div class="table-no"><i class="am-icon-warning"></i> 你已进行过评论</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -102,9 +102,9 @@
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<span>评价:</span>
|
||||
<select name="is_comments" class="chosen-select" data-placeholder="评价状态...">
|
||||
<option value="-1">评价状态...</option>
|
||||
<span>评论:</span>
|
||||
<select name="is_comments" class="chosen-select" data-placeholder="评论状态...">
|
||||
<option value="-1">评论状态...</option>
|
||||
{{if !empty($common_comments_status_list)}}
|
||||
{{foreach $common_comments_status_list as $comments}}
|
||||
<option value="{{$comments.value}}" {{if isset($params['is_comments']) and $params['is_comments'] eq $comments['value']}}selected{{/if}}>{{$comments.name}}</option>
|
||||
@ -204,7 +204,7 @@
|
||||
<button type="button" class="am-btn am-btn-secondary am-btn-xs am-radius am-icon-check-circle-o am-btn-block submit-ajax submit-confirm" data-url="{{:MyUrl('index/order/collect')}}" data-id="{{$order.id}}" data-view="reload" data-msg="请仔细确认已收到货物、确认继续吗?"> 收货</button>
|
||||
{{/if}}
|
||||
{{if in_array($order['status'], [4]) and $order['user_is_comments'] eq 0}}
|
||||
<a href="{{:MyUrl('index/order/comments', ['id'=>$order['id']])}}" target="_blank" class="am-btn am-btn-primary am-btn-xs am-radius am-icon-heart-o am-btn-block"> 评价</a>
|
||||
<a href="{{:MyUrl('index/order/comments', ['id'=>$order['id']])}}" target="_blank" class="am-btn am-btn-primary am-btn-xs am-radius am-icon-heart-o am-btn-block"> 评论</a>
|
||||
{{/if}}
|
||||
{{if in_array($order['status'], [4,5,6])}}
|
||||
<button type="button" class="am-btn am-btn-danger am-btn-xs am-radius am-icon-trash-o am-btn-block submit-delete" data-url="{{:MyUrl('index/order/delete')}}" data-id="{{$order.id}}" data-view="reload"> 删除</button>
|
||||
|
@ -323,7 +323,6 @@ class Service
|
||||
{
|
||||
// 条件
|
||||
$where = [
|
||||
['is_delete_time', '=', 0],
|
||||
['is_show', '=', 1],
|
||||
];
|
||||
|
||||
@ -382,7 +381,6 @@ class Service
|
||||
}
|
||||
// 条件
|
||||
$where = [
|
||||
['is_delete_time', '=', 0],
|
||||
['is_show', '=', 1],
|
||||
['id', '=', intval($params['id'])],
|
||||
];
|
||||
|
@ -63,12 +63,16 @@ class AnswerService
|
||||
// 用户信息
|
||||
if(isset($v['user_id']))
|
||||
{
|
||||
$user = Db::name('User')->where(['id'=>$v['user_id']])->field('username,nickname,mobile,gender,avatar')->find();
|
||||
$v['username'] = empty($user['username']) ? '' : $user['username'];
|
||||
$v['nickname'] = empty($user['nickname']) ? '' : $user['nickname'];
|
||||
$v['mobile'] = empty($user['mobile']) ? '' : $user['mobile'];
|
||||
$v['avatar'] = empty($user['avatar']) ? '' : $user['avatar'];
|
||||
$v['gender_text'] = isset($user['gender']) ? $common_gender_list[$user['gender']]['name'] : '';
|
||||
$user = UserService::GetUserViewInfo($v['user_id']);
|
||||
if(!isset($params['is_public']) || $params['is_public'] == 1)
|
||||
{
|
||||
$v['user'] = [
|
||||
'avatar' => $user['avatar'],
|
||||
'user_name_view' => $user['user_name_view'],
|
||||
];
|
||||
} else {
|
||||
$v['user'] = $user;
|
||||
}
|
||||
}
|
||||
|
||||
// 是否显示
|
||||
@ -126,9 +130,7 @@ class AnswerService
|
||||
*/
|
||||
public static function AnswerListWhere($params = [])
|
||||
{
|
||||
$where = [
|
||||
['is_delete_time', '=', 0],
|
||||
];
|
||||
$where = [];
|
||||
|
||||
// id
|
||||
if(!empty($params['id']))
|
||||
@ -304,22 +306,12 @@ class AnswerService
|
||||
$where['user_id'] = $params['user']['id'];
|
||||
}
|
||||
|
||||
// 获取数据
|
||||
$temp = Db::name('Answer')->where($where)->field('id')->find();
|
||||
if(empty($temp))
|
||||
{
|
||||
return DataReturn('资源不存在或已被删除', -1);
|
||||
}
|
||||
|
||||
// 开始删除
|
||||
$data = [
|
||||
'is_delete_time' => time(),
|
||||
];
|
||||
if(Db::name('Answer')->where($where)->update($data))
|
||||
if(Db::name('Answer')->where($where)->delete())
|
||||
{
|
||||
return DataReturn('删除成功', 0);
|
||||
}
|
||||
return DataReturn('删除失败', -1);
|
||||
return DataReturn('删除失败或数据不存在', -1);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -28,8 +28,18 @@ class GoodsCommentsService
|
||||
'order' => '订单',
|
||||
];
|
||||
|
||||
// 评分
|
||||
public static $rating_list = [
|
||||
0 => ['name'=>'未评分', 'badge'=>''],
|
||||
1 => ['name'=>'1分', 'badge'=>'am-badge-danger'],
|
||||
2 => ['name'=>'2分', 'badge'=>'am-badge-warning'],
|
||||
3 => ['name'=>'3分', 'badge'=>'am-badge-secondary'],
|
||||
4 => ['name'=>'4分', 'badge'=>'am-badge-primary'],
|
||||
5 => ['name'=>'5分', 'badge'=>'am-badge-success'],
|
||||
];
|
||||
|
||||
/**
|
||||
* 订单评价
|
||||
* 订单评论
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
@ -74,12 +84,12 @@ class GoodsCommentsService
|
||||
[
|
||||
'checked_type' => 'isset',
|
||||
'key_name' => 'content',
|
||||
'error_msg' => '评价内容有误',
|
||||
'error_msg' => '评论内容有误',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'is_array',
|
||||
'key_name' => 'content',
|
||||
'error_msg' => '评价内容数据格式有误',
|
||||
'error_msg' => '评论内容数据格式有误',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
@ -108,7 +118,7 @@ class GoodsCommentsService
|
||||
}
|
||||
if($order['user_is_comments'] != 0)
|
||||
{
|
||||
return DataReturn('该订单你已进行过评价', -10);
|
||||
return DataReturn('该订单你已进行过评论', -10);
|
||||
}
|
||||
|
||||
// 处理数据
|
||||
@ -129,11 +139,11 @@ class GoodsCommentsService
|
||||
if(Db::name('GoodsComments')->insertGetId($data) <= 0)
|
||||
{
|
||||
Db::rollback();
|
||||
return DataReturn('评价内容添加失败', -100);
|
||||
return DataReturn('评论内容添加失败', -100);
|
||||
}
|
||||
}
|
||||
|
||||
// 订单评价状态更新
|
||||
// 订单评论状态更新
|
||||
if(!Db::name('Order')->where($where)->update(['user_is_comments'=>time(), 'upd_time'=>time()]))
|
||||
{
|
||||
Db::rollback();
|
||||
@ -141,7 +151,7 @@ class GoodsCommentsService
|
||||
}
|
||||
|
||||
Db::commit();
|
||||
return DataReturn('评价成功', 0);
|
||||
return DataReturn('评论成功', 0);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -201,6 +211,9 @@ class GoodsCommentsService
|
||||
}
|
||||
$v['msg'] = empty($msg) ? null : $msg;
|
||||
|
||||
// 评分
|
||||
$v['rating_text'] = self::$rating_list[$v['rating']]['name'];
|
||||
|
||||
// 是否
|
||||
$v['is_reply_text'] = isset($common_is_text_list[$v['is_reply']]) ? $common_is_text_list[$v['is_reply']]['name'] : '';
|
||||
$v['is_anonymous_text'] = isset($common_is_text_list[$v['is_anonymous']]) ? $common_is_text_list[$v['is_anonymous']]['name'] : '';
|
||||
@ -347,6 +360,76 @@ class GoodsCommentsService
|
||||
return $where;
|
||||
}
|
||||
|
||||
/**
|
||||
* 评论保存
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2018-07-17
|
||||
* @desc description
|
||||
* @param [array] $params [输入参数]
|
||||
*/
|
||||
public static function GoodsCommentsSave($params = [])
|
||||
{
|
||||
// 参数校验
|
||||
$p = [
|
||||
[
|
||||
'checked_type' => 'empty',
|
||||
'key_name' => 'id',
|
||||
'error_msg' => '操作id有误',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'in',
|
||||
'key_name' => 'business_type',
|
||||
'checked_data' => array_keys(self::$business_type_list),
|
||||
'error_msg' => '请选择业务类型',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'length',
|
||||
'key_name' => 'content',
|
||||
'checked_data' => '6,230',
|
||||
'error_msg' => '评论内容 6~230 个字符之间',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'length',
|
||||
'key_name' => 'reply',
|
||||
'checked_data' => '230',
|
||||
'error_msg' => '回复内容最多 230 个字符',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'in',
|
||||
'key_name' => 'rating',
|
||||
'checked_data' => array_keys(self::$rating_list),
|
||||
'error_msg' => '请选择评分',
|
||||
],
|
||||
];
|
||||
$ret = ParamsChecked($params, $p);
|
||||
if($ret !== true)
|
||||
{
|
||||
return DataReturn($ret, -1);
|
||||
}
|
||||
|
||||
// 开始操作
|
||||
$data = [
|
||||
'content' => $params['content'],
|
||||
'reply' => $params['reply'],
|
||||
'business_type' => $params['business_type'],
|
||||
'rating' => intval($params['rating']),
|
||||
'reply_time' => empty($params['reply_time']) ? 0 : strtotime($params['reply_time']),
|
||||
'is_reply' => isset($params['is_reply']) ? intval($params['is_reply']) : 0,
|
||||
'is_show' => isset($params['is_show']) ? intval($params['is_show']) : 0,
|
||||
'is_anonymous' => isset($params['is_anonymous']) ? intval($params['is_anonymous']) : 0,
|
||||
'upd_time' => time(),
|
||||
];
|
||||
|
||||
// 更新
|
||||
if(Db::name('GoodsComments')->where(['id'=>intval($params['id'])])->update($data))
|
||||
{
|
||||
return DataReturn('编辑成功', 0);
|
||||
}
|
||||
return DataReturn('编辑失败或数据不存在', -100);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除
|
||||
* @author Devil
|
||||
@ -373,7 +456,7 @@ class GoodsCommentsService
|
||||
}
|
||||
|
||||
// 开始删除
|
||||
if(Db::name('GoodsComments')->where(['id'=>$comments_id])->delete())
|
||||
if(Db::name('GoodsComments')->where(['id'=>intval($params['id'])])->delete())
|
||||
{
|
||||
return DataReturn('删除成功', 0);
|
||||
}
|
||||
@ -459,6 +542,12 @@ class GoodsCommentsService
|
||||
'checked_data' => [0,1],
|
||||
'error_msg' => '状态有误',
|
||||
],
|
||||
[
|
||||
'checked_type' => 'in',
|
||||
'key_name' => 'field',
|
||||
'checked_data' => ['is_anonymous', 'is_show', 'is_reply'],
|
||||
'error_msg' => '操作字段有误',
|
||||
],
|
||||
];
|
||||
$ret = ParamsChecked($params, $p);
|
||||
if($ret !== true)
|
||||
@ -467,11 +556,60 @@ class GoodsCommentsService
|
||||
}
|
||||
|
||||
// 数据更新
|
||||
if(Db::name('GoodsComments')->where(['id'=>intval($params['id'])])->update(['is_show'=>intval($params['state'])]))
|
||||
$data = [
|
||||
$params['field'] => intval($params['state']),
|
||||
'upd_time' => time(),
|
||||
];
|
||||
if(Db::name('GoodsComments')->where(['id'=>intval($params['id'])])->update($data))
|
||||
{
|
||||
return DataReturn('编辑成功');
|
||||
}
|
||||
return DataReturn('编辑失败或数据未改变', -100);
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品动态评分
|
||||
* @author Devil
|
||||
* @blog http://gong.gg/
|
||||
* @version 1.0.0
|
||||
* @date 2019-05-15
|
||||
* @desc description
|
||||
* @param [int] $goods_id [商品id]
|
||||
*/
|
||||
public static function GoodsCommentsScore($goods_id)
|
||||
{
|
||||
// 默认
|
||||
$rating_list = [
|
||||
1 => ['rating'=>1, 'name'=>'1分', 'count'=>0, 'portion'=>0],
|
||||
2 => ['rating'=>2, 'name'=>'2分', 'count'=>0, 'portion'=>0],
|
||||
3 => ['rating'=>3, 'name'=>'3分', 'count'=>0, 'portion'=>0],
|
||||
4 => ['rating'=>4, 'name'=>'4分', 'count'=>0, 'portion'=>0],
|
||||
5 => ['rating'=>5, 'name'=>'5分', 'count'=>0, 'portion'=>0],
|
||||
];
|
||||
$where = [
|
||||
['goods_id', '=', $goods_id],
|
||||
['rating', '>', 0],
|
||||
];
|
||||
$data = Db::name('GoodsComments')->where($where)->group('rating')->column('count(*) as count, rating', 'rating');
|
||||
if(!empty($data))
|
||||
{
|
||||
$sum = array_sum($data);
|
||||
foreach($data as $rating=>$count)
|
||||
{
|
||||
if($rating > 0 && $rating <= 5)
|
||||
{
|
||||
$rating_list[$rating]['count'] = $count;
|
||||
$rating_list[$rating]['portion'] = round($count/$sum, 2)*100;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sort($rating_list);
|
||||
$result = [
|
||||
'avg' => PriceNumberFormat(Db::name('GoodsComments')->where($where)->avg('rating'), 1),
|
||||
'rating' => $rating_list,
|
||||
];
|
||||
return DataReturn('操作成功', 0, $result);
|
||||
}
|
||||
}
|
||||
?>
|
File diff suppressed because one or more lines are too long
@ -1,7 +1,41 @@
|
||||
/**
|
||||
* 列表
|
||||
*/
|
||||
table.am-table .reply-content { max-width: 200px; max-height: 200px; overflow-y: scroll; overflow-x: hidden; }
|
||||
@media only screen and (max-width: 321px) {
|
||||
.view-operation button { margin: 2px 0px; }
|
||||
.content-right table.am-table .reply-content {
|
||||
max-width: 200px;
|
||||
max-height: 200px;
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
.content-right table.am-table .view-operation {
|
||||
width: 85px;
|
||||
}
|
||||
@media only screen and (max-width: 641px) {
|
||||
.content-right table.am-table td.content-info {
|
||||
width: 45%;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户信息
|
||||
*/
|
||||
.content-right .user-info img {
|
||||
max-width: 35px;
|
||||
max-height: 35px;
|
||||
margin: 0 5px 2px 0;
|
||||
}
|
||||
.content-right ul {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*/
|
||||
.content-right .am-alert p.title {
|
||||
font-weight: 700;
|
||||
font-size: 14px;
|
||||
margin: 0 0 5px 0;
|
||||
color: #888;
|
||||
}
|
@ -1,9 +1,20 @@
|
||||
/**
|
||||
* 公共
|
||||
*/
|
||||
.content-right table.am-table td.user-info,
|
||||
.content-right table.am-table td.goods-info,
|
||||
.content-right table.am-table td.content-info {
|
||||
width: 20%;
|
||||
}
|
||||
@media only screen and (max-width: 641px) {
|
||||
.content-right table.am-table td.content-info {
|
||||
width: 45%;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户信息
|
||||
*/
|
||||
.content-right table.am-table td.user-info {
|
||||
width: 200px;
|
||||
}
|
||||
.content-right .user-info img {
|
||||
max-width: 35px;
|
||||
max-height: 35px;
|
||||
@ -18,9 +29,6 @@
|
||||
/**
|
||||
* 商品信息
|
||||
*/
|
||||
.content-right table.am-table td.goods-info {
|
||||
width: 180px;
|
||||
}
|
||||
.content-right .goods-info .base {
|
||||
min-height: 57px;
|
||||
}
|
||||
@ -37,7 +45,7 @@
|
||||
* 列表
|
||||
*/
|
||||
.content-right table.am-table .reply-content {
|
||||
max-width: 180px;
|
||||
max-width: 100%;
|
||||
max-height: 130px;
|
||||
overflow-y: scroll;
|
||||
overflow-x: hidden;
|
||||
@ -47,4 +55,18 @@
|
||||
}
|
||||
.content-right table.am-table .view-operation {
|
||||
width: 85px;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*/
|
||||
.content-right .am-alert.goods-info a {
|
||||
color: #0e90d2;
|
||||
}
|
||||
.content-right .am-alert p.title {
|
||||
font-weight: 700;
|
||||
font-size: 14px;
|
||||
margin: 0 0 5px 0;
|
||||
color: #888;
|
||||
}
|
@ -1,17 +1,18 @@
|
||||
// 表单初始化
|
||||
FromInit('form.form-validation-reply');
|
||||
|
||||
$(function()
|
||||
{
|
||||
// 处理
|
||||
$('.submit-reply').on('click', function()
|
||||
{
|
||||
var json = $(this).data('json');
|
||||
$('#my-popup-reply input[name="id"]').val(json.id);
|
||||
$('.reply-name').html(json.name || '<span class="cr-ddd">未填写</span>');
|
||||
$('.reply-tel').html(json.tel || '<span class="cr-ddd">未填写</span>');
|
||||
});
|
||||
$('#my-popup-reply button[type="submit"]').on('click', function()
|
||||
{
|
||||
$('#my-popup-reply textarea[name="reply"]').attr('required', true);
|
||||
$('#my-popup-reply textarea[name="reply"]').blur();
|
||||
$('#my-popup-reply input[name="status"]').val(status);
|
||||
var $popup = $('#my-popup-reply');
|
||||
$popup.find('input[name="id"]').val(json.id);
|
||||
$popup.find('.user-info img').attr('src', json.user.avatar || $popup.find('.user-info img').attr('src'));
|
||||
$popup.find('.user-info .user-base .username span').html(json.user.username || '<span class="cr-ddd">未填写</span>');
|
||||
$popup.find('.user-info .user-base .nickname span').html(json.user.nickname || '<span class="cr-ddd">未填写</span>');
|
||||
$popup.find('.user-info .user-base .mobile span').html(json.user.mobile || '<span class="cr-ddd">未填写</span>');
|
||||
$popup.find('.user-info .user-base .email span').html(json.user.email || '<span class="cr-ddd">未填写</span>');
|
||||
});
|
||||
});
|
25
public/static/admin/default/js/goodscomments.js
Normal file
25
public/static/admin/default/js/goodscomments.js
Normal file
@ -0,0 +1,25 @@
|
||||
// 表单初始化
|
||||
FromInit('form.form-validation-reply');
|
||||
|
||||
$(function()
|
||||
{
|
||||
// 处理
|
||||
$('.submit-reply').on('click', function()
|
||||
{
|
||||
var json = $(this).data('json');
|
||||
var $popup = $('#my-popup-reply');
|
||||
$popup.find('input[name="id"]').val(json.id);
|
||||
$popup.find('.user-info img').attr('src', json.user.avatar || $popup.find('.user-info img').attr('src'));
|
||||
$popup.find('.user-info .user-base .username span').html(json.user.username || '<span class="cr-ddd">未填写</span>');
|
||||
$popup.find('.user-info .user-base .nickname span').html(json.user.nickname || '<span class="cr-ddd">未填写</span>');
|
||||
$popup.find('.user-info .user-base .mobile span').html(json.user.mobile || '<span class="cr-ddd">未填写</span>');
|
||||
$popup.find('.user-info .user-base .email span').html(json.user.email || '<span class="cr-ddd">未填写</span>');
|
||||
|
||||
$popup.find('.goods-info .base a').attr('href', json.goods.goods_url || 'javascript:;');
|
||||
$popup.find('.goods-info .base img').attr('src', json.goods.images || $popup.find('.goods-info .base img').attr('src'));
|
||||
$popup.find('.goods-info .title').html(json.goods.title);
|
||||
$popup.find('.goods-info .price').html('¥'+json.goods.price);
|
||||
|
||||
$popup.find('.content').html(json.content || '<span class="cr-ddd">没有评论内容</span>');
|
||||
});
|
||||
});
|
@ -50,7 +50,6 @@ input{font-size:12px;font-size:100%;outline:none;line-height:normal;color:#444;}
|
||||
.introduce-main .am-sticky-placeholder { margin: 0px !important; }
|
||||
.am-sticky-placeholder .am-nav-tabs > li span { color: #888; }
|
||||
.am-sticky-placeholder .am-nav-tabs > li.am-active span { color: #333; }
|
||||
.buy-nav-opt span { font-size: 12px; color: #555; }
|
||||
.attr-not-active { border: 1px solid #f03726 !important; box-shadow: 0 0px 3px #ed7f76, 0 0 6px rgba(0, 0, 0, 0); }
|
||||
.sku-items-disabled { color: #d2cfcf !important; background-color: #ffffff !important; border: 1px dashed #d5d5d5 !important; box-shadow: none !important; }
|
||||
.sku-dont-choose { color: #b4b3b3 !important; background-color: #ffffff !important; border: 1px solid #ebeaea !important; box-shadow: none !important; }
|
||||
@ -58,11 +57,13 @@ input{font-size:12px;font-size:100%;outline:none;line-height:normal;color:#444;}
|
||||
.sku-items-disabled img{ opacity: 0.3; }
|
||||
|
||||
/* 购买导航 */
|
||||
.buy-nav { position: fixed; bottom: 0px; right: 0px; z-index: 1000; width: 100%; background: #fff; }
|
||||
.buy-nav-opt a { color: #666; }
|
||||
.text-active { color: #cf2915 !important; }
|
||||
.buy-nav-opt span { font-size: 12px; color: #555; }
|
||||
|
||||
/* 商品评论 */
|
||||
.goods-comment .am-comment { margin-top: 15px; }
|
||||
.goods-comment .am-comment { margin-top: 15px; text-align: left; }
|
||||
.goods-comment .am-comment-main { border: 1px solid #eee; }
|
||||
.goods-comment .comment-spec { margin-top: 5px; color: #B0B0B0; }
|
||||
.comment-reply { border-top: 1px dashed #eee; margin-top: 10px; padding-top: 10px; }
|
||||
@ -71,6 +72,15 @@ input{font-size:12px;font-size:100%;outline:none;line-height:normal;color:#444;}
|
||||
.comment-reply-title { color: #666; }
|
||||
.comment-reply-desc { color: #905602; }
|
||||
|
||||
/* 评分 */
|
||||
.score-container { border-color: #eee; padding: 15px 25px; border-style: none solid solid solid; border-width: 1px; }
|
||||
.score-container .score { width: 80px; border-right: 1px solid #eee; padding-right: 25px; }
|
||||
.score-container .score .name { color: #666; }
|
||||
.score-container .score .value { color: #f03726; font-weight: 700; font-size: 32px; line-height: 32px; margin-top: 5px; }
|
||||
.score-container .am-progress { width: calc(100% - 105px); margin-bottom: 0; margin-top: 18px; line-height: 2rem; }
|
||||
|
||||
/*详情*/
|
||||
.detail-content img { max-width: 100%; }
|
||||
|
||||
@media only screen and (min-width:640px) {
|
||||
.theme-span{height:0px;background:#fff ;}
|
||||
@ -244,63 +254,17 @@ color:#F03726;font-size: 14px;text-align: center;border: 0;}
|
||||
.buy-nav div.submit { width: 30%; }
|
||||
.buy-nav span{display:inline-block;width: 50%;float: left; ;cursor: pointer; border-top: 1px solid #f5f5f5; border-left: 1px solid #f5f5f5;}
|
||||
|
||||
li.am-active hr{border-top: 1px solid #f00;}
|
||||
|
||||
/*搭配*/
|
||||
.match-title{height: 36px;line-height: 36px;font-size: 16px;margin: 0px 10px;border-bottom: 1px solid #E6E6E6;color:#E4393C;font-weight: 700;}
|
||||
.like_list{overflow: hidden;}
|
||||
.like_list li{float: left;margin-left: 5px;margin-right: 5px;padding-bottom: 15px;text-align: center;}
|
||||
.info-box-price { color: #E4393C;font-size: 16px;font-family: arial;font-weight: 600;}
|
||||
.info-original-price {display:none;text-decoration: line-through;font-size: 12px;color: #999;margin-left: 5px;font-family: arial;font-weight: 400;}
|
||||
.like_list .plus_icon {width: 10px;text-align: center;font-size: 20px;color: #C3C3C3;height:100px ;line-height:100px;margin:0px 0px;}
|
||||
.like_list .total_price p {font-size: 12px;padding-bottom: 8px;}
|
||||
.like_list .total_price .combo_price span {font-size: 16px;color: #E4393C;font-weight: 600;}
|
||||
.like_list .total_price {margin-top:35px;}
|
||||
.like_list .total_price .buy_now {background-color: #F03726; color: #FFF;margin:0px auto;text-align: center;margin-top: 4px;
|
||||
width: 62px;line-height:24px;font-size: 12px;display: block;}
|
||||
.c-title{display: none;}
|
||||
.like_list .plus_icon i.am-icon-angle-right{position: absolute;right:10px;font-weight:600 ;}
|
||||
.match-comment{border-bottom: 1px solid #E6E6E6;}
|
||||
/*介绍*/
|
||||
.introduce{width:100%;margin: 0px auto;text-align: center;padding-bottom: 20px;}
|
||||
.introduce-main{width:100%;background:#fff ;}
|
||||
.introduce-main .am-tab-panel { padding: 0px; }
|
||||
.browse{display: none;}
|
||||
|
||||
|
||||
/*产品参数*/
|
||||
ul.detail-attr{overflow: hidden;text-align: left;}
|
||||
ul.detail-attr li {height: 26px;overflow: hidden;line-height: 26px;vertical-align: top;white-space: nowrap; text-overflow: ellipsis;color: #666;font-size:14px;}
|
||||
|
||||
/*详情内容*/
|
||||
.detail-content img,.sh .return-process img{ max-width: 100%; height: auto; }
|
||||
|
||||
|
||||
/*评价*/
|
||||
.tb-tbcr-content {color: #3F3F3F;font-size: 14px;}
|
||||
.tb-tbc-rate .tb-r-act-bar {margin-top: 10px;float: left;font-size:10px ;color: #B0B0B0;}
|
||||
|
||||
.tb-r-filter-bar li{ float:left;text-align:center;width:25%;}
|
||||
.tb-taglist-li .comment-info{}
|
||||
|
||||
.am-pagination li{ float:none;}
|
||||
li.am-comment{ width:100%}
|
||||
.am-comments-list-flip .am-comment-main {margin-right: 0px;}
|
||||
|
||||
/*印象*/
|
||||
.actor-new{position: relative;margin-top:10px ;}
|
||||
.rate {display: none;}
|
||||
.actor-new dt{height: 36px;line-height: 36px;font-size: 16px;margin: 0px 10px;color: #E4393C;font-weight: 700;text-align: left;}
|
||||
.actor-new .comm-tags {float: left;height: 21px;line-height: 21px;padding: 0 7px;margin-right: 5px;background:#f47602;margin-bottom: 10px;color:#fff ;}
|
||||
.p-bfc{overflow: hidden;max-height:62px ;padding:0px 20px 0px 10px;}
|
||||
|
||||
|
||||
.actor-new i {position: absolute;right:10px;top:36px;font-size:18px ;color:#C3C3C3 ;}
|
||||
|
||||
/*须知*/
|
||||
.tb-rate-alert {border: 1px solid #EEE;padding: 4px 8px;position: relative;background-color: #FFE;border-color: #FC7;font: 16px/1.5 tahoma,arial,"Hiragino Sans GB",宋体,sans-serif}
|
||||
.am-breadcrumb-slash{max-width:1000px ;margin:10px auto ;}
|
||||
|
||||
|
||||
/*推荐商品*/
|
||||
.like{margin-top:25px;border-radius:4px;}
|
||||
.like li{ float:left; padding:8px 10px 0;font: 14px/1.5 tahoma,arial,"Hiragino Sans GB",宋体,sans-serif;}
|
||||
@ -309,21 +273,16 @@ li.am-comment{ width:100%}
|
||||
font-size: 14px; color: #E4393C;font-weight: 400;font-family: Verdana;}
|
||||
.like li img{width:100%}
|
||||
|
||||
.footer { margin:0px auto; margin-top:20px;}
|
||||
.hwsize tr th{ text-align:center;}
|
||||
|
||||
|
||||
/*改写的样式*/
|
||||
/*轮播*/
|
||||
.clearfix-left{display:none;}
|
||||
.scoll img{width:100%; margin-left:0}
|
||||
.am-comment-main,#J_AttrUL{ text-align:left;}
|
||||
.tb-r-filter-bar{ margin-top:20px;}
|
||||
.buy-nav{ position:fixed; bottom:0px;right:0px; z-index:1000;width:100% ;background:#fff ;}
|
||||
.nav.white,.tip{z-index:999}
|
||||
|
||||
/* 文字提示 */
|
||||
.goods-not-buy-tips { color: #FF5722; margin: 5px 0; font-size: 14px; }
|
||||
|
||||
/*左侧商品-看了又看*/
|
||||
.browse { display: none; }
|
||||
|
||||
@media only screen and (min-width:640px) {
|
||||
/*导航固定*/
|
||||
ul.am-tabs-nav.am-nav.am-nav-tabs {margin-right:10px ;margin-left: 10px;width: auto;}
|
||||
@ -414,7 +373,7 @@ li.am-comment{ width:100%}
|
||||
.freight{width:400px;float: left;}
|
||||
.iteminfo_parameter.freight dt{padding-top:6px ;padding-bottom:0px ;}
|
||||
|
||||
/*介绍*/
|
||||
/*左侧商品-看了又看*/
|
||||
.introduce-main{width:80%;float:left;background:#fff ;}
|
||||
.browse{display:block; float:left;width:20% ;}
|
||||
.browse ul{border:1px solid #eee ;width: 90%;}
|
||||
@ -482,6 +441,11 @@ li.am-comment{ width:100%}
|
||||
/* 商品评论 */
|
||||
.goods-comment .am-comment { margin-left: 5px; margin-right: 5px; }
|
||||
|
||||
/* 商品评分 */
|
||||
.score-container { padding: 10px; border-style: none none solid none; }
|
||||
.score-container .score { padding-right: 10px; }
|
||||
.score-container .am-progress { width: calc(100% - 90px); }
|
||||
|
||||
/* 底部 */
|
||||
.am-footer { padding-bottom: 35px; }
|
||||
}
|
@ -28,15 +28,22 @@ function poptit_close()
|
||||
*/
|
||||
function GoodsCommentsHtml(page)
|
||||
{
|
||||
$('.goods-page-no-data').addClass('none');
|
||||
if((page || 1) <= 1)
|
||||
{
|
||||
$('.goods-page-no-data').removeClass('none');
|
||||
$('.goods-page-no-data span').text('加载中...');
|
||||
} else {
|
||||
$('.goods-page-no-data').addClass('none');
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: $('.goods-comment').data('url'),
|
||||
type:'POST',
|
||||
data:{"goods_id": $('.goods-comment').data('goods-id'), "page": page},
|
||||
data:{"goods_id": $('.goods-comment').data('goods-id'), "page": page || 1},
|
||||
dataType:'json',
|
||||
success:function(result)
|
||||
{
|
||||
$('.goods-page-no-data').addClass('none');
|
||||
if(result.code == 0)
|
||||
{
|
||||
var html = '';
|
||||
@ -80,7 +87,13 @@ function GoodsCommentsHtml(page)
|
||||
if($('.goods-comment-content article').length <= 0)
|
||||
{
|
||||
$('.goods-page-no-data').removeClass('none');
|
||||
$('.goods-page-no-data span').text('没有评论数据');
|
||||
}
|
||||
},
|
||||
error:function(result)
|
||||
{
|
||||
$('.goods-page-no-data').removeClass('none');
|
||||
$('.goods-page-no-data span').text('请求出现错误,请稍后再试!');
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -604,6 +617,13 @@ $(function() {
|
||||
$('.introduce-main .am-tabs').tabs('open', 1);
|
||||
});
|
||||
|
||||
// tab事件
|
||||
$('.introduce-main .am-tabs li').on('click', function()
|
||||
{
|
||||
var top = $('.introduce-main').offset().top;
|
||||
$(window).smoothScroll({position: top});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
// 浏览器窗口实时事件
|
||||
|
Loading…
Reference in New Issue
Block a user