mainMenuDefEdit.ss.jsp 27 KB

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