account_detail.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583
  1. {extend name="base"/}
  2. {block name="resources"}
  3. <style>
  4. .panel-content { padding-left: 15px; box-sizing: border-box; }
  5. .ns-custom-panel .custom-panel-title .panel-content { width: calc(100% - 190px); }
  6. .ns-account-value, .ns-split { line-height: 34px; }
  7. .ns-custom-panel .custom-panel-from { display: block; }
  8. .layui-input-block + .layui-word-aux {
  9. display: block;
  10. margin-left: 100px;
  11. }
  12. .ns-shop-account {
  13. display: flex;
  14. align-items: center;
  15. position: relative;
  16. padding: 15px;
  17. box-sizing: border-box;
  18. }
  19. .ns-shop-detail p {
  20. display: inline-block;
  21. width: 300px;
  22. line-height: 30px;
  23. }
  24. </style>
  25. {/block}
  26. {block name="main"}
  27. <div class="ns-custom-panel">
  28. <div class="ns-form">
  29. <div class="layui-card-body ns-item-block-parent ns-shop-account">
  30. <div class="ns-item-pic">
  31. {if condition="$member_info.headimg"}
  32. <img src="{:img($member_info.headimg)}" alt="">
  33. {else/}
  34. <img src="ADMIN_IMG/default_headimg.png" alt="">
  35. {/if}
  36. </div>
  37. <div class="ns-shop-detail">
  38. <p><strong>用户名:</strong><span class="ns-text-color-dark-gray">{$member_info.username}</span></p>
  39. <p><strong>昵称:</strong><span class="ns-text-color-dark-gray">{$member_info.nickname}</span></p>
  40. <p><strong>真实姓名:</strong><span class="ns-text-color-dark-gray">{$member_info.realname}</span></p>
  41. <br>
  42. <p><strong>手机号:</strong><span class="ns-text-color-dark-gray">{$member_info.mobile}</span></p>
  43. <p><strong>邮箱:</strong><span class="ns-text-color-dark-gray">{$member_info.email}</span></p>
  44. <p><strong>注册时间:</strong><span class="ns-text-color-dark-gray ns-end-time">{:time_to_date($member_info.reg_time)}</span></p>
  45. </div>
  46. </div>
  47. </div>
  48. <div class="custom-panel-from ns-form">
  49. <div class="layui-form" lay-filter="pointForm">
  50. <div class="layui-form-item">
  51. <label class="layui-form-label">积分:</label>
  52. <div class="layui-input-inline ns-len-short ns-account-value" id="member_point">{$member_info.point}</div>
  53. <button class="layui-btn layui-btn-primary" onclick="savePoint(this)" data-num="{$member_info.point}">调整</button>
  54. </div>
  55. </div>
  56. <!-- <div class="layui-form">-->
  57. <!-- <div class="layui-form-item">-->
  58. <!-- <label class="layui-form-label">余额(不可提现):</label>-->
  59. <!-- <div class="layui-input-inline ns-len-short ns-account-value" id="member_balance">{$member_info.balance}</div>-->
  60. <!-- <button class="layui-btn layui-btn-primary" onclick="saveBalance(this)" data-num="{$member_info.balance}">调整</button>-->
  61. <!-- </div>-->
  62. <!-- </div>-->
  63. <div class="layui-form">
  64. <div class="layui-form-item">
  65. <label class="layui-form-label">余额(可提现):</label>
  66. <div class="layui-input-inline ns-len-short ns-account-value" id="member_balance_money">{$member_info.balance_money}</div>
  67. <button class="layui-btn layui-btn-primary" onclick="saveBalanceMoney(this)" data-num="{$member_info.balance_money}">调整</button>
  68. </div>
  69. </div>
  70. <div class="layui-form">
  71. <div class="layui-form-item">
  72. <label class="layui-form-label">成长值:</label>
  73. <div class="layui-input-inline ns-len-short ns-account-value" id="member_growth">{$member_info.growth}</div>
  74. <button class="layui-btn layui-btn-primary" onclick="saveGrowth(this)" data-num="{$member_info.growth}">调整</button>
  75. </div>
  76. </div>
  77. </div>
  78. <div class="ns-screen layui-collapse">
  79. <div class="layui-colla-item">
  80. <h2 class="layui-colla-title">筛选</h2>
  81. <form class="layui-colla-content layui-form layui-show">
  82. <div class="layui-form-item">
  83. <div class="layui-inline">
  84. <label class="layui-form-label">账户类型:</label>
  85. <div class="layui-input-inline">
  86. <select name="account_type" lay-filter="account_type">
  87. <option value="">请选择</option>
  88. {foreach $account_type_arr as $account_type_arr_k => $account_type_arr_v}
  89. <option value="{$account_type_arr_k}">{$account_type_arr_v}</option>
  90. {/foreach}
  91. </select>
  92. </div>
  93. </div>
  94. <div class="layui-inline">
  95. <label class="layui-form-label">来源类型:</label>
  96. <div class="layui-input-inline">
  97. <select name="from_type" class="from_type">
  98. <option value="">请选择</option>
  99. </select>
  100. </div>
  101. </div>
  102. </div>
  103. <div class="layui-form-item">
  104. <div class="layui-inline">
  105. <label class="layui-form-label">发生时间:</label>
  106. <div class="layui-input-inline">
  107. <input type="text" class="layui-input" name="start_date" id="start_date" placeholder="开始时间" autocomplete="off" readonly>
  108. </div>
  109. <div class="layui-input-inline ns-split">&nbsp;&nbsp;-&nbsp;&nbsp;</div>
  110. <div class="layui-input-inline ns-len-mid">
  111. <input type="text" class="layui-input" name="end_date" id="end_date" placeholder="结束时间" autocomplete="off" readonly>
  112. </div>
  113. </div>
  114. </div>
  115. <input type="hidden" name="member_id" value="{$member_info.member_id}" id="member_id"/>
  116. <!-- 提交 -->
  117. <div class="ns-form-row">
  118. <button class="layui-btn ns-bg-color" lay-submit lay-filter="search">筛选</button>
  119. <button type="reset" class="layui-btn layui-btn-primary">重置</button>
  120. </div>
  121. </form>
  122. </div>
  123. </div>
  124. <!-- 列表 -->
  125. <table id="member_account" lay-filter="member_account"></table>
  126. {/block}
  127. {block name="script"}
  128. <script>
  129. var date = {$member_info.reg_time};
  130. $(".reg-time").text(ns.time_to_date(date, "YYYY-MM-DD"));
  131. var form,
  132. table,
  133. laydate,
  134. laytpl;
  135. repeat_flag = false, //防重复标识
  136. currentDate = new Date(),
  137. minDate = "";
  138. currentDate.setDate(currentDate.getDate() - 7);
  139. layui.use(['form', 'laydate', 'laytpl'], function() {
  140. form = layui.form;
  141. laydate = layui.laydate;
  142. laytpl = layui.laytpl;
  143. form.render();
  144. //开始时间
  145. laydate.render({
  146. elem: '#start_date',
  147. type: 'datetime'
  148. });
  149. //结束时间
  150. laydate.render({
  151. elem: '#end_date',
  152. type: 'datetime'
  153. });
  154. //根据账户类型获取来源类型
  155. form.on('select(account_type)', function (data) {
  156. $.ajax({
  157. type: "POST",
  158. url: ns.url("admin/member/getfromtype"),
  159. data: {type:data.value},
  160. dataType: 'JSON',
  161. success: function(res) {
  162. var html = '<option value="">请选择</option>';
  163. $.each(res,function(k,v){
  164. html += '<option value="'+k+'">'+v.type_name+'</option>';
  165. });
  166. $('.from_type').html(html)
  167. form.render();
  168. }
  169. });
  170. });
  171. /**
  172. * 重新渲染结束时间
  173. * */
  174. function reRender() {
  175. $("#reg_end_date").remove();
  176. $(".end-time").html('<input type="text" class="layui-input" name="reg_end_date" id="reg_end_date" placeholder="请输入结束时间">');
  177. laydate.render({
  178. elem: '#reg_end_date',
  179. min: minDate
  180. });
  181. }
  182. /**
  183. * 加载表格
  184. */
  185. table = new Table({
  186. elem: '#member_account',
  187. url: ns.url("admin/member/accountDetail"),
  188. where:{
  189. member_id : $("#member_id").val(),
  190. },
  191. cols: [
  192. [{
  193. field: 'account_type_name',
  194. title: '账户类型',
  195. width: '15%',
  196. unresize: 'false'
  197. }, {
  198. field: 'account_data',
  199. title: '数据金额',
  200. width: '15%',
  201. unresize: 'false'
  202. }, {
  203. field: 'type_name',
  204. title: '发生方式',
  205. width: '15%',
  206. unresize: 'false'
  207. }, {
  208. field: 'remark',
  209. title: '备注',
  210. width: '35%',
  211. unresize: 'false'
  212. }, {
  213. field: 'create_time',
  214. title: '发生时间',
  215. width: '20%',
  216. unresize: 'false',
  217. templet: function(data) {
  218. return ns.time_to_date(data.create_time);
  219. }
  220. }]
  221. ]
  222. });
  223. /**
  224. * 表单验证
  225. */
  226. form.verify({
  227. num: function(value) {
  228. var arrMen = value.split(".");
  229. var val = 0;
  230. if (arrMen.length == 2) {
  231. val = arrMen[1];
  232. }
  233. if (value == "") {
  234. return false;
  235. }
  236. if (val.length > 2) {
  237. return '保留小数点后两位'
  238. }
  239. }
  240. });
  241. /**
  242. * 监听提交
  243. */
  244. form.on('submit(search)', function(data) {
  245. table.reload({
  246. page: {
  247. curr: 1
  248. },
  249. where: data.field
  250. });
  251. return false;
  252. });
  253. form.on('submit(savePoint)', function(data) {
  254. if (repeat_flag) return false;
  255. repeat_flag = true;
  256. var point = {$member_info.point};
  257. if (point*1 + data.field.adjust_num*1 < 0) {
  258. layer.msg('积分不可以为负数');
  259. repeat_flag = false;
  260. return ;
  261. }
  262. $.ajax({
  263. type: "POST",
  264. url: ns.url("admin/member/adjustPoint"),
  265. data: data.field,
  266. dataType: 'JSON',
  267. success: function(res) {
  268. layer.msg(res.message);
  269. repeat_flag = false;
  270. if (res.code == 0) {
  271. $("#member_point").html(res.data.point);
  272. $("#member_point").next().attr('data-num', res.data.point);
  273. layer.closeAll('page');
  274. table.reload();
  275. }
  276. }
  277. });
  278. });
  279. form.on('submit(saveBalance)', function(data) {
  280. if (repeat_flag) return false;
  281. repeat_flag = true;
  282. var balance = {$member_info.balance};
  283. if (balance*1 + data.field.adjust_num*1 < 0) {
  284. layer.msg('当前余额(不可提现)不可以为负数');
  285. repeat_flag = false;
  286. return ;
  287. }
  288. $.ajax({
  289. type: "POST",
  290. url: ns.url("admin/member/adjustBalance"),
  291. data: data.field,
  292. dataType: 'JSON',
  293. success: function(res) {
  294. layer.msg(res.message);
  295. repeat_flag = false;
  296. if (res.code == 0) {
  297. $("#member_balance").html(res.data.balance);
  298. $("#member_balance").next().attr('data-num', res.data.balance);
  299. layer.closeAll('page');
  300. table.reload();
  301. }
  302. }
  303. });
  304. });
  305. form.on('submit(saveBalanceMoney)', function(data) {
  306. if (repeat_flag) return false;
  307. repeat_flag = true;
  308. var balance = {$member_info.balance_money};
  309. if (balance*1 + data.field.adjust_num*1 < 0) {
  310. layer.msg('余额(可提现)不可以为负数');
  311. repeat_flag = false;
  312. return ;
  313. }
  314. $.ajax({
  315. type: "POST",
  316. url: ns.url("admin/member/adjustBalanceMoney"),
  317. data: data.field,
  318. dataType: 'JSON',
  319. success: function(res) {
  320. layer.msg(res.message);
  321. repeat_flag = false;
  322. if (res.code == 0) {
  323. $("#member_balance_money").html(res.data.balance_money);
  324. $("#member_balance_money").next().attr('data-num', res.data.balance_money);
  325. layer.closeAll('page');
  326. table.reload();
  327. }
  328. }
  329. });
  330. });
  331. form.on('submit(saveGrowth)', function(data) {
  332. if (repeat_flag) return false;
  333. repeat_flag = true;
  334. var growth = {$member_info.growth};
  335. if (growth*1 + data.field.adjust_num*1 < 0) {
  336. layer.msg('成长值不可以为负数');
  337. repeat_flag = false;
  338. return;
  339. }
  340. $.ajax({
  341. type: "POST",
  342. url: ns.url("admin/member/adjustGrowth"),
  343. data: data.field,
  344. dataType: 'JSON',
  345. success: function(res) {
  346. layer.msg(res.message);
  347. repeat_flag = false;
  348. if (res.code == 0) {
  349. $("#member_growth").html(res.data.growth);
  350. $("#member_growth").next().attr('data-num', res.data.growth);
  351. layer.closeAll('page');
  352. table.reload();
  353. }
  354. }
  355. });
  356. });
  357. });
  358. function savePoint(e) {
  359. var point = $(e).attr('data-num');
  360. var data = {
  361. point : point
  362. };
  363. laytpl($("#point").html()).render(data, function(html) {
  364. layer.open({
  365. title: '调整积分',
  366. skin: 'layer-tips-class',
  367. type: 1,
  368. area: ['800px'],
  369. content: html
  370. });
  371. });
  372. }
  373. function saveBalance(e) {
  374. var balance = $(e).attr('data-num');
  375. var data = {
  376. balance : balance
  377. };
  378. laytpl($("#balance").html()).render(data, function(html) {
  379. layer.open({
  380. title: '调整余额(不可提现)',
  381. skin: 'layer-tips-class',
  382. type: 1,
  383. area: ['800px'],
  384. content: html
  385. });
  386. });
  387. }
  388. function saveBalanceMoney(e) {
  389. var balance_money = $(e).attr('data-num');
  390. var data = {
  391. balance_money : balance_money
  392. };
  393. laytpl($("#balance_money").html()).render(data, function(html) {
  394. layer.open({
  395. title: '调整余额(可提现)',
  396. skin: 'layer-tips-class',
  397. type: 1,
  398. area: ['800px'],
  399. content: html
  400. });
  401. });
  402. }
  403. function saveGrowth(e) {
  404. var growth = $(e).attr('data-num');
  405. var data = {
  406. growth : growth
  407. };
  408. laytpl($("#growth").html()).render(data, function(html) {
  409. layer.open({
  410. title: '调整成长值',
  411. skin: 'layer-tips-class',
  412. type: 1,
  413. area: ['800px'],
  414. content: html
  415. });
  416. });
  417. }
  418. </script>
  419. <!-- 积分弹框html -->
  420. <script type="text/html" id="point">
  421. <div class="layui-form">
  422. <div class="layui-form-item">
  423. <label class="layui-form-label">当前积分:</label>
  424. <div class="layui-input-block ns-account-value">{{ d.point }}</div>
  425. </div>
  426. <div class="layui-form-item">
  427. <label class="layui-form-label">调整数额:</label>
  428. <div class="layui-input-block">
  429. <input type="number" value="0" placeholder="请输入调整数额" name="adjust_num" lay-verify="num" class="layui-input ns-len-short">
  430. </div>
  431. <span class="ns-word-aux">调整数额与当前值相加不能小于0,可保留两位小数</span>
  432. </div>
  433. <div class="layui-form-item">
  434. <label class="layui-form-label">备注:</label>
  435. <div class="layui-input-block ns-len-long">
  436. <textarea class="layui-textarea" name="remark" placeholder="请输入备注"></textarea>
  437. </div>
  438. </div>
  439. <div class="ns-form-row">
  440. <button class="layui-btn ns-bg-color" lay-submit lay-filter="savePoint">确定</button>
  441. </div>
  442. <input type="hidden" name="member_id" value="{$member_info.member_id}" />
  443. <input type="hidden" name="point" value="{{ d.point }}" />
  444. </div>
  445. </script>
  446. <!-- 余额弹框html -->
  447. <script type="text/html" id="balance">
  448. <div class="layui-form">
  449. <div class="layui-form-item">
  450. <label class="layui-form-label">当前余额(不可提现):</label>
  451. <div class="layui-input-block ns-account-value">{{ d.balance }}</div>
  452. </div>
  453. <div class="layui-form-item">
  454. <label class="layui-form-label">调整数额:</label>
  455. <div class="layui-input-block">
  456. <input type="number" value="0" placeholder="请输入调整数额" name="adjust_num" lay-verify="num" class="layui-input ns-len-short">
  457. </div>
  458. <span class="ns-word-aux">调整数额与当前值相加不能小于0,可保留两位小数</span>
  459. </div>
  460. <div class="layui-form-item">
  461. <label class="layui-form-label">备注:</label>
  462. <div class="layui-input-block ns-len-long">
  463. <textarea class="layui-textarea" name="remark" placeholder="请输入备注"></textarea>
  464. </div>
  465. </div>
  466. <div class="ns-form-row">
  467. <button class="layui-btn ns-bg-color" lay-submit lay-filter="saveBalance">确定</button>
  468. </div>
  469. <input type="hidden" name="member_id" value="{$member_info.member_id}" />
  470. <input type="hidden" name="point" value="{{ d.balance }}" />
  471. </div>
  472. </script>
  473. <!-- 余额(可提现)弹框html -->
  474. <script type="text/html" id="balance_money">
  475. <div class="layui-form">
  476. <div class="layui-form-item">
  477. <label class="layui-form-label">当前余额(可提现):</label>
  478. <div class="layui-input-block ns-account-value">{{ d.balance_money }}</div>
  479. </div>
  480. <div class="layui-form-item">
  481. <label class="layui-form-label">调整数额:</label>
  482. <div class="layui-input-block">
  483. <input type="number" value="0" placeholder="请输入调整数额" name="adjust_num" lay-verify="num" class="layui-input ns-len-short">
  484. </div>
  485. <span class="ns-word-aux">调整数额与当前值相加不能小于0,可保留两位小数</span>
  486. </div>
  487. <div class="layui-form-item">
  488. <label class="layui-form-label">备注:</label>
  489. <div class="layui-input-block ns-len-long">
  490. <textarea class="layui-textarea" name="remark" placeholder="请输入备注"></textarea>
  491. </div>
  492. </div>
  493. <div class="ns-form-row">
  494. <button class="layui-btn ns-bg-color" lay-submit lay-filter="saveBalanceMoney">确定</button>
  495. </div>
  496. <input type="hidden" name="member_id" value="{$member_info.member_id}" />
  497. <input type="hidden" name="point" value="{{ d.balance_money }}" />
  498. </div>
  499. </script>
  500. <!-- 成长值弹框html -->
  501. <script type="text/html" id="growth">
  502. <div class="layui-form">
  503. <div class="layui-form-item">
  504. <label class="layui-form-label">当前成长值:</label>
  505. <div class="layui-input-block ns-account-value">{{ d.growth }}</div>
  506. </div>
  507. <div class="layui-form-item">
  508. <label class="layui-form-label">调整数额:</label>
  509. <div class="layui-input-block">
  510. <input type="number" value="0" placeholder="请输入调整数额" name="adjust_num" lay-verify="num" class="layui-input ns-len-short">
  511. </div>
  512. <span class="ns-word-aux">调整数额与当前值相加不能小于0,可保留两位小数</span>
  513. </div>
  514. <div class="layui-form-item">
  515. <label class="layui-form-label">备注:</label>
  516. <div class="layui-input-block ns-len-long">
  517. <textarea class="layui-textarea" name="remark" placeholder="请输入备注"></textarea>
  518. </div>
  519. </div>
  520. <div class="ns-form-row">
  521. <button class="layui-btn ns-bg-color" lay-submit lay-filter="saveGrowth">确定</button>
  522. </div>
  523. <input type="hidden" name="member_id" value="{$member_info.member_id}" />
  524. <input type="hidden" name="point" value="{{ d.growth }}" />
  525. </div>
  526. </script>
  527. {/block}