mission-user.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  1. <style type="text/css">
  2. .xm-label-block {
  3. background-color: #287bd2
  4. }
  5. </style>
  6. <!-- 正文开始 -->
  7. <div class="layui-fluid">
  8. <div class="layui-card">
  9. <div class="layui-card-body">
  10. <div class="layui-form toolbar" id="tbToolBar">
  11. <div class="layui-form-item">
  12. <div class="layui-inline">
  13. <label class="layui-form-label w-auto">姓 名:</label>
  14. <div class="layui-input-inline mr0">
  15. <input name="uname" class="layui-input" type="text" placeholder="姓 名"/>
  16. </div>
  17. </div>
  18. <div class="layui-inline">
  19. <label class="layui-form-label w-auto">手机号:</label>
  20. <div class="layui-input-inline mr0">
  21. <input name="mobile" class="layui-input" type="text" placeholder="手机号"/>
  22. </div>
  23. </div>
  24. <div class="layui-inline" style="padding-right: 110px;">
  25. <button class="layui-btn icon-btn" lay-filter="formSubSearchMissionUser" lay-submit>
  26. <i class="layui-icon">&#xe615;</i>查询
  27. </button>
  28. </div>
  29. </div>
  30. </div>
  31. <div class="layui-tab layui-tab-brief">
  32. <table id="dataTable" lay-filter="dataTable"></table>
  33. </div>
  34. </div>
  35. </div>
  36. </div>
  37. <script type="text/html" id="toolBarTpl">
  38. <div class="layui-btn-group fl">
  39. <a class="layui-btn layui-btn-sm layui-icon layui-icon-add-circle-fine mission-user-add-btn">&nbsp;添加</a>
  40. <a table-data="{'url':'store/mission/user/plectron','action':'put',param:{'status': 1}}" class="layui-btn layui-btn-sm layui-icon layui-icon-play table-toolbar-btn">&nbsp;启用</a >
  41. <a table-data="{'url':'store/mission/user/plectron','action':'put',param:{'status': 0}}" confirm class="layui-btn layui-btn-sm layui-icon layui-icon-pause table-toolbar-btn">&nbsp;禁用</a>
  42. <a table-data="{'url':'store/mission/user/plectron','action':'delete'}" confirm class="layui-btn layui-btn-sm layui-icon layui-icon-close table-toolbar-btn">&nbsp;删除</a>
  43. </div>
  44. </script>
  45. <!-- 表格操作列 -->
  46. <script type="text/html" id="tableBarUser">
  47. {{# if(d.status == 1){ }}
  48. <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="verify">审核</a>
  49. {{# } }}
  50. <a class="layui-btn layui-btn-xs" lay-event="edit">修改</a>
  51. <a class="layui-btn layui-btn-danger layui-btn-xs" perm-show="delete:/store/mission/user/<id>" lay-event="del">删除</a>
  52. </script>
  53. <!-- 表格状态列 -->
  54. <script type="text/html" id="tableStateUser">
  55. {{# if(d.status == 1){ }}
  56. <span class="layui-badge layui-badge-green">待审核</span>
  57. {{# }else if(d.status == 2){ }}
  58. <span class="layui-badge layui-badge-blue">服务中</span>
  59. {{# }else{ }}
  60. <span class="layui-badge layui-badge-gray">已停用</span>
  61. {{# } }}
  62. </script>
  63. <!-- 表单弹窗 -->
  64. <script type="text/html" id="modelMissionUser">
  65. <form id="modelMissionUserForm" lay-filter="modelMissionUserForm" class="layui-form model-form">
  66. <input name="id" type="hidden"/>
  67. <div class="model-form-body" style="max-height: 600px;">
  68. <div class="layui-form-item">
  69. <label class="layui-form-label layui-form-required">配送员姓名</label>
  70. <div class="layui-input-block">
  71. <input name="uname" placeholder="请输入配送员姓名" type="text" class="layui-input" maxlength="80"
  72. lay-verType="tips" lay-verify="required" required/>
  73. </div>
  74. </div>
  75. <div class="layui-form-item">
  76. <label class="layui-form-label layui-form-required">身份证号</label>
  77. <div class="layui-input-block">
  78. <input name="id_card" placeholder="请输入身份证号" type="text" class="layui-input" maxlength="80"
  79. lay-verType="tips" lay-verify="required" required/>
  80. </div>
  81. </div>
  82. <div class="layui-form-item">
  83. <label class="layui-form-label layui-form-required">证件照片</label>
  84. <div class="layui-input-block">
  85. <input type="text" name="id_card_img" value="" class="layui-input layui-disabled" style="padding-right: 80px;"
  86. lay-verType="tips" lay-verify="required" disabled="disabled" required>
  87. <button class="layui-btn icon-btn dialog-file-choose" data-input="id_card_img" type="button" style="position: absolute;top: 0;right: 0px;cursor: pointer;"><i class="layui-icon"></i>上传图片</button>
  88. <div class="img-preview-box id_card_img" style="display: flex;flex-wrap: wrap;align-content: space-between;background: #f7f7f7;">
  89. <img class="input-img-preview" src="../../assets/images/placeholder-refund.png" style="height: 100px;margin: 8px;">
  90. </div>
  91. </div>
  92. </div>
  93. <div class="layui-form-item">
  94. <label class="layui-form-label layui-form-required">联系方式</label>
  95. <div class="layui-input-block">
  96. <input name="mobile" placeholder="请输入联系方式" type="number" class="layui-input" maxlength="20"
  97. lay-verType="tips" lay-verify="required" required/>
  98. </div>
  99. </div>
  100. <div class="layui-form-item">
  101. <label class="layui-form-label layui-form-required">人员住址</label>
  102. <div class="layui-input-block">
  103. <input name="address" placeholder="请输入人员住址" type="text" class="layui-input" maxlength="20"
  104. lay-verType="tips" lay-verify="required" required/>
  105. </div>
  106. </div>
  107. <div class="layui-form-item">
  108. <label class="layui-form-label layui-form-required">配送车型</label>
  109. <div class="layui-input-block">
  110. <select name="vehicle" lay-verType="tips" lay-verify="required" required>
  111. <option value="">选择车型</option>
  112. <!-- 0:三轮车 1:电动车 2:小轿车 3:货车-->
  113. <option value="0">三轮车</option>
  114. <option value="1">电动车</option>
  115. <option value="2">小轿车</option>
  116. <option value="3">货车</option>
  117. </select>
  118. </div>
  119. </div>
  120. <div class="layui-form-item">
  121. <label class="layui-form-label layui-form-required">驾驶证照</label>
  122. <div class="layui-input-block">
  123. <input type="text" name="dr_license" value="" class="layui-input layui-disabled" style="padding-right: 80px;"
  124. lay-verType="tips" lay-verify="required" required disabled="">
  125. <button class="layui-btn icon-btn dialog-file-choose" data-input="dr_license" type="button" style="position: absolute;top: 0;right: 0px;cursor: pointer;"><i class="layui-icon"></i>上传图片</button>
  126. <div class="img-preview-box dr_license" style="display: flex;flex-wrap: wrap;align-content: space-between;background: #f7f7f7;">
  127. <img class="input-img-preview" src="../../assets/images/placeholder-refund.png" style="height: 100px;margin: 8px;">
  128. </div>
  129. </div>
  130. </div>
  131. <div class="layui-form-item">
  132. <label class="layui-form-label">健康证照</label>
  133. <div class="layui-input-block">
  134. <input type="text" name="hl_license" value="" class="layui-input layui-disabled" style="padding-right: 80px;" disabled="">
  135. <button class="layui-btn icon-btn dialog-file-choose" data-input="hl_license" type="button" style="position: absolute;top: 0;right: 0px;cursor: pointer;"><i class="layui-icon"></i>上传图片</button>
  136. <div class="img-preview-box hl_license" style="display: flex;flex-wrap: wrap;align-content: space-between;background: #f7f7f7;">
  137. <img class="input-img-preview" src="../../assets/images/placeholder-refund.png" style="height: 100px;margin: 8px;">
  138. </div>
  139. </div>
  140. </div>
  141. <div class="layui-form-item">
  142. <label class="layui-form-label">备注</label>
  143. <div class="layui-input-block">
  144. <textarea name="remarks" placeholder="请输入备注(可选)" class="layui-textarea" maxlength="200"></textarea>
  145. </div>
  146. </div>
  147. </div>
  148. <div class="layui-form-item text-right">
  149. <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
  150. <button class="layui-btn" perm-show="put:/store/mission/user/<id>" lay-filter="modelSubmitMissionUser" lay-submit>保存</button>
  151. </div>
  152. </form>
  153. </script>
  154. <!-- js部分 -->
  155. <script>
  156. layui.use(['layer', 'form', 'table', 'util', 'notice','md5', 'admin', 'setter', 'xmSelect'], function () {
  157. var $ = layui.jquery;
  158. var layer = layui.layer;
  159. var form = layui.form;
  160. var table = layui.table;
  161. var util = layui.util;
  162. var admin = layui.admin;
  163. var notice = layui.notice;
  164. var setter = layui.setter;
  165. var md5 = layui.md5;
  166. var xmSelect = layui.xmSelect;
  167. form.render('select');
  168. // 渲染表格
  169. var insTb = table.render({
  170. elem: '#dataTable',
  171. url: setter.baseServer + 'store/mission/user',
  172. page: true,
  173. // toolbar: true,
  174. toolbar: '#toolBarTpl',
  175. cellMinWidth: 100,
  176. cols: [[
  177. {type: 'checkbox'},
  178. {field: 'uname', title: '配送员', width: 100},
  179. {field: 'id_card', title: '身份证号', width: 200},
  180. {field: 'id_card_img', title: '身份证照片', templet: function (d) {
  181. var cover = JSON.parse(d.id_card_img),
  182. html = "";
  183. $.each(cover, (i, item) => {
  184. html += '<img src="' + (item || '../../assets/images/placeholder-refund.png') + '" style="height: 100%;margin-right:2px" class="input-img-preview"/>'
  185. })
  186. return html;
  187. }, width: 200},
  188. {field: 'mobile', title: '联系号码', width: 130},
  189. {field: 'address', title: '配送员住址'},
  190. // {field: 'dr_license', title: '驾驶证', templet: function (d) {
  191. // return '<img src="' + (d.dr_license || '../../assets/images/placeholder-refund.png') + '" style="height: 100%" class="input-img-preview"/>';
  192. // }, width: 200},
  193. {field: 'hl_license', title: '健康证', templet: function (d) {
  194. var cover = JSON.parse(d.hl_license),
  195. html = "";
  196. $.each(cover, (i, item) => {
  197. html += '<img src="' + (item || '../../assets/images/placeholder-refund.png') + '" style="height: 100%;margin-right:2px" class="input-img-preview"/>'
  198. })
  199. return html;
  200. }, width: 200},
  201. {field: 'vehicle', title: '车型',templet:function(d){
  202. //0:三轮车 1:电动车 2:小轿车 3:货车
  203. var cle = "未知";
  204. switch (d.vehicle) {
  205. case 0 : cle = "三轮车";break;
  206. case 1 : cle = "电动车";break;
  207. case 2 : cle = "小轿车";break;
  208. case 3 : cle = "货车";break;
  209. }
  210. return '<span class="layui-badge layui-badge-green">' + cle + '</span>';
  211. }},
  212. {
  213. field: 'created_at', sort: true, templet: function (d) {
  214. return util.toDateString(d.created_at * 1e3);
  215. }, title: '创建时间', width: 180
  216. },
  217. {field: 'status', templet: '#tableStateUser', title: '状态', width: 120},
  218. {fixed:'right', align: 'center', toolbar: '#tableBarUser', title: '操作', minWidth: 200}
  219. ]],
  220. done:function () {
  221. admin.renderPerm()
  222. }
  223. });
  224. // 添加
  225. $(document).on('click','.mission-user-add-btn', function () {
  226. showEditModel();
  227. });
  228. // 搜索
  229. form.on('submit(formSubSearchMissionUser)', function (data) {
  230. insTb.reload({where: data.field}, 'data');
  231. });
  232. // 工具条点击事件
  233. table.on('tool(dataTable)', function (obj) {
  234. var data = obj.data;
  235. var layEvent = obj.event;
  236. if(layEvent == 'verify') {
  237. layer.confirm('确定要审核“' + data.uname + '”吗?', {
  238. skin: 'layui-layer-admin',
  239. shade: .1
  240. }, function (i) {
  241. layer.load(2);
  242. admin.req('store/mission/user/' + data.id, {status: 2}, function (res) {
  243. layer.closeAll('loading');
  244. if (res.code === 10000) {
  245. layer.close(i);
  246. notice.msg(res.message, {icon: 1});
  247. insTb.reload({}, 'data');
  248. } else {
  249. notice.msg(res.message, {icon: 2});
  250. }
  251. }, 'PUT');
  252. });
  253. } else if (layEvent === 'edit') { // 修改
  254. showEditModel(data);
  255. } else if (layEvent === 'del') { // 删除
  256. layer.confirm('确定要删除“' + data.uname + '”吗?', {
  257. skin: 'layui-layer-admin',
  258. shade: .1
  259. }, function (i) {
  260. layer.close(i);
  261. layer.load(2);
  262. admin.req('store/mission/user/' + data.id, function (r) {
  263. layer.closeAll('loading');
  264. if (r.code === 10000) {
  265. notice.msg(r.message, {icon: 1});
  266. insTb.reload({}, 'data');
  267. } else {
  268. notice.msg(r.message, {icon: 2});
  269. }
  270. }, 'DELETE');
  271. });
  272. }
  273. });
  274. // 显示表单弹窗
  275. function showEditModel(data) {
  276. admin.open({
  277. id: 'LAY_ModelSkillUser',
  278. type: 1,
  279. area: '650px', //宽高
  280. title: (data ? '修改' : '添加') + '人员信息',
  281. content: $('#modelMissionUser').html(),
  282. success: function (layero, dIndex) {
  283. $(layero).children('.layui-layer-content').css('overflow', 'visible');
  284. if(data) {
  285. $(".img-preview-box.dr_license").empty();
  286. $('.img-preview-box.dr_license').append('<img class="input-img-preview" src="' + data.dr_license + '" style="height: 100px;margin: 8px;"/>');
  287. $(".img-preview-box.id_card_img").empty();
  288. $.each(JSON.parse(data.id_card_img), (i, t) => {
  289. $(".img-preview-box.id_card_img").append('<img class="input-img-preview" src="' + t + '" style="height: 100px;margin: 8px;"/>')
  290. })
  291. };
  292. form.render('radio');
  293. form.render('select');
  294. // 回显数据
  295. form.val('modelMissionUserForm', data);
  296. // 表单提交事件
  297. form.on('submit(modelSubmitMissionUser)', function (form) {
  298. layer.load(2);
  299. admin.req('store/mission/user' + (data ? '/update/' + form.field.id : '/create'), form.field, function (res) {
  300. layer.closeAll('loading');
  301. if (res.code === 10000) {
  302. layer.close(dIndex);
  303. notice.msg(res.message, {icon: 1});
  304. insTb.reload({}, 'data');
  305. } else {
  306. notice.msg(res.message, {icon: 2});
  307. }
  308. }, data ? 'PUT' : 'POST');
  309. return false;
  310. });
  311. }
  312. });
  313. }
  314. });
  315. </script>