提交 8e548619 编写于 作者: D devil_gong

商品评论

上级 71a7c9b7
...@@ -77,14 +77,13 @@ class Answer extends Common ...@@ -77,14 +77,13 @@ class Answer extends Common
'm' => $page->GetPageStarNumber(), 'm' => $page->GetPageStarNumber(),
'n' => $number, 'n' => $number,
'where' => $where, 'where' => $where,
'is_public' => 0,
); );
$data = AnswerService::AnswerList($data_params); $data = AnswerService::AnswerList($data_params);
$this->assign('data_list', $data['data']); $this->assign('data_list', $data['data']);
// 状态 // 静态数据
$this->assign('common_is_show_list', lang('common_is_show_list')); $this->assign('common_is_show_list', lang('common_is_show_list'));
// 是否
$this->assign('common_is_text_list', lang('common_is_text_list')); $this->assign('common_is_text_list', lang('common_is_text_list'));
// 参数 // 参数
...@@ -110,10 +109,11 @@ class Answer extends Common ...@@ -110,10 +109,11 @@ class Answer extends Common
{ {
// 获取列表 // 获取列表
$data_params = array( $data_params = array(
'm' => 0, 'm' => 0,
'n' => 1, 'n' => 1,
'where' => ['id'=>intval($params['id'])], 'where' => ['id'=>intval($params['id'])],
'field' => '*', 'field' => '*',
'is_public' => 0,
); );
$ret = AnswerService::AnswerList($data_params); $ret = AnswerService::AnswerList($data_params);
...@@ -133,10 +133,8 @@ class Answer extends Common ...@@ -133,10 +133,8 @@ class Answer extends Common
} }
$this->assign('data', $data); $this->assign('data', $data);
// 状态 // 静态数据
$this->assign('common_is_show_list', lang('common_is_show_list')); $this->assign('common_is_show_list', lang('common_is_show_list'));
// 是否
$this->assign('common_is_text_list', lang('common_is_text_list')); $this->assign('common_is_text_list', lang('common_is_text_list'));
// 参数 // 参数
......
...@@ -13,7 +13,7 @@ namespace app\admin\controller; ...@@ -13,7 +13,7 @@ namespace app\admin\controller;
use app\service\GoodsCommentsService; use app\service\GoodsCommentsService;
/** /**
* 商品评管理 * 商品评管理
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 0.0.1 * @version 0.0.1
...@@ -85,6 +85,7 @@ class Goodscomments extends Common ...@@ -85,6 +85,7 @@ class Goodscomments extends Common
// 静态数据 // 静态数据
$this->assign('common_is_show_list', lang('common_is_show_list')); $this->assign('common_is_show_list', lang('common_is_show_list'));
$this->assign('common_is_text_list', lang('common_is_text_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); $this->assign('business_type_list', GoodsCommentsService::$business_type_list);
// 参数 // 参数
...@@ -110,34 +111,21 @@ class Goodscomments extends Common ...@@ -110,34 +111,21 @@ class Goodscomments extends Common
{ {
// 获取列表 // 获取列表
$data_params = array( $data_params = array(
'm' => 0, 'm' => 0,
'n' => 1, 'n' => 1,
'where' => ['id'=>intval($params['id'])], 'where' => ['id'=>intval($params['id'])],
'field' => '*', 'is_public' => 0,
); );
$ret = GoodsCommentsService::AnswerList($data_params); $ret = GoodsCommentsService::GoodsCommentsList($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']);
}
$data = empty($ret['data'][0]) ? [] : $ret['data'][0]; $data = empty($ret['data'][0]) ? [] : $ret['data'][0];
} }
$this->assign('data', $data); $this->assign('data', $data);
// 状态 // 静态数据
$this->assign('common_is_show_list', lang('common_is_show_list')); $this->assign('common_is_show_list', lang('common_is_show_list'));
// 是否
$this->assign('common_is_text_list', lang('common_is_text_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']); unset($params['id']);
...@@ -163,7 +151,7 @@ class Goodscomments extends Common ...@@ -163,7 +151,7 @@ class Goodscomments extends Common
// 开始处理 // 开始处理
$params = input(); $params = input();
return GoodsCommentsService::AnswerSave($params); return GoodsCommentsService::GoodsCommentsSave($params);
} }
/** /**
......
...@@ -78,15 +78,15 @@ ...@@ -78,15 +78,15 @@
<table class="am-table am-table-striped am-table-hover am-text-middle m-t-10"> <table class="am-table am-table-striped am-table-hover am-text-middle m-t-10">
<thead> <thead>
<tr> <tr>
<th class="am-hide-sm-only">用户信息</th> <th class="am-hide-md-down">用户信息</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>内容</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 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>
<th>操作</th> <th>操作</th>
</tr> </tr>
...@@ -95,23 +95,19 @@ ...@@ -95,23 +95,19 @@
{{if !empty($data_list)}} {{if !empty($data_list)}}
{{foreach $data_list as $v}} {{foreach $data_list as $v}}
<tr id="data-list-{{$v.id}}" {{if $v['is_show'] eq 0}}class="am-active"{{/if}}> <tr id="data-list-{{$v.id}}" {{if $v['is_show'] eq 0}}class="am-active"{{/if}}>
<td class="am-hide-sm-only"> <td class="user-info am-hide-md-down">
{{if !empty($v['username'])}} {{if !empty($v['user'])}}
{{$v.username}} <img src="{{$v.user.avatar}}" alt="{{$v.user.user_name_view}}" class="am-img-thumbnail am-radius am-align-left" />
{{if !empty($v['nickname'])}} <ul class="user-base">
({{$v.nickname}}) <li>名称:{{if empty($v['user']['username'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$v.user.username}}{{/if}}</li>
{{/if}} <li>昵称:{{if empty($v['user']['nickname'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$v.user.nickname}}{{/if}}</li>
{{if !empty($v['gender_text'])}} <li>手机:{{if empty($v['user']['mobile'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$v.user.mobile}}{{/if}}</li>
({{$v.gender_text}}) <li>邮箱:{{if empty($v['user']['email'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$v.user.email}}{{/if}}</li>
{{/if}} </ul>
{{/if}} {{else /}}
{{if !empty($v['mobile'])}} 用户信息异常
<br />{{$v.mobile}} {{/if}}
{{/if}} </td>
{{if empty($v['username']) and empty($v['mobile'])}}
<span class="cr-ddd"></span>
{{/if}}
</td>
<td class="am-hide-sm-only"> <td class="am-hide-sm-only">
{{if !empty($v['name']) and !empty($v['tel'])}} {{if !empty($v['name']) and !empty($v['tel'])}}
{{$v.name}} {{$v.name}}
...@@ -125,8 +121,8 @@ ...@@ -125,8 +121,8 @@
<span class="cr-ddd">未填写</span> <span class="cr-ddd">未填写</span>
{{/if}} {{/if}}
</td> </td>
<td>{{$v.title}}</td> <td class="am-hide-sm-only">{{$v.title}}</td>
<td class="am-hide-sm-only"> <td class="content-info">
<div class="reply-content"> <div class="reply-content">
{{$v.content|raw}} {{$v.content|raw}}
</div> </div>
...@@ -143,7 +139,7 @@ ...@@ -143,7 +139,7 @@
<td class="am-hide-sm-only">{{$v.access_count}}</td> <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.reply_time}}</td>
<td class="am-hide-sm-only">{{$v.add_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> <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>
<td> <td>
...@@ -158,22 +154,18 @@ ...@@ -158,22 +154,18 @@
<div class="am-popup-bd"> <div class="am-popup-bd">
<dl class="dl-content"> <dl class="dl-content">
<dt>用户信息</dt> <dt>用户信息</dt>
<dd> <dd class="user-info">
{{if !empty($v['username'])}} {{if !empty($v['user'])}}
{{$v.username}} <img src="{{$v.user.avatar}}" alt="{{$v.user.user_name_view}}" class="am-img-thumbnail am-radius am-align-left" />
{{if !empty($v['nickname'])}} <ul class="user-base">
({{$v.nickname}}) <li>名称:{{if empty($v['user']['username'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$v.user.username}}{{/if}}</li>
{{/if}} <li>昵称:{{if empty($v['user']['nickname'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$v.user.nickname}}{{/if}}</li>
{{if !empty($v['gender_text'])}} <li>手机:{{if empty($v['user']['mobile'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$v.user.mobile}}{{/if}}</li>
({{$v.gender_text}}) <li>邮箱:{{if empty($v['user']['email'])}}<span class="cr-ccc">未填写</span>{{else /}}{{$v.user.email}}{{/if}}</li>
{{/if}} </ul>
{{/if}} {{else /}}
{{if !empty($v['mobile'])}} 用户信息异常
<br />{{$v.mobile}} {{/if}}
{{/if}}
{{if empty($v['username']) and empty($v['mobile'])}}
<span class="cr-ddd"></span>
{{/if}}
</dd> </dd>
<dt>联系人</dt> <dt>联系人</dt>
...@@ -223,13 +215,11 @@ ...@@ -223,13 +215,11 @@
</div> </div>
</td> </td>
<td class="view-operation"> <td class="view-operation">
<a href="{{:MyUrl('admin/answer/saveinfo', array_merge($params, ['id'=>$v['id']]))}}"> <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>
<button class="am-btn am-btn-secondary am-btn-xs am-radius am-icon-edit"> 编辑</button>
</a>
{{if $v['is_reply'] eq 0}} {{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}} {{/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> </td>
</tr> </tr>
{{/foreach}} {{/foreach}}
...@@ -250,21 +240,27 @@ ...@@ -250,21 +240,27 @@
</div> </div>
<div class="am-popup-bd"> <div class="am-popup-bd">
<dl class="dl-content"> <dl class="dl-content">
<dt>联系人</dt> <dt>用户信息</dt>
<dd> <dd class="user-info">
<span class="reply-name"></span> - <span class="reply-tel"></span> <img src="{{$attachment_host}}/static/common/images/user-img-sm.gif" class="am-img-thumbnail am-radius am-align-left" />
</dd> <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> </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"> <div class="am-form-group">
<label>回复内容</label> <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>
<div class="am-form-group reply-submit am-form-group-refreshing t-c"> <div class="am-form-group reply-submit am-form-group-refreshing t-c">
<input type="hidden" name="id" value="" /> <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> </div>
</form> </form>
</div> </div>
......
...@@ -15,6 +15,21 @@ ...@@ -15,6 +15,21 @@
</span> </span>
<a href="{{:MyUrl('admin/answer/index', $params)}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> 返回</a> <a href="{{:MyUrl('admin/answer/index', $params)}}" class="fr fs-14 m-t-5 am-icon-mail-reply"> 返回</a>
</legend> </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"> <div class="am-form-group">
<label>联系人</label> <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}}" /> <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 @@ ...@@ -97,8 +97,9 @@
<th class="am-hide-md-down">商品信息</th> <th class="am-hide-md-down">商品信息</th>
<th class="am-hide-md-down">用户信息</th> <th class="am-hide-md-down">用户信息</th>
<th class="am-hide-sm-only">业务类型</th> <th class="am-hide-sm-only">业务类型</th>
<th>评价内容</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 class="am-hide-sm-only">匿名</th>
<th class="am-hide-sm-only">显示</th> <th class="am-hide-sm-only">显示</th>
<th>更多</th> <th>更多</th>
...@@ -110,20 +111,14 @@ ...@@ -110,20 +111,14 @@
{{foreach $data_list as $v}} {{foreach $data_list as $v}}
<tr id="data-list-{{$v.id}}" {{if $v['is_show'] eq 0}}class="am-active"{{/if}}> <tr id="data-list-{{$v.id}}" {{if $v['is_show'] eq 0}}class="am-active"{{/if}}>
<td class="goods-info am-hide-md-down"> <td class="goods-info am-hide-md-down">
{{if !empty($v['user'])}} {{if !empty($v['goods'])}}
<div class="base"> <div class="base">
<a href="{{$v.goods.goods_url}}" target="_blank"> <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" /> <img src="{{$v.goods.images}}" alt="{{$v.goods.title}}" class="am-img-thumbnail am-radius am-align-left" />
</a> </a>
<a class="am-text-top" href="{{$v.goods.goods_url}}" target="_blank"> <a class="am-text-top" href="{{$v.goods.goods_url}}" target="_blank">{{$v.goods.title}}</a>
{{if mb_strlen($v['goods']['title']) gt 23}}
{{:mb_substr($v['goods']['title'], 0, 23, 'utf-8')}} ...
{{else /}}
{{$v.goods.title}}
{{/if}}
</a>
</div> </div>
<p>¥{{$v.goods.min_price}}</p> <p>¥{{$v.goods.price}}</p>
{{else /}} {{else /}}
商品信息异常 商品信息异常
{{/if}} {{/if}}
...@@ -142,21 +137,22 @@ ...@@ -142,21 +137,22 @@
{{/if}} {{/if}}
</td> </td>
<td class="am-hide-sm-only">{{$v.business_type_text}}</td> <td class="am-hide-sm-only">{{$v.business_type_text}}</td>
<td> <td class="content-info">
<div class="reply-content"> <div class="reply-content">
{{$v.content}} {{$v.content}}
</div> </div>
</td> </td>
<td class="am-hide-sm-only"> <td class="am-hide-sm-only">
{{if $v['is_reply'] eq 1 and !empty($v['reply'])}} <span class="am-badge am-radius {{$rating_list[$v['rating']]['badge']}}">{{$v.rating_text}}</span>
已回复 </td>
{{else /}} <td class="am-hide-sm-only">
<span class="cr-ddd">未回复</span> <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>
{{/if}} </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>
<td class="am-hide-sm-only">{{$v.is_anonymous_text}}</td>
<td class="am-hide-sm-only"> <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_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>
<td> <td>
<span class="am-icon-caret-down c-p" data-am-modal="{target: '#my-popup{{$v.id}}'}"> 查看更多</span> <span class="am-icon-caret-down c-p" data-am-modal="{target: '#my-popup{{$v.id}}'}"> 查看更多</span>
...@@ -171,20 +167,14 @@ ...@@ -171,20 +167,14 @@
<dl class="dl-content"> <dl class="dl-content">
<dt>商品信息</dt> <dt>商品信息</dt>
<dd class="goods-info am-hide-md-down"> <dd class="goods-info am-hide-md-down">
{{if !empty($v['user'])}} {{if !empty($v['goods'])}}
<div class="base"> <div class="base">
<a href="{{$v.goods.goods_url}}" target="_blank"> <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" /> <img src="{{$v.goods.images}}" alt="{{$v.goods.title}}" class="am-img-thumbnail am-radius am-align-left" />
</a> </a>
<a class="am-text-top" href="{{$v.goods.goods_url}}" target="_blank"> <a class="am-text-top" href="{{$v.goods.goods_url}}" target="_blank">{{$v.goods.title}}</a>
{{if mb_strlen($v['goods']['title']) gt 23}}
{{:mb_substr($v['goods']['title'], 0, 23, 'utf-8')}} ...
{{else /}}
{{$v.goods.title}}
{{/if}}
</a>
</div> </div>
<p>¥{{$v.goods.min_price}}</p> <p>¥{{$v.goods.price}}</p>
{{else /}} {{else /}}
商品信息异常 商品信息异常
{{/if}} {{/if}}
...@@ -208,8 +198,13 @@ ...@@ -208,8 +198,13 @@
<dt>业务类型</dt> <dt>业务类型</dt>
<dd>{{$v.business_type_text}}</dd> <dd>{{$v.business_type_text}}</dd>
<dt>评价内容</dt> <dt>评论内容</dt>
<dd>{{$v.content|raw}}</dd> <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> <dt>是否匿名</dt>
<dd>{{$v.is_anonymous_text}}</dd> <dd>{{$v.is_anonymous_text}}</dd>
...@@ -224,7 +219,7 @@ ...@@ -224,7 +219,7 @@
<dd> <dd>
{{if $v['is_reply'] eq 1 and !empty($v['reply'])}} {{if $v['is_reply'] eq 1 and !empty($v['reply'])}}
<div class="reply-content"> <div class="reply-content">
{{$v.reply|raw}} {{$v.reply}}
</div> </div>
{{else /}} {{else /}}
<span class="cr-ddd">未回复</span> <span class="cr-ddd">未回复</span>
...@@ -270,21 +265,40 @@ ...@@ -270,21 +265,40 @@
</div> </div>
<div class="am-popup-bd"> <div class="am-popup-bd">
<dl class="dl-content"> <dl class="dl-content">
<dt>联系人</dt> <dt>商品信息</dt>
<dd> <dd class="goods-info">
<span class="reply-name"></span> - <span class="reply-tel"></span> <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> </dd>
<dt>评论内容</dt>
<dd class="content">...</dd>
</dl> </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"> <div class="am-form-group">
<label>回复内容</label> <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>
<div class="am-form-group reply-submit am-form-group-refreshing t-c"> <div class="am-form-group reply-submit am-form-group-refreshing t-c">
<input type="hidden" name="id" value="" /> <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> </div>
</form> </form>
</div> </div>
......
{{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 -->
\ No newline at end of file
...@@ -80,10 +80,8 @@ class Answer extends Common ...@@ -80,10 +80,8 @@ class Answer extends Common
$data = AnswerService::AnswerList($data_params); $data = AnswerService::AnswerList($data_params);
$this->assign('data_list', $data['data']); $this->assign('data_list', $data['data']);
// 状态 // 静态数据
$this->assign('common_is_show_list', lang('common_is_show_list')); $this->assign('common_is_show_list', lang('common_is_show_list'));
// 是否
$this->assign('common_is_text_list', lang('common_is_text_list')); $this->assign('common_is_text_list', lang('common_is_text_list'));
// 参数 // 参数
...@@ -91,5 +89,26 @@ class Answer extends Common ...@@ -91,5 +89,26 @@ class Answer extends Common
return $this->fetch(); 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);
}
} }
?> ?>
\ No newline at end of file
...@@ -91,6 +91,10 @@ class Goods extends Common ...@@ -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)))])); $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]); GoodsService::GoodsAccessCountInc(['goods_id'=>$goods_id]);
......
...@@ -90,12 +90,13 @@ ...@@ -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>
<th class="am-hide-sm-only">时间</th> <th class="am-hide-sm-only">时间</th>
<th class="am-hide-sm-only">操作</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{{if !empty($data_list)}} {{if !empty($data_list)}}
{{foreach $data_list as $v}} {{foreach $data_list as $v}}
<tr> <tr id="data-list-{{$v.id}}">
<td>{{$v.name}}</td> <td>{{$v.name}}</td>
<td>{{$v.tel}}</td> <td>{{$v.tel}}</td>
<td>{{$v.title}}</td> <td>{{$v.title}}</td>
...@@ -110,6 +111,9 @@ ...@@ -110,6 +111,9 @@
<td class="am-hide-sm-only">{{$v.is_show_text}}</td> <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.reply_time}}</td>
<td class="am-hide-sm-only">{{$v.add_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> </tr>
{{/foreach}} {{/foreach}}
{{/if}} {{/if}}
......
...@@ -432,6 +432,36 @@ ...@@ -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-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-comment-content"></div>
<div class="goods-page-container"></div> <div class="goods-page-container"></div>
<div class="table-no goods-page-no-data none"> <div class="table-no goods-page-no-data none">
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
<tr> <tr>
<th>商品信息</th> <th>商品信息</th>
<th class="am-hide-sm-only">单价</th> <th class="am-hide-sm-only">单价</th>
<th>内容</th> <th>内容</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
...@@ -79,7 +79,7 @@ ...@@ -79,7 +79,7 @@
</ul> </ul>
<input type="text" name="rating[]" value="" class="input-rating" data-validation-message="请选择评分" required /> <input type="text" name="rating[]" value="" class="input-rating" data-validation-message="请选择评分" required />
</div> </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}}" /> <input type="hidden" name="goods_id[]" value="{{$goods.goods_id}}" />
</td> </td>
</tr> </tr>
...@@ -100,7 +100,7 @@ ...@@ -100,7 +100,7 @@
</div> </div>
</form> </form>
{{else /}} {{else /}}
<div class="table-no"><i class="am-icon-warning"></i> 你已进行过评</div> <div class="table-no"><i class="am-icon-warning"></i> 你已进行过评</div>
{{/if}} {{/if}}
</div> </div>
</div> </div>
......
...@@ -102,9 +102,9 @@ ...@@ -102,9 +102,9 @@
</select> </select>
</td> </td>
<td> <td>
<span></span> <span></span>
<select name="is_comments" class="chosen-select" data-placeholder="评状态..."> <select name="is_comments" class="chosen-select" data-placeholder="评状态...">
<option value="-1">状态...</option> <option value="-1">状态...</option>
{{if !empty($common_comments_status_list)}} {{if !empty($common_comments_status_list)}}
{{foreach $common_comments_status_list as $comments}} {{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> <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 @@ ...@@ -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> <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}}
{{if in_array($order['status'], [4]) and $order['user_is_comments'] eq 0}} {{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}}
{{if in_array($order['status'], [4,5,6])}} {{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> <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 ...@@ -323,7 +323,6 @@ class Service
{ {
// 条件 // 条件
$where = [ $where = [
['is_delete_time', '=', 0],
['is_show', '=', 1], ['is_show', '=', 1],
]; ];
...@@ -382,7 +381,6 @@ class Service ...@@ -382,7 +381,6 @@ class Service
} }
// 条件 // 条件
$where = [ $where = [
['is_delete_time', '=', 0],
['is_show', '=', 1], ['is_show', '=', 1],
['id', '=', intval($params['id'])], ['id', '=', intval($params['id'])],
]; ];
......
...@@ -63,12 +63,16 @@ class AnswerService ...@@ -63,12 +63,16 @@ class AnswerService
// 用户信息 // 用户信息
if(isset($v['user_id'])) if(isset($v['user_id']))
{ {
$user = Db::name('User')->where(['id'=>$v['user_id']])->field('username,nickname,mobile,gender,avatar')->find(); $user = UserService::GetUserViewInfo($v['user_id']);
$v['username'] = empty($user['username']) ? '' : $user['username']; if(!isset($params['is_public']) || $params['is_public'] == 1)
$v['nickname'] = empty($user['nickname']) ? '' : $user['nickname']; {
$v['mobile'] = empty($user['mobile']) ? '' : $user['mobile']; $v['user'] = [
$v['avatar'] = empty($user['avatar']) ? '' : $user['avatar']; 'avatar' => $user['avatar'],
$v['gender_text'] = isset($user['gender']) ? $common_gender_list[$user['gender']]['name'] : ''; 'user_name_view' => $user['user_name_view'],
];
} else {
$v['user'] = $user;
}
} }
// 是否显示 // 是否显示
...@@ -126,9 +130,7 @@ class AnswerService ...@@ -126,9 +130,7 @@ class AnswerService
*/ */
public static function AnswerListWhere($params = []) public static function AnswerListWhere($params = [])
{ {
$where = [ $where = [];
['is_delete_time', '=', 0],
];
// id // id
if(!empty($params['id'])) if(!empty($params['id']))
...@@ -304,22 +306,12 @@ class AnswerService ...@@ -304,22 +306,12 @@ class AnswerService
$where['user_id'] = $params['user']['id']; $where['user_id'] = $params['user']['id'];
} }
// 获取数据
$temp = Db::name('Answer')->where($where)->field('id')->find();
if(empty($temp))
{
return DataReturn('资源不存在或已被删除', -1);
}
// 开始删除 // 开始删除
$data = [ if(Db::name('Answer')->where($where)->delete())
'is_delete_time' => time(),
];
if(Db::name('Answer')->where($where)->update($data))
{ {
return DataReturn('删除成功', 0); return DataReturn('删除成功', 0);
} }
return DataReturn('删除失败', -1); return DataReturn('删除失败或数据不存在', -1);
} }
/** /**
......
...@@ -28,8 +28,18 @@ class GoodsCommentsService ...@@ -28,8 +28,18 @@ class GoodsCommentsService
'order' => '订单', '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 * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 1.0.0 * @version 1.0.0
...@@ -74,12 +84,12 @@ class GoodsCommentsService ...@@ -74,12 +84,12 @@ class GoodsCommentsService
[ [
'checked_type' => 'isset', 'checked_type' => 'isset',
'key_name' => 'content', 'key_name' => 'content',
'error_msg' => '评内容有误', 'error_msg' => '评内容有误',
], ],
[ [
'checked_type' => 'is_array', 'checked_type' => 'is_array',
'key_name' => 'content', 'key_name' => 'content',
'error_msg' => '评内容数据格式有误', 'error_msg' => '评内容数据格式有误',
], ],
[ [
'checked_type' => 'empty', 'checked_type' => 'empty',
...@@ -108,7 +118,7 @@ class GoodsCommentsService ...@@ -108,7 +118,7 @@ class GoodsCommentsService
} }
if($order['user_is_comments'] != 0) if($order['user_is_comments'] != 0)
{ {
return DataReturn('该订单你已进行过评', -10); return DataReturn('该订单你已进行过评', -10);
} }
// 处理数据 // 处理数据
...@@ -129,11 +139,11 @@ class GoodsCommentsService ...@@ -129,11 +139,11 @@ class GoodsCommentsService
if(Db::name('GoodsComments')->insertGetId($data) <= 0) if(Db::name('GoodsComments')->insertGetId($data) <= 0)
{ {
Db::rollback(); Db::rollback();
return DataReturn('评内容添加失败', -100); return DataReturn('评内容添加失败', -100);
} }
} }
// 订单评状态更新 // 订单评状态更新
if(!Db::name('Order')->where($where)->update(['user_is_comments'=>time(), 'upd_time'=>time()])) if(!Db::name('Order')->where($where)->update(['user_is_comments'=>time(), 'upd_time'=>time()]))
{ {
Db::rollback(); Db::rollback();
...@@ -141,7 +151,7 @@ class GoodsCommentsService ...@@ -141,7 +151,7 @@ class GoodsCommentsService
} }
Db::commit(); Db::commit();
return DataReturn('评成功', 0); return DataReturn('评成功', 0);
} }
/** /**
...@@ -201,6 +211,9 @@ class GoodsCommentsService ...@@ -201,6 +211,9 @@ class GoodsCommentsService
} }
$v['msg'] = empty($msg) ? null : $msg; $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_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'] : ''; $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 ...@@ -347,6 +360,76 @@ class GoodsCommentsService
return $where; 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 * @author Devil
...@@ -373,7 +456,7 @@ class GoodsCommentsService ...@@ -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); return DataReturn('删除成功', 0);
} }
...@@ -459,6 +542,12 @@ class GoodsCommentsService ...@@ -459,6 +542,12 @@ class GoodsCommentsService
'checked_data' => [0,1], 'checked_data' => [0,1],
'error_msg' => '状态有误', 'error_msg' => '状态有误',
], ],
[
'checked_type' => 'in',
'key_name' => 'field',
'checked_data' => ['is_anonymous', 'is_show', 'is_reply'],
'error_msg' => '操作字段有误',
],
]; ];
$ret = ParamsChecked($params, $p); $ret = ParamsChecked($params, $p);
if($ret !== true) if($ret !== true)
...@@ -467,11 +556,60 @@ class GoodsCommentsService ...@@ -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('编辑成功');
} }
return DataReturn('编辑失败或数据未改变', -100); 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);
}
} }
?> ?>
\ No newline at end of file
此差异已折叠。
/** /**
* 列表 * 列表
*/ */
table.am-table .reply-content { max-width: 200px; max-height: 200px; overflow-y: scroll; overflow-x: hidden; } .content-right table.am-table .reply-content {
@media only screen and (max-width: 321px) { max-width: 200px;
.view-operation button { margin: 2px 0px; } 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;
} }
\ No newline at end of file
/** /**
* 用户信息 * 公共
*/ */
.content-right table.am-table td.user-info { .content-right table.am-table td.user-info,
width: 200px; .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 .user-info img { .content-right .user-info img {
max-width: 35px; max-width: 35px;
max-height: 35px; max-height: 35px;
...@@ -18,9 +29,6 @@ ...@@ -18,9 +29,6 @@
/** /**
* 商品信息 * 商品信息
*/ */
.content-right table.am-table td.goods-info {
width: 180px;
}
.content-right .goods-info .base { .content-right .goods-info .base {
min-height: 57px; min-height: 57px;
} }
...@@ -37,7 +45,7 @@ ...@@ -37,7 +45,7 @@
* 列表 * 列表
*/ */
.content-right table.am-table .reply-content { .content-right table.am-table .reply-content {
max-width: 180px; max-width: 100%;
max-height: 130px; max-height: 130px;
overflow-y: scroll; overflow-y: scroll;
overflow-x: hidden; overflow-x: hidden;
...@@ -47,4 +55,18 @@ ...@@ -47,4 +55,18 @@
} }
.content-right table.am-table .view-operation { .content-right table.am-table .view-operation {
width: 85px; 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;
} }
\ No newline at end of file
// 表单初始化
FromInit('form.form-validation-reply');
$(function() $(function()
{ {
// 处理 // 处理
$('.submit-reply').on('click', function() $('.submit-reply').on('click', function()
{ {
var json = $(this).data('json'); var json = $(this).data('json');
$('#my-popup-reply input[name="id"]').val(json.id); var $popup = $('#my-popup-reply');
$('.reply-name').html(json.name || '<span class="cr-ddd">未填写</span>'); $popup.find('input[name="id"]').val(json.id);
$('.reply-tel').html(json.tel || '<span class="cr-ddd">未填写</span>'); $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>');
$('#my-popup-reply button[type="submit"]').on('click', function() $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>');
$('#my-popup-reply textarea[name="reply"]').attr('required', true); $popup.find('.user-info .user-base .email span').html(json.user.email || '<span class="cr-ddd">未填写</span>');
$('#my-popup-reply textarea[name="reply"]').blur();
$('#my-popup-reply input[name="status"]').val(status);
}); });
}); });
\ No newline at end of file
// 表单初始化
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>');
});
});
\ No newline at end of file
...@@ -50,7 +50,6 @@ input{font-size:12px;font-size:100%;outline:none;line-height:normal;color:#444;} ...@@ -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; } .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 span { color: #888; }
.am-sticky-placeholder .am-nav-tabs > li.am-active span { color: #333; } .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); } .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-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; } .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;} ...@@ -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; } .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; } .buy-nav-opt a { color: #666; }
.text-active { color: #cf2915 !important; } .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 .am-comment-main { border: 1px solid #eee; }
.goods-comment .comment-spec { margin-top: 5px; color: #B0B0B0; } .goods-comment .comment-spec { margin-top: 5px; color: #B0B0B0; }
.comment-reply { border-top: 1px dashed #eee; margin-top: 10px; padding-top: 10px; } .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;} ...@@ -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-title { color: #666; }
.comment-reply-desc { color: #905602; } .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) { @media only screen and (min-width:640px) {
.theme-span{height:0px;background:#fff ;} .theme-span{height:0px;background:#fff ;}
...@@ -244,63 +254,17 @@ color:#F03726;font-size: 14px;text-align: center;border: 0;} ...@@ -244,63 +254,17 @@ color:#F03726;font-size: 14px;text-align: center;border: 0;}
.buy-nav div.submit { width: 30%; } .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;} .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{width:100%;margin: 0px auto;text-align: center;padding-bottom: 20px;}
.introduce-main{width:100%;background:#fff ;} .introduce-main{width:100%;background:#fff ;}
.introduce-main .am-tab-panel { padding: 0px; } .introduce-main .am-tab-panel { padding: 0px; }
.browse{display: none;}
/*产品参数*/ /*产品参数*/
ul.detail-attr{overflow: hidden;text-align: left;} 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;} 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{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;} .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%} ...@@ -309,21 +273,16 @@ li.am-comment{ width:100%}
font-size: 14px; color: #E4393C;font-weight: 400;font-family: Verdana;} font-size: 14px; color: #E4393C;font-weight: 400;font-family: Verdana;}
.like li img{width:100%} .like li img{width:100%}
.footer { margin:0px auto; margin-top:20px;} /*轮播*/
.hwsize tr th{ text-align:center;}
/*改写的样式*/
.clearfix-left{display:none;} .clearfix-left{display:none;}
.scoll img{width:100%; margin-left:0} .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; } .goods-not-buy-tips { color: #FF5722; margin: 5px 0; font-size: 14px; }
/*左侧商品-看了又看*/
.browse { display: none; }
@media only screen and (min-width:640px) { @media only screen and (min-width:640px) {
/*导航固定*/ /*导航固定*/
ul.am-tabs-nav.am-nav.am-nav-tabs {margin-right:10px ;margin-left: 10px;width: auto;} 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%} ...@@ -414,7 +373,7 @@ li.am-comment{ width:100%}
.freight{width:400px;float: left;} .freight{width:400px;float: left;}
.iteminfo_parameter.freight dt{padding-top:6px ;padding-bottom:0px ;} .iteminfo_parameter.freight dt{padding-top:6px ;padding-bottom:0px ;}
/*介绍*/ /*左侧商品-看了又看*/
.introduce-main{width:80%;float:left;background:#fff ;} .introduce-main{width:80%;float:left;background:#fff ;}
.browse{display:block; float:left;width:20% ;} .browse{display:block; float:left;width:20% ;}
.browse ul{border:1px solid #eee ;width: 90%;} .browse ul{border:1px solid #eee ;width: 90%;}
...@@ -482,6 +441,11 @@ li.am-comment{ width:100%} ...@@ -482,6 +441,11 @@ li.am-comment{ width:100%}
/* 商品评论 */ /* 商品评论 */
.goods-comment .am-comment { margin-left: 5px; margin-right: 5px; } .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; } .am-footer { padding-bottom: 35px; }
} }
\ No newline at end of file
...@@ -28,15 +28,22 @@ function poptit_close() ...@@ -28,15 +28,22 @@ function poptit_close()
*/ */
function GoodsCommentsHtml(page) 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({ $.ajax({
url: $('.goods-comment').data('url'), url: $('.goods-comment').data('url'),
type:'POST', 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', dataType:'json',
success:function(result) success:function(result)
{ {
$('.goods-page-no-data').addClass('none');
if(result.code == 0) if(result.code == 0)
{ {
var html = ''; var html = '';
...@@ -80,7 +87,13 @@ function GoodsCommentsHtml(page) ...@@ -80,7 +87,13 @@ function GoodsCommentsHtml(page)
if($('.goods-comment-content article').length <= 0) if($('.goods-comment-content article').length <= 0)
{ {
$('.goods-page-no-data').removeClass('none'); $('.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() { ...@@ -604,6 +617,13 @@ $(function() {
$('.introduce-main .am-tabs').tabs('open', 1); $('.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});
});
}); });
// 浏览器窗口实时事件 // 浏览器窗口实时事件
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册