Browse Source

fix:优化评论页面

super-yimizi 1 month ago
parent
commit
99d0685254
2 changed files with 136 additions and 19 deletions
  1. 30 5
      application/admin/view/shop/comment/index.html
  2. 106 14
      public/assets/js/backend/shop/comment.js

+ 30 - 5
application/admin/view/shop/comment/index.html

@@ -2,10 +2,10 @@
     
     <div class="panel-heading">
         {:build_heading(null,FALSE)}
-        <ul class="nav nav-tabs" data-field="status">
-            <li class="{:$Think.get.status === null ? 'active' : ''}"><a href="#t-all" data-value="" data-toggle="tab">{:__('All')}</a></li>
-            {foreach name="statusList" item="vo"}
-            <li class="{:$Think.get.status === (string)$key ? 'active' : ''}"><a href="#t-{$key|htmlentities}" data-value="{$key|htmlentities}" data-toggle="tab">{$vo|htmlentities}</a></li>
+        <ul class="nav nav-tabs" data-field="evaluate_status">
+            <li class="{:$Think.get.evaluate_status === null ? 'active' : ''}"><a href="#t-all" data-value="" data-toggle="tab">{:__('All')}</a></li>
+            {foreach name="evaluateStatusList" item="vo" key="key"}
+            <li class="{:$Think.get.evaluate_status === (string)$key ? 'active' : ''}"><a href="#t-{$key|htmlentities}" data-value="{$key|htmlentities}" data-toggle="tab">{$vo|htmlentities}</a></li>
             {/foreach}
         </ul>
     </div>
@@ -18,7 +18,7 @@
                     <div id="toolbar" class="toolbar">
                         <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
                         <a href="javascript:;" class="btn btn-success btn-add {:$auth->check('shop/comment/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
