暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

add.htm 18KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416
  1. {include file="public/layout" /}
  2. <body class="rolecss bodystyle">
  3. <div id="toolTipLayer" style="position: absolute; z-index: 9999; display: none; visibility: visible; left: 95px; top: 573px;"></div>
  4. <div id="append_parent"></div>
  5. <div id="ajaxwaitid"></div>
  6. <div class="page" style=" min-width: auto;">
  7. <form class="form-horizontal" id="postForm" method="post" action="{:url('AuthRole/add')}">
  8. <div class="ncap-form-default">
  9. <dl class="row"><dt class="tit"><label><b>角色信息</b></label></dt></dl>
  10. <dl class="row">
  11. <dt class="tit">
  12. <label for="name"><em>*</em>角色名称</label>
  13. </dt>
  14. <dd class="opt">
  15. <input type="text" name="name" id="name" value="" class="input-txt" autocomplete="off">
  16. <span class="err"></span>
  17. <p class="notic"></p>
  18. </dd>
  19. </dl>
  20. <dl class="row">
  21. <dt class="tit">
  22. <label for="name">角色模板</label>
  23. </dt>
  24. <dd class="opt">
  25. <p><label><input type="radio" name="tmp_role_id" value="-1" />超级管理员</label></p>
  26. {foreach name="admin_role_list" item="role" key="k"}
  27. <p>
  28. <label><input type="radio" name="tmp_role_id" value="{$role.id}" />{$role.name}</label>
  29. </p>
  30. {/foreach}
  31. </dd>
  32. </dl>
  33. <dl class="row"><dt class="tit"><label><b>权限设置</b></label></dt></dl>
  34. <dl class="row none">
  35. <dt class="tit">
  36. <label for="name">语言权限</label>
  37. </dt>
  38. <dd class="opt">
  39. <label><input type="checkbox" name="language[]" value="cn" checked="checked" />简体中文</label>
  40. <span class="err"></span>
  41. <p class="notic"></p>
  42. </dd>
  43. </dl>
  44. <dl class="row">
  45. <dt class="tit">
  46. <label for="name">在线升级</label>
  47. </dt>
  48. <dd class="opt">
  49. <label><input type="checkbox" name="online_update" value="1" />允许操作</label>
  50. <span class="err"></span>
  51. <p class="notic"></p>
  52. </dd>
  53. </dl>
  54. <dl class="row">
  55. <dt class="tit">
  56. <label for="name">功能地图</label>
  57. </dt>
  58. <dd class="opt">
  59. <label><input type="checkbox" name="switch_map" value="1" />允许操作</label>
  60. <span class="err"></span>
  61. <p class="notic"></p>
  62. </dd>
  63. </dl>
  64. <dl class="row" id="dl_only_oneself">
  65. <dt class="tit">
  66. <label for="name">文档权限</label>
  67. </dt>
  68. <dd class="opt">
  69. <label><input type="checkbox" name="only_oneself" value="1" />只允许查看自己发布的文档</label>
  70. <span class="err"></span>
  71. <p class="notic"></p>
  72. </dd>
  73. </dl>
  74. <dl class="row" id="dl_check_oneself">
  75. <dt class="tit">
  76. <label for="name">文档审核</label>
  77. </dt>
  78. <dd class="opt">
  79. <label><input type="checkbox" name="check_oneself" value="1" checked="checked" />发布文档自动通过审核</label>
  80. <span class="err"></span>
  81. <p class="notic"></p>
  82. </dd>
  83. </dl>
  84. <dl class="row">
  85. <dt class="tit">
  86. <label for="name">操作权限</label>
  87. </dt>
  88. <dd class="opt">
  89. <p><label><input type="checkbox" id="select_cud" checked="checked" />完全控制</label></p>
  90. <p><label><input type="checkbox" name="cud[]" value="add" checked="checked" />新增信息</label></p>
  91. <p><label><input type="checkbox" name="cud[]" value="edit" checked="checked" />编辑信息</label></p>
  92. <p><label><input type="checkbox" name="cud[]" value="del" checked="checked" />删除信息</label></p>
  93. <p><label><input type="checkbox" name="cud[]" value="changetableval" checked="checked" />审核信息</label></p>
  94. <span class="err"></span>
  95. <p class="notic"></p>
  96. </dd>
  97. </dl>
  98. <dl class="row">
  99. <dt class="tit">
  100. <label for="name"><em>*</em>功能权限</label>
  101. </dt>
  102. <dd class="opt">
  103. <p>
  104. <label><input type="checkbox" id="select_all_permission" />全部选择</label>
  105. </p>
  106. {foreach name="modules" item="vo"}
  107. {foreach name="vo.child" item="vo2"}
  108. {if condition="1 == $vo2['is_modules'] AND ! empty($auth_rule_list[$vo2.id])"}
  109. {if condition="1002 == $vo2['id']"}
  110. <div class="admin_poplistdiv">
  111. <h2>{$vo2.name}</h2>
  112. {if condition="! empty($arctype_p_html)"}
  113. <p>
  114. {$arctype_p_html}
  115. </p>
  116. {$arctype_child_html}
  117. {/if}
  118. </div>
  119. {else /}
  120. <div class="admin_poplistdiv">
  121. <h2>{$vo2.name}</h2>
  122. <p>
  123. {foreach name="auth_rule_list[$vo2.id]" item="rule"}
  124. <label><input type="checkbox" name="permission[rules][]" value="{$rule.id}" />{$rule.name}</label>
  125. {/foreach}
  126. </p>
  127. </div>
  128. {/if}
  129. {/if}
  130. {/foreach}
  131. {/foreach}
  132. {if condition="! empty($plugins)"}
  133. <div class="admin_poplistdiv">
  134. <h2>插件应用</h2>
  135. <ul>
  136. {foreach name="plugins" item="plugin"}
  137. <li>
  138. <label><input type="checkbox" name="permission[plugins][{$plugin.code}][code]" value="{$plugin.code}" />{$plugin.name}</label>
  139. {php}$config = json_decode($plugin['config'], true);{/php}
  140. {if condition="! empty($config['permission'])"}
  141. <p style="padding-left:10px;">
  142. <span class="button level1 switch center_docu"></span>
  143. {foreach $config['permission'] as $index => $text}
  144. <label><input type="checkbox" name="permission[plugins][{$plugin.code}][child][]" value="{$index}" />{$text}</label>
  145. {/foreach}
  146. </p>
  147. {/if}
  148. </li>
  149. {/foreach}
  150. </ul>
  151. </div>
  152. {/if}
  153. </dd>
  154. </dl>
  155. <div class="bot2">
  156. <input type="hidden" name="arctype_str" id="arctype_str" value="">
  157. <a href="JavaScript:void(0);" onclick="postSubmit();" class="ncap-btn-big ncap-btn-green" id="submitBtn">确认提交</a>
  158. </div>
  159. </div>
  160. </form>
  161. </div>
  162. <script type="text/javascript">
  163. var admin_role_list = {$admin_role_list|json_encode};
  164. $(function(){
  165. $('#postForm input[name="tmp_role_id"]').bind('click', function(){
  166. changeRole($(this).val());
  167. });
  168. $(".rolecss").on("click",".arctype_bg",function(){
  169. var acid = $(this).next().find('input').val(), input = 'arctype_child_' + acid;
  170. $('.arctype_child').hide();
  171. if( $(this).attr('class').indexOf('expandable') == -1 ){
  172. $(this).removeClass('collapsable').addClass('expandable');
  173. }else{
  174. $('.arctype_bg').removeClass('collapsable').addClass('expandable');
  175. $(this).removeClass('expandable').addClass('collapsable');
  176. $('#'+input).show();
  177. }
  178. });
  179. //循环判断选中上级
  180. function checked_pid(pid) {
  181. if (0 < $('input[data-pid="'+pid+'"]:checked').length) {
  182. $('.arctype_id_'+pid).prop('checked', 'checked');
  183. var pid1 = $('.arctype_id_'+pid).data('pid');
  184. if (pid1){
  185. checked_pid(pid1);
  186. }
  187. }
  188. return false;
  189. }
  190. //循环判断取消上级
  191. function cancel_pid(pid) {
  192. if (1 > $('#arctype_child_'+pid).find('input[type="checkbox"]:checked').length) {
  193. $('.arctype_id_'+pid).removeAttr('checked');
  194. var pid1 = $('.arctype_id_'+pid).data('pid');
  195. if (pid1){
  196. cancel_pid(pid1);
  197. }
  198. }
  199. return false;
  200. }
  201. $(".rolecss").on("click",".arctype_cbox",function () {
  202. var acid = $(this).val(), input = 'arctype_child_' + acid;
  203. var pid = $(this).data('pid');
  204. var tpid = $(this).data('tpid');
  205. if($(this).prop('checked')){ //选中,所有直系上级全部选中,所有管辖下级选中
  206. checked_pid(pid);
  207. $('#'+input).find('input[type="checkbox"]').prop('checked', 'checked'); //选中所有下级
  208. }else{ //取消,判断同级是否全部为取消状态,取消直系上级
  209. $('#'+input).find('input[type="checkbox"]').removeAttr('checked'); //取消所有下级
  210. cancel_pid(pid);
  211. }
  212. });
  213. $('#select_cud').bind('click', function(){
  214. if($(this).prop('checked')){
  215. $('#postForm input[name^="cud"]').prop('checked', 'checked');
  216. }else{
  217. $('#postForm input[name^="cud"]').removeAttr('checked');
  218. }
  219. });
  220. $('#select_all_permission').bind('click', function(){
  221. if($(this).prop('checked')){
  222. $('#postForm input[name^="permission"]').prop('checked', 'checked');
  223. $('#postForm .arctype_cbox').prop('checked', 'checked');
  224. }else{
  225. $('#postForm input[name^="permission"]').removeAttr('checked');
  226. $('#postForm .arctype_cbox').removeAttr('checked');
  227. }
  228. });
  229. $('#postForm input[name^="permission"],#postForm .arctype_cbox,#postForm input[name^="cud"]').bind('click', function(){
  230. hasSelectAll();
  231. });
  232. });
  233. function hasSelectAll(){
  234. var c = true;
  235. $('#postForm input[name^="permission"],#postForm .arctype_cbox').each(function(idx, ele){
  236. if(! $(ele).prop('checked')){
  237. c = false;
  238. return;
  239. }
  240. });
  241. if(c){
  242. $('#select_all_permission').prop('checked', 'checked');
  243. }else{
  244. $('#select_all_permission').removeAttr('checked');
  245. }
  246. var c = true;
  247. $('#postForm input[name^="cud"]').each(function(idx, ele){
  248. if(! $(ele).prop('checked')){
  249. c = false;
  250. return;
  251. }
  252. });
  253. if(c){
  254. $('#select_cud').prop('checked', 'checked');
  255. }else{
  256. $('#select_cud').removeAttr('checked');
  257. }
  258. }
  259. function changeRole(value){
  260. if (-1 == value) {
  261. $('#postForm input[type="checkbox"]').attr("checked","checked");
  262. // $('#postForm input[name="only_oneself"]').removeAttr('checked');
  263. return;
  264. }
  265. $('#postForm input[type="checkbox"]').removeAttr('checked');
  266. for(var i in admin_role_list){
  267. var item = admin_role_list[i];
  268. if(item.id == value){
  269. if(item.language){
  270. item.language.map(function(row){
  271. $('#postForm input[name^="language"][value="'+row+'"]').prop('checked', 'checked');
  272. });
  273. }
  274. if(item.online_update){
  275. $('#postForm input[name="online_update"]').prop('checked', 'checked');
  276. };
  277. if(item.switch_map){
  278. $('#postForm input[name="switch_map"]').prop('checked', 'checked');
  279. };
  280. // if(item.editor_visual){
  281. // $('#postForm input[name="editor_visual"]').prop('checked', 'checked');
  282. // };
  283. if(item.only_oneself){
  284. $('#postForm input[name="only_oneself"]').prop('checked', 'checked');
  285. };
  286. if(item.check_oneself){
  287. $('#postForm input[name="check_oneself"]').prop('checked', 'checked');
  288. };
  289. if(item.cud){
  290. item.cud.map(function(row){
  291. $('#postForm input[name^="cud"][value="'+row+'"]').prop('checked', 'checked');
  292. });
  293. }
  294. if(item.permission){
  295. for(var p in item.permission){
  296. if(p == 'plugins'){
  297. if(item.permission[p]){
  298. for(var pluginId in item.permission[p]){
  299. $('#postForm input[name="permission['+p+']['+pluginId+'][code]"][value="'+pluginId+'"]').prop('checked', 'checked');
  300. if(item.permission[p][pluginId].child){
  301. item.permission[p][pluginId].child.map(function(row){
  302. $('#postForm input[name="permission['+p+']['+pluginId+'][child][]"][value="'+row+'"]').prop('checked', 'checked');
  303. });
  304. }
  305. }
  306. }
  307. } else if (p == 'arctype') {
  308. item.permission[p].map(function(row){
  309. $('#postForm .arctype_id_'+row).prop('checked', 'checked');
  310. });
  311. }else{
  312. item.permission[p].map(function(row){
  313. $('#postForm input[name="permission['+p+'][]"][value="'+row+'"]').prop('checked', 'checked');
  314. });
  315. }
  316. }
  317. }
  318. hasSelectAll();
  319. break;
  320. }
  321. }
  322. }
  323. function postSubmit(){
  324. if($('input[name=name]').val() == '' ){
  325. showErrorMsg('角色名称不能为空!');
  326. $('input[name=name]').focus();
  327. return false;
  328. }
  329. var a = [];
  330. $('input[name^=permission],#postForm .arctype_cbox').each(function(i,o){
  331. if($(o).is(':checked')){
  332. a.push($(o).val());
  333. }
  334. })
  335. if(a.length == 0){
  336. showErrorMsg('请具体分配权限!');
  337. return false;
  338. }
  339. var arctype_arr = new Array();
  340. $(".arctype_cbox:checked").each(function(i){
  341. arctype_arr[i] = $(this).val();
  342. });
  343. var arctype_str = arctype_arr.join(",");
  344. $('#arctype_str').val(arctype_str);
  345. var parentObj = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
  346. layer_loading('正在处理');
  347. {lt name="$Request.param.iframe" value="1"}
  348. $.ajax({
  349. type : 'post',
  350. url : "{:url('AuthRole/add', ['_ajax'=>1])}",
  351. data : $('#postForm').serialize(),
  352. dataType : 'json',
  353. success : function(res){
  354. layer.closeAll();
  355. if(res.code == 1){
  356. var _parent = parent;
  357. _parent.layer.close(parentObj);
  358. _parent.layer.msg(res.msg, {shade: layer_shade, time: 1000}, function(){
  359. _parent.window.location.reload();
  360. });
  361. }else{
  362. showErrorMsg(res.msg);
  363. }
  364. },
  365. error: function(e){
  366. layer.closeAll();
  367. layer.alert(e.responseText, {icon: 5, title:false});
  368. }
  369. });
  370. {else /}
  371. $.ajax({
  372. url: "{:url('AuthRole/add', ['_ajax'=>1])}",
  373. type: 'POST',
  374. dataType: 'JSON',
  375. data: $('#postForm').serialize(),
  376. success: function(res){
  377. layer.closeAll();
  378. if (res.code == 1) {
  379. var str = '<p><label><input type="radio" name="role_id" value="'+res.data.role_id+'" onclick="changeRole('+res.data.role_id+');" checked="checked" />'+res.data.role_name+'</label></p>';
  380. parent.custom_role(str, res.data.role_id, res.data.admin_role_list);
  381. parent.layer.close(parentObj);
  382. parent.layer.msg(res.msg, {shade: layer_shade, time: 1000});
  383. } else {
  384. parent.showErrorMsg(res.msg);
  385. }
  386. return false;
  387. },
  388. error: function(e){
  389. layer.closeAll();
  390. layer.msg('操作失败', {icon:5, time:1500});
  391. return false;
  392. }
  393. });
  394. {/lt}
  395. }
  396. </script>
  397. {include file="public/footer" /}