sea.html 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. {extend name="../../base/view/common/base" /}
  2. {block name="style"}
  3. <style>
  4. .gougu-upload-files{background-color: #ffffff; border:1px solid #e4e7ed;color: #c0c4cc;cursor: not-allowed; padding:0 12px; width:180px; box-sizing: border-box; display: inline-block; font-size: inherit; height: 38px; line-height: 35px; margin-right:8px; border-radius:2px;}
  5. .gougu-upload-tips{color:#969696}
  6. .layui-form-item{margin-bottom:8px;}
  7. .layui-input-block{min-height:24px;}
  8. </style>
  9. {/block}
  10. <!-- 主体 -->
  11. {block name="body"}
  12. <div class="p-page">
  13. <form class="layui-form gg-form-bar border-x border-t" id="barsearchform" lay-filter="barsearchform">
  14. <div class="layui-input-inline" style="width:120px;">
  15. <select name="source_id">
  16. <option value="">渠道来源</option>
  17. {volist name=":get_base_data('customer_source')" id="v"}
  18. <option value="{$v.id}">{$v.title}</option>
  19. {/volist}
  20. </select>
  21. </div>
  22. <div class="layui-input-inline" style="width:120px;">
  23. <select name="industry_id">
  24. <option value="">所属行业</option>
  25. {volist name=":get_base_data('Industry')" id="v"}
  26. <option value="{$v.id}">{$v.title}</option>
  27. {/volist}
  28. </select>
  29. </div>
  30. <div class="layui-input-inline" style="width:120px;">
  31. <select name="grade_id">
  32. <option value="">客户等级</option>
  33. {volist name=":get_base_data('customer_grade')" id="v"}
  34. <option value="{$v.id}">{$v.title}</option>
  35. {/volist}
  36. </select>
  37. </div>
  38. <div class="layui-input-inline" style="width:172px;">
  39. <input type="text" class="layui-input" data-range="~" placeholder="最近跟进日期" readonly name="follow_time" id="follow_time">
  40. </div>
  41. <div class="layui-input-inline" style="width:240px;">
  42. <input type="text" name="keywords" placeholder="输入关键字" class="layui-input" autocomplete="off" />
  43. </div>
  44. <div class="layui-input-inline" style="width:150px;">
  45. <button class="layui-btn layui-btn-normal" lay-submit="" lay-filter="table-search"><i class="layui-icon layui-icon-search mr-1"></i>搜索</button>
  46. <button type="reset" class="layui-btn layui-btn-reset" lay-filter="table-reset">清空</button>
  47. </div>
  48. </form>
  49. <table class="layui-hide" id="test" lay-filter="test"></table>
  50. </div>
  51. <script type="text/html" id="toolbarDemo">
  52. <div class="layui-btn-group">
  53. <button class="layui-btn layui-btn-sm" title="添加公海客户" lay-event="add">+ 添加公海客户</button>
  54. <button class="layui-btn layui-btn-normal layui-btn-sm" lay-event="import"><i class="layui-icon">&#xe66f;</i>批量导入</button>
  55. <button class="layui-btn layui-btn-danger layui-btn-sm" lay-event="del"><i class="layui-icon">&#xe609;</i>批量转入废弃池</button>
  56. </div>
  57. </script>
  58. {/block}
  59. <!-- /主体 -->
  60. <!-- 脚本 -->
  61. {block name="script"}
  62. <script>
  63. const moduleInit = ['tool','tablePlus','oaPicker','uploadPlus','laydatePlus'];
  64. function gouguInit() {
  65. var table = layui.tablePlus, tool = layui.tool ,form = layui.form, oaPicker = layui.oaPicker,uploadPlus=layui.uploadPlus,laydatePlus=layui.laydatePlus;
  66. var follow_time = new laydatePlus({'target':'follow_time'});
  67. layui.pageTable = table.render({
  68. elem: '#test',
  69. title: '公海客户列表',
  70. defaultToolbar: false,
  71. toolbar: '#toolbarDemo',
  72. url: "/customer/index/sea", //数据接口
  73. cellMinWidth: 80,
  74. page: true, //开启分页
  75. limit: 20,
  76. height: 'full-114',
  77. cols: [
  78. [ //表头
  79. {type:'checkbox',fixed:'left'},
  80. {field: 'id',title: '编号',align: 'center',width: 80},{
  81. field: 'name',
  82. title: '客户名称',
  83. minWidth:240,
  84. templet: '<div><a data-href="/customer/customer/view/id/{{d.id}}.html" class="side-a">{{d.name}}</a></div>'
  85. },{
  86. field: 'contact_name',
  87. title: '联系人',
  88. align: 'center',
  89. width: 80
  90. },{
  91. field: 'contact_mobile',
  92. title: '手机号码',
  93. align: 'center',
  94. width: 110
  95. },{
  96. field: 'contact_email',
  97. title: '电子邮箱',
  98. width: 200
  99. },{
  100. field: 'grade',
  101. title: '客户等级',
  102. align: 'center',
  103. width: 100
  104. },{
  105. field: 'source',
  106. title: '来源渠道',
  107. align: 'center',
  108. width: 100
  109. },{
  110. field: 'industry',
  111. title: '所属行业',
  112. align: 'center',
  113. width: 120
  114. },{
  115. field: 'create_time',
  116. title: '创建时间',
  117. align: 'center',
  118. width: 150
  119. },{
  120. field: 'update_time',
  121. title: '最后编辑时间',
  122. align: 'center',
  123. width: 150
  124. },{
  125. field: 'right',
  126. fixed:'right',
  127. title: '操作',
  128. width: 190,
  129. align: 'center',
  130. templet: function (d) {
  131. var html = '<div class="layui-btn-group">';
  132. var btn='<span class="layui-btn layui-btn-xs" lay-event="edit">编辑</span>';
  133. var btn0='<span class="layui-btn layui-btn-normal layui-btn-xs" lay-event="distribute">分配</span>';
  134. var btn1='<span class="layui-btn layui-btn-xs" lay-event="get">领取</span>';
  135. var btn2='<span class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">转入废弃池</span>';
  136. return html+btn+btn0+btn1+btn2+'</div>';
  137. }
  138. }
  139. ]
  140. ]
  141. });
  142. //表头工具栏事件
  143. table.on('toolbar(test)', function(obj){
  144. var checkStatus = table.checkStatus(obj.config.id);
  145. var data = checkStatus.data;
  146. if (obj.event === 'add') {
  147. tool.side("/customer/customer/add?sea=1");
  148. return;
  149. }
  150. if (obj.event === 'import') {
  151. let importUpload = new uploadPlus({
  152. "title":'批量导入公海客户',
  153. "use":'import',
  154. "url":'/api/import/import_customer',
  155. "import":{
  156. "template":'/static/home/file/勾股OA客户导入模板.xlsx',
  157. "tips":'如果导入失败,请根据提示注意检查表格数据,客户来源、所属行业、需要是系统中存在的数据,如果不存在的话可能会导入失败。'
  158. },
  159. callback:function(res){
  160. layui.pageTable.reload();
  161. }
  162. });
  163. return;
  164. }
  165. var idArray=[];
  166. for(var i=0;i<data.length;i++){
  167. idArray.push(data[i].id);
  168. }
  169. if (obj.event === 'del') {
  170. if(data.length==0){
  171. layer.msg('请选择要操作的客户');
  172. return false;
  173. }
  174. layer.confirm('您确定要把选中的客户转入废弃池?', {
  175. icon: 3,
  176. title: '提示'
  177. }, function (index) {
  178. let callback = function (e) {
  179. layer.msg(e.msg);
  180. if (e.code == 0) {
  181. layui.pageTable.reload();
  182. }
  183. }
  184. tool.post("/customer/index/to_trash", {id: idArray.join(',')}, callback);
  185. layer.close(index);
  186. });
  187. }
  188. });
  189. //监听行工具事件
  190. table.on('tool(test)', function(obj) {
  191. var data = obj.data;
  192. if(obj.event === 'view'){
  193. tool.side('/customer/customer/view?id='+data.id);
  194. }
  195. if(obj.event === 'edit'){
  196. tool.side('/customer/customer/add?sea=1&id='+data.id);
  197. }
  198. if (obj.event === 'distribute') {
  199. oaPicker.employeeInit({
  200. callback:function(selected){
  201. //这里是选择后的回调方法,可以根据具体需求自定义写哦
  202. let select_id=[],select_name=[],select_did=[];
  203. for(var a=0; a<selected.length;a++){
  204. select_id.push(selected[a].id);
  205. select_name.push(selected[a].name);
  206. select_did.push(selected[a].did);
  207. }
  208. layer.confirm('确定要把该客户分配给'+select_name.join(',')+'?', {
  209. icon: 3,
  210. title: '提示'
  211. }, function(index) {
  212. let callback1 = function (e) {
  213. layer.msg(e.msg);
  214. if (e.code == 0) {
  215. layui.pageTable.reload();
  216. }
  217. }
  218. tool.post("/customer/api/distribute", {id: data.id,uid:select_id.join(','),did:select_did.join(',')}, callback1);
  219. layer.close(index);
  220. });
  221. }
  222. });
  223. }
  224. if (obj.event === 'get') {
  225. layer.confirm('确定要领取该客户?', {
  226. icon: 3,
  227. title: '提示'
  228. }, function(index) {
  229. let callback = function (e) {
  230. layer.msg(e.msg);
  231. if (e.code == 0) {
  232. layui.pageTable.reload();
  233. }
  234. }
  235. tool.post("/customer/index/to_get", {id: data.id}, callback);
  236. layer.close(index);
  237. });
  238. }
  239. if (obj.event === 'del') {
  240. layer.confirm('确定要把客户转入废弃池吗?', {
  241. icon: 3,
  242. title: '提示'
  243. }, function(index) {
  244. let callback = function (e) {
  245. layer.msg(e.msg);
  246. if (e.code == 0) {
  247. layui.pageTable.reload();
  248. }
  249. }
  250. tool.delete("/customer/index/to_trash", {id: data.id,type:1}, callback);
  251. layer.close(index);
  252. });
  253. }
  254. return;
  255. });
  256. }
  257. </script>
  258. {/block}
  259. <!-- /脚本 -->