index.html 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. {include file="common/header"/}
  2. <style>
  3. .yourclass {
  4. display: block;
  5. }
  6. .canel {
  7. display: none;
  8. }
  9. </style>
  10. <div class="LM-container">
  11. <div class="LM-main">
  12. <fieldset class="layui-elem-field layui-field-title">
  13. <legend>{:lang('user')}{:lang('list')}</legend>
  14. <blockquote class="layui-elem-quote">
  15. <div class="LM-table">
  16. <div class="layui-inline">
  17. <input type="text" id='keys' name="keys" lay-verify="required"
  18. placeholder="{:lang('pleaseEnter')}" autocomplete="off" class="layui-input">
  19. </div>
  20. <a href="javascript:;" class="layui-btn data-add-btn layui-btn-sm" lay-submit="" lay-filter="add"
  21. id="search">
  22. {:lang('search')}
  23. </a>
  24. <!-- <a href="{:url('add')}" class="layui-btn layui-btn-sm layui-btn-warm">{:lang('add')}{:lang('user')}</a>-->
  25. <!-- <a href="javascript:;" class="layui-btn layui-btn-sm layui-btn-danger" id="delAll">{:lang('delete checked')}</a>-->
  26. </div>
  27. </blockquote>
  28. </fieldset>
  29. <table class="layui-table" id="list" lay-filter="list"></table>
  30. </div>
  31. </div>
  32. <script type="text/html" id="action">
  33. <!-- <a href="{:url('edit')}?id={{d.id}}" class="layui-btn layui-btn-xs" lay-event="edit">{:lang('edit')}</a>-->
  34. <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="vip_level">设置会员等级</a>
  35. <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除账号</a>
  36. <a href="{:url('certificateshow')}?user_id={{d.id}}" class="layui-btn layui-btn-xs" lay-event="tzlg">通证记录</a>
  37. <a href="{:url('agent/xiaji')}?user_id={{d.id}}&type=1" class="layui-btn layui-btn-xs" >下级会员列表</a>
  38. <a class="layui-btn layui-btn-xs" lay-event="update_pwd">重置密码</a>
  39. <a href="{:url('usermessage')}?user_id={{d.id}}" class="layui-btn layui-btn-xs" >查看收款信息</a>
  40. </script>
  41. <script type="text/html" id="status">
  42. <input type="checkbox" name="status" value="{{d.id}}" lay-skin="switch" lay-text="正常|禁止" lay-filter="status" {{ d.status== 0 ? 'checked' : '' }}>
  43. </script>
  44. <script type="text/html" id="daili">
  45. <input type="checkbox" name="is_admin" value="{{d.id}}" lay-skin="switch" lay-text="是|否" lay-filter="is_admin" {{ d.is_admin== 1 ? 'checked' : '' }}>
  46. </script>
  47. <script type="text/html" id="avatar">
  48. {{d.image}}<img src="/static/admin/images/image.gif"
  49. onmouseover="layer.tips('<img src={{d.image}}>',this,{tips: [1, '#fff']});"
  50. onmouseout="layer.closeAll();">
  51. </script>
  52. <div id="red" style="background-color: white; border-radius: 10px; text-align: center;display: none">
  53. <div class="layui-form-item">
  54. <label class="layui-form-label">设置vip等级</label>
  55. <div class="layui-input-block">
  56. <select name="vip_levels" lay-verify="required" id="vip_levels">
  57. {volist name="$vip" id="vs"}
  58. <option class="option-{$vs.id}" value="{$vs.id}">{$vs.level}级</option>
  59. {/volist}
  60. </select>
  61. </div>
  62. </div>
  63. <div style="height: 1px; background-color: #d5d5d5; margin-top: 10px;"></div>
  64. <div style="width: 100%; text-align: center;">
  65. <div style="float: left; width: 49.75%; height: 41px; padding-top: 10px;" lay-event="cancel" onclick="cancel()">取消</div>
  66. <div style="float: left; width: 1px; height: 41px; background-color: #d5d5d5;"></div>
  67. <div style="float: right; width: 49.75%; height: 41px; padding-top: 10px;" lay-event="sendRedpacket" onclick="sendRedpacket()">确定</div>
  68. <div style="clear: both;"></div>
  69. </div>
  70. </div>
  71. {include file="common/footer"/}
  72. <script>
  73. let redIndex=0;
  74. let user_id=0;
  75. let vip_level=0;
  76. layui.use(['form', 'table'], function () {
  77. var $ = layui.jquery,
  78. form = layui.form,
  79. table = layui.table;
  80. var tableIn = table.render({
  81. elem: '#list',
  82. url: '{:url("index")}',
  83. method: 'post',
  84. title: '用户数据表',
  85. // toolbar: '#toolbar', //开启头部工具栏,并为其绑定左侧模板
  86. defaultToolbar: ['filter', 'exports', 'print', { //自定义头部工具栏右侧图标。如无需自定义,去除该参数即可
  87. title: '提示'
  88. , layEvent: 'LAYTABLE_TIPS'
  89. , icon: 'layui-icon-tips'
  90. }],
  91. cols: [[
  92. // {checkbox: true, fixed: true},
  93. {field: 'id', title: 'ID', width: 80, sort: true},
  94. {field: 'name', title: '名字', width: 120,},
  95. {field: 'maild', title: '邮箱', width: 120,},
  96. {field: 'phone', title: '手机', width: 120,},
  97. {field: 'sex', title: '性别', width: 120},
  98. {field: 'vip_level', title: '会员等级', width: 120,},
  99. {field: 'image', title: '头像', width: 120, templet: "#avatar"},
  100. {field: 'status', title: '状态', width: 180, templet: '#status'},
  101. {field: 'pid', title: '上级id', width: 180},
  102. {field: 'code', title: '邀请码', width: 180},
  103. {field: 'money', title: '通证余额', width: 180,edit:"text"},
  104. {field: 'ensure_money', title: '保证金', width: 180,edit:"text"},
  105. {field: 'push_money', title: '可售额度', width: 180,edit:"text"},
  106. {field: 'pool_money', title: '矿池矿金', width: 180},
  107. {field: 'is_admin', title: '是否代理商账号', width: 180, templet: '#daili'},
  108. {field: 'add_time', title: '注册时间', width: 180},
  109. {field: 'update_time', title: '更新时间', width: 180},
  110. {title: '操作', width: 600, toolbar: '#action', align: "center"},
  111. ]],
  112. limits: [10, 15, 20, 25, 50, 100],
  113. limit: 15,
  114. page: true
  115. });
  116. //监听单元格编辑
  117. table.on('edit(list)', function(obj){
  118. var value = obj.value //得到修改后的值
  119. ,data = obj.data //得到所在行所有键值
  120. ,field = obj.field; //得到字段
  121. let da={
  122. id:data.id,
  123. field:field,
  124. value:value
  125. }
  126. // layer.msg('[ID: '+ data.id +'] ' + field + ' 字段更改为:'+ value);
  127. // console.log(da)
  128. $.post("{:url('update_user_money')}", da, function (res) {
  129. if (res.code ==200) {
  130. layer.msg(res.msg, {time: 1000, icon: 1});
  131. } else {
  132. tableIn.reload()
  133. layer.msg(res.msg, {time: 1000, icon: 2});
  134. }
  135. },"json");
  136. });
  137. table.on('tool(list)', function (obj) {
  138. var data = obj.data;
  139. if (obj.event === 'del') {
  140. layer.confirm('您确定要删除该账号吗', function (index) {
  141. loading = layer.load(1, {shade: [0.1, '#fff']});
  142. $.post("{:url('delete_user')}", {id: data.id}, function (res) {
  143. layer.close(loading);
  144. layer.close(index);
  145. if (res.code ==200) {
  146. layer.msg(res.msg, {time: 1000, icon: 1});
  147. obj.del();
  148. } else {
  149. layer.msg(res.msg, {time: 1000, icon: 2});
  150. }
  151. },"json");
  152. });
  153. }
  154. if (obj.event === 'update_pwd') {
  155. layer.prompt({title: '请填写新密码', formType: 3}, function(text, index){
  156. layer.close(index);
  157. if (!text){
  158. layer.msg("请填写新密码", {time: 1000, icon: 1});
  159. return ;
  160. }
  161. let datas={
  162. id:data.id,
  163. pwd:text
  164. }
  165. loading = layer.load(1, {shade: [0.1, '#fff']});
  166. $.post("{:url('update_pwd')}", datas, function (res) {
  167. layer.close(loading);
  168. if (res.code ==200) {
  169. layer.msg(res.msg, {time: 1000, icon: 1});
  170. // obj.del();
  171. } else {
  172. layer.msg(res.msg, {time: 1000, icon: 2});
  173. }
  174. },"json");
  175. });
  176. }
  177. // 弹出框
  178. if (obj.event === "vip_level") {
  179. user_id=data.id;
  180. vip_level=data.vip_level;
  181. $(".option-"+vip_level).attr("selected",true);
  182. redIndex = layer.open({
  183. type: 1,
  184. title: false,
  185. area: ['80%', ''], //宽高
  186. closeBtn: 0,
  187. shadeClose: false,
  188. skin: $(".yourclass"),
  189. content: $("#red"),
  190. });
  191. }
  192. });
  193. form.on('switch(status)', function (data) {
  194. // 修改状态
  195. loading = layer.load(1, {shade: [0.1, '#fff']});
  196. $.post("{:url('fenhao')}", {id: data.value}, function (res) {
  197. layer.close(loading);
  198. if (res.code == 200) {
  199. layer.msg(res.msg, {time: 1000, icon: 1});
  200. } else {
  201. layer.msg(res.msg, {time: 1000, icon: 2});
  202. }
  203. }, "json");
  204. });
  205. form.on('switch(is_admin)', function (data) {
  206. // 修改状态
  207. loading = layer.load(1, {shade: [0.1, '#fff']});
  208. $.post("{:url('is_admin')}", {id: data.value}, function (res) {
  209. layer.close(loading);
  210. if (res.code == 200) {
  211. layer.msg(res.msg, {time: 1000, icon: 1});
  212. } else {
  213. layer.msg(res.msg, {time: 1000, icon: 2});
  214. }
  215. }, "json");
  216. });
  217. $('#search').click(function () {
  218. var $keys = $('#keys').val();
  219. if (!$keys) {
  220. return layer.msg('请输入关键词');
  221. }
  222. tableIn.reload({page: {page: 1}, where: {keys: $keys}});
  223. })
  224. });
  225. // 取消
  226. function cancel() {
  227. $("#red").addClass("canel")
  228. layer.close(redIndex);
  229. }
  230. // 确定
  231. function sendRedpacket() {
  232. let vip_levels=$("#vip_levels").val()
  233. let loading = layer.load(1, {shade: [0.1, '#fff']});
  234. let data={
  235. id:user_id,
  236. level:vip_levels
  237. }
  238. $.post("{:url('update_leve')}", data, function (res) {
  239. layer.close(loading);
  240. layer.close(redIndex);
  241. if (res.code == 200) {
  242. window.location.reload()
  243. layer.msg(res.msg, {time: 1000, icon: 1});
  244. } else {
  245. layer.msg(res.msg, {time: 1000, icon: 2});
  246. }
  247. },"json");
  248. }
  249. </script>