evaluate.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459
  1. {extend name="base"/}
  2. {block name="resources"}
  3. <link rel="stylesheet" type="text/css" href="SHOP_CSS/evaluate.css" />
  4. <style>
  5. .layui-table{margin: 15px 0;}
  6. tbody .title-content{}
  7. .layui-inline{margin-bottom: 15px !important;}
  8. .tab-bottom{display: flex;justify-content: space-between;}
  9. .evaluate-table tr td:nth-child(5),.evaluate-table tr td:nth-child(6){padding-right: 0px;}
  10. .evaluate-table tr td:nth-child(6){padding-left: 0px;}
  11. .layui-layout-admin.admin-style-2 .layui-form-item .layui-input-inline{background-color: #fff;}
  12. .layui-layout-admin.admin-style-2 .table-bottom{padding: 15px 0 10px;}
  13. .title-content .sku-name {overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;}
  14. </style>
  15. {/block}
  16. {block name="main"}
  17. <!-- 搜索框 -->
  18. <div class="screen layui-collapse" >
  19. <div class="layui-colla-item">
  20. <form class="layui-colla-content layui-form layui-show" lay-filter="selection_panel">
  21. <div class="layui-form-item">
  22. <div class="layui-inline">
  23. <label class="layui-form-label">搜索类型</label>
  24. <div class="layui-input-inline">
  25. <select name="search_type">
  26. <option value="sku_name">商品名称</option>
  27. <option value="member_name">评价人名称</option>
  28. </select>
  29. </div>
  30. <div class="layui-input-inline">
  31. <input type="text" name="search_text" placeholder="请输入搜索内容" class="layui-input len-mid" autocomplete="off">
  32. </div>
  33. </div>
  34. <div class="layui-inline">
  35. <label class="layui-form-label">评价类型</label>
  36. <div class="layui-input-inline">
  37. <select name="explain_type">
  38. <option value="">请选择评分类型</option>
  39. <option value="1">好评</option>
  40. <option value="2">中评</option>
  41. <option value="3">差评</option>
  42. </select>
  43. </div>
  44. </div>
  45. <div class="layui-inline">
  46. <label class="layui-form-label">评论时间</label>
  47. <div class="layui-input-inline">
  48. <input type="text" name="start_time" id="start_time" placeholder="开始时间" class="layui-input" autocomplete="off" readonly>
  49. <i class=" iconrili iconfont calendar"></i>
  50. </div>
  51. <div class="layui-form-mid">-</div>
  52. <div class="layui-input-inline end-time">
  53. <input type="text" name="end_time" id="end_time" placeholder="结束时间" class="layui-input" autocomplete="off" readonly>
  54. <i class=" iconrili iconfont calendar"></i>
  55. </div>
  56. </div>
  57. </div>
  58. <input type="hidden" name="goods_id" value="{$goods_id}">
  59. <div class="form-row">
  60. <button class="layui-btn" lay-submit lay-filter="search">筛选</button>
  61. <button type="reset" class="layui-btn layui-btn-primary">重置</button>
  62. </div>
  63. </form>
  64. </div>
  65. </div>
  66. <div class="layui-tab table-tab" lay-filter="is_audit">
  67. <ul class="layui-tab-title">
  68. <li class="layui-this" lay-id="">全部</li>
  69. <li lay-id="1">未审核</li>
  70. <li lay-id="2">审核通过</li>
  71. <li lay-id="3">审核拒绝</li>
  72. </ul>
  73. <div class="layui-tab-content">
  74. <div class="table-bottom layui-table-bottom-tool-temp layui-form" style="float: left;border: none; padding-left: 15px;">
  75. <input type="checkbox" name="check_all" lay-skin="primary" lay-filter="check_all">
  76. <button class="layui-btn layui-btn-primary js-audit-pass" data-is-audit="1">批量通过</button>
  77. <button class="layui-btn layui-btn-primary js-audit-refuse" data-is-audit="2">批量拒绝</button>
  78. <button class="layui-btn layui-btn-primary js-audit-delete" data-is-audit="3">批量删除</button>
  79. </div>
  80. <table class="layui-table evaluate-table layui-form" lay-skin="line" lay-size="lg">
  81. <div class="layui-tab-content">
  82. <colgroup>
  83. <col width="3%">
  84. <col width="20%">
  85. <col width="10%">
  86. <col width="10%">
  87. <col width="27%">
  88. <col width="10%">
  89. <col width="10%">
  90. <col width="10%">
  91. </colgroup>
  92. <thead>
  93. <tr>
  94. <th><input type="checkbox" name="check_all" lay-skin="primary" lay-filter="check_all" /></th>
  95. <th>商品信息</th>
  96. <th>客户昵称</th>
  97. <th>评论等级</th>
  98. <th>评论详情</th>
  99. <th>评论时间</th>
  100. <th style="text-align: center;">审核状态</th>
  101. <th class = 'operate'>操作</th>
  102. </tr>
  103. </thead>
  104. <tbody></tbody>
  105. </div>
  106. </table>
  107. <div class="tab-bottom">
  108. <div class="table-bottom layui-table-bottom-tool-temp layui-form" style="float: left;border: none; padding-left: 15px;">
  109. <input type="checkbox" name="check_all" lay-skin="primary" lay-filter="check_all">
  110. <button class="layui-btn layui-btn-primary js-audit-pass" data-is-audit="1">批量通过</button>
  111. <button class="layui-btn layui-btn-primary js-audit-refuse" data-is-audit="2">批量拒绝</button>
  112. <button class="layui-btn layui-btn-primary js-audit-delete" data-is-audit="3">批量删除</button>
  113. </div>
  114. <div id="laypage"></div>
  115. </div>
  116. </div>
  117. </div>
  118. {/block}
  119. {block name="script"}
  120. <script>
  121. var SHOPIMG = "SHOP_IMG";
  122. </script>
  123. <script src="SHOP_JS/evaluate.js"></script>
  124. <script>
  125. var limit = 5;
  126. var evaluate = new Evaluate(limit, [2, 5, 10]);
  127. var goods_id = "{$goods_id}";
  128. evaluate.getList({
  129. "_this": evaluate,
  130. "goods_id" : goods_id,
  131. });
  132. evaluate.pageInit({
  133. "_this": evaluate,
  134. "goods_id" : goods_id,
  135. });
  136. layui.use(['form', 'laydate','element'], function() {
  137. var form = layui.form,
  138. laydate = layui.laydate;
  139. element = layui.element;
  140. currentDate = new Date(),
  141. minDate = "";
  142. form.render();
  143. //监听Tab切换
  144. element.on('tab(is_audit)', function(data) {
  145. var is_audit = $(this).attr("lay-id");
  146. var num = $(".layui-laypage-limits option:selected").val()
  147. var evaluate = new Evaluate(num, [2, 5, 10]);
  148. data = form.val('selection_panel');
  149. evaluate.getList({
  150. "_this": evaluate,
  151. "search_type": data.search_type,
  152. "search_text": data.search_text,
  153. "explain_type": data.explain_type,
  154. "start_time": data.start_time,
  155. "end_time": data.end_time,
  156. "goods_id" : data.goods_id,
  157. "is_audit" : is_audit,
  158. });
  159. evaluate.pageInit({
  160. "_this": evaluate,
  161. "search_type": data.search_type,
  162. "search_text": data.search_text,
  163. "explain_type": data.explain_type,
  164. "start_time": data.start_time,
  165. "end_time": data.end_time,
  166. "goods_id" : data.goods_id,
  167. "is_audit" : is_audit,
  168. });
  169. return false;
  170. });
  171. currentDate.setDate(currentDate.getDate() - 7);
  172. form.on('checkbox(check_all)', function(data){
  173. $("input[name='evaluate']").prop("checked",data.elem.checked);
  174. $("input[name='check_all']").prop("checked",data.elem.checked);
  175. form.render();
  176. });
  177. form.on('checkbox(evaluate)', function(data){
  178. if($("input[name='evaluate']:checked").length == limit){
  179. $("input[name='check_all']").prop("checked",true);
  180. } else {
  181. $("input[name='check_all']").prop("checked",false);
  182. }
  183. form.render();
  184. });
  185. $(".js-audit-pass,.js-audit-refuse,.js-audit-delete").click(function () {
  186. var evaluate_ids = [];
  187. var is_audit = $(this).attr("data-is-audit");
  188. $("input[name='evaluate']:checked").each(function () {
  189. evaluate_ids.push($(this).val());
  190. });
  191. if(evaluate_ids.length<1) {
  192. layer.msg("请选择要操作的数据");
  193. return;
  194. }
  195. if(is_audit==3){
  196. deleteEvaluate(evaluate_ids.toString());
  197. }else{
  198. modifyAuditEvaluate(evaluate_ids.toString(),is_audit);
  199. }
  200. });
  201. //开始时间
  202. laydate.render({
  203. elem: '#start_time',
  204. type: 'datetime'
  205. });
  206. //结束时间
  207. laydate.render({
  208. elem: '#end_time',
  209. type: 'datetime'
  210. });
  211. /**
  212. * 重新渲染结束时间
  213. */
  214. function reRender() {
  215. $("#end_time").remove();
  216. $(".end-time").html('<input type="text" class="layui-input" placeholder="结束时间" name="end_time" id="end_time" >');
  217. laydate.render({
  218. elem: '#end_time',
  219. type: 'datetime',
  220. min: minDate
  221. });
  222. }
  223. /**
  224. * 搜索
  225. */
  226. form.on('submit(search)', function(data) {
  227. var num = $(".layui-laypage-limits option:selected").val()
  228. var evaluate = new Evaluate(num, [2, 5, 10]);
  229. var is_audit = $('.layui-tab-title .layui-this').attr('lay-id');
  230. evaluate.getList({
  231. "_this": evaluate,
  232. "search_type": data.field.search_type,
  233. "search_text": data.field.search_text,
  234. "explain_type": data.field.explain_type,
  235. "start_time": data.field.start_time,
  236. "end_time": data.field.end_time,
  237. "goods_id" : data.field.goods_id,
  238. "is_audit" : is_audit,
  239. });
  240. evaluate.pageInit({
  241. "_this": evaluate,
  242. "search_type": data.field.search_type,
  243. "search_text": data.field.search_text,
  244. "explain_type": data.field.explain_type,
  245. "start_time": data.field.start_time,
  246. "end_time": data.field.end_time,
  247. "goods_id" : data.field.goods_id,
  248. "is_audit" : is_audit,
  249. });
  250. return false;
  251. });
  252. });
  253. function replay(e) {
  254. var input = $(e).parents("tr").find(".evaluate_id");
  255. var evaluate_id = input.val();
  256. var isFirstExplain = input.attr("data-is-first-explain");
  257. layer.prompt({
  258. formType: 2,
  259. value: '',
  260. title: '请输入回复内容',
  261. area: ['350px', '150px'] ,//自定义文本域宽高
  262. yes: function(index, layero) {
  263. var explain = layero.find(".layui-layer-input").val();
  264. if (explain) {
  265. $.ajax({
  266. url: ns.url("shop/goods/evaluateapply"),
  267. data: {
  268. evaluate_id: evaluate_id,
  269. explain: explain,
  270. is_first_explain: isFirstExplain
  271. },
  272. dataType: 'JSON', //服务器返回json格式数据
  273. type: 'POST', //HTTP请求类型
  274. success: function(res) {
  275. if (res.code == 0) {
  276. window.location.reload();
  277. } else {
  278. layer.closeAll();
  279. evaluate.getList({
  280. "_this": evaluate,
  281. 'is_audit' : $(".layui-tab-title").find('.layui-this').attr('lay-id')
  282. });
  283. layer.msg(res.message);
  284. }
  285. }
  286. });
  287. layer.close(index);
  288. } else {
  289. layer.msg('请输入回复内容!', {icon: 5, anim: 6});
  290. }
  291. }
  292. });
  293. }
  294. var repeat_flag = false;
  295. function deleteContent(e, isFirst) {
  296. var input = $(e).parents("tr").find(".evaluate_id");
  297. var evaluate_id = input.val();
  298. if(repeat_flag) return false;
  299. repeat_flag = true;
  300. layer.confirm('确定要删除回复内容吗?', function() {
  301. $.ajax({
  302. url: ns.url("shop/goods/deleteContent"),
  303. data: {
  304. evaluate_id: evaluate_id,
  305. is_first: isFirst
  306. },
  307. dataType: 'JSON', //服务器返回json格式数据
  308. type: 'POST', //HTTP请求类型
  309. success: function(res) {
  310. repeat_flag = false;
  311. if (res.code == 0) {
  312. evaluate.getList({
  313. "_this": evaluate,
  314. 'is_audit' : $(".layui-tab-title").find('.layui-this').attr('lay-id')
  315. });
  316. layer.closeAll();
  317. } else {
  318. layer.closeAll();
  319. layer.msg(res.message);
  320. }
  321. }
  322. });
  323. }, function () {
  324. layer.close();
  325. repeat_flag = false;
  326. });
  327. }
  328. // 修改首评审核状态
  329. function audit(e,is_audit) {
  330. var input = $(e).parents("tr").find(".evaluate_id");
  331. var evaluate_id = input.val();
  332. modifyAuditEvaluate(evaluate_id,is_audit);
  333. }
  334. // 修改删除评论操作之前
  335. function toDelete(e) {
  336. var input = $(e).parents("tr").find(".evaluate_id");
  337. var evaluate_id = input.val();
  338. deleteEvaluate(evaluate_id);
  339. }
  340. function modifyAuditEvaluate(evaluate_ids,is_audit) {
  341. var hint = '确定要审核通过吗?';
  342. if(is_audit == 2){
  343. hint = '确定要拒绝审核吗?';
  344. }
  345. layer.confirm(hint, function() {
  346. $.ajax({
  347. url: ns.url("shop/goods/modifyAuditEvaluate"),
  348. data: {
  349. evaluate_ids: evaluate_ids,
  350. is_audit: is_audit
  351. },
  352. dataType: 'JSON', //服务器返回json格式数据
  353. type: 'POST', //HTTP请求类型
  354. success: function (res) {
  355. layer.msg(res.message);
  356. if (res.code == 0) {
  357. evaluate.getList({
  358. "_this": evaluate,
  359. 'is_audit' : $(".layui-tab-title").find('.layui-this').attr('lay-id')
  360. });
  361. }
  362. }
  363. });
  364. });
  365. }
  366. function deleteEvaluate(evaluate_ids) {
  367. if(repeat_flag) return false;
  368. repeat_flag = true;
  369. layer.confirm('确定要删除评论吗?', function() {
  370. $.ajax({
  371. url: ns.url("shop/goods/deleteEvaluate"),
  372. data: {
  373. evaluate_ids: evaluate_ids,
  374. },
  375. dataType: 'JSON', //服务器返回json格式数据
  376. type: 'POST', //HTTP请求类型
  377. success: function (res) {
  378. repeat_flag = false;
  379. layer.msg(res.message);
  380. if (res.code == 0) {
  381. evaluate.getList({
  382. "_this": evaluate,
  383. 'is_audit' : $(".layui-tab-title").find('.layui-this').attr('lay-id')
  384. });
  385. location.reload();
  386. }
  387. }
  388. });
  389. }, function () {
  390. layer.close();
  391. repeat_flag = false;
  392. });
  393. }
  394. function again_audit(e,is_audit) {
  395. var input = $(e).parents("tr").find(".evaluate_id");
  396. var evaluate_id = input.val();
  397. modifyAgainAuditEvaluate(evaluate_id,is_audit);
  398. }
  399. function modifyAgainAuditEvaluate(evaluate_ids,is_audit) {
  400. $.ajax({
  401. url: ns.url("shop/goods/modifyAgainAuditEvaluate"),
  402. data: {
  403. evaluate_ids: evaluate_ids,
  404. again_is_audit: is_audit
  405. },
  406. dataType: 'JSON', //服务器返回json格式数据
  407. type: 'POST', //HTTP请求类型
  408. success: function (res) {
  409. layer.msg(res.message);
  410. if (res.code == 0) {
  411. evaluate.getList({
  412. "_this": evaluate,
  413. 'is_audit' : $(".layui-tab-title").find('.layui-this').attr('lay-id')
  414. });
  415. }
  416. }
  417. });
  418. }
  419. </script>
  420. {/block}