lists.html 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617
  1. {extend name="base"/}
  2. {block name="resources"}
  3. <style>
  4. .card-common:first-of-type{margin-top: 0;}
  5. .layui-card-body{display: flex;padding-bottom: 0 !important;padding-right: 50px !important;padding-left: 50px !important;flex-wrap: wrap;}
  6. .layui-card-body .content{width: 33.3%;display: flex;flex-direction: column;margin-bottom: 30px;justify-content: center;}
  7. .layui-card-body .content .title{color: #909399;font-size: 14px;}
  8. .layui-card-body .money{color: #303133;font-size: 26px;margin-top: 10px;max-width: 250px;}
  9. .layui-card-body .bottom-title{color: #909399;font-size: 14px;margin-top: 5px;}
  10. .layui-layout-admin.admin-style-2 .screen{margin-bottom: 15px;}
  11. .member-table{cursor: pointer}
  12. </style>
  13. {/block}
  14. {block name="main"}
  15. <div class="layui-card card-common card-brief">
  16. <div class="layui-card-header">
  17. <div>
  18. <span class="card-title">提现概况</span>
  19. </div>
  20. </div>
  21. <div class="layui-card-body">
  22. <div class="content">
  23. <p class="title">现金余额(元)</p>
  24. <p class="money">{$member_balance_sum.balance_money}</p>
  25. </div>
  26. <div class="content">
  27. <p class="title">已提现余额(元)</p>
  28. <p class="money">{$member_balance_sum.balance_withdraw}</p>
  29. </div>
  30. <div class="content">
  31. <p class="title">提现中余额(元)</p>
  32. <p class="money">{$member_balance_sum.balance_withdraw_apply}</p>
  33. </div>
  34. </div>
  35. </div>
  36. <!-- 搜索框 -->
  37. <div class="screen layui-collapse" lay-filter="selection_panel">
  38. <div class="layui-colla-item">
  39. <form class="layui-colla-content layui-form layui-show">
  40. <div class="layui-form-item">
  41. <div class="layui-inline">
  42. <label class="layui-form-label">会员账号</label>
  43. <div class="layui-input-inline">
  44. <input type="text" name="member_name" placeholder="会员用户名" autocomplete="off" class="layui-input ">
  45. </div>
  46. </div>
  47. <div class="layui-inline">
  48. <label class="layui-form-label">提现方式</label>
  49. <div class="layui-input-inline">
  50. <select name="transfer_type">
  51. <option value="">全部</option>
  52. {foreach $transfer_type_list as $transfer_type_k=> $transfer_type_v}
  53. <option value="{$transfer_type_k}">{$transfer_type_v}</option>
  54. {/foreach}
  55. </select>
  56. </div>
  57. </div>
  58. <div class="layui-inline">
  59. <label class="layui-form-label">状态</label>
  60. <div class="layui-input-inline">
  61. <select name="status">
  62. <option value="all">全部</option>
  63. <option value="0">待审核</option>
  64. <option value="1">待转账</option>
  65. <option value="2">已转账</option>
  66. <option value="-1">已拒绝</option>
  67. </select>
  68. </div>
  69. </div>
  70. </div>
  71. <div class="layui-form-item">
  72. <div class="layui-inline">
  73. <label class="layui-form-label">申请时间</label>
  74. <div class="layui-input-inline">
  75. <input type="text" class="layui-input" name="start_date" id="start_time" placeholder="请输入开始时间" autocomplete="off" readonly>
  76. </div>
  77. <div class="layui-input-inline split">-</div>
  78. <div class="layui-input-inline end-time">
  79. <input type="text" class="layui-input" name="end_date" id="end_time" placeholder="请输入结束时间" autocomplete="off" readonly>
  80. </div>
  81. </div>
  82. <div class="layui-inline">
  83. <label class="layui-form-label">转账时间</label>
  84. <div class="layui-input-inline">
  85. <input type="text" class="layui-input" name="start_date" id="payment_start_time" placeholder="请输入开始时间" autocomplete="off" readonly>
  86. </div>
  87. <div class="layui-input-inline split">-</div>
  88. <div class="layui-input-inline end-time">
  89. <input type="text" class="layui-input" name="end_date" id="payment_end_time" placeholder="请输入结束时间" autocomplete="off" readonly>
  90. </div>
  91. </div>
  92. </div>
  93. <div class="form-row">
  94. <button class="layui-btn" lay-submit lay-filter="search">筛选</button>
  95. <button class="layui-btn" lay-submit lay-filter="exportFn">导出</button>
  96. </div>
  97. </form>
  98. </div>
  99. </div>
  100. <!-- 列表 -->
  101. <table id="withdraw_list" lay-filter="withdraw_list"></table>
  102. <script type="text/html" id="status">
  103. {{# if(d.status == 0){ }}
  104. <div class="layui-elip" style="color: red">待审核</div>
  105. {{# }else if(d.status == 1){ }}
  106. <div class="layui-elip" style="color: blue">待转账</div>
  107. {{# }else if(d.status == 2){ }}
  108. <div class="layui-elip" style="color: green">已转账</div>
  109. {{# }else if(d.status == -1){ }}
  110. <div class="layui-elip" style="color: gray">已拒绝</div>
  111. {{# }else if(d.status == -2){ }}
  112. <div class="layui-elip" style="color: gray">转账失败</div>
  113. {{# } }}
  114. </script>
  115. <!--操作-->
  116. <script type="text/html" id="operation">
  117. <div class="table-btn">
  118. <a class="layui-btn" lay-event="detail">查看</a>
  119. {{# if(d.status == 0){ }}
  120. <a href="javascript:;" class="layui-btn" lay-event="agree">同意</a>
  121. <a href="javascript:;" class="layui-btn" lay-event="refuse">拒绝</a>
  122. {{# }else if(d.status == 1 || d.status == -2){ }}
  123. {{# if(d.transfer_type != "bank"){ }}
  124. {if $is_exist}
  125. <a href="javascript:;" class="layui-btn" lay-event="transfer">在线转账</a>
  126. {/if}
  127. {{# } }}
  128. <a href="javascript:;" class="layui-btn" lay-event="actiontransfer">手动转账</a>
  129. {{# } }}
  130. {{# if(d.status == -2){ }}
  131. <a href="javascript:;" class="layui-btn" lay-event="failreason">失败原因</a>
  132. {{# } }}
  133. </div>
  134. </script>
  135. <!-- 用户信息 -->
  136. <script type="text/html" id="member_info">
  137. <div class='table-title member-table'>
  138. <div class='title-pic'>
  139. <img src="{{ns.img(d.member_headimg)}}" onerror="this.src = '{:img('public/static/img/default_img/head.png')}' ">
  140. </div>
  141. <div class='title-content' onclick="toDetail({{d.member_id}})">
  142. <p class="layui-elip">{{d.member_name}}</p>
  143. </div>
  144. </div>
  145. </script>
  146. <!--时间-->
  147. <script type="text/html" id="apply_time">
  148. <div class="layui-elip">{{ns.time_to_date(d.apply_time)}}</div>
  149. </script>
  150. {/block}
  151. {block name="script"}
  152. <script>
  153. var table,upload;
  154. layui.use(['form', 'laydate','laytpl'], function() {
  155. var form = layui.form,
  156. laydate = layui.laydate,
  157. currentDate = new Date(),
  158. laytpl = layui.laytpl,
  159. minDate = "";
  160. form.render();
  161. currentDate.setDate(currentDate.getDate() - 7);
  162. //开始时间
  163. laydate.render({
  164. elem: '#start_time',
  165. type: 'datetime'
  166. });
  167. //结束时间
  168. laydate.render({
  169. elem: '#end_time',
  170. type: 'datetime'
  171. })
  172. laydate.render({
  173. elem: '#payment_start_time',
  174. type: 'datetime'
  175. });
  176. laydate.render({
  177. elem: '#payment_end_time',
  178. type: 'datetime'
  179. });
  180. /**
  181. * 重新渲染结束时间
  182. */
  183. function reRender(){
  184. $("#end_time").remove();
  185. $(".end-time").html('<input type="text" class="layui-input" placeholder="结束时间" name="end_date" id="end_time" >');
  186. laydate.render({
  187. elem: '#end_time',
  188. type: 'datetime',
  189. min: minDate
  190. });
  191. }
  192. /**
  193. * 表格加载
  194. */
  195. table = new Table({
  196. elem: '#withdraw_list',
  197. url: ns.url("shop/memberwithdraw/lists"),
  198. cols: [
  199. [{
  200. field: 'member_info',
  201. title: '会员信息',
  202. width: '17%',
  203. unresize: 'false',
  204. templet: '#member_info'
  205. }, {
  206. field: 'transfer_type_name',
  207. title: '提现方式',
  208. width: '10%',
  209. unresize: 'false',
  210. }, {
  211. field: 'apply_money',
  212. title: '申请提现金额',
  213. width: '12%',
  214. unresize: 'false',
  215. align: 'right',
  216. templet: function(data) {
  217. return '¥'+ data.apply_money
  218. }
  219. }, {
  220. field: 'service_money',
  221. title: '提现手续费',
  222. width: '12%',
  223. unresize: 'false',
  224. align: 'right',
  225. templet: function(data) {
  226. return '¥'+ data.service_money
  227. }
  228. }, {
  229. field: 'money',
  230. title: '实际转账金额',
  231. width: '12%',
  232. unresize: 'false',
  233. align: 'right',
  234. templet: function(data) {
  235. return '¥'+ data.money
  236. }
  237. }, {
  238. field: 'status_name',
  239. title: '提现状态',
  240. width: '12%',
  241. unresize: 'false',
  242. templet: '#status'
  243. }, {
  244. title: '申请时间',
  245. unresize: 'false',
  246. width: '15%',
  247. templet: '#apply_time'
  248. }, {
  249. title: '操作',
  250. toolbar: '#operation',
  251. unresize: 'false',
  252. align:'right'
  253. }]
  254. ]
  255. });
  256. /**
  257. * 搜索功能
  258. */
  259. form.on('submit(search)', function(data) {
  260. table.reload({
  261. page: {
  262. curr: 1
  263. },
  264. where: data.field
  265. });
  266. return false;
  267. });
  268. form.on('submit(exportFn)', function(data) {
  269. location.href = ns.url("shop/memberwithdraw/export",data.field);
  270. return false;
  271. });
  272. /**
  273. * 监听工具栏操作
  274. */
  275. table.tool(function(obj) {
  276. var data = obj.data;
  277. switch(obj.event){
  278. case 'detail':
  279. detail(data);
  280. break;
  281. case 'agree':
  282. agree(data);
  283. break;
  284. case 'refuse':
  285. refuse(data);
  286. break;
  287. {if $is_exist}
  288. case 'transfer':
  289. transfer(data);
  290. break;
  291. {/if}
  292. case 'actiontransfer':
  293. laytpl($("#actiontransfer_html").html()).render(data, function(html) {
  294. layer_pass = layer.open({
  295. title: '提现转账',
  296. skin: 'layer-tips-class',
  297. type: 1,
  298. area: ['800px'],
  299. content: html,
  300. });
  301. });
  302. //转账凭证
  303. upload = new Upload({
  304. elem: '#certificate'
  305. });
  306. // return false;
  307. // actiontransfer(data);
  308. break;
  309. case 'failreason':
  310. layer.open({
  311. title: '失败原因',
  312. content: data.fail_reason,
  313. btn: []
  314. })
  315. break;
  316. }
  317. });
  318. //提交
  319. form.on('submit(actiontransfer)', function(data) {
  320. actiontransfer(data.field);
  321. return false;
  322. });
  323. });
  324. /**
  325. * 查看详情
  326. */
  327. function detail(field) {
  328. location.href = ns.url("shop/memberwithdraw/detail",{id:field.id});
  329. }
  330. {if $is_exist}
  331. /**
  332. * 自动转账
  333. */
  334. var transfer_repeat_flag = false;
  335. function transfer(field) {
  336. if(transfer_repeat_flag) return false;
  337. transfer_repeat_flag = true;
  338. layer.confirm('确定要进行自动转账吗?', function() {
  339. $.ajax({
  340. url: ns.url("memberwithdraw://shop/withdraw/transfer"),
  341. data: field,
  342. dataType: 'JSON', //服务器返回json格式数据
  343. type: 'POST', //HTTP请求类型
  344. success: function(res) {
  345. transfer_repeat_flag = false;
  346. if (res.code >= 0) {
  347. table.reload({
  348. page: {
  349. curr: 1
  350. }
  351. });
  352. layer.closeAll();
  353. } else {
  354. layer.closeAll();
  355. layer.msg(res.message);
  356. }
  357. }
  358. });
  359. }, function () {
  360. layer.close();
  361. transfer_repeat_flag = false;
  362. });
  363. }
  364. {/if}
  365. /**
  366. * 手动转账
  367. */
  368. var actiontransfer_repeat_flag = false;
  369. function actiontransfer(field) {
  370. if(actiontransfer_repeat_flag) return false;
  371. actiontransfer_repeat_flag = true;
  372. // 删除图片
  373. // if(!data.field.certificate) upload.delete();
  374. $.ajax({
  375. url: ns.url("shop/memberwithdraw/transferfinish"),
  376. data: field,
  377. dataType: 'JSON', //服务器返回json格式数据
  378. type: 'POST', //HTTP请求类型
  379. success: function(res) {
  380. actiontransfer_repeat_flag = false;
  381. if (res.code >= 0) {
  382. table.reload({
  383. page: {
  384. curr: 1
  385. }
  386. });
  387. layer.closeAll();
  388. }else{
  389. layer.msg(res.message);
  390. }
  391. }
  392. });
  393. }
  394. /**
  395. * 同意
  396. */
  397. var agree_repeat_flag = false;
  398. function agree(field) {
  399. if(agree_repeat_flag) return false;
  400. agree_repeat_flag = true;
  401. layer.confirm('确定要通过该转账申请吗?', function() {
  402. $.ajax({
  403. url: ns.url("shop/memberwithdraw/agree"),
  404. data: field,
  405. dataType: 'JSON', //服务器返回json格式数据
  406. type: 'POST', //HTTP请求类型
  407. success: function(res) {
  408. agree_repeat_flag = false;
  409. if (res.code >= 0) {
  410. table.reload({
  411. page: {
  412. curr: 1
  413. }
  414. });
  415. layer.closeAll();
  416. } else {
  417. layer.closeAll();
  418. layer.msg(res.message);
  419. }
  420. }
  421. });
  422. }, function () {
  423. layer.closeAll();
  424. agree_repeat_flag = false;
  425. });
  426. }
  427. /**
  428. * 拒绝
  429. */
  430. var refuse_repeat_flag = false;
  431. function refuse(field) {
  432. layer.prompt({
  433. title: '拒绝理由',
  434. formType: 2,
  435. yes: function(index, layero) {
  436. var value = layero.find(".layui-layer-input").val();
  437. if (value) {
  438. if(refuse_repeat_flag) return false;
  439. refuse_repeat_flag = true;
  440. field.refuse_reason = value;
  441. $.ajax({
  442. url: ns.url("shop/memberwithdraw/refuse"),
  443. data: field,
  444. dataType: 'JSON', //服务器返回json格式数据
  445. type: 'POST', //HTTP请求类型
  446. success: function(res) {
  447. layer.msg(res.message);
  448. refuse_repeat_flag = false;
  449. if (res.code >= 0) {
  450. table.reload({
  451. page: {
  452. curr: 1
  453. },
  454. });
  455. }
  456. }
  457. });
  458. layer.close(index);
  459. } else {
  460. layer.msg('请输入拒绝理由!', {icon: 5, anim: 6});
  461. }
  462. }
  463. });
  464. }
  465. function closePass() {
  466. layer.close(layer_pass);
  467. }
  468. function toDetail(member_id){
  469. window.location.href=ns.url('shop/member/editmember', {member_id:member_id})
  470. }
  471. </script>
  472. <!-- 在线转账html -->
  473. <script type="text/html" id="actiontransfer_html">
  474. <div class="layui-form" lay-filter="form">
  475. <div class="layui-form-item">
  476. <label class="layui-form-label">真实姓名:</label>
  477. <div class="layui-input-block">
  478. <p class="input-text ">{{ d.realname }}</p>
  479. </div>
  480. </div>
  481. <div class="layui-form-item">
  482. <label class="layui-form-label">联系电话:</label>
  483. <div class="layui-input-block">
  484. <p class="input-text ">{{ d.mobile }}</p>
  485. </div>
  486. </div>
  487. <div class="layui-form-item">
  488. <label class="layui-form-label">提现类型:</label>
  489. <div class="layui-input-block">
  490. <p class="input-text ">{{d.transfer_type_name}}</p>
  491. </div>
  492. </div>
  493. {{# if(d.transfer_type == "bank"){ }}
  494. <div class="layui-form-item">
  495. <label class="layui-form-label">账户名称:</label>
  496. <div class="layui-input-block">
  497. <p class="input-text ">{{d.bank_name}}</p>
  498. </div>
  499. </div>
  500. <div class="layui-form-item">
  501. <label class="layui-form-label">银行账号:</label>
  502. <div class="layui-input-block">
  503. <p class="input-text ">{{d.account_number}}</p>
  504. </div>
  505. </div>
  506. {{# }else if(d.transfer_type == "alipay"){ }}
  507. <div class="layui-form-item">
  508. <label class="layui-form-label">支付宝账号:</label>
  509. <div class="layui-input-block">
  510. <p class="input-text ">{{d.account_number}}</p>
  511. </div>
  512. </div>
  513. {{# } }}
  514. <div class="layui-form-item">
  515. <label class="layui-form-label">申请提现金额:</label>
  516. <div class="layui-input-block">
  517. <p class="input-text ">{{d.apply_money}}</p>
  518. </div>
  519. </div>
  520. <div class="layui-form-item">
  521. <label class="layui-form-label">提现手续费:</label>
  522. <div class="layui-input-block">
  523. <p class="input-text ">{{d.service_money}}</p>
  524. </div>
  525. </div>
  526. <div class="layui-form-item">
  527. <label class="layui-form-label">提现金额:</label>
  528. <div class="layui-input-block">
  529. <p class="input-text ">{{d.money}}</p>
  530. </div>
  531. </div>
  532. <div class="layui-form-item">
  533. <label class="layui-form-label">转账凭证:</label>
  534. <div class="layui-input-block img-upload">
  535. <div class="upload-img-block">
  536. <div class="upload-img-box">
  537. <div class="upload-default" id="certificate">
  538. <div class="upload">
  539. <i class="iconfont iconshangchuan"></i>
  540. <p>点击上传</p>
  541. </div>
  542. </div>
  543. <div class="operation">
  544. <div>
  545. <i title="图片预览" class="iconfont iconreview js-preview" style="margin-right: 20px;"></i>
  546. <i title="删除图片" class="layui-icon layui-icon-delete js-delete"></i>
  547. </div>
  548. <div class="replace_img js-replace">点击替换</div>
  549. </div>
  550. <input type="hidden" name="certificate" >
  551. </div>
  552. <!-- <p id="certificate" class="no-replace">替换</p>
  553. <input type="hidden" name="certificate" >
  554. <i class="del">x</i> -->
  555. </div>
  556. </div>
  557. </div>
  558. <div class="layui-form-item">
  559. <label class="layui-form-label">转账凭证说明:</label>
  560. <div class="layui-input-block len-long">
  561. <textarea name="certificate_remark" class="layui-textarea" maxlength="150"></textarea>
  562. </div>
  563. </div>
  564. <input type="hidden" name="id" value="{{ d.id }}">
  565. <div class="form-row">
  566. <button class="layui-btn" lay-submit lay-filter="actiontransfer">确定</button>
  567. <button class="layui-btn layui-btn-primary" onclick="closePass()">返回</button>
  568. </div>
  569. </div>
  570. </script>
  571. {/block}