clerk.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368
  1. {template 'common/header'}
  2. <style>
  3. .table>thead>tr>th{border-bottom:0;}
  4. .table>thead>tr>th .checkbox label{font-weight:bold;}
  5. .table>tbody>tr>td{border-top:0;}
  6. .table .checkbox{padding-top:4px;}
  7. </style>
  8. <ul class="nav nav-tabs">
  9. <li{if $do == 'list'} class="active"{/if}><a href="{php echo url('activity/clerk/list');}">店员管理</a></li>
  10. <li{if $do == 'post'} class="active"{/if}><a href="{php echo url('activity/clerk/post');}">{if $id > 0}编辑店员{else}添加店员{/if}</a></li>
  11. </ul>
  12. {if $do == 'list'}
  13. <div class="alert alert-info">
  14. <p>1、系统中所有的店员信息不可重复</p>
  15. <p>2、添加店员可以设置店员操作的权限</p>
  16. <p>3、店员可以登录系统后台(工作台)来进行相应的操作</p>
  17. <p>4、门店已删除的店员将无法登陆系统后台(工作台),可通过编辑重新设置门店以后登陆</p>
  18. </div>
  19. <div class="main">
  20. <div class="main table-responsive">
  21. <form method="post" class="form-horizontal" id="form1">
  22. <div class="panel panel-default">
  23. <div class="panel-body table-responsive">
  24. <table class="table table-hover">
  25. <thead>
  26. <tr>
  27. <th>店员姓名</th>
  28. <th>所在门店</th>
  29. <th>登陆账号</th>
  30. <th>手机号</th>
  31. <th>微信昵称</th>
  32. <th>操作</th>
  33. </tr>
  34. </thead>
  35. <tbody id="list">
  36. {loop $list $item}
  37. <tr>
  38. <td>
  39. {$item['name']}
  40. {if empty($item['password'])}
  41. <span class="text-danger" style="cursor:pointer" data-toggle="popover" data-placement="top" data-trigger="hover" data-content="该店员尚未设置密码,请重新编辑店员信息密码"><i class="fa fa-info-circle"></i></span>
  42. {/if}
  43. </td>
  44. <td>
  45. {if $item['storeid'] > 0}
  46. {if !empty($stores[$item['storeid']])}
  47. <span class="label label-success">{$stores[$item['storeid']]['business_name']}-{$stores[$item['storeid']]['branch_name']}</span>
  48. {else}
  49. <span class="label label-warning">门店已删除</span>
  50. {/if}
  51. {else}
  52. <span class="label label-danger">未设置</span>
  53. {/if}
  54. </td>
  55. <td>{$users[$item['uid']]['username']}</td>
  56. <td>{$item['mobile']}</td>
  57. <td>{$item['nickname']}</td>
  58. <td>
  59. {if !empty($stores[$item['storeid']])}
  60. <a onclick="if (confirm('使用该店员帐号后,会更改您当前登录的用户,是否继续?')) {alert('使用完毕后,您退出店员帐号重新登录管理帐号即可。')} else { return false;}" href="{php echo url('activity/clerk/switch',array('id' => $item['id']));}" title="编辑">使用该店员帐号</a>&nbsp;-&nbsp;
  61. {/if}
  62. <a href="{php echo url('activity/clerk/post',array('id' => $item['id']));}" title="编辑">编辑</a>&nbsp;-&nbsp;
  63. <a href="{php echo url('activity/clerk/del', array('id' => $item['id']))}" onclick="return confirm('此操作不可恢复,确认删除?');return false;" title="删除">删除</a>
  64. </td>
  65. </tr>
  66. {/loop}
  67. </tbody>
  68. </table>
  69. </div>
  70. </div>
  71. {$pager}
  72. </form>
  73. </div>
  74. </div>
  75. <script>
  76. require(['bootstrap'],function($){
  77. $('[data-toggle="popover"]').popover()
  78. });
  79. </script>
  80. {/if}
  81. {if $do == 'post'}
  82. {if empty($stores)}
  83. <div class="alert alert-info">
  84. <p style="color : black;">您还没有<a href="{php echo url('activity/store/post')}" >添加门店</a>,请先添加门店再进行操作。</p>
  85. </div>
  86. {else}
  87. <div class="alert alert-info">
  88. 1、 添加微信店员需要您的公众号号为: 认证订阅号 或 认证服务号<br>
  89. 2、因为添加店员是通过粉丝昵称搜索相应店员的信息,所以添加店员之前,需要 <a href="{php echo url('mc/fans');}" target="_blank">下载粉丝列表</a> & <a href="{php echo url('mc/fans');}" target="_blank">更新粉丝信息</a> & <a href="{php echo url('mc/fangroup');}" target="_blank">更新粉丝分组</a><br>
  90. 3、如果您不想使用昵称来搜索粉丝,可通过粉丝id进行搜索
  91. </div>
  92. <div class="clearfix">
  93. <form class="form-horizontal form" id="form1" action="" method="post" enctype="multipart/form-data">
  94. <input type="hidden" name="id" value="{$id}">
  95. <div class="panel panel-default">
  96. <div class="panel-heading">基本信息</div>
  97. <div class="panel-body">
  98. <div class="form-group">
  99. <label class="col-xs-12 col-sm-3 col-md-2 control-label"><span class="require">*</span>店员姓名</label>
  100. <div class="col-sm-9 col-xs-12">
  101. <div class="input-group">
  102. <input type="text" name="name" value="{$clerk['name']}" class="form-control" data-type={if !empty($clerk['id'])}"1"{else} ""{/if} placeholder="请填写店员姓名">
  103. <span class="input-group-addon" >
  104. <input type="checkbox" name="same" aria-label="">
  105. 使用店员姓名作为登录账号
  106. </span>
  107. </div>
  108. <div class="help-block" id="warning" style="display: none"><p class="text-danger">登录账号已存在,请重新输入登录账号</p></div>
  109. </div>
  110. </div>
  111. <div class="form-group" id="username">
  112. <label class="col-xs-12 col-sm-3 col-md-2 control-label"><span class="require">*</span>登录账号</label>
  113. <div class="col-sm-9 col-xs-12">
  114. <input type="text" name="username" value="{$clerk['username']}" data-type={if !empty($clerk['id'])}"1"{else} ""{/if} class="form-control">
  115. <div class="help-block">请输入登陆账号,登陆账号为 3 到 15 个字符组成,包括汉字,大小写字母(不区分大小写)</div>
  116. <div class="help-block" id="u_warning" style="display: none"><p class="text-danger">登录账号已存在,请重新输入登录账号</p></div>
  117. </div>
  118. </div>
  119. <div class="form-group">
  120. <label class="col-xs-12 col-sm-3 col-md-2 control-label"><span class="require">*</span>密码</label>
  121. <div class="col-sm-9 col-xs-12">
  122. <input type="password" name="password" value="" class="form-control">
  123. <div class="help-block">请填写密码,最小长度为 8 个字符.{if $clerk['uid'] > 0}如果不更改密码此处请留空{/if}</div>
  124. </div>
  125. </div>
  126. <div class="form-group">
  127. <label class="col-xs-12 col-sm-3 col-md-2 control-label"><span class="require">*</span>确认密码</label>
  128. <div class="col-sm-9 col-xs-12">
  129. <input type="password" name="repassword" value="" class="form-control">
  130. <div class="help-block">重复输入密码,确认正确输入.{if $clerk['uid'] > 0}如果不更改密码此处请留空{/if}</div>
  131. </div>
  132. </div>
  133. <div class="form-group">
  134. <label class="col-xs-12 col-sm-3 col-md-2 control-label"><span class="require">*</span>手机号</label>
  135. <div class="col-sm-9 col-xs-12">
  136. <input type="text" name="mobile" value="{$clerk['mobile']}" class="form-control" placeholder="请填写店员手机号">
  137. </div>
  138. </div>
  139. <div class="form-group">
  140. <label class="col-xs-12 col-sm-3 col-md-2 control-label"><span class="require">*</span>所属门店</label>
  141. <div class="col-sm-9 col-xs-12">
  142. <select name="storeid" class="form-control">
  143. <option value="">==选择所属门店==</option>
  144. {loop $stores $store}
  145. <option value="{$store['id']}" {if $store['id'] == $clerk['storeid']}selected{/if}>{$store['business_name']}-{$store['branch_name']}</option>
  146. {/loop}
  147. </select>
  148. <div class="help-block"><strong class="text-danger">如果您不选门店,员工账号登录进来将可以看见所有的支付订单和卡券,会员卡. <a href="{php echo url('activity/store');}">创建门店</a></strong></div>
  149. </div>
  150. </div>
  151. <div class="form-group">
  152. <label class="col-xs-12 col-sm-3 col-md-2 control-label"><span class="require"> </span>店员微信昵称</label>
  153. <div class="col-sm-9 col-xs-12">
  154. <div class="input-group">
  155. <input type="text" name="nickname" value="{$clerk['nickname']}" class="form-control">
  156. <div class="input-group-btn">
  157. <span class="btn btn-success btn-openid">检 测</span>
  158. </div>
  159. </div>
  160. <div class="help-block">请填写微信昵称。系统根据微信昵称获取该商家对应公众号的openid</div>
  161. </div>
  162. </div>
  163. <div class="form-group">
  164. <label class="col-xs-12 col-sm-3 col-md-2 control-label"><span class="require"> </span> 或 店员粉丝编号</label>
  165. <div class="col-sm-9 col-xs-12">
  166. <div class="input-group">
  167. <input type="text" name="openid" value="{$clerk['openid']}" class="form-control">
  168. <div class="input-group-btn">
  169. <span class="btn btn-success btn-openid">检 测</span>
  170. </div>
  171. </div>
  172. <div class="help-block">请填写微信编号。系统根据微信编号获取该商家对应公众号的openid</div>
  173. </div>
  174. </div>
  175. </div>
  176. </div>
  177. <div class="panel panel-default">
  178. <div class="panel-heading">权限设置 (<a href="{url 'profile/deskmenu'}" target="_blank">自定义工作台菜单?</a>)</div>
  179. <div class="panel-body table-responsive">
  180. <table class="table">
  181. {loop $permission $name $row}
  182. <thead>
  183. <tr class="info">
  184. <th colspan="6">
  185. <div class="checkbox">
  186. <label class="permission permission-{$name}" data-name="{$name}"><input type="checkbox">{$row['title']}</label>
  187. </div>
  188. </th>
  189. </tr>
  190. </thead>
  191. {php $i=1;}
  192. {loop $row['items'] $item}
  193. {if $i%6 == 1 || $i == 1}<tr>{/if}
  194. <td>
  195. <div class="checkbox">
  196. <label class="permission-child permission-child-{$name}" data-name="{$name}"><input type="checkbox" value="{php echo empty($item['permission'])? 'clerk_'.$item['id'] : $item['permission'];}" {if in_array($item['permission'], $clerk['permission'])}checked{/if} name="permission[]">{$item['title']}</label>
  197. </div>
  198. </td>
  199. {if $i%6 == 0}</tr>{/if}
  200. {php $i++;}
  201. {/loop}
  202. {/loop}
  203. </table>
  204. </div>
  205. </div>
  206. <div class="form-group col-sm-12">
  207. <input name="uid" type="hidden" value="{$clerk['uid']}" >
  208. <input name="id" type="hidden" value="{$clerk['id']}" >
  209. <input name="submit" id="submit" type="submit" value="提交" class="btn btn-primary col-lg-1">
  210. <input type="hidden" name="token" value="{$_W['token']}" />
  211. </div>
  212. </form>
  213. </div>
  214. <script>
  215. {if $clerk['name'] == $clerk['username']}
  216. $('[name="same"]').attr('checked', true);
  217. $('#username').hide();
  218. {/if}
  219. $('[name="name"]').change(function () {
  220. if ($('[name="same"]').is(':checked')) {
  221. $('[name="username"]').val($(this).val());
  222. }
  223. });
  224. var id = '{$id}';
  225. $('[name="same"]').click(function() {
  226. if ($(this).is(':checked')) {
  227. $('#username').hide();
  228. $('[name="username"]').val($('[name="name"]').val());
  229. }else {
  230. $('#warning').hide();
  231. $('#username').show();
  232. }
  233. });
  234. $('[name="name"]').blur(function () {
  235. if ($('[name="same"]').is(':checked')) {
  236. var username = $.trim($(':text[name="name"]').val());
  237. var uid = $('[name="uid"]').val();
  238. $.post("{php echo url('activity/clerk/checkname')}", {'uid' : uid, 'username' : username}, function(data) {
  239. var data = $.parseJSON(data);
  240. if (data.message.errno == '0') {
  241. $(':text[name="username"]').data('type', 0);
  242. $('#warning').show();
  243. }else {
  244. $(':text[name="username"]').data('type', 1);
  245. $('#warning').hide();
  246. }
  247. });
  248. }
  249. });
  250. $('[name="username"]').blur(function () {
  251. if (!$('[name="same"]').is(':checked')) {
  252. var username = $.trim($(':text[name="username"]').val());
  253. var uid = $('[name="uid"]').val();
  254. $.post("{php echo url('activity/clerk/checkname')}", {'uid' : uid, 'username' : username}, function(data) {
  255. var data = $.parseJSON(data);
  256. if (data.message.errno == '0') {
  257. $(':text[name="username"]').data('type', 0);
  258. $('#warning').hide();
  259. $('#u_warning').show();
  260. }else {
  261. $(':text[name="username"]').data('type', 1);
  262. $('#warning').hide();
  263. $('#u_warning').hide();
  264. }
  265. });
  266. }
  267. });
  268. $('#form1').submit(function(){
  269. var name = $.trim($(':text[name="name"]').val());
  270. if (!name) {
  271. util.message('请填写店员名称');
  272. return false;
  273. }
  274. var username = $.trim($(':text[name="username"]').val());
  275. if (!username && !($('[name="same"]').is(':checked'))) {
  276. util.message('请填写登陆账号');
  277. return false;
  278. }
  279. if ($(':text[name="username"]').data('type') == 0) {
  280. util.message('登录账号已存在');
  281. return false;
  282. }
  283. var password = $.trim($('input[name="password"]').val());
  284. var repassword = $.trim($('input[name="repassword"]').val());
  285. {if !$clerk['uid']}
  286. if (!password || password.length < 8) {
  287. util.message('密码不能小于8位数');
  288. return false;
  289. }
  290. if (password != repassword) {
  291. util.message('两次密码输入不一致');
  292. return false;
  293. }
  294. {else}
  295. if (password != ''&& password.length < 8) {
  296. util.message('密码不能小于8位数');
  297. return false;
  298. }
  299. if (password != '' && password != repassword) {
  300. util.message('两次密码输入不一致');
  301. return false;
  302. }
  303. {/if}
  304. var mobile = $.trim($(':text[name="mobile"]').val());
  305. if (!mobile) {
  306. util.message('请填写店员手机号');
  307. return false;
  308. }
  309. var store_id = $.trim($('select[name="storeid"]').val());
  310. if (!store_id) {
  311. util.message('请选择店员所在的门店.<br>');
  312. return false;
  313. }
  314. var phone = /^\d{11}$/;
  315. if(!phone.test(mobile)) {
  316. util.message('请填写正确的手机格式');
  317. return false;
  318. }
  319. return true;
  320. });
  321. $('.btn-openid').click(function(){
  322. var nickname = $.trim($(':text[name="nickname"]').val());
  323. var openid = $.trim($(':text[name="openid"]').val());
  324. if(!nickname && !openid) {
  325. util.message('请输入昵称或者openid');
  326. return false;
  327. }
  328. var param = {
  329. 'nickname':nickname,
  330. 'openid':openid
  331. };
  332. $.post("{php echo url('activity/clerk/verify')}", param, function(data){
  333. var data = $.parseJSON(data);
  334. if(data.message.errno < 0) {
  335. util.message(data.message.message);
  336. return false;
  337. }
  338. $(':text[name="openid"]').val(data.message.message.openid);
  339. $(':text[name="nickname"]').val(data.message.message.nickname);
  340. });
  341. return false;
  342. });
  343. $('.permission').click(function(){
  344. var name = $(this).data('name');
  345. $('.permission-child-' + name).find(':checkbox').prop('checked', $(this).find(':checkbox').prop('checked'));
  346. });
  347. $('.permission-child').click(function() {
  348. var name = $(this).data('name');
  349. if (!$(this).find(':checkbox').prop('checked')) {
  350. $('.permission-' + name).find(':checkbox').prop('checked', false);
  351. } else {
  352. if ($('.permission-child-' + name).find(':checkbox:not(:checked)').size()) {
  353. $('.permission-' + name).find(':checkbox').prop('checked', false);
  354. } else {
  355. $('.permission-' + name).find(':checkbox').prop('checked', true);
  356. }
  357. }
  358. });
  359. </script>
  360. {/if}
  361. {/if}
  362. {template 'common/footer'}