usersList.ftl 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. <!DOCTYPE HTML>
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <#include "../layout/header.ftl"/>
  5. <#include "../layout/common.cssjs.ftl"/>
  6. <script type="text/javascript">
  7. function genderFormatter(value, row, index){
  8. if(value==1){
  9. return '<@locale code="userinfo.gender.female" />';
  10. }else{
  11. return '<@locale code="userinfo.gender.male" />';
  12. }
  13. };
  14. function onClick (event, treeId, treeNode) {
  15. $("#departmentId").val(treeNode.data.id)
  16. $.cookie("select_org_id", treeNode.data.id, { path: '/' });
  17. $.cookie("select_org_name", treeNode.data.name,{ path: '/' });
  18. $("#searchBtn").click();
  19. }
  20. $(function () {
  21. var treeSettings={
  22. element : "orgsTree",
  23. rootId : "1",
  24. checkbox : null,
  25. onClick : onClick,
  26. onDblClick : null,
  27. url : "<@base/>/orgs/tree"
  28. };
  29. function singlePath(newNode) {
  30. if (newNode === curExpandNode) return;
  31. if (curExpandNode && curExpandNode.open==true) {
  32. var zTree = $.fn.zTree.getZTreeObj(treeSettings.element);
  33. if (newNode.parentTId === curExpandNode.parentTId) {
  34. zTree.expandNode(curExpandNode, false);
  35. } else {
  36. var newParents = [];
  37. while (newNode) {
  38. newNode = newNode.getParentNode();
  39. if (newNode === curExpandNode) {
  40. newParents = null;
  41. break;
  42. } else if (newNode) {
  43. newParents.push(newNode);
  44. }
  45. }
  46. if (newParents!=null) {
  47. var oldNode = curExpandNode;
  48. var oldParents = [];
  49. while (oldNode) {
  50. oldNode = oldNode.getParentNode();
  51. if (oldNode) {
  52. oldParents.push(oldNode);
  53. }
  54. }
  55. if (newParents.length>0) {
  56. for (var i = Math.min(newParents.length, oldParents.length)-1; i>=0; i--) {
  57. if (newParents[i] !== oldParents[i]) {
  58. zTree.expandNode(oldParents[i], false);
  59. break;
  60. }
  61. }
  62. } else {
  63. zTree.expandNode(oldParents[oldParents.length-1], false);
  64. }
  65. }
  66. }
  67. }
  68. curExpandNode = newNode;
  69. };
  70. function beforeExpand(treeId, treeNode) {
  71. var pNode = curExpandNode ? curExpandNode.getParentNode():null;
  72. var treeNodeP = treeNode.parentTId ? treeNode.getParentNode():null;
  73. var zTree = $.fn.zTree.getZTreeObj(""+treeSettings.element);
  74. for(var i=0, l=!treeNodeP ? 0:treeNodeP.children.length; i<l; i++ ) {
  75. if (treeNode !== treeNodeP.children[i]) {
  76. zTree.expandNode(treeNodeP.children[i], false);
  77. }
  78. }
  79. while (pNode) {
  80. if (pNode === treeNode) {
  81. break;
  82. }
  83. pNode = pNode.getParentNode();
  84. }
  85. if (!pNode) {
  86. singlePath(treeNode);
  87. }
  88. };
  89. $.fn.zTree.init(
  90. $("#"+treeSettings.element), //element
  91. {//json object
  92. check : {
  93. enable : treeSettings.checkbox
  94. },
  95. async : {
  96. enable : true,
  97. url : treeSettings.url,
  98. autoParam : ["id", "name=n", "level=lv"],
  99. otherParam : {"otherParam":"zTreeAsyncTest",id:treeSettings.rootId},
  100. dataFilter : function (treeId, parentNode, childNodes) {
  101. if (!childNodes) return null;
  102. for (var i=0, l=childNodes.length; i<l; i++) {
  103. childNodes[i].name = childNodes[i].name.replace(/\.n/g, '.');
  104. }
  105. return childNodes;
  106. }
  107. },
  108. data : {
  109. simpleData : {
  110. enable : true
  111. }
  112. },
  113. callback: {
  114. onClick : treeSettings.onClick,
  115. onDblClick : treeSettings.onDblClick,
  116. beforeAsync : function(treeId, treeNode){
  117. $.loading();
  118. },
  119. onAsyncSuccess : function(event, treeId, treeNode, msg){
  120. $.unloading();
  121. },
  122. //beforeExpand : beforeExpand,
  123. onExpand : function onExpand(event, treeId, treeNode) {
  124. curExpandNode = treeNode;
  125. }
  126. }
  127. }
  128. );//end tree
  129. $("#changepwdBtn").on("click",function(){
  130. if($.dataGridSelRowsData("#datagrid")[0]==null){
  131. $.alert({content:$.platform.messages.select.alertText});
  132. return;
  133. }
  134. $("#changepwdBtnHidden").attr("wurl","<@base/>/userinfo/forwardChangePassword/"+$.dataGridSelRowsData("#datagrid")[0].id);
  135. $("#changepwdBtnHidden").click();
  136. });
  137. });
  138. </script>
  139. </head>
  140. <body>
  141. <div class="app header-default side-nav-dark">
  142. <div class="layout">
  143. <div class="header navbar">
  144. <#include "../layout/top.ftl"/>
  145. </div>
  146. <div class="col-md-3 sidebar-nav side-nav" >
  147. <#include "../layout/sidenav.ftl"/>
  148. </div>
  149. <div class="page-container">
  150. <div class="main-content">
  151. <div class="container-fluid">
  152. <div class="breadcrumb-wrapper row">
  153. <div class="col-12 col-lg-3 col-md-6">
  154. <h4 class="page-title"><@locale code="navs.users"/></h4>
  155. </div>
  156. <div class="col-12 col-lg-9 col-md-6">
  157. <ol class="breadcrumb float-right">
  158. <li><a href="<@base/>/main"><@locale code="navs.home"/></a></li>
  159. <li class="active">/ <@locale code="navs.users"/></li>
  160. </ol>
  161. </div>
  162. </div>
  163. </div>
  164. <div class="container-fluid">
  165. <div class="content-wrapper row">
  166. <div class="col-12 grid-margin">
  167. <div class="card">
  168. <div class="card-body">
  169. <div id="tool_box">
  170. <table class="table table-bordered">
  171. <tr>
  172. <td width="120px">
  173. <@locale code="userinfo.username"/>:
  174. </td>
  175. <td width="375px">
  176. <form id="basic_search_form">
  177. <input class="form-control" id="departmentId" name="departmentId" type="hidden">
  178. <input class="form-control" name="username" type="text" style ="width:150px;float:left;">
  179. <input class="button btn btn-primary mr-3" id="searchBtn" type="button" size="50" value="<@locale code="button.text.search"/>">
  180. <input class="button btn btn-secondary" id="advancedSearchExpandBtn" type="button" size="50" value="<@locale code="button.text.expandsearch"/>" expandValue="<@locale code="button.text.expandsearch"/>" collapseValue="<@locale code="button.text.collapsesearch"/>">
  181. </form>
  182. </td>
  183. <td colspan="2">
  184. <div id="tool_box_right">
  185. <input class="button btn btn-warning mr-3" id="changepwdBtn" type="button" value="<@locale code="login.password.changepassword"/>" />
  186. <input class="button btn btn-warning mr-3 window" id="changepwdBtnHidden" type="hidden"
  187. value="<@locale code="login.password.changepassword"/>"
  188. wurl="<@base/>/userinfo/forwardChangePassword" wwidth="600px" wheight="250px" />
  189. <input class="button btn btn-success mr-3 window" id="usersImportBtn" type="button"
  190. value="<@locale code="button.text.import"/>"
  191. wurl="<@base/>/userinfo/import" wwidth="400px" wheight="250px" />
  192. <input class="button btn btn-success mr-3" id="addBtn" type="button" value="<@locale code="button.text.add"/>"
  193. wurl="<@base/>/userinfo/forwardAdd"
  194. wwidth="960"
  195. wheight="600"
  196. target="window">
  197. <input class="button btn btn-info mr-3 " id="modifyBtn" type="button" value="<@locale code="button.text.edit"/>"
  198. wurl="<@base/>/userinfo/forwardUpdate"
  199. wwidth="960"
  200. wheight="600"
  201. target="window">
  202. <input class="button btn btn-danger mr-3 " id="deleteBtn" type="button" value="<@locale code="button.text.delete"/>"
  203. wurl="<@base/>/userinfo/delete" />
  204. </div>
  205. </td>
  206. </tr>
  207. </table>
  208. </div>
  209. <div id="advanced_search">
  210. <form id="advanced_search_form">
  211. <table class="table table-bordered">
  212. <tr>
  213. <td width="120px"><@locale code="userinfo.displayName"/></td>
  214. <td width="360px">
  215. <input class="form-control" name="displayName" type="text" >
  216. </td>
  217. <td width="120px"><@locale code="userinfo.employeeNumber"/></td>
  218. <td width="360px">
  219. <input class="form-control" type="text" id="employeeNumber" name="employeeNumber" title="" value=""/>
  220. </td>
  221. </tr>
  222. </table>
  223. </form>
  224. </div>
  225. <!-- content -->
  226. <table class="datatable" width="100%" >
  227. <tr>
  228. <td valign="top" class="td_1" style="vertical-align: top;">
  229. <div id="orgsTree" class="ztree"></div>
  230. </td>
  231. <td valign="top" class="td_1" style="vertical-align: top;">
  232. <table data-url="<@base/>/userinfo/grid"
  233. id="datagrid"
  234. data-toggle="table"
  235. data-classes="table table-bordered table-hover table-striped"
  236. data-click-to-select="true"
  237. data-pagination="true"
  238. data-total-field="records"
  239. data-page-list="[10, 25, 50, 100]"
  240. data-search="false"
  241. data-locale="zh-CN"
  242. data-query-params="dataGridQueryParams"
  243. data-query-params-type="pageSize"
  244. data-side-pagination="server">
  245. <thead>
  246. <tr>
  247. <th data-checkbox="true"></th>
  248. <th data-sortable="true" data-field="id" data-visible="false"><@locale code="userinfo.id"/></th>
  249. <th data-field="username"><@locale code="userinfo.username"/></th>
  250. <th data-field="displayName"><@locale code="userinfo.displayName"/></th>
  251. <th data-field="employeeNumber"><@locale code="userinfo.employeeNumber"/></th>
  252. <th data-field="organization"><@locale code="userinfo.organization"/></th>
  253. <th data-field="department"><@locale code="userinfo.department"/></th>
  254. <th data-field="jobTitle"><@locale code="userinfo.jobTitle"/></th>
  255. <th data-field="mobile" data-visible="false"><@locale code="userinfo.mobile"/></th>
  256. <th data-field="email" data-visible="false"><@locale code="userinfo.email"/></th>
  257. <th data-field="gender" data-formatter="genderFormatter" ><@locale code="userinfo.gender"/></th>
  258. </tr>
  259. </thead>
  260. </table>
  261. </td>
  262. </tr>
  263. </table>
  264. </div>
  265. </div>
  266. </div>
  267. </div>
  268. <footer class="content-footer">
  269. <#include "../layout/footer.ftl"/>
  270. </footer>
  271. </div>
  272. </div>
  273. </div>
  274. <div id="preloader">
  275. <div class="loader" id="loader-1"></div>
  276. </div>
  277. </body>
  278. </html>