index.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398
  1. {extend name="public/container"}
  2. {block name="head_top"}
  3. <script src="{__PLUG_PATH}city.js"></script>
  4. <style>
  5. .layui-btn-xs{margin-left: 0px !important;}
  6. legend{
  7. width: auto;
  8. border: none;
  9. font-weight: 700 !important;
  10. }
  11. .site-demo-button{
  12. padding-bottom: 20px;
  13. padding-left: 10px;
  14. }
  15. .layui-form-label{
  16. width: auto;
  17. }
  18. .layui-input-block input{
  19. width: 50%;
  20. height: 34px;
  21. }
  22. .layui-form-item{
  23. margin-bottom: 0;
  24. }
  25. .layui-input-block .time-w{
  26. width: 200px;
  27. }
  28. .layui-table-body{overflow-x: hidden;}
  29. .layui-btn-group button i{
  30. line-height: 30px;
  31. margin-right: 3px;
  32. vertical-align: bottom;
  33. }
  34. .back-f8{
  35. background-color: #F8F8F8;
  36. }
  37. .layui-input-block button{
  38. border: 1px solid #e5e5e5;
  39. }
  40. .avatar{width: 50px;height: 50px;}
  41. </style>
  42. {/block}
  43. {block name="content"}
  44. <div class="row">
  45. <div class="col-sm-12">
  46. <div class="ibox float-e-margins">
  47. <div class="ibox-title">
  48. <h5>会员搜索</h5>
  49. <div class="ibox-tools">
  50. <a class="collapse-link">
  51. <i class="fa fa-chevron-up"></i>
  52. </a>
  53. </div>
  54. </div>
  55. <div class="ibox-content" style="display: block;">
  56. <div class="alert alert-success alert-dismissable">
  57. <button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
  58. 目前拥有{$count_user}个会员
  59. </div>
  60. <form class="layui-form">
  61. <div class="layui-form-item">
  62. <div class="layui-inline">
  63. <label class="layui-form-label">姓名编号:</label>
  64. <div class="layui-input-inline">
  65. <input type="text" name="nickname" lay-verify="nickname" style="width: 100%" autocomplete="off" placeholder="请输入姓名、编号" class="layui-input">
  66. </div>
  67. </div>
  68. <div class="layui-inline">
  69. <label class="layui-form-label">用户类型:</label>
  70. <div class="layui-input-inline">
  71. <select name="user_type" lay-verify="user_type">
  72. <option value="">全部</option>
  73. <option value="wechat">微信公众号</option>
  74. <option value="routine">微信小程序</option>
  75. </select>
  76. </div>
  77. </div>
  78. <div class="layui-inline">
  79. <label class="layui-form-label">状  态:</label>
  80. <div class="layui-input-inline">
  81. <select name="status" lay-verify="status">
  82. <option value="">全部</option>
  83. <option value="1">正常</option>
  84. <option value="0">锁定</option>
  85. </select>
  86. </div>
  87. </div>
  88. <div class="layui-inline">
  89. <label class="layui-form-label">性  别:</label>
  90. <div class="layui-input-inline">
  91. <select name="sex" lay-verify="sex">
  92. <option value="">全部</option>
  93. <option value="1">男</option>
  94. <option value="2">女</option>
  95. <option value="0">保密</option>
  96. </select>
  97. </div>
  98. </div>
  99. <div class="layui-inline">
  100. <label class="layui-form-label">身  份:</label>
  101. <div class="layui-input-inline">
  102. <select name="is_promoter" lay-verify="is_promoter">
  103. <option value="">全部</option>
  104. <option value="1">推广员</option>
  105. <option value="0">普通用户</option>
  106. </select>
  107. </div>
  108. </div>
  109. <div class="layui-inline">
  110. <label class="layui-form-label">国  家:</label>
  111. <div class="layui-input-inline">
  112. <select name="country" lay-verify="country" lay-filter='country'>
  113. <option value="" selected="selected">请选择国</option>
  114. <option value="domestic">中国</option>
  115. <option value="abroad">外国</option>
  116. </select>
  117. </div>
  118. </div>
  119. <div class="layui-inline" id="province-div">
  120. <label class="layui-form-label">省  份:</label>
  121. <div class="layui-input-inline">
  122. <select name="province" lay-verify="province" lay-filter='province' id="province">
  123. <option value="" id="province-top">请选择省</option>
  124. </select>
  125. </div>
  126. </div>
  127. <div class="layui-inline" id="city-div">
  128. <label class="layui-form-label">市  区:</label>
  129. <div class="layui-input-inline">
  130. <select name="city" lay-verify="city" lay-filter='city' id="city">
  131. <option value="" id="city-top">请选择市</option>
  132. </select>
  133. </div>
  134. </div>
  135. </div>
  136. <div class="layui-form-item">
  137. <div class="layui-inline">
  138. <label class="layui-form-label">消费情况:</label>
  139. <div class="layui-input-inline">
  140. <select name="pay_count" lay-verify="pay_count">
  141. <option value="">全部</option>
  142. <option value="-1">0</option>
  143. <option value="0">1+</option>
  144. <option value="1">2+</option>
  145. <option value="2">3+</option>
  146. <option value="3">4+</option>
  147. <option value="4">5+</option>
  148. </select>
  149. </div>
  150. </div>
  151. <div class="layui-inline">
  152. <label class="layui-form-label">访问情况:</label>
  153. <div class="layui-input-inline">
  154. <select name="user_time_type" lay-verify="user_time_type">
  155. <option value="">全部</option>
  156. <option value="visitno">时间段未访问</option>
  157. <option value="visit">时间段访问过</option>
  158. <option value="add_time">首次访问</option>
  159. </select>
  160. </div>
  161. </div>
  162. <div class="layui-inline">
  163. <label class="layui-form-label">选择时间:</label>
  164. <div class="layui-input-inline">
  165. <input type="text" class="layui-input time-w" name="user_time" lay-verify="user_time" id="user_time" placeholder=" - ">
  166. </div>
  167. </div>
  168. </div>
  169. <div class="layui-form-item">
  170. <label class="layui-form-label">
  171. <button class="layui-btn layui-btn-sm layui-btn-normal" lay-submit="" lay-filter="search" >
  172. <i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>搜索</button>
  173. </label>
  174. </div>
  175. </form>
  176. </div>
  177. </div>
  178. </div>
  179. </div>
  180. <div class="row">
  181. <div class="col-sm-12">
  182. <div class="ibox">
  183. <div class="ibox-content">
  184. <div class="table-responsive">
  185. <div class="layui-btn-group conrelTable">
  186. <!-- <button class="layui-btn layui-btn-sm layui-btn-danger" type="button" data-type="set_status_f"><i class="fa fa-ban"></i>封禁</button>-->
  187. <!-- <button class="layui-btn layui-btn-sm layui-btn-normal" type="button" data-type="set_status_j"><i class="fa fa-check-circle-o"></i>解封</button>-->
  188. <button class="layui-btn layui-btn-sm layui-btn-normal" type="button" data-type="set_grant"><i class="fa fa-check-circle-o"></i>发送优惠券</button>
  189. <button class="layui-btn layui-btn-sm layui-btn-normal" type="button" data-type="set_custom"><i class="fa fa-check-circle-o"></i>发送客服图文消息</button>
  190. <!-- <button class="layui-btn layui-btn-sm layui-btn-normal" type="button" data-type="set_template"><i class="fa fa-check-circle-o"></i>发送模板消息</button>-->
  191. <button class="layui-btn layui-btn-sm layui-btn-normal" type="button" data-type="set_info"><i class="fa fa-check-circle-o"></i>发送站内消息</button>
  192. <button class="layui-btn layui-btn-sm layui-btn-normal" type="button" data-type="refresh"><i class="layui-icon layui-icon-refresh" ></i>刷新</button>
  193. </div>
  194. <table class="layui-hide" id="userList" lay-filter="userList">
  195. </table>
  196. <script type="text/html" id="user_type">
  197. <button type="button" class="layui-btn layui-btn-normal layui-btn-radius layui-btn-xs">{{d.user_type}}</button>
  198. </script>
  199. <script type="text/html" id="checkboxstatus">
  200. <input type='checkbox' name='status' lay-skin='switch' value="{{d.uid}}" lay-filter='status' lay-text='正常|禁止' {{ d.status == 1 ? 'checked' : '' }}>
  201. </script>
  202. <script type="text/html" id="barDemo">
  203. <button type="button" class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</button>
  204. <button type="button" class="layui-btn layui-btn-xs" lay-event="see"><i class="layui-icon layui-icon-edit"></i>详情</button>
  205. </script>
  206. </div>
  207. </div>
  208. </div>
  209. </div>
  210. </div>
  211. <script src="{__ADMIN_PATH}js/layuiList.js"></script>
  212. <script src="{__FRAME_PATH}js/content.min.js?v=1.0.0"></script>
  213. {/block}
  214. {block name="script"}
  215. <script>
  216. $('#province-div').hide();
  217. $('#city-div').hide();
  218. layList.select('country',function (odj,value,name) {
  219. var html = '';
  220. $.each(city,function (index,item) {
  221. html += '<option value="'+item.label+'">'+item.label+'</option>';
  222. })
  223. if(odj.value == 'domestic'){
  224. $('#province-div').show();
  225. $('#city-div').show();
  226. $('#province-top').siblings().remove();
  227. $('#province-top').after(html);
  228. $('#province').val('');
  229. layList.form.render('select');
  230. }else{
  231. $('#province-div').hide();
  232. $('#city-div').hide();
  233. }
  234. $('#province').val('');
  235. $('#city').val('');
  236. });
  237. layList.select('province',function (odj,value,name) {
  238. var html = '';
  239. $.each(city,function (index,item) {
  240. if(item.label == odj.value){
  241. $.each(item.children,function (indexe,iteme) {
  242. html += '<option value="'+iteme.label+'">'+iteme.label+'</option>';
  243. })
  244. $('#city').val('');
  245. $('#city-top').siblings().remove();
  246. $('#city-top').after(html);
  247. layList.form.render('select');
  248. }
  249. })
  250. });
  251. layList.form.render();
  252. layList.tableList('userList',"{:Url('get_user_list')}",function () {
  253. return [
  254. {type:'checkbox'},
  255. {field: 'uid', title: '编号', width:'6%',event:'uid'},
  256. {field: 'avatar', title: '头像', event:'open_image', width: '6%', templet: '<p><img class="avatar" style="cursor: pointer" class="open_image" data-image="{{d.avatar}}" src="{{d.avatar}}" alt="{{d.nickname}}"></p>'},
  257. {field: 'nickname', title: '姓名'},
  258. {field: 'now_money', title: '余额',width:'6%',sort:true,event:'now_money'},
  259. {field: 'pay_count', title: '购买次数',align:'center',width:'6%'},
  260. {field: 'extract_count_price', title: '累计提现',align:'center',width:'6%'},
  261. {field: 'integral', title: '积分',width:'6%',sort:true,event:'integral'},
  262. {field: 'spread_uid_nickname', title: '推荐人',width:'6%'},
  263. {field: 'sex', title: '性别',width:'4%'},
  264. {field: 'add_time', title: '首次访问日期',align:'center',width:'12%'},
  265. {field: 'last_time', title: '最近访问日期',align:'center',width:'12%'},
  266. {field: 'status', title: '状态',templet:"#checkboxstatus",width:'6%'},
  267. {field: 'user_type', title: '用户类型',templet:'#user_type',width:'6%'},
  268. {fixed: 'right', title: '操作', width: '10%', align: 'center', toolbar: '#barDemo'}
  269. ];
  270. });
  271. layList.date('last_time');
  272. layList.date('add_time');
  273. layList.date('user_time');
  274. layList.date('time');
  275. //监听并执行 uid 的排序
  276. layList.sort(function (obj) {
  277. var layEvent = obj.field;
  278. var type = obj.type;
  279. switch (layEvent){
  280. case 'uid':
  281. layList.reload({order: layList.order(type,'u.uid')},true,null,obj);
  282. break;
  283. case 'now_money':
  284. layList.reload({order: layList.order(type,'u.now_money')},true,null,obj);
  285. break;
  286. case 'integral':
  287. layList.reload({order: layList.order(type,'u.integral')},true,null,obj);
  288. break;
  289. }
  290. });
  291. //监听并执行 uid 的排序
  292. layList.tool(function (event,data) {
  293. var layEvent = event;
  294. switch (layEvent){
  295. case 'edit':
  296. $eb.createModalFrame('编辑',layList.Url({a:'edit',p:{uid:data.uid}}));
  297. break;
  298. case 'see':
  299. $eb.createModalFrame(data.nickname+'-会员详情',layList.Url({a:'see',p:{uid:data.uid}}));
  300. break;
  301. }
  302. });
  303. // layList.sort('uid');
  304. //监听并执行 now_money 的排序
  305. // layList.sort('now_money');
  306. //监听 checkbox 的状态
  307. layList.switch('status',function (odj,value,name) {
  308. if(odj.elem.checked==true){
  309. layList.baseGet(layList.Url({a:'set_status',p:{status:1,uid:value}}),function (res) {
  310. layList.msg(res.msg);
  311. });
  312. }else{
  313. layList.baseGet(layList.Url({a:'set_status',p:{status:0,uid:value}}),function (res) {
  314. layList.msg(res.msg);
  315. });
  316. }
  317. });
  318. layList.search('search',function(where){
  319. if(where['user_time_type'] != '' && where['user_time'] == '') return layList.msg('请选择选择时间');
  320. if(where['user_time_type'] == '' && where['user_time'] != '') return layList.msg('请选择访问情况');
  321. layList.reload(where);
  322. });
  323. var action={
  324. set_status_f:function () {
  325. var ids=layList.getCheckData().getIds('uid');
  326. if(ids.length){
  327. layList.basePost(layList.Url({a:'set_status',p:{is_echo:1,status:0}}),{uids:ids},function (res) {
  328. layList.msg(res.msg);
  329. layList.reload();
  330. });
  331. }else{
  332. layList.msg('请选择要封禁的会员');
  333. }
  334. },
  335. set_status_j:function () {
  336. var ids=layList.getCheckData().getIds('uid');
  337. if(ids.length){
  338. layList.basePost(layList.Url({a:'set_status',p:{is_echo:1,status:1}}),{uids:ids},function (res) {
  339. layList.msg(res.msg);
  340. layList.reload();
  341. });
  342. }else{
  343. layList.msg('请选择要解封的会员');
  344. }
  345. },
  346. set_grant:function () {
  347. var ids=layList.getCheckData().getIds('uid');
  348. if(ids.length){
  349. var str = ids.join(',');
  350. $eb.createModalFrame('发送优惠券',layList.Url({c:'ump.store_coupon',a:'grant',p:{id:str}}),{'w':800});
  351. }else{
  352. layList.msg('请选择要发送优惠券的会员');
  353. }
  354. },
  355. set_template:function () {
  356. var ids=layList.getCheckData().getIds('uid');
  357. if(ids.length){
  358. var str = ids.join(',');
  359. }else{
  360. layList.msg('请选择要发送模板消息的会员');
  361. }
  362. },
  363. set_info:function () {
  364. var ids=layList.getCheckData().getIds('uid');
  365. if(ids.length){
  366. var str = ids.join(',');
  367. $eb.createModalFrame('发送站内信息',layList.Url({c:'user.user_notice',a:'notice',p:{id:str}}),{'w':1200});
  368. }else{
  369. layList.msg('请选择要发送站内信息的会员');
  370. }
  371. },
  372. set_custom:function () {
  373. var ids=layList.getCheckData().getIds('uid');
  374. if(ids.length){
  375. var str = ids.join(',');
  376. $eb.createModalFrame('发送客服图文消息',layList.Url({c:'wechat.wechat_news_category',a:'send_news',p:{id:str}}),{'w':1200});
  377. }else{
  378. layList.msg('请选择要发送客服图文消息的会员');
  379. }
  380. },
  381. refresh:function () {
  382. layList.reload();
  383. }
  384. };
  385. $('.conrelTable').find('button').each(function () {
  386. var type=$(this).data('type');
  387. $(this).on('click',function () {
  388. action[type] && action[type]();
  389. })
  390. })
  391. $(document).on('click',".open_image",function (e) {
  392. var image = $(this).data('image');
  393. $eb.openImage(image);
  394. })
  395. </script>
  396. {/block}