mainMenuDefEdit.jsp 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758
  1. <!DOCTYPE html>
  2. <%@ page language="java" pageEncoding="UTF-8" isELIgnored="false" %>
  3. <%@ taglib uri="/ssTag" prefix="ss"%>
  4. <%pageContext.setAttribute("wdpageinformation","{'hastab':'0'}");%>
  5. <!DOCTYPE html>
  6. <html>
  7. <head>
  8. <%@ include file="/page/clip/header.jsp" %>
  9. <style>
  10. #savemb{
  11. display: none;
  12. }
  13. #delmb{
  14. display: none;
  15. }
  16. </style>
  17. <ss:skin file='main.css'/>
  18. </head>
  19. <body>
  20. <form name="ddpOptionForm" action="<ss:serv parm='{"wdConfirmationCaptchaService":"0"}' dest='menuDefOptList'/>" method="post"> <!-- "cdOptionForm"。Lin -->
  21. <input type="hidden" name="cdOptionHtml" value="" id="cdOptionHtml" />
  22. <!-- <@input type='submit' id="cx" value="查询" class="content-invertButton" /> -->
  23. <input name='wdComponentID' type='hidden' value='mainMenuDefEdit'/></form>
  24. <form name="shortcutForm" action='' method="post">
  25. <input name="bjid" type="hidden" value="${bjid}" />
  26. <div id="app" class="form-container">
  27. <div class="content-box fit-height-content"><%-- vue样式要套上这两套DIV Ben(20251217) --%>
  28. <div class="search-bar">
  29. <div class="search-bar-contaienr"> <%-- vue样式要套上这两套DIV Ben(20251217) --%>
  30. <%-- 改为新UI组件写法 Ben(20251225) <input type='button' value="增加菜单组" onclick="addGroup();" class="content-button" />--%>
  31. <ss-search-button
  32. text="增加菜单组"
  33. icon-class="nav-icon-add"
  34. onclick="addGroup()"
  35. width="250px"
  36. ></ss-search-button>
  37. <!-- 业务分类 <select id="yy" name="yy" onchange="">
  38. <option value="-1">请选择</option>
  39. </select> -->
  40. &nbsp;
  41. <%--<select id="cdmbselected" class="sel" onchange="selectMB(this.options[this.options.selectedIndex].value);" style="float: right;">
  42. <option value="0">空白模板</option>
  43. <wd:option name="$@{sessionScope['XMMC']}.grcdmb" />
  44. </select>--%>
  45. <%-- 改为新UI组件写法
  46. <input type='button' id="savemb" value="保存当前模板" class="content-button" onclick="doSavemb()" />
  47. <input type='button' id="delmb" value="删除该模板" class="content-button" onclick="doDelmb()" />
  48. <input type='button' id="addmb" value="另存为新模板" class="content-button" onclick="doAddcallback()" />
  49. --%>
  50. <ss-search-button
  51. text="保存当前模板"
  52. icon-class="nav-icon-add"
  53. onclick="doSavemb()"
  54. id="savemb"
  55. width="250px"
  56. ></ss-search-button>
  57. <ss-search-button
  58. text="删除该模板"
  59. icon-class="nav-icon-add"
  60. onclick="doDelmb()"
  61. id="delmb"
  62. width="250px"
  63. ></ss-search-button>
  64. <ss-search-button
  65. text="另存为新模板"
  66. icon-class="nav-icon-add"
  67. onclick="doAddcallback()"
  68. id="addmb"
  69. width="250px"
  70. ></ss-search-button>
  71. <%-- 新UI改写法 Ben(20251217) <input name="grcdmbid" id="grcdmbid" type="hidden" class="sel" onchange="selectMB(this.value)"/>
  72. <input name="grcdmbName" placeholder="模板" type="text" style="width: 130px;" />
  73. --%>
  74. <script>
  75. ss.dom.formElemConfig.grcdmbid={val:null,type:window.ss.dom.TYPE.OBJP};
  76. </script>
  77. <ss-objp
  78. :opt="grcdmbidOption"
  79. :inp="true"
  80. url="<ss:serv name='loadObjpOpt' parm='{"objectpickerdropdown":"1"}' />"
  81. cb="grcdmb"
  82. v-model="grcdmbid"
  83. name="grcdmbid"
  84. :readonly="false"
  85. onChange="selectMB"
  86. ></ss-objp>
  87. </div>
  88. </div>
  89. </div>
  90. </div>
  91. <div style="height: 75px" ></div>
  92. <div id="container" class="dragList-div" style="position:relative">
  93. <div class="box">
  94. <p class="label">已选<span id="ddpDropAll" class="icon-allRight"></span></p> <!-- "cdDropAll"。Lin -->
  95. <div class="list-body" style="position: relative;overflow-x: hidden;width: 100%;height: 380px;">
  96. <div id="ddpSelected" class="scrollbar" ssSelClazz="list-checkedIcon" style="height:100%"> <!-- "cdSelected"。Lin -->
  97. </div>
  98. </div>
  99. </div>
  100. <div class="box">
  101. <p class="label">备选<span id="ddpPickAll" class="icon-allLeft"></span></p> <!-- "cdPickAll"。Lin -->
  102. <div class="list-body" style="position: relative;overflow-x: hidden;width: 100%;height: 380px;">
  103. <div id="ddpOption" class="scrollbar" ssSelClazz="list-checkedIcon" style="height:100%"> <!-- "cdOption"。Lin -->
  104. </div>
  105. </div>
  106. </div>
  107. <input type="hidden" value="" name="ddpSelectedId" /> <%-- name="cdSelectedId"。再改为统一的名字 -- 同一页面,不会有多个拖放选择。Lin --%>
  108. </div>
  109. <input name='wdComponentID' type='hidden' value='mainMenuDefEdit'/></form>
  110. <!-- <div class='bottom-div'>
  111. <@input type="button" name="button" onclick="wd.display.closeDialog();" value="取消" class="bottom-button" />
  112. </div> -->
  113. <script type="text/javascript">var wdRecordValue='${wdRecordValue}';</script>
  114. <script type="text/javascript" src="/ss/js/wdRecord.js"></script>
  115. <script type="text/javascript">(function(){wdRecord("mainMenuDefEdit");})();</script>
  116. <ss:equal val="${empty resizeComponent}" val2="false">
  117. <script>{var iframe=wd.display.getFrameOfWindow();
  118. if(iframe&&iframe.contentWindow==window)
  119. wd.display.resizeComponent(${resizeComponent.width}, ${resizeComponent.height}, ${empty resizeComponent.minHeight?'null':resizeComponent.minHeight}, ${empty resizeComponent.maxHeight?'null':resizeComponent.maxHeight});}</script>
  120. </ss:equal>
  121. <ss:help/>
  122. </body>
  123. <script type="text/javascript">
  124. try{wd.display.showMsgPopup('${msg}');
  125. }catch(err){console.error(err);}
  126. </script>
  127. <ss:equal val="${empty wdclosewindowparam}" val2="false">
  128. <script type="text/javascript">
  129. try{wd.display.setCloseWindowParam('${wdclosewindowparam}');
  130. }catch(err){console.error(err);}
  131. </script>
  132. </ss:equal>
  133. <%-- 去掉,母体也没找到。Lin
  134. <script type="text/javascript" src="ajaxFunc.js"></script>
  135. --%>
  136. <script type="text/javascript">
  137. <%-- 改为直接在ss.标签上写onchg
  138. wd.edit.objectPicker.getInstance("grcdmb").onchange=function(){
  139. selectMB($("#grcdmbid").val());
  140. }
  141. --%>
  142. //从请求中获得
  143. var oridata = '${mbdata}';
  144. var mbdata = (oridata == '' ? '' : JSON.parse(oridata));
  145. var bjid = "${bjid}";
  146. var menuRootGroupId = "${menuRootGroupId}";
  147. var parent1 = window.parent;
  148. //从上个页面(菜单页面),获取到需要的数据
  149. /**
  150. * menuTree节点内数据的含义
  151. * [0]--lmid(两种情况,1.数字,2.英文缩写)
  152. * [1]--name,名字代号
  153. * [2]--上级id
  154. * [3]--跳转页
  155. */
  156. var menudata = "${menuTree}";
  157. var menuTree = (menudata == '' ? '' : eval(menudata));
  158. //这是所有的菜单选项(人员、校务那些),是个二维数组
  159. // for(var i = 0; i < 10 && parent.menuTree == undefined; i++)
  160. // parent = parent.parent
  161. // if(parent.menuTree != undefined)
  162. // menuTree = parent.menuTree;
  163. <%--
  164. 旧UI中,在个人首页顶层的窗口,是有下面的shortcutMenuInfo这个JS数组的,但是在新UI中已经没有了。第一层是shortcutMenuInfo,第二层是 menuRoot
  165. 这个shortcutMenuInfo看着是旧UI顶部应用菜单中,分割符左侧的管理2菜单(分割符右侧是查询/开始菜单)。
  166. //------------------ shortcutMenuInfo start ------------------
  167. var shortcutMenuInfo={
  168. "menuRoot": {
  169. "groupId": "menuRoot",
  170. "name": "菜单根部",
  171. "members": {
  172. "#0#yx_admin": {
  173. "memberId": "yx_admin",
  174. "name": "迎新",
  175. "groupId": "menuRoot",
  176. "url": "null"
  177. },
  178. "#1#zy_admin": {
  179. "memberId": "zy_admin",
  180. "name": "专业",
  181. "groupId": "menuRoot",
  182. "url": "null"
  183. },
  184. "#2#bj_admin": {
  185. "memberId": "bj_admin",
  186. "name": "班级",
  187. "groupId": "menuRoot",
  188. "url": "null"
  189. },
  190. "#3#xy_view_admin": {
  191. "memberId": "xy_view_admin",
  192. "name": "学员",
  193. "groupId": "menuRoot",
  194. "url": "null"
  195. },
  196. "#4#kcb_admin": {
  197. "memberId": "kcb_admin",
  198. "name": "排课",
  199. "groupId": "menuRoot",
  200. "url": "null"
  201. },
  202. "#5#m_kcb": {
  203. "memberId": "m_kcb",
  204. "name": "教学",
  205. "groupId": "menuRoot",
  206. "url": "/service?token=6a45af3b45ad450c95e3c26fea82e3a9"
  207. },
  208. "#6#cd_admin": {
  209. "memberId": "cd_admin",
  210. "name": "场地",
  211. "groupId": "menuRoot",
  212. "url": "null"
  213. },
  214. "#7#wp_admin": {
  215. "memberId": "wp_admin",
  216. "name": "物品",
  217. "groupId": "menuRoot",
  218. "url": "null"
  219. },
  220. "#8#kf_admin": {
  221. "memberId": "kf_admin",
  222. "name": "客房",
  223. "groupId": "menuRoot",
  224. "url": "null"
  225. }
  226. }
  227. }
  228. };
  229. //-------------------- shortcutMenuInfo end ---------
  230. --%>
  231. /**
  232. * 自定义菜单
  233. * 1--shortcutMenuInfo(各个自定义id(不清楚来源),menuRoot)
  234. * 2--groupId(上级id);member(子栏目成员);name(名字代号)
  235. * 3,member--groupId(上级id);memberId(自身id为#序号#lmid);name(名字代号);url(跳转页)
  236. *
  237. * example:shortcutMenuInfo[440112878].members["#0#44014346"].name
  238. */
  239. <%-- 注释掉,菜单模板不应该在home.jsp中取初始值 Ben(202501220)
  240. var shortcutMenuInfo;//这是快捷组的数据,也就是最顶上那一排,这是个三层键值对?
  241. for(var i = 0; i < 10 && parent1.shortcutMenuInfo == undefined; i++)
  242. parent1 = parent1.parent
  243. if(parent1.shortcutMenuInfo != undefined)
  244. shortcutMenuInfo = parent1.shortcutMenuInfo;
  245. --%>
  246. <%-- 为了让后面程序能跑,补回原来的json结构 Ben(20251220) --%>
  247. var shortcutMenuInfo= {
  248. "menuRoot": {
  249. "groupId": "menuRoot",
  250. "name": "菜单根部",
  251. "members": {}
  252. }
  253. };
  254. //自定义栏目的子栏目的根id
  255. var shortcutGroup=[];
  256. var menuRootSize = 0;//见名知意
  257. var selectedMenuMenber = [];
  258. function isNumber(o) {
  259. var reg = /^[0-9]*$/;
  260. if (!reg.test(o)) {
  261. return false;
  262. }
  263. return true;
  264. }
  265. function isLeft(shortcutMenuInfo){
  266. for(var item in shortcutMenuInfo){
  267. if(isNumber(item)){
  268. for(var item2 in shortcutMenuInfo[item].members){
  269. if(shortcutMenuInfo[item].members[item2].memberId){
  270. var arr = shortcutMenuInfo[item].members[item2].memberId.split('#');
  271. selectedMenuMenber.push(arr[arr.length-1]);
  272. }
  273. }
  274. }else{
  275. for(var item2 in shortcutMenuInfo[item].members){
  276. if(!isNumber(shortcutMenuInfo[item].members[item2].memberId)){
  277. selectedMenuMenber.push(shortcutMenuInfo[item].members[item2].memberId);
  278. }
  279. }
  280. }
  281. }
  282. }
  283. function load() {
  284. //初始化右边应用的下拉框select
  285. // $.each(menuTree,function(i){//遍历整个菜单二维数组,拿出里面的每个数组
  286. // var menu1 = menuTree[i];
  287. // //每个一维数组的四个数据依次是:id,名字,上级菜单id,url
  288. // if (menu1[2] == "env" && menu1[3] == "null") {//当上级id为env时,那么这就是个根菜单(人员、校务这些),把它放到下拉框中
  289. // $('#yy').append("<option value='" + menu1[0]+"'>"+menu1[1]+"</option>");
  290. // }
  291. // });
  292. //初始化左边的选项和下拉框
  293. //初始化要将子栏目下的栏目页放进去
  294. var menuRoot;
  295. //给右边下拉框绑定事件,用来在右边显示选中的子项
  296. // $('#yy').change(function(){
  297. // console.log(menuTree);
  298. // //alert($(this).val());
  299. // selectByParentId($(this).val());
  300. // });
  301. for (var groupId in shortcutMenuInfo) { //在addOption前先得出组菜单id数组,做样式区分时用到
  302. if ("menuRoot" != groupId) {
  303. shortcutGroup.push(groupId); //纪录快捷组id,在后台使用
  304. }
  305. }
  306. }
  307. load();
  308. $(function () { selectByParentId(); })
  309. /**
  310. * 根据父id查询出对应的子对象
  311. * @param {[type]} id [description]
  312. * @return {[type]} [description]
  313. */
  314. function selectByParentId() {
  315. //用来加载出右边拖拽框的所有选项
  316. var cdOptionHtml = "";
  317. $.each(menuTree, function (i) { //遍历整个菜单二维数组,拿出里面的每个数组
  318. var menu = menuTree[i];
  319. if (selectedMenuMenber.indexOf(menu[0]) == -1) {
  320. if (menu[2] == "search") {
  321. var parentDiv = "<div class='list-background list' style='min-height: 41px;line-height: 41px;width: calc(100% - 4px);box-sizing: border-box;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;' ssObjId='" + menu[0] + "' memberid='" + menu[0] + "' name='" + menu[1] + "' groupId='" + menu[2] + "' url='" + menu[3] + "'><span>" + menu[1] + "[搜索]" + "</ span ></div>";
  322. var parentId = menu[0];
  323. $.each(menuTree, function (j) {//由于存在两级,所以再次遍历,把第二级放进自己的父级中
  324. var menu2 = menuTree[j];
  325. if (menu2[2] == menu[0]) { //上级id等于第一级的id时
  326. parentDiv += '<div class="list-background list" style="min-height: 41px;line-height: 41px;width: calc(100% - 4px);box-sizing: border-box;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" ssObjId="' + menu2[0] + '" ssPobjId="' + parentId + '" memberid="' + menu2[0] + '"name="' + menu2[1] + '" groupId="' + menu2[2] + '" url="' + menu[3] + '" ><span>' + menu2[1] + "[搜索]" + '</ span ></div>';
  327. }
  328. });
  329. cdOptionHtml += parentDiv;
  330. } else if (menu[2] != "" && menu[2] != window.top.menuRootName) {//当上级id 等于传进来的id(也就是右边下拉框此时选中的值)时,那么加把此项放到右边的拖拽框
  331. var parentDiv = "<div class='list-background list' style='min-height: 41px;line-height: 41px;width: calc(100% - 4px);box-sizing: border-box;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;' ssObjId='" + menu[0] + "' memberid='" + menu[0] + "' name='" + menu[1] + "' groupId='" + menu[2] + "' url='" + menu[3] + "'><span>" + menu[1] + "</ span ></div>";
  332. var parentId = menu[0];
  333. $.each(menuTree, function (j) {//由于存在两级,所以再次遍历,把第二级放进自己的父级中
  334. var menu2 = menuTree[j];
  335. if (menu2[2] == menu[0]) { //上级id等于第一级的id时
  336. parentDiv += '<div class="list-background list" style="min-height: 41px;line-height: 41px;width: calc(100% - 4px);box-sizing: border-box;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" ssObjId="' + menu2[0] + '" ssPobjId="' + parentId + '" memberid="' + menu2[0] + '"name="' + menu2[1] + '" groupId="' + menu2[2] + '" url="' + menu[3] + '" ><span>' + menu2[1] + '</ span ></div>';
  337. }
  338. });
  339. cdOptionHtml += parentDiv;
  340. }
  341. }
  342. });
  343. cdOptionHtml = cdOptionHtml.replace(/&/g, '%26');
  344. // $("#cdOption").html(cdOptionHtml);//把整个div放进拖拽框
  345. $("#cdOptionHtml").val(cdOptionHtml);//把整个div放进拖拽框
  346. $('form[name="ddpOptionForm"]')[0].submit(); // "cdOptionForm"。Lin
  347. }
  348. /**
  349. * 创建一个新的快捷组,也就是顶上一排那种有第二层的东西
  350. */
  351. /* 改,改用 wd.display.confirm({ -- 新UI,增加 个人菜单.业务名 -- 实现 新UI 的图标体系。Lin
  352. * 把 addGroup() 分开为 addGroup() + addGroupCallback( -- 抄自 "另存为新模板" 按钮
  353. function addGroup(){
  354. //全都是快捷组这东西惹的祸 因为它既是shortcutMenuInfo中menuRoot的成员,也是shortcutMenuInfo的成员
  355. //var groupSel = document.getElementById('cdwz');
  356. var groupDivs = $('#ddpSelected').children(); // '#cdSelected'。Lin
  357. //下面这段都是用来判断为空或者重复
  358. var newname=prompt("新菜单名称","未定义");
  359. if(''==newname||null==newname){
  360. alert('名称不能为空!!\n');
  361. return false;
  362. }
  363. var hasGroupName = false;
  364. /// * for(var i=0;i<groupSel.options.length;i++){
  365. // if(newname==groupSel.options[i].text){
  366. // hasGroupName = true;
  367. // break;
  368. // }
  369. // }
  370. /// *
  371. $.each(groupDivs, function(i){
  372. var name = $(groupDivs[i]).attr('name');
  373. if(newname == name){
  374. hasGroupName = true;
  375. return true;
  376. }
  377. });
  378. if(hasGroupName){
  379. alert('菜单名称'+newname+'已存在');
  380. return false;
  381. }
  382. //用当前系统的毫秒值作为groupId
  383. var groupId = new Date().getTime()+'';
  384. //console.info("测试组id: "+groupId);
  385. //shortcutMenuInfo中新建一个键值对,键为groupId
  386. shortcutMenuInfo[groupId] = {
  387. 'groupId':groupId,
  388. 'name':newname,//输入的名字
  389. 'members':{} //成员为空
  390. }
  391. shortcutGroup.push(groupId);
  392. DM.addItem(groupId,'<div class="list-background list" style="min-height: 41px;line-height: 41px;width: calc(100% - 4px);box-sizing: border-box;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" ssObjId="' + groupId + '" memberid="' + groupId + '" name="'+ newname +'" groupId="menuRoot" url="null" ><span >'+ newname +'</span></div>',null,true);
  393. }
  394. */
  395. ///// Start 改用 wd.display.confirm({ -- 新UI,增加 个人菜单.业务名 -- 实现 新UI 的图标体系。Lin
  396. function addGroup() {
  397. wd.display.confirm({ title: "增加菜单组", url: "<ss:serv parm='{"wdConfirmationCaptchaService":"0"}' dest='menuGrpAdd'/>", width: 300, height: 240, callback: addGroupCallback });<%-- addcallback改为addGroupCallback Ben(20251220) --%>
  398. }
  399. var addGroupCallback = (function (t) {
  400. var THIS = t;
  401. return function (data) {
  402. if (data.newMc == null || data.newMc == "") {
  403. alert('名称不能为空!!\n');
  404. return false;
  405. }
  406. let newname = data.newMc;<%-- add by Ben(20251220) --%>
  407. let bizName = data.bizName;<%-- add by Ben(20251220) --%>
  408. var groupDivs = $('#ddpSelected').children();<%-- 补回groupDivs初始化 Ben(20251220) --%>
  409. var hasGroupName = false;
  410. $.each(groupDivs, function(i){
  411. var name = $(groupDivs[i]).attr('name');
  412. if(newname == name){
  413. hasGroupName = true;
  414. return true;
  415. }
  416. });
  417. if(hasGroupName){
  418. alert('菜单名称'+newname+'已存在');
  419. return false;
  420. }
  421. //用当前系统的毫秒值作为groupId
  422. var groupId = new Date().getTime()+'';
  423. //console.info("测试组id: "+groupId);
  424. //shortcutMenuInfo中新建一个键值对,键为groupId
  425. shortcutMenuInfo[groupId] = {
  426. 'groupId':groupId,
  427. 'name':newname,//输入的名字
  428. 'bizName': bizName, // 增加,增加 个人菜单.业务名。Lin
  429. 'members':{} //成员为空
  430. }
  431. shortcutGroup.push(groupId);
  432. DM.addItem(groupId,'<div class="list-background list" style="min-height: 41px;line-height: 41px;width: calc(100% - 4px);box-sizing: border-box;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;'+
  433. '" ssObjId="'+ groupId +'" memberid="'+ groupId +'" name="'+ newname +'" bizName="'+ bizName +'" groupId="menuRoot" url="null">'+
  434. '<span >'+ newname +'</span></div>',null,true);
  435. }
  436. })(this);
  437. ///// End 改用 wd.display.confirm({ -- 新UI,增加 个人菜单.业务名 -- 实现 新UI 的图标体系。Lin
  438. /**
  439. * 保存准备方法,将新增的数据封装好
  440. * @return {[type]} [description]
  441. */
  442. function beforeSubmit() {
  443. //有shortcutGroup就行了
  444. //直接用左div的元素来做个shortcutmenuinfo!!!
  445. var dragList = $('#ddpSelected'); // '#cdSelected'。Lin
  446. //下级div
  447. var groupDivs = dragList.children();
  448. <%-- console.log(groupDivs.length); 注释掉 Ben(20251219) --%>
  449. var menuRootMembers = {};
  450. /**
  451. * 初始化菜单根部menuRoot
  452. */
  453. var menuRoot = {};
  454. <%-- Ben(20251219)
  455. shortcutMenuInfo这个对象在老UI的home.jsp才有,下面代码先注释掉
  456. //copy
  457. $.extend(menuRoot,shortcutMenuInfo['menuRoot']);
  458. 从父页面home.jsp读取当前用户的菜单,这逻辑只对编辑当前登录用户的菜单,才能说得通。
  459. 但是对于编辑菜单模板来说,是错的。菜单模板应该从当前选择的模板,从后台重新加载。
  460. --%>
  461. menuRootMembers['menuRoot'] = menuRoot;
  462. menuRoot['members'] = {};
  463. $.each(groupDivs, function(i){
  464. //或条件
  465. //改为li
  466. if(shortcutGroup.indexOf($(groupDivs[i]).attr('memberid')) != -1 || $(groupDivs[i]).find('div div[ssObjId]').length != 0){
  467. var menuRootMember = {};
  468. var members = {};
  469. menuRootMember['groupId'] = $(groupDivs[i]).attr('memberid');
  470. menuRootMember['name'] = $(groupDivs[i]).attr('name');
  471. menuRootMember['bizName'] = $(groupDivs[i]).attr('bizName'); // 增加,增加 个人菜单.业务名。Lin
  472. if($(groupDivs[i]).find('div div[ssObjId]').length != 0){
  473. //下级div的再下级
  474. var childDivs = $(groupDivs[i]).find('div div[ssObjId]');
  475. $.each(childDivs, function(j){
  476. var member = {};
  477. member['groupId'] = $(childDivs[j]).attr('groupid');
  478. member['memberId'] = $(childDivs[j]).attr('memberid');
  479. member['name'] = $(childDivs[j]).attr('name');
  480. member['url'] = $(childDivs[j]).attr('url');
  481. members['#'+ j + '#' + $(childDivs[j]).attr('memberid')] = member;
  482. });
  483. }
  484. menuRootMember['members'] = members;
  485. menuRootMembers[$(groupDivs[i]).attr('memberid')] = menuRootMember;
  486. }
  487. /**
  488. * menuRoot 添加member
  489. * 如果$(groupDivs[i])有子节点,默认groupId 为 menuRoot url为null 且插入 shortcutGroup 的一条id
  490. */
  491. var member = {};
  492. member['memberId'] = $(groupDivs[i]).attr('memberId');
  493. member['name'] = $(groupDivs[i]).attr('name');
  494. if($(groupDivs[i]).find('div div[ssObjId]').length != 0){
  495. member['groupId'] = "menuRoot";
  496. member['url'] = "null";
  497. shortcutGroup.push($(groupDivs[i]).attr('memberId'));
  498. }else{
  499. member['groupId'] = $(groupDivs[i]).attr('groupId');
  500. member['url'] = $(groupDivs[i]).attr('url');
  501. }
  502. menuRoot['members']['#'+ i + '#' + $(groupDivs[i]).attr('memberId')] = member;
  503. });
  504. shortcutMenuInfo = {};
  505. shortcutMenuInfo = menuRootMembers;
  506. }
  507. /**
  508. * 选择模板触发方法
  509. * @param {[type]} value [description]
  510. * @return {[type]} [description]
  511. */
  512. function selectMB(value){
  513. //拿到 mbdata
  514. if(value=="0"){
  515. value="null";
  516. }
  517. shortcutMenuInfo=(mbdata[value]==undefined)?{}:mbdata[value];
  518. //清空左边菜单组元素
  519. $("#ddpSelected").empty(); // "#cdSelected"。Lin
  520. if(value!='0'){
  521. //生成左边菜单组
  522. selectedMenuMenber.splice(0,selectedMenuMenber.length);
  523. isLeft(shortcutMenuInfo);
  524. initShortCutMenu(shortcutMenuInfo);
  525. $('#delmb').css('display', 'inline');
  526. $('#savemb').css('display', 'inline');
  527. }else{
  528. $('#delmb').css('display', 'none');
  529. $('#savemb').css('display', 'none');
  530. }
  531. }
  532. /**
  533. * 设值到表单中
  534. * @param {[type]} _form [description]
  535. * @param {[type]} name [description]
  536. * @param {[type]} value [description]
  537. * @return {[type]} [description]
  538. */
  539. function generateHiddenForm(_form,name,value){
  540. var hiddenInput = document.createElement('input');
  541. hiddenInput.type='hidden';
  542. hiddenInput.name = name;
  543. hiddenInput.value = value;
  544. _form.appendChild(hiddenInput);
  545. }
  546. /**
  547. * 生成菜单显示数据
  548. * @param {[type]} shortcutMenuInfo [description]
  549. * @return {[type]} [description]
  550. */
  551. function initShortCutMenu(shortcutMenuInfo){
  552. var menuRoot;
  553. if(typeof(shortcutMenuInfo.menuRoot) == 'undefined')
  554. menuRoot = [];
  555. else
  556. menuRoot = shortcutMenuInfo.menuRoot.members;
  557. DM.getDrager().selectedList.empty();
  558. $.each(menuRoot, function(i){
  559. //menuRootSize++;
  560. var menuRootMember = menuRoot[i];
  561. //
  562. var isItem = false;
  563. if(menuRootMember.url != "null"){
  564. isItem = true;
  565. }else{
  566. if(shortcutMenuInfo[menuRootMember.memberId] != undefined){
  567. var j = 0;
  568. $.each(shortcutMenuInfo[menuRootMember.memberId].members, function(i){
  569. j++;
  570. });
  571. if(j > 0){
  572. isItem = true;
  573. }
  574. }
  575. }
  576. if(isItem){
  577. if(menuRootMember.memberId.indexOf("_search")>0){
  578. var ele = $('<div class="list-background list" style="min-height: 41px;line-height: 41px;width: calc(100% - 4px);box-sizing: border-box;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;'+
  579. '" ssObjId="' + menuRootMember.memberId + '" memberid="' + menuRootMember.memberId +
  580. '" name="'+ menuRootMember.name +
  581. '" bizName="'+ menuRootMember.bizName + // 增加,增加 个人菜单.业务名。Lin
  582. '" groupId="'+ "search"+
  583. '" url="'+ menuRootMember.url +'" class="item dragList"><span>'+ menuRootMember.name+"[搜索]" +'</ span ></div>');
  584. }else{
  585. var ele = $('<div class="list-background list" style="min-height: 41px;line-height: 41px;width: calc(100% - 4px);box-sizing: border-box;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;'+
  586. '" ssObjId="' + menuRootMember.memberId + '" memberid="' + menuRootMember.memberId +
  587. '" name="'+ menuRootMember.name +
  588. '" bizName="'+ menuRootMember.bizName + // 增加,增加 个人菜单.业务名。Lin
  589. '" groupId="'+ menuRootMember.groupId +
  590. '" url="'+ menuRootMember.url +'" class="item dragList"><span>'+ menuRootMember.name +'</ span ></div>');
  591. }
  592. DM.getDrager().selectedList.append(ele[0]);
  593. var parentId = menuRootMember.memberId;
  594. //放入子栏目,子栏目不为dragList
  595. if(shortcutMenuInfo[menuRootMember.memberId] != null){
  596. $.each(shortcutMenuInfo[menuRootMember.memberId].members, function(j){
  597. var member = shortcutMenuInfo[menuRootMember.memberId].members[j];
  598. if(member.memberId.indexOf("_search")>0){
  599. var cele = $('<div class="list-background list" style="height: 41px;line-height: 41px;width: calc(100% - 4px);box-sizing: border-box;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" ssObjId="' + j.split("#")[2] + '" ssPobjId="'+parentId
  600. +'" memberid="' + j.split("#")[2] + '" name="' + member.name+ '" groupId="' + member.groupId
  601. + '" url="'+ member.url +'" ><span>' + member.name +"[搜索]" +'</ span ></div>');
  602. }else{
  603. var cele = $('<div class="list-background list" style="height: 41px;line-height: 41px;width: calc(100% - 4px);box-sizing: border-box;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;" ssObjId="' + j.split("#")[2] + '" ssPobjId="'+parentId
  604. +'" memberid="' + j.split("#")[2] + '" name="' + member.name + '" groupId="' + member.groupId
  605. + '" url="'+ member.url +'" ><span>' + member.name +'</ span ></div>');
  606. }
  607. DM.getDrager().selectedList.append(cele[0]);
  608. });
  609. }
  610. }
  611. });
  612. DM.getDrager().selectedList.reload();
  613. selectByParentId();
  614. }
  615. /**
  616. * 删除菜单组模板
  617. * @param {[type]} ){ } [description]
  618. * @return {[type]} [description]
  619. */
  620. function doDelmb(){
  621. // $('#delmb').click(function(){
  622. // var mbid = $('#cdmbselected').val();
  623. var mbid = $('#grcdmbid').val();
  624. var json = JSON.parse('{"mbid":"' + mbid + '"}');
  625. var url = "<ss:serv name='initMenuDef' parm='{"wdConfirmationCaptchaService":"0","mblx":"1","del":"ssVal{mbid}"}' dest='menuDefSaveOk'/>"
  626. url = wd.display.replaceDynamicParam(url, json);
  627. $('form[name="shortcutForm"]').attr('action', url);
  628. $('form[name="shortcutForm"]').submit();
  629. // });
  630. }
  631. /**
  632. * 保存菜单组模板
  633. * @param {[type]} ){ } [description]
  634. * @return {[type]} [description]
  635. */
  636. function doSavemb(){
  637. // $('#savemb').click(function(){
  638. //封装
  639. beforeSubmit();
  640. var _form = document.forms['shortcutForm'];
  641. var cdmbid = $('#cdmbselected').val();
  642. var shortcutInfoStr = JSON.stringify(shortcutMenuInfo);
  643. var shortcutGroupStr = JSON.stringify(shortcutGroup);
  644. generateHiddenForm(_form,'grcdmbid',cdmbid);
  645. generateHiddenForm(_form,'shortcutGroup',shortcutGroupStr);
  646. generateHiddenForm(_form,'shortcutMenuInfo',shortcutInfoStr);
  647. generateHiddenForm(_form,'cdz','1');
  648. $('form[name="shortcutForm"]').attr('action', "<ss:serv name='saveMenuDef' parm='{"wdConfirmationCaptchaService":"0","mblx":"1"}' dest='menuDefSaveOk'/>");
  649. $('form[name="shortcutForm"]').submit();
  650. // });
  651. }
  652. /**
  653. * 新增菜单组模板
  654. * @param {[type]} ){ } [description]
  655. * @return {[type]} [description]
  656. */
  657. var addcallback = (function (t) {
  658. var THIS = t;
  659. return function (data) {
  660. if (data.newMc != null && data.newMc != "") {
  661. //封装
  662. beforeSubmit();
  663. var _form = document.forms['shortcutForm'];
  664. //添加newMc 表单元素
  665. generateHiddenForm(_form, "newMc", data.newMc);
  666. generateHiddenForm(_form, "ms", data.ms);
  667. generateHiddenForm(_form, "grcdmbh", data.grcdmbh);
  668. var cdmbid = $('#cdmbselected').val();
  669. var shortcutInfoStr = JSON.stringify(shortcutMenuInfo);
  670. var shortcutGroupStr = JSON.stringify(shortcutGroup);
  671. generateHiddenForm(_form, 'grcdmbid', cdmbid);
  672. generateHiddenForm(_form, 'shortcutGroup', shortcutGroupStr);
  673. generateHiddenForm(_form, 'shortcutMenuInfo', shortcutInfoStr);
  674. generateHiddenForm(_form, 'cdz', '1');
  675. $('form[name="shortcutForm"]').attr('action', "<ss:serv name='saveMenuDef' parm='{"wdConfirmationCaptchaService":"0","mblx":"1"}' dest='menuDefSaveOk'/>");
  676. $('form[name="shortcutForm"]').submit();
  677. }
  678. }
  679. })(this);
  680. function doAddcallback(){
  681. // $('#addmb').click(function () {
  682. wd.display.confirm({ title: "另存为新模板", url: "<ss:serv parm='{"wdConfirmationCaptchaService":"0"}' dest='menuDefAdd'/>", width: 300, height: 240, callback: addcallback });
  683. // });
  684. }
  685. </script>
  686. <script type="text/javascript" charset="utf-8" src="/ss/js/wdDrag.js"></script>
  687. <script>var isWriteOut=true;var wd=wd||{};wd.drag=wd.drag||{};</script>
  688. <script>setDrag("ddp",true,["editGroup","editOrder"],{})</script> <%-- name="cd"。再改为统一的名字 -- 同一页面,不会有多个拖放选择。Lin --%>
  689. </html>
  690. <%@ include file="/page/clip/footer.jsp" %>