user-base-input.jsp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. <%@page contentType="text/html;charset=UTF-8"%>
  2. <%@include file="/taglibs.jsp"%>
  3. <%pageContext.setAttribute("currentHeader", "user");%>
  4. <%pageContext.setAttribute("currentMenu", "user");%>
  5. <!doctype html>
  6. <html>
  7. <head>
  8. <%@include file="/common/meta.jsp"%>
  9. <title><spring:message code="user.user.input.title" text="编辑用户"/></title>
  10. <%@include file="/common/s.jsp"%>
  11. <script type="text/javascript">
  12. $(function() {
  13. $("#userBaseForm").validate({
  14. submitHandler: function(form) {
  15. bootbox.animate(false);
  16. var box = bootbox.dialog('<div class="progress progress-striped active" style="margin:0px;"><div class="bar" style="width: 100%;"></div></div>');
  17. form.submit();
  18. },
  19. errorClass: 'validate-error',
  20. rules: {
  21. username: {
  22. remote: {
  23. url: 'user-base-checkUsername.do',
  24. data: {
  25. <c:if test="${model != null}">
  26. id: function() {
  27. return $('#userBase_id').val();
  28. }
  29. </c:if>
  30. }
  31. }
  32. }
  33. },
  34. messages: {
  35. username: {
  36. remote: "<spring:message code='user.user.input.duplicate' text='存在重复账号'/>"
  37. }
  38. }
  39. });
  40. })
  41. </script>
  42. <link rel="stylesheet" href="${ctx}/s/jquery-file-upload/css/jquery.fileupload.css">
  43. <script src="${ctx}/s/jquery-file-upload/js/vendor/jquery.ui.widget.js"></script>
  44. <script src="${ctx}/s/jquery-file-upload/js/jquery.iframe-transport.js"></script>
  45. <script src="${ctx}/s/jquery-file-upload/js/jquery.fileupload.js"></script>
  46. <script type="text/javascript">
  47. function generateFileupload(maxLimitedSize) {
  48. $('.fileupload').fileupload({
  49. dataType: 'json',
  50. add: function (e, data) {
  51. var file = data.files[0];
  52. if (file.size > maxLimitedSize) {
  53. alert("图片过大");
  54. } else {
  55. data.submit();
  56. }
  57. },
  58. submit: function (e, data) {
  59. var $this = $(this);
  60. data.jqXHR = $this.fileupload('send', data);
  61. $(this).parent('.btn').attr('disabled', true);
  62. $(this).parent('.btn').removeClass('btn-success');
  63. return false;
  64. },
  65. done: function (e, data) {
  66. var id = data.result.id;
  67. var imgId = data.formData.imgId;
  68. var btnId = data.formData.btnId;
  69. var viewUrl = data.formData.viewUrl + id + '&_=' + new Date().getTime();
  70. $("#" + imgId).html('<img src="' + viewUrl + '" style="width:50px;">');
  71. $('#' + btnId).attr('disabled', false);
  72. $('#' + btnId).addClass('btn-success');
  73. },
  74. progressall: function (e, data) {
  75. var progress = parseInt(data.loaded / data.total * 100, 10);
  76. $('#progress .bar').css(
  77. 'width',
  78. progress + '%'
  79. ).html(progress + '%');
  80. }
  81. });
  82. }
  83. $(function () {
  84. generateFileupload(1024 * 1024);
  85. });
  86. </script>
  87. </head>
  88. <body>
  89. <%@include file="/header/user.jsp"%>
  90. <div class="row-fluid">
  91. <%@include file="/menu/user.jsp"%>
  92. <!-- start of main -->
  93. <section id="m-main" class="span10">
  94. <article class="m-widget">
  95. <header class="header">
  96. <h4 class="title"><spring:message code="user.user.input.title" text="编辑用户"/></h4>
  97. </header>
  98. <div class="content content-inner">
  99. <form id="userBaseForm" method="post" action="user-base-save.do?operationMode=STORE" class="form-horizontal">
  100. <input id="userBase_userRepoId" type="hidden" name="userRepoId" value="1">
  101. <c:if test="${model != null}">
  102. <input id="userBase_id" type="hidden" name="id" value="${model.id}">
  103. </c:if>
  104. <div class="control-group">
  105. <label class="control-label" for="userBase_username"><spring:message code="user.user.input.username" text="账号"/></label>
  106. <div class="controls">
  107. <input id="userBase_username" type="text" name="username" value="${model.username}" size="40" class="text required" minlength="2" maxlength="50">
  108. </div>
  109. </div>
  110. <c:if test="${model == null || model.password == null}">
  111. <div class="control-group">
  112. <label class="control-label" for="userBase_password"><spring:message code="user.user.input.password" text="密码"/></label>
  113. <div class="controls">
  114. <input id="userBase_password" type="password" name="password" size="40" class="text required" maxlength="10">
  115. </div>
  116. </div>
  117. <div class="control-group">
  118. <label class="control-label" for="userBase_confirmPassword"><spring:message code="user.user.input.confirmpassword" text="验证密码"/></label>
  119. <div class="controls">
  120. <input id="userBase_confirmPassword" type="password" name="confirmPassword" size="40" class="text required" maxlength="10" equalTo="#userBase_password">
  121. </div>
  122. </div>
  123. </c:if>
  124. <div class="control-group">
  125. <label class="control-label" for="userBase_status"><spring:message code="user.user.input.enabled" text="启用"/></label>
  126. <div class="controls">
  127. <input id="userBase_status" type="checkbox" name="status" value="1" ${model.status == 1 ? 'checked' : ''}>
  128. </div>
  129. </div>
  130. <div class="control-group">
  131. <label class="control-label" for="userBase_email">邮箱</label>
  132. <div class="controls">
  133. <input id="userBase_email" type="text" name="email" value="${model.email}" class="email" maxlength="100">
  134. </div>
  135. </div>
  136. <div class="control-group">
  137. <label class="control-label" for="userBase_mobile">手机</label>
  138. <div class="controls">
  139. <input id="userBase_mobile" type="text" name="mobile" value="${model.mobile}" maxlength="20">
  140. </div>
  141. </div>
  142. <div class="control-group">
  143. <label class="control-label" for="userBase_nickName">显示名</label>
  144. <div class="controls">
  145. <input id="userBase_nickName" type="text" name="nickName" value="${model.nickName}" size="40" class="text" minlength="2" maxlength="50">
  146. </div>
  147. </div>
  148. <div class="control-group">
  149. <label class="control-label" for="userBase_fullName">全名</label>
  150. <div class="controls">
  151. <input id="userBase_fullName" type="text" name="fullName" value="${model.fullName}" size="40" class="text" minlength="2" maxlength="50">
  152. </div>
  153. </div>
  154. <div class="control-group">
  155. <label class="control-label" for="userBase_lastName">姓氏</label>
  156. <div class="controls">
  157. <input id="userBase_lastName" type="text" name="lastName" value="${model.lastName}" size="40" class="text" minlength="1" maxlength="50">
  158. </div>
  159. </div>
  160. <div class="control-group">
  161. <label class="control-label" for="userBase_firstName">名字</label>
  162. <div class="controls">
  163. <input id="userBase_firstName" type="text" name="firstName" value="${model.firstName}" size="40" class="text" minlength="1" maxlength="50">
  164. </div>
  165. </div>
  166. <div class="control-group">
  167. <label class="control-label" for="userBase_avatar">头像</label>
  168. <div class="controls">
  169. <span id="avatarImage">
  170. <c:if test="${not empty model.avatar}">
  171. <img src="user-base-avatar.do?id=${model.id}" style="width:50px;">
  172. </c:if>
  173. </span>
  174. <span id="avatarButton" class="btn btn-success fileinput-button">
  175. <span>上传头像</span>
  176. <input type="file" name="avatar" class="fileupload"
  177. data-no-uniform="true"
  178. data-url="user-base-upload.do"
  179. data-form-data='{"id":"${model.id}","imgId":"avatarImage","btnId":"avatarButton","viewUrl":"user-base-avatar.do?id="}'>
  180. </span>
  181. <div id="progress" class="progress" style="width:200px;margin-top:5px;height:20px;margin-bottom:0px;">
  182. <div class="bar bar-success"></div>
  183. </div>
  184. </div>
  185. </div>
  186. <div class="control-group">
  187. <label class="control-label" for="userBase_description">简介</label>
  188. <div class="controls">
  189. <textarea id="userBase_description" name="description" maxlength="200">${model.description}</textarea>
  190. </div>
  191. </div>
  192. <div class="control-group">
  193. <label class="control-label" for="userBase_gender">性别</label>
  194. <div class="controls">
  195. <label class="radio inline"><input id="userBase_gender0" type="radio" name="gender" value="male" ${model.gender == 'male' ? 'checked' : ''}">男</label>
  196. <label class="radio inline"><input id="userBase_gender1" type="radio" name="gender" value="femal" ${model.gender == 'female' ? 'checked' : ''}">女</label>
  197. </div>
  198. </div>
  199. <div class="control-group">
  200. <label class="control-label" for="userBase_birthday">生日</label>
  201. <div class="controls">
  202. <div class="input-append datepicker date" style="padding-left: 0px;">
  203. <input type="text" value="<fmt:formatDate value='${model.birthday}' pattern='yyyy-MM-dd'/>" readonly style="background-color:white;cursor:default; width: 175px;">
  204. <span class="add-on" style="padding-top: 2px; padding-bottom: 2px;"><i class="icon-calendar"></i></span>
  205. </div>
  206. </div>
  207. </div>
  208. <div class="control-group">
  209. <label class="control-label" for="userBase_location">地点</label>
  210. <div class="controls">
  211. <input id="userBase_location" type="text" name="location" value="${model.location}" maxlength="200">
  212. </div>
  213. </div>
  214. <div class="control-group">
  215. <label class="control-label" for="userBase_station">工位</label>
  216. <div class="controls">
  217. <input id="userBase_station" type="text" name="station" value="${model.station}" maxlength="50">
  218. </div>
  219. </div>
  220. <div class="control-group">
  221. <label class="control-label" for="userBase_telephone">分机</label>
  222. <div class="controls">
  223. <input id="userBase_telephone" type="text" name="telephone" value="${model.telephone}" maxlength="20">
  224. </div>
  225. </div>
  226. <div class="control-group">
  227. <label class="control-label" for="userBase_language">语言</label>
  228. <div class="controls">
  229. <input id="userBase_language" type="text" name="language" value="${model.language}" maxlength="20">
  230. </div>
  231. </div>
  232. <div class="control-group">
  233. <label class="control-label" for="userBase_country">国家</label>
  234. <div class="controls">
  235. <input id="userBase_country" type="text" name="country" value="${model.country}" maxlength="20">
  236. </div>
  237. </div>
  238. <div class="control-group">
  239. <label class="control-label" for="userBase_timezone">时区</label>
  240. <div class="controls">
  241. <input id="userBase_timezone" type="text" name="timezone" value="${model.timezone}" maxlength="20">
  242. </div>
  243. </div>
  244. <div class="control-group">
  245. <label class="control-label" for="userBase_employeeNo">工号</label>
  246. <div class="controls">
  247. <input id="userBase_employeeNo" type="text" name="employeeNo" value="${model.employeeNo}" maxlength="20">
  248. </div>
  249. </div>
  250. <div class="control-group">
  251. <label class="control-label" for="userBase_cardNo">工卡</label>
  252. <div class="controls">
  253. <input id="userBase_cardNo" type="text" name="cardNo" value="${model.cardNo}" maxlength="64">
  254. </div>
  255. </div>
  256. <%--
  257. <div class="control-group">
  258. <label class="control-label" for="userBase_ref"><spring:message code="user.user.input.ref" text="引用"/></label>
  259. <div class="controls">
  260. <input id="userBase_ref" type="text" name="ref" value="${model.ref}">
  261. </div>
  262. </div>
  263. --%>
  264. <c:forEach items="${userBaseWrapper.userAttrWrappers}" var="item">
  265. <div class="control-group">
  266. <label class="control-label" for="user-base_${item.code}">${item.name}</label>
  267. <div class="controls">
  268. <input id="user-base_${item.code}" type="text" name="_user_attr_${item.code}" size="40" class="text" maxlength="50" value="${item.value}">
  269. </div>
  270. </div>
  271. </c:forEach>
  272. <div class="control-group">
  273. <div class="controls">
  274. <button id="submitButton" class="btn a-submit"><spring:message code='core.input.save' text='保存'/></button>
  275. <button type="button" onclick="history.back();" class="btn a-cancel"><spring:message code='core.input.back' text='返回'/></button>
  276. </div>
  277. </div>
  278. </form>
  279. </div>
  280. </article>
  281. </section>
  282. <!-- end of main -->
  283. </div>
  284. </body>
  285. </html>