talkskilltable.html 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392
  1. {extend name="public/layout" /} {block name="title"}话术库{/block} {block name="body"}
  2. <style type="text/css">
  3. html,
  4. body {
  5. display: block;
  6. min-width: 1100px;
  7. }
  8. .layui-fluid {
  9. display: block;
  10. box-shadow: 0 0 4px 0 #B6CADE;
  11. border-radius: 5px;
  12. margin: 15px;
  13. background-color: #ffffff;
  14. }
  15. .layui-table thead tr,
  16. .layui-table-header {
  17. background-color: #D8E6F1 !important;
  18. }
  19. .layui-form-label{
  20. width: auto;
  21. }
  22. .goback {
  23. float: left;
  24. margin-right: 20px;
  25. }
  26. .goback a {
  27. color: #269efb;
  28. }
  29. .goback i {
  30. position: relative !important;
  31. }
  32. .layui-btn-xs,.layui-btn-xs:hover {
  33. border: 1px solid #249EFB;
  34. background-color: #fff;
  35. color: #249EFB;
  36. padding: 0px 10px;
  37. }
  38. .layui-btn-danger,.layui-btn-danger:hover{
  39. color: #FF5722;
  40. background-color: #fff;
  41. border: 1px solid #FF5722;
  42. padding: 0px 10px;
  43. }
  44. .deletebtn{display:none}
  45. .commentcount{cursor: pointer;color: #249EFB;}
  46. .commentcount img{width:18px;display: inline-block;vertical-align: -13%;margin-right: 2px;}
  47. .layui-form-item .layui-input-inline,.layui-select-title{max-width:160px !important;}
  48. </style>
  49. <body>
  50. <div class="layui-fluid">
  51. <div class="layui-card">
  52. <div class="layui-form layui-card-header layuiadmin-card-header-auto">
  53. <div class="layui-form-item">
  54. <div style="float:right;">
  55. <div class="layui-inline">
  56. <div class="layui-input-inline">
  57. <input type="text" name="keyword" placeholder="请输入问题" autocomplete="off" class="layui-input keyword">
  58. </div>
  59. </div>
  60. <div class="layui-inline">
  61. <select name="cate">
  62. <option value="">请选择分类</option>
  63. {volist name='cate' id='vo'}
  64. <option value="{$vo.name}">{$vo.name}</option>
  65. {/volist}
  66. </select>
  67. </div>
  68. <div class="layui-inline">
  69. <select name="user_cate">
  70. <option value="">请选择适用部门</option>
  71. {volist name='user_cate' id='vo'}
  72. <option value="{$vo.name}">{$vo.name}</option>
  73. {/volist}
  74. </select>
  75. </div>
  76. <div class="layui-inline">
  77. <select name="house_type">
  78. <option value="">请选择房屋类型</option>
  79. {volist name='house_type' id='vo'}
  80. <option value="{$vo.name}">{$vo.name}</option>
  81. {/volist}
  82. </select>
  83. </div>
  84. <div class="layui-inline">
  85. <select name="employee_id">
  86. <option value="">请选择上传人</option>
  87. {volist name='employee' id='vo'}
  88. <option value="{$vo.id}">{$vo.opt_name}</option>
  89. {/volist}
  90. </select>
  91. </div>
  92. <div class="layui-inline">
  93. <input type="text" id="lay-date" name="addtime" placeholder="请选择上传时间" autocomplete="off"
  94. class="layui-input">
  95. </div>
  96. <div class="layui-inline">
  97. <button class="layui-btn layuiadmin-btn-useradmin searchBtn" lay-submit lay-filter="customer-search">
  98. <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
  99. </button>
  100. </div>
  101. </div>
  102. <div class="layui-inline" style="float: left;">
  103. <div class="goback">
  104. <a href="{:url('talkskill/cate_talkskill')}"><i class="layui-icon layui-icon-return"></i>
  105. <span>返回</span>
  106. </a>
  107. </div>
  108. <!-- {auth:check name="talkskill/add_talkskill"}
  109. <button class="layui-btn layuiadmin-btn" data-type="add">添加标准话术</button>
  110. {/auth:check} -->
  111. {auth:check name="talkskill/talkskill_delete"}
  112. <button class="layui-btn layuiadmin-btn deletebtn" data-type="delete">批量删除</button>
  113. {/auth:check}
  114. </div>
  115. </div>
  116. </div>
  117. <div class="layui-card-body">
  118. <table lay-filter="talkskill-table" id="talkskill-table"></table>
  119. </div>
  120. </div>
  121. </div>
  122. </body>
  123. {/block} {block name="js"}
  124. <script type="text/html" id="table-talkskill-action">
  125. {{# if(d.from_type == 0){ }}
  126. {auth:check name="talkskill/add_talkskill"}
  127. <a class="layui-btn layui-btn-xs" lay-event="talkskill-edit">编辑</a>
  128. {/auth:check}
  129. {auth:check name="talkskill/talkskilldel"}
  130. <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="talkskill-del">删除</a>
  131. {/auth:check}
  132. {{# }else{ }}
  133. <span style="color: #cccccc;">无</span>
  134. {{# } }}
  135. </script>
  136. <script type="text/html" id="comment">
  137. <div class="commentcount" lay-event="commentCount">
  138. {{# if(d.imgs){ }}
  139. <img src="__STATIC__/img/viewicos.png" alt="">
  140. {{d.title}}
  141. {{# }else{ }}
  142. {{d.title}}
  143. {{# } }}
  144. </div>
  145. </script>
  146. <script type="text/html" id="imgs">
  147. {{# if(d.imgs){ }}
  148. {{# for(var j in d.imgs) { }}
  149. <img src="{{d.imgs[j]}}" style="text-align: center" width="30px" height="30px"/>
  150. {{# } }}
  151. {{# }else{ }}
  152. <span style="color: #cccccc;">无</span>
  153. {{# } }}
  154. </script>
  155. <script type="text/html" id="user_cate">
  156. {{# if(d.user_cate){ }}
  157. <span>{{d.user_cate}}</span>
  158. {{# }else{ }}
  159. <span style="color: #cccccc;">无</span>
  160. {{# } }}
  161. </script>
  162. <script type="text/html" id="house_type">
  163. {{# if(d.house_type){ }}
  164. <span>{{d.house_type}}</span>
  165. {{# }else{ }}
  166. <span style="color: #cccccc;">无</span>
  167. {{# } }}
  168. </script>
  169. <script type="text/html" id="cate2">
  170. {{# if(d.cate2){ }}
  171. <span>{{d.cate2}}</span>
  172. {{# }else{ }}
  173. <span style="color: #cccccc;">无</span>
  174. {{# } }}
  175. </script>
  176. <script>
  177. layui.config({
  178. base: '__LAYUI__/',
  179. urlbase: '/sys'
  180. }).extend({
  181. index: 'lib/index'
  182. }).use(['index', 'table', 'layedit', 'element', 'laydate'], function() {
  183. var $ = layui.$,
  184. table = layui.table,
  185. element = layui.element,
  186. laydate = layui.laydate,
  187. form = layui.form;
  188. laydate.render({
  189. elem: '#lay-date',
  190. range: true
  191. });
  192. form.on('submit(customer-search)', function (data) {
  193. let field = data.field;
  194. var type = $('#type').val();
  195. field['type'] = type;
  196. //执行重载
  197. table.reload('talkskill-table', {
  198. where: field
  199. ,page: {curr:1}
  200. });
  201. });
  202. //事件
  203. var active = {
  204. add: function() {
  205. layer.open({
  206. type: 2,
  207. title:['话术添加', 'color:#333333;background-color:#D8E6F1;'],
  208. content: '{:url("talkskill/talkskilladd")}',
  209. resize: false,
  210. area: ['80%', '80%'],
  211. btn: ['确定', '取消'],
  212. yes: function(index, layero) {
  213. //点击确认触发 iframe 内容中的按钮提交
  214. var submit = layero.find('iframe').contents().find("#talkskill-submit");
  215. submit.click();
  216. }
  217. });
  218. },
  219. // 批量删除
  220. delete: function() {
  221. var data = layui.table.checkStatus('talkskill-table');
  222. //console.log(checkStatus.data) //获取选中行的数据即 多个行对象
  223. //console.log(checkStatus.data.length) //获取选中行数量,可作为是否有选中行的条件
  224. //console.log(checkStatus.isAll ) //表格是否全选
  225. if (data.data.length==0) {
  226. layer.msg('请选择要删除的话术', {anim: 6,time: 800});
  227. return false;
  228. } else {
  229. var ids = [];
  230. for (var i = 0; i < data.data.length; i++) {
  231. ids.push(data.data[i].id);
  232. }
  233. layer.confirm('确定要删除么?',{title:['信息', 'color:#333333;background-color:#D8E6F1;'],}, function() {
  234. $.ajax({
  235. url: '{:url("talkskill/talkskill_delete")}',
  236. type: 'post',
  237. data: {ids:ids},
  238. dataType: 'json',
  239. success: function(res) {
  240. // console.log(res)
  241. if(res.code === 0) {
  242. layer.msg(res.msg, {anim: 0,time: 800});
  243. //执行重载
  244. table.reload('talkskill-table');
  245. } else {
  246. layer.msg(res.msg, {anim: 6,time: 800});
  247. }
  248. }
  249. });
  250. });
  251. }
  252. // layer.open({
  253. // type: 2,
  254. // title: '话术添加',
  255. // content: '{:url("talkskill/talkskilladd")}',
  256. // maxmin: true,
  257. // area: ['40%', '80%'],
  258. // btn: ['确定', '取消'],
  259. // yes: function(index, layero) {
  260. // //点击确认触发 iframe 内容中的按钮提交
  261. // var submit = layero.find('iframe').contents().find("#talkskill-submit");
  262. // submit.click();
  263. // }
  264. // });
  265. }
  266. };
  267. //话术列表
  268. table.render({
  269. elem: '#talkskill-table',
  270. autoSort: false,
  271. url: "{:url('talkskill/talkskilllist')}?type={$type}&name={$name}",
  272. cols: [
  273. [{type: 'checkbox',field:'id'},
  274. {
  275. type: 'numbers',
  276. field: 'id',
  277. width: 80,
  278. title: '序号',
  279. sort: true
  280. }, {
  281. // field: 'title',
  282. title: '问题',
  283. templet: '#comment'
  284. }, {
  285. field: 'content',
  286. title: '官方回答'
  287. }, {
  288. field: 'cate1',
  289. title: '场景'
  290. }, {
  291. title: '分类',
  292. templet: '#cate2',
  293. }, {
  294. title: '房屋类型',
  295. templet: '#house_type',
  296. }, {
  297. title: '适用部门',
  298. templet: '#user_cate',
  299. }, {
  300. field: 'use_count',
  301. title: '使用量'
  302. },{
  303. field: 'name',
  304. title: '上传人'
  305. },{
  306. field: 'addtime',
  307. title: '上传时间',
  308. minWidth: 160
  309. }, {
  310. title: '操作',
  311. width: 150,
  312. align: 'center',
  313. fixed: 'right',
  314. toolbar: '#table-talkskill-action'
  315. }]
  316. ],
  317. page: true,
  318. limit: 30,
  319. height: 'full-220',
  320. text: '对不起,加载出现异常!'
  321. });
  322. //监听列表
  323. table.on('tool(talkskill-table)', function(obj) {
  324. var data = obj.data;
  325. if(obj.event === 'talkskill-edit') {
  326. layer.open({
  327. type: 2,
  328. title:['话术编辑', 'color:#333333;background-color:#D8E6F1;'],
  329. content: "{:url('talkskill/talkskilldetail')}?id=" + data.id,
  330. resize: false,
  331. area: ['80%', '80%'],
  332. btn: ['确定', '取消'],
  333. yes: function(index, layero) {
  334. //点击确认触发 iframe 内容中的按钮提交
  335. var submit = layero.find('iframe').contents().find("#talkskill-submit");
  336. submit.click();
  337. }
  338. });
  339. }else if(obj.event === 'talkskill-del') {
  340. layer.confirm('确定删除?',{title:['信息', 'color:#333333;background-color:#D8E6F1;'],}, function(index) {
  341. $.ajax({
  342. url: "{:url('talkskill/talkskilldel')}?id=" + data.id,
  343. type: 'post'
  344. });
  345. obj.del();
  346. layer.close(index);
  347. });
  348. }else if(obj.event === 'commentCount') {
  349. layer.open({
  350. type: 2,
  351. title:['话术详情', 'color:#333333;background-color:#D8E6F1;'],
  352. content: "{:url('talkskill/talkskillview')}?id=" + data.id,
  353. resize: false,
  354. area: ['80%', '80%'],
  355. })
  356. }
  357. });
  358. table.on('checkbox(talkskill-table)', function(obj){
  359. var arrlist = table.checkStatus('talkskill-table').data;
  360. if(arrlist.length>0){
  361. $('.deletebtn').show();
  362. }else{
  363. $('.deletebtn').hide();
  364. }
  365. });
  366. $('.layui-btn.layuiadmin-btn').on('click', function() {
  367. var type = $(this).data('type');
  368. active[type] ? active[type].call(this) : '';
  369. });
  370. });
  371. </script>
  372. {/block}