empUserForm.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. <% layout('/layouts/default.html', {title: '用户管理', libs: ['validate','dataGrid']}){ %>
  2. <div class="main-content">
  3. <div class="box box-main">
  4. <div class="box-header with-border">
  5. <div class="box-title">
  6. <i class="fa icon-people"></i> ${text(empUser.isNewRecord ? '新增用户' : op == 'auth' ? '用户分配角色' : '编辑用户')}
  7. </div>
  8. <div class="box-tools pull-right">
  9. <button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
  10. </div>
  11. </div>
  12. <#form:form id="inputForm" model="${empUser}" action="${ctx}/sys/empUser/save" method="post" class="form-horizontal">
  13. <#form:hidden name="op" value="${op}"/>
  14. <#form:hidden name="userType" value="employee"/>
  15. <#form:hidden path="userCode"/>
  16. <div class="box-body">
  17. <% if(op=='auth'){ %><br/><% } %>
  18. <% if(op == 'add' || op == 'edit') { %>
  19. <div class="form-unit">${text('基本信息')}</div>
  20. <div class="row">
  21. <div class="col-xs-6">
  22. <div class="form-group">
  23. <label class="control-label col-sm-4" title="">
  24. <span class="required ">*</span> ${text('归属机构')}:<i class="fa icon-question hide"></i></label>
  25. <div class="col-sm-8">
  26. <#form:treeselect id="office" title="${text('机构选择')}"
  27. path="employee.office.officeCode" labelPath="employee.office.officeName"
  28. url="${ctx}/sys/office/treeData?ctrlPermi=${ctrlPermi}"
  29. class="required" allowClear="false" canSelectRoot="true" canSelectParent="true"/>
  30. </div>
  31. </div>
  32. </div>
  33. <div class="col-xs-6">
  34. <div class="form-group">
  35. <label class="control-label col-sm-4" title="">
  36. <span class="required hide">*</span> ${text('归属公司')}:<i class="fa icon-question hide"></i></label>
  37. <div class="col-sm-8">
  38. <#form:treeselect id="company" title="${text('公司选择')}"
  39. path="employee.company.companyCode" labelPath="employee.company.companyName"
  40. url="${ctx}/sys/company/treeData?ctrlPermi=${ctrlPermi}"
  41. btnClass="" allowClear="true" canSelectRoot="true" canSelectParent="true"/>
  42. </div>
  43. </div>
  44. </div>
  45. </div>
  46. <% } %>
  47. <div class="row">
  48. <div class="col-xs-6">
  49. <div class="form-group">
  50. <label class="control-label col-sm-4" title="">
  51. <span class="required ">*</span> ${text('登录账号')}:<i class="fa icon-question hide"></i></label>
  52. <div class="col-sm-8">
  53. <#form:hidden name="oldLoginCode" value="${empUser.loginCode}"/>
  54. <#form:input path="loginCode" minlength="4" maxlength="20" readonly="${op=='auth'}"
  55. class="form-control required userName"
  56. remote="${ctx}/sys/user/checkLoginCode?oldLoginCode=${empUser.loginCode}"
  57. data-msg-remote="${text('登录账号已存在')}"/>
  58. </div>
  59. </div>
  60. </div>
  61. <div class="col-xs-6">
  62. <div class="form-group">
  63. <label class="control-label col-sm-4" title="">
  64. <span class="required ">*</span> ${text('用户昵称')}:<i class="fa icon-question hide"></i></label>
  65. <div class="col-sm-8">
  66. <#form:input path="userName" maxlength="32" readonly="${op=='auth'}" class="form-control required "/>
  67. </div>
  68. </div>
  69. </div>
  70. </div>
  71. <% if(op == 'add' || op == 'edit') { %>
  72. <div class="row">
  73. <div class="col-xs-6">
  74. <div class="form-group">
  75. <label class="control-label col-sm-4" title="">
  76. <span class="required hide">*</span> ${text('电子邮箱')}:<i class="fa icon-question hide"></i></label>
  77. <div class="col-sm-8">
  78. <div class="input-group">
  79. <#form:input path="email" maxlength="300" class="form-control email"/>
  80. <span class="input-group-addon"><i class="fa fa-fw fa-envelope"></i></span>
  81. </div>
  82. </div>
  83. </div>
  84. </div>
  85. <div class="col-xs-6">
  86. <div class="form-group">
  87. <label class="control-label col-sm-4" title="">
  88. <span class="required hide">*</span> ${text('手机号码')}:<i class="fa icon-question hide"></i></label>
  89. <div class="col-sm-8">
  90. <div class="input-group">
  91. <#form:input path="mobile" maxlength="100" class="form-control mobile"/>
  92. <span class="input-group-addon"><i class="fa fa-fw fa-mobile"></i></span>
  93. </div>
  94. </div>
  95. </div>
  96. </div>
  97. </div>
  98. <div class="row">
  99. <div class="col-xs-6">
  100. <div class="form-group">
  101. <label class="control-label col-sm-4" title="">
  102. <span class="required hide">*</span> ${text('办公电话')}:<i class="fa icon-question hide"></i></label>
  103. <div class="col-sm-8">
  104. <div class="input-group">
  105. <#form:input path="phone" maxlength="100" class="form-control phone"/>
  106. <span class="input-group-addon"><i class="fa fa-fw fa-phone"></i></span>
  107. </div>
  108. </div>
  109. </div>
  110. </div>
  111. <div class="col-xs-6 hide">
  112. <div class="form-group">
  113. <label class="control-label col-sm-4" title="">
  114. <span class="required hide">*</span> ${text('权重(排序)')}:<i class="fa icon-question hide"></i></label>
  115. <div class="col-sm-8">
  116. <#form:input path="userWeight" value="0" maxlength="8" class="form-control digits" placeholder="${text('权重越大排名越靠前,请填写数字。')}"/>
  117. </div>
  118. </div>
  119. </div>
  120. </div>
  121. <div class="form-unit">${text('详细信息')}</div>
  122. <div class="row">
  123. <div class="col-xs-6">
  124. <div class="form-group">
  125. <label class="control-label col-sm-4" title="">
  126. <span class="required hide">*</span> ${text('员工工号')}:<i class="fa icon-question hide"></i></label>
  127. <div class="col-sm-8">
  128. <#form:input path="employee.empNo" maxlength="32" class="form-control userName"
  129. remote="${ctx}/sys/empUser/checkEmpNo?oldEmpNo=${empUser.employee.empNo}"
  130. data-msg-remote="${text('员工工号已存在')}"/>
  131. </div>
  132. </div>
  133. </div>
  134. <div class="col-xs-6">
  135. <div class="form-group">
  136. <label class="control-label col-sm-4" title="">
  137. <span class="required hide">*</span> ${text('员工姓名')}:<i class="fa icon-question hide"></i></label>
  138. <div class="col-sm-8">
  139. <#form:input path="employee.empName" maxlength="32" class="form-control "/>
  140. </div>
  141. </div>
  142. </div>
  143. </div>
  144. <div class="row">
  145. <div class="col-xs-6">
  146. <div class="form-group">
  147. <label class="control-label col-sm-4" title="">
  148. <span class="required hide">*</span> ${text('所在岗位')}:<i class="fa icon-question hide"></i></label>
  149. <div class="col-sm-8">
  150. <#form:select multiple="true" path="employee.employeePosts" items="${postList}"
  151. itemLabel="postName" itemValue="postCode" class="form-control"/>
  152. </div>
  153. </div>
  154. </div>
  155. <div class="col-xs-6 hide">
  156. <div class="form-group">
  157. <label class="control-label col-sm-4" title="">
  158. <span class="required hide">*</span> ${text('英文名')}:<i class="fa icon-question hide"></i></label>
  159. <div class="col-sm-8">
  160. <#form:input path="employee.empNameEn" value="moren" maxlength="32" class="form-control "/>
  161. </div>
  162. </div>
  163. </div>
  164. </div>
  165. <div class="row">
  166. <div class="col-xs-12">
  167. <div class="form-group">
  168. <label class="control-label col-sm-2" title="">
  169. <span class="required hide">*</span> ${text('附属机构')}:<i class="fa icon-question hide"></i></label>
  170. <div class="col-sm-10 table-form">
  171. <table id="empOfficeGrid"></table>
  172. <% if (hasPermi('sys:empUser:edit')){ %>
  173. <a href="#" id="empOfficeGridAddRowBtn" class="btn btn-primary btn-sm mt10 mb10"><i class="fa fa-plus"></i> ${text('增行')}</a>
  174. <% } %>
  175. </div>
  176. </div>
  177. </div>
  178. </div>
  179. <div class="row">
  180. <div class="col-xs-12">
  181. <div class="form-group">
  182. <label class="control-label col-sm-2" title="">
  183. <span class="required hide">*</span> ${text('备注信息')}:<i class="fa icon-question hide"></i></label>
  184. <div class="col-sm-10">
  185. <#form:textarea path="remarks" rows="4" maxlength="500" class="form-control "/>
  186. </div>
  187. </div>
  188. </div>
  189. </div>
  190. <% } %>
  191. <% if(hasPermi('sys:empUser:authRole') && (op == 'add' || op == 'auth')) { %>
  192. <div class="form-unit">${text('分配角色')}</div>
  193. <div class="pl10 pb20">
  194. <table id="roleGrid"></table>
  195. <#form:hidden name="userRoleString"/>
  196. </div>
  197. <% } %>
  198. <% if(op == 'add' || op == 'edit') { %>
  199. <#form:extend collapsed="true" />
  200. <% } %>
  201. </div>
  202. <div class="box-footer">
  203. <div class="row">
  204. <div class="col-sm-offset-2 col-sm-10">
  205. <% if (hasPermi('sys:empUser:edit,sys:empUser:authRole', 'or')){ %>
  206. <button type="submit" class="btn btn-sm btn-primary" id="btnSubmit"><i class="fa fa-check"></i> ${text('保 存')}</button>&nbsp;
  207. <% } %>
  208. <button type="button" class="btn btn-sm btn-default" id="btnCancel" onclick="js.closeCurrentTabPage()"><i class="fa fa-reply-all"></i> ${text('关 闭')}</button>
  209. </div>
  210. </div>
  211. </div>
  212. </#form:form>
  213. </div>
  214. </div>
  215. <% } %>
  216. <script id="treeselectTpl" type="text/template">//<!--<div>
  217. <#form:treeselect id="{{d.id}}" title="{{d.title}}" name="{{d.name}}" value="{{d.value}}"
  218. labelName="{{d.labelName}}" labelValue="{{d.labelValue}}" url="{{d.url}}"
  219. class="{{d.cssClass}}" btnClass="btn-sm" allowClear="true"/>
  220. </div>//--></script>
  221. <script>
  222. $("#empOfficeGrid").dataGrid({
  223. data: ${toJson(empUser.employee.employeeOfficeList)},
  224. datatype: "local", // 设置本地数据
  225. columnModel: [
  226. {header:'${text("附属机构")}', name:'officeName', sortable:false, width:100,
  227. formatter: function(val, obj, row, act){
  228. return js.val(row, 'officeCode')+'|'+js.val(row, 'officeName');
  229. }, editable: true, edittype: "custom", editoptions: {
  230. custom_element: function(val, editOptions) {
  231. return js.template('treeselectTpl', {
  232. id: 'office_'+editOptions.id, title: '机构选择',
  233. name: 'officeCode', value: val.split('|')[0],
  234. labelName: 'officeName', labelValue: val.split('|')[1],
  235. url: '${ctx}/sys/office/treeData', cssClass: 'required'
  236. });
  237. }
  238. }
  239. },
  240. {header:'${text("附属岗位")}', name:'postCode', sortable:false, width:100,
  241. editable:true, edittype:'select', editoptions:{'class':'form-control',
  242. items: $.merge([{postName:'&nbsp;',postCode:''}], ${toJson(postList)}),
  243. itemLabel: 'postName', itemValue: 'postCode', dataInit: function(element){
  244. js.select2(element).on("change",function(){$(this).resetValid()});
  245. }
  246. }
  247. },
  248. {header:'${text("操作")}', name:'actions', width:80, sortable:false, fixed:true, formatter: function(val, obj, row, act){
  249. var actions = [];
  250. actions.push('<a href="#" onclick="js.confirm(\'${text("你确认要删除这条数据吗?")}\', function(){$(\'#empOfficeGrid\').dataGrid(\'delRowData\',\''+obj.rowId+'\')});return false;"><i class="fa fa-trash-o"></i></a>&nbsp;');
  251. return actions.join('');
  252. }, editoptions: {defaultValue: 'new'}}
  253. ],
  254. autoGridHeight: function(){return 'auto'}, // 设置自动高度
  255. // 编辑表格参数
  256. editGrid: true, // 是否是编辑表格
  257. editGridInitRowNum: 0, // 编辑表格的初始化新增行数
  258. editGridAddRowBtn: $('#empOfficeGridAddRowBtn'), // 子表增行按钮
  259. editGridAddRowInitData: {id: '', status: Global.STATUS_NORMAL}, // 新增行的时候初始化的数据
  260. // 编辑表格的提交数据参数
  261. editGridInputFormListName: 'employee.employeeOfficeList', // 提交的数据列表名
  262. editGridInputFormListAttrs: 'officeCode,officeName,postCode,postName,', // 提交数据列表的属性字段
  263. ajaxSuccess: function(){
  264. }
  265. });
  266. //<% if(hasPermi('sys:empUser:authRole') && (op == 'add' || op == 'auth')) { %>
  267. // 加载角色列表
  268. var roleGrid = $("#roleGrid").dataGrid({
  269. url: '${ctx}/sys/role/treeData',
  270. postData: [
  271. {name:'userType',value:'employee'},
  272. {name:'ctrlPermi',value:'${ctrlPermi}'}
  273. ],
  274. columnModel: [
  275. {header:'${text("角色名称")}', name:'name', sortable:false, width:100, align:"center"},
  276. {header:'${text("角色编码")}', name:'id', sortable:false, width:100, align:"center"}
  277. ],
  278. showCheckbox: true,
  279. autoGridHeight: function(){
  280. return 'auto';
  281. },
  282. autoGridWidth: function(){
  283. return $('#inputForm .box-body').width()-20;
  284. },
  285. ajaxSuccess: function(){
  286. //<% for (role in roleList!){ %>
  287. roleGrid.dataGrid('setSelectRow', '${role.roleCode}');
  288. //<% } %>
  289. }
  290. });
  291. //<% } %>
  292. $("#inputForm").validate({
  293. submitHandler: function(form){
  294. //<% if(hasPermi('sys:empUser:authRole') && (op == 'add' || op == 'auth')) { %>
  295. $("#userRoleString").val(roleGrid.dataGrid('getSelectRows').join(','));
  296. //<% } %>
  297. var empNo = $('#employee_empNo').val();
  298. if (empNo == ''){
  299. $('#employee_empNo').val($('#loginCode').val());
  300. }
  301. js.ajaxSubmitForm($(form), function(data){
  302. js.showMessage(data.message);
  303. if(data.result == Global.TRUE){
  304. js.closeCurrentTabPage(function(contentWindow){
  305. contentWindow.page();
  306. });
  307. }
  308. }, "json");
  309. }
  310. });
  311. </script>