-                        <a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('shop/comment/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
+        
                         <a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('shop/comment/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
 
                         <div class="dropdown btn-group {:$auth->check('shop/comment/multi')?'':'hide'}">
@@ -29,6 +29,31 @@
                             </ul>
                         </div>
 
+                        <!-- 星级评价筛选 -->
+                        <!-- <div class="dropdown btn-group">
+                            <a class="btn btn-info dropdown-toggle" data-toggle="dropdown">
+                                <i class="fa fa-star"></i> 星级评价 <span class="caret"></span>
+                            </a>
+                            <ul class="dropdown-menu" role="menu">
+                                <li><a href="javascript:;" class="btn-rating-filter" data-rating-type=""><i class="fa fa-list"></i> 全部</a></li>
+                                {foreach name="ratingTypeList" item="vo" key="key"}
+                                <li><a href="javascript:;" class="btn-rating-filter" data-rating-type="{$key|htmlentities}"><i class="fa fa-star"></i> {$vo|htmlentities}</a></li>
+                                {/foreach}
+                            </ul>
+                        </div> -->
+
+                        <!-- 有图筛选 -->
+                        <!-- <div class="dropdown btn-group">
+                            <a class="btn btn-warning dropdown-toggle" data-toggle="dropdown">
+                                <i class="fa fa-image"></i> 图片筛选 <span class="caret"></span>
+                            </a>
+                            <ul class="dropdown-menu" role="menu">
+                                <li><a href="javascript:;" class="btn-picture-filter" data-has-picture=""><i class="fa fa-list"></i> 全部</a></li>
+                                {foreach name="hasPictureList" item="vo" key="key"}
+                                <li><a href="javascript:;" class="btn-picture-filter" data-has-picture="{$key|htmlentities}"><i class="fa fa-image"></i> {$vo|htmlentities}</a></li>
+                                {/foreach}
+                            </ul>
+                        </div> -->
                         
                     </div>
                     <table id="table" class="table table-striped table-bordered table-hover table-nowrap"

+ 106 - 14
public/assets/js/backend/shop/comment.js

@@ -17,6 +17,24 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
 
             var table = $("#table");
 
+            // 绑定评价状态tab事件
+            $('.panel-heading .nav-tabs[data-field="evaluate_status"] a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
+                var value = $(this).data("value");
+                var options = table.bootstrapTable('getOptions');
+                var queryParams = options.queryParams;
+                options.pageNumber = 1;
+                options.queryParams = function (params) {
+                    if (value) {
+                        params.filter = JSON.stringify({evaluate_status: value});
+                        params.op = JSON.stringify({evaluate_status: '='});
+                    }
+                    params = queryParams.call(this, params);
+                    return params;
+                };
+                table.bootstrapTable('refresh', {});
+                return false;
+            });
+
             // 初始化表格
             table.bootstrapTable({
                 url: $.fn.bootstrapTable.defaults.extend.index_url,
@@ -28,8 +46,23 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                     [
                         {checkbox: true},
                         {field: 'id', title: __('Id')},
-                        {field: 'user_id', title: __('User_id'), formatter: Table.api.formatter.search},
-                        {field: 'user.nickname', title: __('Nickname')},
+                        {field: 'user_id', title: __('会员信息'), formatter: Table.api.formatter.search,visible: false},
+                        {
+                            field: 'user.username', 
+                            title: __('User_id'),
+                            operate: 'LIKE',
+                            formatter: function (value, row, index) {
+                                // 显示用户头像和用户名
+                                console.log(row);
+                                var avatar = row.user && row.user.avatar ? row.user.avatar : '/assets/img/avatar.png';
+                                var username = row.user && row.user.username ? row.user.username : '游客';
+                                
+                                return '<div style="display:flex;align-items:center;">' + 
+                                       '<img src="' + avatar + '" style="width:40px;height:40px;border-radius:50%;margin-right:10px;" />' +
+                                       '<span style="color:#a55bff;">' + username + '</span>' +
+                                       '</div>';
+                            }
+                        },
                         {field: 'order_id', title: __('Order_id')},
                         // {field: 'pid', title: __('Pid')},
                         {field: 'goods.title', title: __('Goods')},
@@ -39,20 +72,65 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                         // {field: 'subscribe', title: __('Subscribe')},
                         {field: 'createtime', title: __('Createtime'), operate: 'RANGE', addclass: 'datetimerange', autocomplete: false, formatter: Table.api.formatter.datetime},
                         {field: 'updatetime', title: __('Updatetime'), operate: 'RANGE', addclass: 'datetimerange', autocomplete: false, formatter: Table.api.formatter.datetime, visible: false},
-                        {field: 'status', title: __('Status'), searchList: {"normal": __('Normal'), "hidden": __('Hidden')}, formatter: Table.api.formatter.status},
+                        {field: 'status', title: __('Status'), searchList: Controller.api.parseConfigJson('statusSearchList'), formatter: Table.api.formatter.status},
                         {
-                            field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate, buttons: [{
-                                name: '回复',
-                                title: function (row) {
-                                    return '回复(' + (row.user ? row.user.nickname : '未知') + ')';
+                            field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate, 
+                            buttons: [
+                            {
+                                name: '审核通过',
+                                title: '审核通过',
+                                classname: 'btn btn-xs btn-success btn-ajax',
+                                text: '审核通过',
+                                icon: 'fa fa-check',
+                                url: 'shop/comment/audit/evaluate_status/2',
+                                visible: function (row) {
+                                    //返回true时按钮显示,返回false隐藏
+                                    return row.evaluate_status == 1;
+                                },
+                                confirm: '确认审核通过吗',
+                                success: function (data, ret) {
+                                    table.bootstrapTable('refresh');    //自动刷新
                                 },
-                                classname: 'btn btn-xs btn-primary btn-dialog',
-                                text: function (row) {
-                                    return '回复(' + row.comments + ')';
+                                error: function (data, ret) {
+                                    console.log(data, ret);
+                                    Layer.alert(ret.msg);
+                                    return false;
+                                }       
+                            }, 
+                            {
+                                name: '审核拒绝',
+                                title: '审核拒绝',
+                                classname: 'btn btn-xs btn-danger btn-ajax',
+                                text: '审核拒绝',
+                                icon: 'fa fa-close',
+                                url: 'shop/comment/audit/evaluate_status/3',
+                                visible: function (row) {
+                                    //返回true时按钮显示,返回false隐藏
+                                    return row.evaluate_status == 1;
                                 },
-                                icon: 'fa fa-comment',
-                                url: 'shop/comment/reply/pid/{id}'
-                            }]
+                                confirm: '确认审核拒绝吗',
+                                success: function (data, ret) {
+                                    table.bootstrapTable('refresh');    //自动刷新
+                                },
+                                error: function (data, ret) {
+                                    console.log(data, ret);
+                                    Layer.alert(ret.msg);
+                                    return false;
+                                }       
+                            }, 
+                            // {
+                            //     name: '回复',
+                            //     title: function (row) {
+                            //         return '回复(' + (row.user ? row.user.nickname : '未知') + ')';
+                            //     },
+                            //     classname: 'btn btn-xs btn-primary btn-dialog',
+                            //     text: function (row) {
+                            //         return '回复(' + row.comments + ')';
+                            //     },
+                            //     icon: 'fa fa-comment',
+                            //     url: 'shop/comment/reply/pid/{id}'
+                            // }
+                           ]
                         }
                     ]
                 ]
@@ -81,13 +159,27 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
             Controller.api.bindevent();
         },
         api: {
+              // 解析Config中的JSON字符串的辅助函数
+            parseConfigJson: function(configKey, defaultValue) {
+                var configValue = Config[configKey] || defaultValue || {};
+                
+                // 如果是字符串,尝试解析JSON
+                if (typeof configValue === 'string') {
+                    try {
+                        return JSON.parse(configValue);
+                    } catch (e) {
+                        return defaultValue || {};
+                    }
+                }                
+                return configValue;
+            },
             bindevent: function () {
                 Form.api.bindevent($("form[role=form]"));
             },
             content: function (value, row, index) {
                 var width = this.width != undefined ? (this.width.match(/^\d+$/) ? this.width + "px" : this.width) : "250px";
                 return "<div style='white-space: nowrap; text-overflow:ellipsis; overflow: hidden; max-width:" + width + ";' title='" + value + "' data-toggle='tooltip' data-placement='right'>" + value + "</div>";
-            },
+            }
         }
     };
     return Controller;