sysKnowledgePerEdit.jsp 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575
  1. <%--
  2. time:2015-07-28 10:23:07
  3. desc:edit the 权限
  4. --%>
  5. <%@page language="java" pageEncoding="UTF-8"%>
  6. <%@include file="/commons/include/html_doctype.html"%>
  7. <html>
  8. <head>
  9. <title>编辑 权限</title>
  10. <%@include file="/commons/include/form.jsp"%>
  11. <script type="text/javascript" src="${ctx}/js/hotent/CustomValid.js"></script>
  12. <script type="text/javascript" src="${ctx}/js/hotent/platform/system/SysDialog.js"></script>
  13. <script type="text/javascript">
  14. var expandDepth = 10;
  15. var temdType = "";
  16. $(function() {
  17. loadTree();//加载分类树
  18. initOwerData();
  19. $("a.save").click(function() {
  20. $("#sysKnowledgePerForm").attr("action", "save.ht");
  21. setKnowPerObj();
  22. submitForm();
  23. });
  24. //人员查看详情事件
  25. $("a.moreinfo").live('click',function(){
  26. var me = $(this),
  27. hrefStr = me.attr('hrefstr');
  28. if(!hrefStr)return;
  29. openDetailWin({url:hrefStr,hasClose:true});
  30. });
  31. });
  32. function initOwerData(){//编辑的是初始化用户数据org..user
  33. var perObjList = '${perObjList}'
  34. var perObj = JSON.parse(perObjList);
  35. if(perObj.length==0) return;
  36. if(perObjList == "")return;
  37. var objArray = [];
  38. var objJson = {
  39. all:"N",
  40. user:"",
  41. org:""
  42. }
  43. for(var i=0; i<perObj.length; i++){
  44. var permissionType = perObj[i].permissionType;
  45. var ownerId = perObj[i].ownerId;
  46. var owner = perObj[i].owner;
  47. if(permissionType=='all'){
  48. objJson.all = "Y";
  49. }else if(permissionType =="user"){
  50. var array = [];
  51. var u = {
  52. ownerId:ownerId,
  53. ownerName:owner
  54. }
  55. array.push(u);
  56. objJson.user = array;
  57. }else if(permissionType =="org"){
  58. var array = [];
  59. var o = {
  60. ownerId:ownerId,
  61. ownerName:owner
  62. }
  63. array.push(o);
  64. objJson.org = array;
  65. }
  66. }
  67. initOwner(objJson);
  68. }
  69. //组成sysKnowledgePer对象数组
  70. function setKnowPerObj(){
  71. var perObj = getPerData();
  72. if(temdType==""){
  73. $.ligerDialog.warn("请分配人");
  74. throw new Error("请分配人");
  75. }
  76. var typeObj = JSON.parse(temdType);
  77. var sysKnowPerArry = [];
  78. var subject = $("#name").val();
  79. for(var i = 0 ; i < perObj.length ; i++){
  80. var typeId = perObj[i].typeId;
  81. var permission = perObj[i].permission;
  82. for(var key in typeObj){
  83. if(key == "all"){
  84. var sysKnowPer = {};
  85. if(typeObj[key] !='Y') continue;
  86. sysKnowPer.subject = subject;
  87. sysKnowPer.typeId = typeId;
  88. sysKnowPer.permissionJson = permission;
  89. sysKnowPer.permissionType = key;
  90. sysKnowPer.ownerId = 0;
  91. sysKnowPer.owner = "all";
  92. sysKnowPerArry.push(sysKnowPer);
  93. }else{
  94. var ownerArray = typeObj[key];
  95. for(var j = 0 ; j < ownerArray.length ; j++ ){
  96. var sysKnowPer = {};
  97. sysKnowPer.subject = subject;
  98. sysKnowPer.typeId = typeId;
  99. sysKnowPer.permissionJson = permission;
  100. sysKnowPer.permissionType = key;
  101. var ownerId = ownerArray[j].ownerId;
  102. var owner = ownerArray[j].ownerName;
  103. sysKnowPer.ownerId = ownerArray[j].ownerId;
  104. sysKnowPer.owner = ownerArray[j].ownerName;
  105. sysKnowPerArry.push(sysKnowPer);
  106. }
  107. }
  108. }
  109. }
  110. $("input[name='sysKnowObj']").val(JSON.stringify(sysKnowPerArry));
  111. }
  112. function submitForm() {
  113. var options = {};
  114. if (showResponse) {
  115. options.success = showResponse;
  116. }
  117. var frm = $('#sysKnowledgePerForm').form();
  118. frm.ajaxForm(options);
  119. if (frm.valid()) {
  120. frm.submit();
  121. }
  122. }
  123. function showResponse(responseText) {
  124. var obj = new com.hotent.form.ResultMessage(responseText);
  125. if (obj.isSuccess()) {
  126. $.ligerDialog.confirm(obj.getMessage() + ",是否继续操作","提示信息",function(rtn) {
  127. if (rtn) {
  128. window.location.href = window.location.href;
  129. } else {
  130. window.location.href = "${ctx}/platform/system/sysKnowPerRef/list.ht";
  131. }
  132. });
  133. } else {
  134. $.ligerDialog.confirm("知识库保存失败!","提示信息");
  135. }
  136. }
  137. //打开对象选择窗口
  138. function selectKowPerUser(id){
  139. var callBack = function(jsonStr){
  140. if(objectIsEmpty(jsonStr)){
  141. return;
  142. }else{
  143. var conf = $.parseJSON(jsonStr);
  144. initOwner(jsonStr);
  145. }
  146. }
  147. knwPerUserDialog(id,temdType,callBack)
  148. }
  149. //打开dialog
  150. function knwPerUserDialog(id,jsonStr,callBack){
  151. var url=__ctx +"/platform/system/sysKnowledgePer/userDialog.ht?num=1";
  152. var conf={};
  153. if(objectIsEmpty(id)){
  154. conf.id="";
  155. }else{
  156. conf.id=id;
  157. }
  158. if(objectIsEmpty(jsonStr)){
  159. conf.jsonStr="";
  160. }else{
  161. conf.jsonStr=jsonStr;
  162. }
  163. url=url.getNewUrl();
  164. DialogUtil.open({
  165. height:420,
  166. width: 650,
  167. title : '用户选择器',
  168. url: url,
  169. isResize: true,
  170. //自定义参数
  171. conf: conf,
  172. sucCall:callBack
  173. });
  174. };
  175. //授权用户数据
  176. function initOwner(objJson){
  177. var jsonStr = JSON2.stringify(objJson);
  178. temdType = jsonStr;
  179. var emptyMark = true;
  180. var ownerObj = [];
  181. $("textarea[name='ownerName']",$("#ownerName_div")).each(function(){
  182. var me = $(this),
  183. tr = me.closest("tr"),
  184. owner = $("textarea[name='ownerName']",tr);
  185. rightType = $("input[name='rightType']",tr).val();
  186. if(rightType=='all'){
  187. owner.val(objJson.all);
  188. if(objJson.all=="Y"){
  189. tr.show();
  190. emptyMark = false;
  191. }else{
  192. tr.hide();
  193. }
  194. }else if(rightType=='user'){
  195. if(objectIsEmptyByRep(objJson.user,'')){
  196. tr.hide();
  197. }else{
  198. tr.show();
  199. var href = __ctx+"/platform/system/sysUser/get.ht?openType=detail&userId=";
  200. setVal(me,objJson.user,href);
  201. emptyMark = false;
  202. }
  203. }else if(rightType=='org'){
  204. if(objectIsEmptyByRep(objJson.org,'')){
  205. tr.hide();
  206. }else{
  207. tr.show();
  208. setVal(me,objJson.org);
  209. emptyMark = false;
  210. }
  211. }
  212. });
  213. //是否没有授权对象内容
  214. if(emptyMark){
  215. $("tr.empty-div",$("#ownerName_div")).show();
  216. }else{
  217. $("tr.empty-div",$("#ownerName_div")).hide();
  218. }
  219. }
  220. //是否为空
  221. function objectIsEmpty(obj){
  222. // 内容是是否为空
  223. if(typeof(obj)==undefined||obj==null||obj==''){
  224. return true;
  225. }else{
  226. return false;
  227. }
  228. };
  229. //并且不能等str的内容,是否为空
  230. function objectIsEmptyByRep(obj,str){
  231. // 内容是是否为空
  232. if(typeof(obj)==undefined||obj==null||obj==''||obj==str){
  233. return true;
  234. }else{
  235. return false;
  236. }
  237. };
  238. //设置值
  239. function setVal(obj,json,href){
  240. var tr=$(obj).closest("tr"),
  241. owner = $("textarea[name='ownerName']",tr);
  242. if(json=='textarea'){
  243. json = owner.val();
  244. json = $.parseJSON(json);
  245. }else{
  246. var jsonStr = JSON2.stringify(json);
  247. owner.val(jsonStr);
  248. }
  249. setOwnerSpan(tr,json,href);
  250. };
  251. function setOwnerSpan(tr,json,href){
  252. var div = $("div.owner-div",tr);
  253. if(!div||div.length==0)return;
  254. div.empty();
  255. if(!json||json.length==0)return;
  256. for(var i=0,c;c=json[i++];){
  257. if(c.ownerId == "")
  258. continue;
  259. var a = $('<a class="moreinfo"></a>').html(c.ownerName).attr("ownerId",c.ownerId);
  260. if(href){
  261. a.attr("hrefstr",href+c.ownerId);
  262. a.attr("href","#");
  263. }
  264. var span = $('<span class="owner-span"></span>').html(a);
  265. div.append(span);
  266. }
  267. var html = div.html();
  268. };
  269. //显示用户详情
  270. function openDetailWin(conf){
  271. var dialogWidth=650;
  272. var dialogHeight=550;
  273. conf=$.extend({},{dialogWidth:dialogWidth ,dialogHeight:dialogHeight ,help:0,status:0,scroll:0,center:1},conf);
  274. var winArgs="dialogWidth="+conf.dialogWidth+"px;dialogHeight="+conf.dialogHeight
  275. +"px;help=" + conf.help +";status=" + conf.status +";scroll=" + conf.scroll +";center=" +conf.center;
  276. var url = conf.url + '&hasClose=' +conf.hasClose;
  277. DialogUtil.open({
  278. height:conf.dialogHeight,
  279. width: conf.dialogWidth,
  280. title : '用户选择器',
  281. url: url,
  282. isResize: true,
  283. });
  284. }
  285. //初始化分类树,如果是编辑单条权限,需要令其他的分类不可选择
  286. function iniTreeData(knowTree){
  287. var perObjList = '${perObjList}'
  288. var perObj = JSON.parse(perObjList);
  289. var knowTree = $.fn.zTree.getZTreeObj("knowTree");
  290. debugger
  291. $.each(perObj,function(i,permission){
  292. var typeId = permission.typeId;
  293. var permissionjson = permission.permissionJson;
  294. var perArry = permissionjson.split(",");
  295. for(var i = 0 ; i < perArry.length; i ++){
  296. $("input[name='"+perArry[i]+"'][title='"+typeId+"']").attr("checked",true);
  297. }
  298. var node = knowTree.getNodeByParam("typeId", typeId, null);
  299. knowTree.checkNode(node, true,false);
  300. });
  301. }
  302. //加载树
  303. function loadTree(){
  304. var setting = {
  305. data: {
  306. key : { name: "typeName"},
  307. simpleData: {enable: true,idKey: "typeId",pIdKey: "parentId"}
  308. },
  309. view: {
  310. addDiyDom: addDiyDom,
  311. selectedMulti: true
  312. },
  313. check: {
  314. enable: true,
  315. chkStyle: "checkbox",
  316. nocheckInherit: true,
  317. chkboxType: { "Y": "ps", "N": "s" }
  318. },
  319. callback: {
  320. onCheck: zTreeOnCheck
  321. }
  322. };
  323. //一次性加载
  324. var url=__ctx + "/platform/system/globalType/getByCatKey.ht?catKey=KNOWLEDGE_TYPE&hasRoot=1";
  325. $.post(url,function(result){
  326. knowTree=$.fn.zTree.init($("#knowTree"), setting,eval(result));
  327. if(expandDepth!=0)
  328. {
  329. knowTree.expandAll(false);
  330. var nodes = knowTree.getNodesByFilter(function(node){
  331. return (node.level < expandDepth);
  332. });
  333. if(nodes.length>0){
  334. for(var i=0;i<nodes.length;i++){
  335. knowTree.expandNode(nodes[i],true,false);
  336. }
  337. }
  338. }else knowTree.expandAll(true);
  339. iniTreeData(knowTree);
  340. })
  341. }
  342. //监听选中情况
  343. function zTreeOnCheck(event, treeId, treeNode){
  344. var check = treeNode.checked
  345. onCheckParNode(treeNode);
  346. onCheckChilNode(treeNode,check);
  347. }
  348. function onCheckParNode(treeNode){
  349. var obj = treeNode.getParentNode();
  350. if(obj !=null && obj != "undefined"){
  351. onCheckParNode(obj);
  352. }
  353. $("input[name='readDir'][title='"+treeNode.typeId+"']").attr("checked", true);
  354. }
  355. function onCheckChilNode(treeNode,check){
  356. var obj = treeNode.children;
  357. if(obj !=null && obj != "undefined"){
  358. $.each(obj,function(i,node){
  359. onCheckChilNode(node,check);
  360. });
  361. }
  362. if(check==true){
  363. $("input[name='readDir'][title='"+treeNode.typeId+"']").attr("checked", true);
  364. }else{
  365. $("[title='"+treeNode.typeId+"']").attr("checked", false);
  366. }
  367. }
  368. //重写分类树节点显示方式
  369. function addDiyDom(treeId, treeNode){
  370. var center = "center_docu";
  371. var perChe = "";
  372. if(treeNode.parentId != null){//如果是根节点则不会出现后面的权限选项
  373. perChe = '<td class="td2"><label><input name="readDir" title="'+treeNode.typeId+'" type="checkbox" value="readDir" />读取</label>'
  374. +'<td class="td2"><label><input title="'+treeNode.typeId+'" name="del" type="checkbox" value="del" />删除</label>'
  375. +'<label><input title="'+treeNode.typeId+'" name="edit" type="checkbox" value="edit" />编辑</label><label><input title="'+treeNode.typeId+'" name="add" type="checkbox" value="add" />添加</label></td>';
  376. }else{
  377. perChe = '<td class="td2">'
  378. +'<td class="td2">'
  379. +'</td>';
  380. }
  381. if(treeNode.isParent){
  382. center = "center_open";
  383. }else{
  384. center = "center_docu";
  385. }
  386. var html = '<table class="formTable"> '
  387. +'<tr> <td class="td1"><span style="margin-left:'+treeNode.level*10+'px" id="'+treeNode.tId+'_switch" class="button level'+treeNode.level+' switch '+center+'" treenode_switch></span> '
  388. +'<span id="'+treeNode.tId+'_check" name="treeCheck" class="button chk checkbox_false_full" treenode_check=""></span>'
  389. + treeNode.typeName+'</td>'
  390. + perChe
  391. +'</tr></table>';
  392. $("#" + treeNode.tId).html(html);
  393. }
  394. //全选删除..编辑
  395. function allSelect(obj){
  396. var knowTree = $.fn.zTree.getZTreeObj("knowTree");
  397. var nodes = knowTree.getCheckedNodes(true);
  398. var o = $(obj);
  399. var name = o.attr("name");
  400. var check = o.attr("checked");
  401. if(nodes.length > 0 && check=="checked"){//如果有勾选节点,则只要选已经勾选的节点,清除勾选则会全部去掉
  402. $.each(nodes,function(i,node){
  403. $("input[name='"+name+"'][title='"+node.typeId+"']").attr("checked", true);
  404. });
  405. return;
  406. }
  407. if(check=="checked"){
  408. $("input[name='"+name+"']").attr("checked", true);
  409. }else{
  410. $("input[name='"+name+"']").attr("checked", false);
  411. }
  412. }
  413. //获取分类树的权限,删除..读..写....
  414. function getPerData(){
  415. var knowTree = $.fn.zTree.getZTreeObj("knowTree");
  416. var nodes = knowTree.getCheckedNodes(true);
  417. var perArray = []
  418. $.each(nodes,function(i,node){
  419. if(node.typeId==null || node.typeId=="" || node.parentId == null) return;
  420. var selectedObj = $("input[title='"+node.typeId+"']:checked");
  421. var jsonVal = {};
  422. var temdValues = [];
  423. $.each(selectedObj,function(i,obj){
  424. var value = obj.value;
  425. temdValues.push(value);
  426. });
  427. var d = temdValues.join(",");
  428. jsonVal["typeId"] = node.typeId;
  429. jsonVal["permission"] = d;
  430. perArray.push(jsonVal);
  431. });
  432. if(perArray.length ==0){
  433. $.ligerDialog.warn("请至少选择一个节点");
  434. throw new Error("请至少选择一个节点");
  435. }
  436. return perArray;
  437. }
  438. </script>
  439. <style type="text/css">
  440. .td1{width: 400px;}
  441. .td2{width: 180px;text-align: center !important;}
  442. .ztree li a{width: 100%}
  443. .ztree li ul{left;margin: 0 0 0 0;padding:0 0 0 0;}
  444. .ztree li{line-height:34px !important;padding-top: 0px !important;}
  445. .ztree{padding:0px !important;}
  446. </style>
  447. </head>
  448. <body>
  449. <div class="panel">
  450. <div class="panel-top">
  451. <div class="tbar-title">
  452. <c:choose>
  453. <c:when test="${sysKnowPerRef.id !=null}">
  454. <span class="tbar-label"><span></span>编辑</span>
  455. </c:when>
  456. <c:otherwise>
  457. <span class="tbar-label"><span></span>添加</span>
  458. </c:otherwise>
  459. </c:choose>
  460. </div>
  461. <div class="panel-toolbar">
  462. <div class="toolBar">
  463. <div class="group">
  464. <a class="link save" id="dataFormSave" href="#"><span></span>保存</a>
  465. </div>
  466. <div class="l-bar-separator"></div>
  467. <div class="group">
  468. <a class="link back"
  469. href="list.ht"><span></span>返回</a>
  470. </div>
  471. </div>
  472. </div>
  473. </div>
  474. <div class="panel-body">
  475. <form id="sysKnowledgePerForm" method="post" action="save.ht">
  476. <table class="table-detail" cellpadding="0" cellspacing="0"
  477. border="0" type="main">
  478. <tr>
  479. <th width="20%">名称</th>
  480. <td><input type="text" id="name" name="name"
  481. value="${sysKnowPerRef.name}" class="inputText"
  482. validate="{required:true,maxlength:50}" /></td>
  483. </tr>
  484. <tr>
  485. <th width="20%">人员组织</th>
  486. <td>
  487. <table id="userSelect" class="table-detail">
  488. <tr>
  489. <td colspan="3">
  490. <div class="group">
  491. <a class="link ok"
  492. href="javascript: selectKowPerUser('${sysKnowPerRef.id}');"><span></span>选择</a>
  493. </div>
  494. </td>
  495. </tr>
  496. </table>
  497. <div id="ownerName_div">
  498. <table class="table-detail">
  499. <tr class="hidden">
  500. <th width="15%">用户</th>
  501. <td>
  502. <div class="owner-div"></div> <textarea class="hidden"
  503. name="ownerName"></textarea> <input type="hidden"
  504. name="rightType" value="user">
  505. </td>
  506. </tr>
  507. <tr class="hidden">
  508. <th width="15%">组织</th>
  509. <td>
  510. <div class="owner-div"></div> <textarea class="hidden"
  511. name="ownerName"></textarea> <input type="hidden"
  512. name="rightType" value="org">
  513. </td>
  514. </tr>
  515. <tr class="hidden">
  516. <td width="15%">所有用户</td>
  517. <td>
  518. <div class="owner-div">
  519. <label style="float: left" for="selectAll">允许所有人访问</label>
  520. </div> <textarea rightType="0" class="hidden" name="ownerName"></textarea>
  521. <input type="hidden" name="rightType" value="all">
  522. </td>
  523. </tr>
  524. </table>
  525. </div>
  526. </td>
  527. </tr>
  528. <tr>
  529. <th width="20%">拥有权限</th>
  530. <td>
  531. <ul class="ztree">
  532. <li><table class="ztitle">
  533. <tr>
  534. <td class="td1" style="text-align: center; ">树
  535. </div>
  536. </td>
  537. <td class="td2" style="">所在分类树权限<br>
  538. <label><input type="checkbox" class="selectAll" name="readDir"
  539. onclick="allSelect(this)" value="readDirAll" />读取</label>
  540. </td>
  541. <td class="td2" style="">文章权限<br>
  542. <label><input
  543. type="checkbox" name="del" onclick="allSelect(this)" class="selectAll"
  544. value="delAll" />删除</label> <label><input type="checkbox" class="selectAll"
  545. name="edit" onclick="allSelect(this)" value="editAll" />编辑</label><label><input type="checkbox" class="selectAll"
  546. name="add" onclick="allSelect(this)" value="addAll" />添加</label>
  547. </td>
  548. </tr>
  549. </table></li>
  550. </ul>
  551. <ul id="knowTree" class="ztree">
  552. </ul>
  553. </td>
  554. </tr>
  555. </table>
  556. <input type="hidden" name="sysKnowObj" value="" />
  557. <input type="hidden" name="id" value="${sysKnowPerRef.id}" />
  558. </br>
  559. </br>
  560. </form>
  561. </div>
  562. </div>
  563. </body>
  564. </html>