index.php 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413
  1. <div class="row-content am-cf">
  2. <div class="row">
  3. <div class="am-u-sm-12 am-u-md-12 am-u-lg-12">
  4. <div class="widget am-cf">
  5. <div class="widget-head am-cf">
  6. <div class="widget-title am-cf">用户列表</div>
  7. </div>
  8. <div class="widget-body am-fr">
  9. <!-- 工具栏 -->
  10. <div class="page_toolbar am-margin-bottom-xs am-cf">
  11. <form class="toolbar-form" action="">
  12. <input type="hidden" name="s" value="/<?= $request->pathinfo() ?>">
  13. <div class="am-u-sm-12 am-u-md-9 am-u-sm-push-3">
  14. <div class="am fr">
  15. <div class="am-form-group am-fl">
  16. <?php $grade = $request->get('grade'); ?>
  17. <select name="grade"
  18. data-am-selected="{btnSize: 'sm', placeholder: '请选择会员等级'}">
  19. <option value=""></option>
  20. <?php foreach ($gradeList as $item): ?>
  21. <option value="<?= $item['grade_id'] ?>"
  22. <?= $grade == $item['grade_id'] ? 'selected' : '' ?>><?= $item['name'] ?>
  23. </option>
  24. <?php endforeach; ?>
  25. </select>
  26. </div>
  27. <div class="am-form-group am-fl">
  28. <?php $gender = $request->get('gender'); ?>
  29. <select name="gender"
  30. data-am-selected="{btnSize: 'sm', placeholder: '请选择性别'}">
  31. <option value=""></option>
  32. <option value="-1"
  33. <?= $gender === '-1' ? 'selected' : '' ?>>全部
  34. </option>
  35. <option value="1"
  36. <?= $gender === '1' ? 'selected' : '' ?>>男
  37. </option>
  38. <option value="2"
  39. <?= $gender === '2' ? 'selected' : '' ?>>女
  40. </option>
  41. <option value="0"
  42. <?= $gender === '0' ? 'selected' : '' ?>>未知
  43. </option>
  44. </select>
  45. </div>
  46. <div class="am-form-group am-fl">
  47. <div class="am-input-group am-input-group-sm tpl-form-border-form">
  48. <input type="text" class="am-form-field" name="nickName"
  49. placeholder="请输入微信昵称"
  50. value="<?= $request->get('nickName') ?>">
  51. <div class="am-input-group-btn">
  52. <button class="am-btn am-btn-default am-icon-search"
  53. type="submit"></button>
  54. </div>
  55. </div>
  56. </div>
  57. </div>
  58. </div>
  59. </form>
  60. </div>
  61. <div class="am-scrollable-horizontal am-u-sm-12">
  62. <table width="100%" class="am-table am-table-compact am-table-striped
  63. tpl-table-black am-text-nowrap">
  64. <thead>
  65. <tr>
  66. <th>用户ID</th>
  67. <th>微信头像</th>
  68. <th>微信昵称</th>
  69. <th>用户余额</th>
  70. <th>可用积分</th>
  71. <th>会员等级</th>
  72. <th>实际消费金额</th>
  73. <th>性别</th>
  74. <th>国家</th>
  75. <th>省份</th>
  76. <th>城市</th>
  77. <th>注册时间</th>
  78. <th>操作</th>
  79. </tr>
  80. </thead>
  81. <tbody>
  82. <?php if (!$list->isEmpty()): foreach ($list as $item): ?>
  83. <tr>
  84. <td class="am-text-middle"><?= $item['user_id'] ?></td>
  85. <td class="am-text-middle">
  86. <a href="<?= $item['avatarUrl'] ?>" title="点击查看大图" target="_blank">
  87. <img src="<?= $item['avatarUrl'] ?>" width="72" height="72" alt="">
  88. </a>
  89. </td>
  90. <td class="am-text-middle"><?= $item['nickName'] ?></td>
  91. <td class="am-text-middle"><?= $item['balance'] ?></td>
  92. <td class="am-text-middle"><?= $item['points'] ?></td>
  93. <td class="am-text-middle">
  94. <?= !empty($item['grade']) ? $item['grade']['name'] : '--' ?>
  95. </td>
  96. <td class="am-text-middle"><?= $item['expend_money'] ?></td>
  97. <td class="am-text-middle"><?= $item['gender'] ?></td>
  98. <td class="am-text-middle"><?= $item['country'] ?: '--' ?></td>
  99. <td class="am-text-middle"><?= $item['province'] ?: '--' ?></td>
  100. <td class="am-text-middle"><?= $item['city'] ?: '--' ?></td>
  101. <td class="am-text-middle"><?= $item['create_time'] ?></td>
  102. <td class="am-text-middle">
  103. <div class="tpl-table-black-operation">
  104. <?php if (checkPrivilege('user/recharge')): ?>
  105. <a class="j-recharge tpl-table-black-operation-default"
  106. href="javascript:void(0);"
  107. title="用户充值"
  108. data-id="<?= $item['user_id'] ?>"
  109. data-balance="<?= $item['balance'] ?>"
  110. data-points="<?= $item['points'] ?>"
  111. >
  112. <i class="iconfont icon-qiandai"></i>
  113. 充值
  114. </a>
  115. <?php endif; ?>
  116. <?php if (checkPrivilege('user/grade')): ?>
  117. <a class="j-grade tpl-table-black-operation-default"
  118. href="javascript:void(0);"
  119. data-id="<?= $item['user_id'] ?>"
  120. data-grade="<?= $item['grade_id'] ?>"
  121. title="修改会员等级">
  122. <i class="iconfont icon-grade-o"></i>
  123. 会员等级
  124. </a>
  125. <?php endif; ?>
  126. <?php if (checkPrivilege('user/delete')): ?>
  127. <a class="j-delete tpl-table-black-operation-default"
  128. href="javascript:void(0);"
  129. data-id="<?= $item['user_id'] ?>" title="删除用户">
  130. <i class="am-icon-trash"></i> 删除
  131. </a>
  132. <?php endif; ?>
  133. <div class="j-opSelect operation-select am-dropdown">
  134. <button type="button"
  135. class="am-dropdown-toggle am-btn am-btn-sm am-btn-secondary">
  136. <span>更多</span>
  137. <span class="am-icon-caret-down"></span>
  138. </button>
  139. <ul class="am-dropdown-content" data-id="<?= $item['user_id'] ?>">
  140. <?php if (checkPrivilege('order/all_list')): ?>
  141. <li>
  142. <a class="am-dropdown-item" target="_blank"
  143. href="<?= url('order/all_list', ['user_id' => $item['user_id']]) ?>">用户订单</a>
  144. </li>
  145. <?php endif; ?>
  146. <?php if (checkPrivilege('user.recharge/order')): ?>
  147. <li>
  148. <a class="am-dropdown-item" target="_blank"
  149. href="<?= url('user.recharge/order', ['user_id' => $item['user_id']]) ?>">充值记录</a>
  150. </li>
  151. <?php endif; ?>
  152. <?php if (checkPrivilege('user.balance/log')): ?>
  153. <li>
  154. <a class="am-dropdown-item" target="_blank"
  155. href="<?= url('user.balance/log', ['user_id' => $item['user_id']]) ?>">余额明细</a>
  156. </li>
  157. <?php endif; ?>
  158. </ul>
  159. </div>
  160. </div>
  161. </td>
  162. </tr>
  163. <?php endforeach; else: ?>
  164. <tr>
  165. <td colspan="13" class="am-text-center">暂无记录</td>
  166. </tr>
  167. <?php endif; ?>
  168. </tbody>
  169. </table>
  170. </div>
  171. <div class="am-u-lg-12 am-cf">
  172. <div class="am-fr"><?= $list->render() ?> </div>
  173. <div class="am-fr pagination-total am-margin-right">
  174. <div class="am-vertical-align-middle">总记录:<?= $list->total() ?></div>
  175. </div>
  176. </div>
  177. </div>
  178. </div>
  179. </div>
  180. </div>
  181. </div>
  182. <!-- 模板:修改会员等级 -->
  183. <script id="tpl-grade" type="text/template">
  184. <div class="am-padding-xs am-padding-top">
  185. <form class="am-form tpl-form-line-form" method="post" action="">
  186. <div class="am-tab-panel am-padding-0 am-active">
  187. <div class="am-form-group">
  188. <label class="am-u-sm-3 am-form-label form-require">
  189. 会员等级
  190. </label>
  191. <div class="am-u-sm-8 am-u-end">
  192. <select name="grade[grade_id]"
  193. data-am-selected="{btnSize: 'sm', placeholder: '请选择会员等级'}">
  194. <option value="0">无等级</option>
  195. <?php foreach ($gradeList as $item): ?>
  196. <option value="<?= $item['grade_id'] ?>" {{
  197. grade== '<?= $item['grade_id'] ?>' ? 'selected' : '' }}><?= $item['name'] ?>
  198. </option>
  199. <?php endforeach; ?>
  200. </select>
  201. </div>
  202. </div>
  203. <div class="am-form-group">
  204. <label class="am-u-sm-3 am-form-label"> 管理员备注 </label>
  205. <div class="am-u-sm-8 am-u-end">
  206. <textarea rows="2" name="grade[remark]" placeholder="请输入管理员备注"
  207. class="am-field-valid"></textarea>
  208. </div>
  209. </div>
  210. </div>
  211. </form>
  212. </div>
  213. </script>
  214. <!-- 模板:用户充值 -->
  215. <script id="tpl-recharge" type="text/template">
  216. <div class="am-padding-xs am-padding-top-sm">
  217. <form class="am-form tpl-form-line-form" method="post" action="">
  218. <div class="j-tabs am-tabs">
  219. <ul class="am-tabs-nav am-nav am-nav-tabs">
  220. <li class="am-active"><a href="#tab1">充值余额</a></li>
  221. <li><a href="#tab2">充值积分</a></li>
  222. </ul>
  223. <div class="am-tabs-bd am-padding-xs">
  224. <div class="am-tab-panel am-padding-0 am-active" id="tab1">
  225. <div class="am-form-group">
  226. <label class="am-u-sm-3 am-form-label">
  227. 当前余额
  228. </label>
  229. <div class="am-u-sm-8 am-u-end">
  230. <div class="am-form--static">{{ balance }}</div>
  231. </div>
  232. </div>
  233. <div class="am-form-group">
  234. <label class="am-u-sm-3 am-form-label">
  235. 充值方式
  236. </label>
  237. <div class="am-u-sm-8 am-u-end">
  238. <label class="am-radio-inline">
  239. <input type="radio" name="recharge[balance][mode]"
  240. value="inc" data-am-ucheck checked>
  241. 增加
  242. </label>
  243. <label class="am-radio-inline">
  244. <input type="radio" name="recharge[balance][mode]" value="dec" data-am-ucheck>
  245. 减少
  246. </label>
  247. <label class="am-radio-inline">
  248. <input type="radio" name="recharge[balance][mode]" value="final" data-am-ucheck>
  249. 最终金额
  250. </label>
  251. </div>
  252. </div>
  253. <div class="am-form-group">
  254. <label class="am-u-sm-3 am-form-label">
  255. 变更金额
  256. </label>
  257. <div class="am-u-sm-8 am-u-end">
  258. <input type="number" min="0" class="tpl-form-input"
  259. placeholder="请输入要变更的金额" name="recharge[balance][money]" value="" required>
  260. </div>
  261. </div>
  262. <div class="am-form-group">
  263. <label class="am-u-sm-3 am-form-label">
  264. 管理员备注
  265. </label>
  266. <div class="am-u-sm-8 am-u-end">
  267. <textarea rows="2" name="recharge[balance][remark]" placeholder="请输入管理员备注"
  268. class="am-field-valid"></textarea>
  269. </div>
  270. </div>
  271. </div>
  272. <div class="am-tab-panel am-padding-0" id="tab2">
  273. <div class="am-form-group">
  274. <label class="am-u-sm-3 am-form-label">
  275. 当前积分
  276. </label>
  277. <div class="am-u-sm-8 am-u-end">
  278. <div class="am-form--static">{{ points }}</div>
  279. </div>
  280. </div>
  281. <div class="am-form-group">
  282. <label class="am-u-sm-3 am-form-label">
  283. 充值方式
  284. </label>
  285. <div class="am-u-sm-8 am-u-end">
  286. <label class="am-radio-inline">
  287. <input type="radio" name="recharge[points][mode]"
  288. value="inc" data-am-ucheck checked>
  289. 增加
  290. </label>
  291. <label class="am-radio-inline">
  292. <input type="radio" name="recharge[points][mode]" value="dec" data-am-ucheck>
  293. 减少
  294. </label>
  295. <label class="am-radio-inline">
  296. <input type="radio" name="recharge[points][mode]" value="final" data-am-ucheck>
  297. 最终积分
  298. </label>
  299. </div>
  300. </div>
  301. <div class="am-form-group">
  302. <label class="am-u-sm-3 am-form-label">
  303. 变更数量
  304. </label>
  305. <div class="am-u-sm-8 am-u-end">
  306. <input type="number" min="0" class="tpl-form-input"
  307. placeholder="请输入要变更的数量" name="recharge[points][value]" value="" required>
  308. </div>
  309. </div>
  310. <div class="am-form-group">
  311. <label class="am-u-sm-3 am-form-label">
  312. 管理员备注
  313. </label>
  314. <div class="am-u-sm-8 am-u-end">
  315. <textarea rows="2" name="recharge[points][remark]" placeholder="请输入管理员备注"
  316. class="am-field-valid"></textarea>
  317. </div>
  318. </div>
  319. </div>
  320. </div>
  321. </div>
  322. </form>
  323. </div>
  324. </script>
  325. <script>
  326. $(function () {
  327. /**
  328. * 账户充值
  329. */
  330. $('.j-recharge').on('click', function () {
  331. var $tabs, data = $(this).data();
  332. $.showModal({
  333. title: '用户充值'
  334. , area: '460px'
  335. , content: template('tpl-recharge', data)
  336. , uCheck: true
  337. , success: function ($content) {
  338. $tabs = $content.find('.j-tabs');
  339. $tabs.tabs({noSwipe: 1});
  340. }
  341. , yes: function ($content) {
  342. $content.find('form').myAjaxSubmit({
  343. url: '<?= url('user/recharge') ?>',
  344. data: {
  345. user_id: data.id,
  346. source: $tabs.data('amui.tabs').activeIndex
  347. }
  348. });
  349. return true;
  350. }
  351. });
  352. });
  353. /**
  354. * 修改会员等级
  355. */
  356. $('.j-grade').on('click', function () {
  357. var data = $(this).data();
  358. $.showModal({
  359. title: '修改会员等级'
  360. , area: '460px'
  361. , content: template('tpl-grade', data)
  362. , uCheck: true
  363. , success: function ($content) {
  364. }
  365. , yes: function ($content) {
  366. $content.find('form').myAjaxSubmit({
  367. url: '<?= url('user/grade') ?>',
  368. data: {user_id: data.id}
  369. });
  370. return true;
  371. }
  372. });
  373. });
  374. /**
  375. * 注册操作事件
  376. * @type {jQuery|HTMLElement}
  377. */
  378. var $dropdown = $('.j-opSelect');
  379. $dropdown.dropdown();
  380. $dropdown.on('click', 'li a', function () {
  381. var $this = $(this);
  382. var id = $this.parent().parent().data('id');
  383. var type = $this.data('type');
  384. if (type === 'delete') {
  385. layer.confirm('删除后不可恢复,确定要删除吗?', function (index) {
  386. $.post("index.php?s=/store/apps.dealer.user/delete", {dealer_id: id}, function (result) {
  387. result.code === 1 ? $.show_success(result.msg, result.url)
  388. : $.show_error(result.msg);
  389. });
  390. layer.close(index);
  391. });
  392. }
  393. $dropdown.dropdown('close');
  394. });
  395. // 删除元素
  396. var url = "<?= url('user/delete') ?>";
  397. $('.j-delete').delete('user_id', url, '删除后不可恢复,确定要删除吗?');
  398. });
  399. </script>