objEdit.jsp 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. <%@ page language="java" pageEncoding="UTF-8" isELIgnored="false" %>
  2. <%@ taglib uri="/ssTag" prefix="ss"%>
  3. <%pageContext.setAttribute("wdpageinformation","{'hastab':'1'}");%>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta http-equiv="pragma" content="no-cache">
  8. <meta http-equiv="cache-control" content="no-cache">
  9. <meta http-equiv="expires" content="0">
  10. <script>window.loginStatus="${empty sessionScope['ssUser']?'0':'1'}"</script>
  11. <ss:skin file='main.css'/>
  12. <script type="text/javascript" src="/ss/jquery/jquery.js"></script>
  13. <script type="text/javascript" src="/ss/artdialog/artDialogUtil.js"></script>
  14. <script type="text/javascript" src="/ss/js/base.js"></script>
  15. <script> if(!window.wd) var wd={}; if(!wd.display) wd.display={}; wd.display.wdDialogId="objEdit"; if(!wd.app) wd.app={}; wd.app.name='pms';</script>
  16. <script type="text/javascript" src="/ss/js/masklayer.js"></script>
  17. <script type="text/javascript" src="/ss/js/wdDialogInit.js"></script>
  18. <script type="text/javascript" src="/ss/js/common.js"></script>
  19. <script type="text/javascript" src="/ss/js/display.js"></script>
  20. <script type="text/javascript" src="/ss/js/edit.js"></script>
  21. <script type="text/javascript" src="/ss/nicescroll/jquery.nicescroll.js"></script>
  22. <script type="text/javascript" src="/ss/nicescroll/jquery.nicescroll.iframehelper.min.js"></script>
  23. <%-- 新UI引入的JS --%>
  24. <script src="/js/load.js"></script> <%-- ="/newUI/ss/js/base.js"。Lin(新UI) --%>
  25. </head>
  26. <body>
  27. <%
  28. pageContext.setAttribute("dataType","update");
  29. %>
  30. <%-- 改为 <data@ss name="obj"/>。Lin
  31. <tab@ss name=""/> --%>
  32. <%-- <data@ss name="obj"/> 再去掉,好像不需要。Lin --%>
  33. <ss:tab name='editBaseInfo,child'/>
  34. <%-- 改为 <jsp@ss file=。Lin
  35. <tab@ss name="tagState"/> --%>
  36. <%@include file="/ss/clip/tabState.jsp"%>
  37. <script>
  38. function addWdFitHeight(selecter,param){
  39. console.log(selecter);
  40. console.log(param);
  41. var aa="";
  42. if(param.minHeight){
  43. aa+="min:"+param.minHeight+",";
  44. }
  45. if(param.maxHeight){
  46. aa+="max:"+param.maxHeight+",";
  47. }
  48. if(param&&aa){
  49. aa=aa.substr(0,aa.length-1)
  50. document.querySelector(selecter).setAttribute("ssFith",aa); // ("wdFitHeight",。Lin
  51. }
  52. }
  53. </script>
  54. <%--<div class="tab-div" >
  55. <ul ssNormClazz="tab-normal" ssHovClazz="tab-hover" ssSelClazz="tab-selected">
  56. <ss:rpt name='${tabList}' id='item'>
  57. <li name="${item.name}"--%><%-- wdTabSite="${item.wdTabSite}"。先去掉,用到再弄。好像是 个人选项卡 的东西。Lin --%>
  58. <%--_sizeinfo="width:${item.width},height:${item.height},minHeight:${item.minHeight},maxHeight:${item.maxHeight}"
  59. ssTabClick="<ss:serv name='${item.service}' dest='${item.dest}' parm='${item.param}'/>">
  60. ${item.desc}
  61. </li>
  62. </ss:rpt>
  63. </ul>
  64. </div>
  65. <div>
  66. <iframe frameborder="none" name="ssTabIframe" width="100%" id="" style="height:100%"></iframe>
  67. </div>--%>
  68. <div id="app">
  69. <div class="project-edit-container">
  70. <ss-sub-tab
  71. :menu-list="tabConfig"
  72. active-menu="相对方"
  73. @menu-change="handleMenuChange"
  74. :left-display="leftDisplay"
  75. :footer-buttons="footerButtons"
  76. />
  77. <!-- @menu-change="handleMenuChange"
  78. -->
  79. </div>
  80. </div>
  81. <script>
  82. var tabHeight=<ss:txt val='${tabHeight}'/>;
  83. addWdFitHeight("[name=ssTabIframe]",tabHeight); // ("[name=wdTabFrame]",。Lin
  84. $(document).ready(function(){
  85. /* 改,规范 wdTabFrame 命名。Lin
  86. $("iframe[name=wdTabFrame]").height($("iframe[name=wdTabFrame]").height() - 2)
  87. */ $("iframe[name=ssTabIframe]").height($("iframe[name=ssTabIframe]").height() -2)
  88. })
  89. </script>
  90. <script type="text/javascript">var wdRecordValue='${wdRecordValue}';</script>
  91. <script type="text/javascript" src="/ss/js/wdRecord.js"></script>
  92. <script type="text/javascript">(function(){wdRecord("objEdit");})();</script>
  93. <script type="text/javascript" src="/ss/js/wdFitHeight.js"></script>
  94. <script type="text/javascript">initWdFitHeight(31)</script>
  95. <script type="text/javascript">initWdFitHeightFunction=function(){initWdFitHeight(31);};</script>
  96. <script type='text/javascript'>wd.display.wdTabNo='${ssNextTabNo}';</script><script type="text/javascript" src="/ss/js/wdDrag.js"></script>
  97. <script type="text/javascript" src="/ss/js/configurableTab.js"></script>
  98. <script type="text/javascript">
  99. wd.configurableTab.init(1,"objEdit");</script>
  100. <ss:equal val="${empty resizeComponent}" val2="false">
  101. <script>{var iframe=wd.display.getFrameOfWindow();
  102. if(iframe&&iframe.contentWindow==window)
  103. wd.display.resizeComponent(${resizeComponent.width}, ${resizeComponent.height}, ${empty resizeComponent.minHeight?'null':resizeComponent.minHeight}, ${empty resizeComponent.maxHeight?'null':resizeComponent.maxHeight});}</script>
  104. </ss:equal>
  105. <ss:help/>
  106. </body>
  107. <script type="text/javascript">
  108. try{wd.display.showMsgPopup('${msg}');
  109. }catch(err){console.error(err);}
  110. </script>
  111. <ss:equal val="${empty wdclosewindowparam}" val2="false">
  112. <script type="text/javascript">
  113. try{wd.display.setCloseWindowParam('${wdclosewindowparam}');
  114. }catch(err){console.error(err);}
  115. </script>
  116. </ss:equal>
  117. </html>
  118. <script type="text/javascript">
  119. <%-- 增加初始化选项卡json start Ben --%>
  120. window.SS.dom.tabConfig = window.SS.dom.tabConfig || [];
  121. <ss:rpt name='${tabList}' id='item'>
  122. {
  123. let item = {
  124. url: "<ss:serv name='${item.service}' dest='${item.dest}' parm='${item.param}'/>",
  125. <%--url: "<ss:serv name='${item.service}' dest='${item.dest}' parm='{${item.paramStr},bdlbm:"${bdlbm}",sqid:"${sqid}"}'/>",--%>
  126. title:"${item.desc}",
  127. name:"${item.name}",
  128. <%-- 下面的属性是为了计算选项卡高度fitHeight准备的 --%>
  129. width:"${item.width}",
  130. height:"${item.height}",
  131. minHeight:"${item.minHeight}",
  132. maxHeight:"${item.maxHeight}"
  133. };
  134. window.SS.dom.tabConfig.push(item);
  135. }
  136. </ss:rpt>
  137. console.log('tabConfig:'+JSON.stringify(window.SS.dom.tabConfig));
  138. <%-- 增加初始化选项卡json end Ben --%>
  139. tokenCleanser("<ss:serv name='ss.clearPageToken'/>", {tokenList:"<%= pageContext.getAttribute(ss.page.PageC.PAGE_tokenList)%>"});
  140. </script>
  141. <script type="module">
  142. //在本窗口提交表单
  143. function doThisWindowSaveAndCommit(){
  144. let url = "<ss:serv name='${saveAndCommit}' dest='${saveAndCommitDest}' parm='${saveAndCommitParam}' />";
  145. <%--let saveAndCommit = '${saveAndCommit}';--%>
  146. <%--let saveAndCommitDest = '${saveAndCommitDest}';--%>
  147. <%--let saveAndCommitParam = '${saveAndCommitParam}';--%>
  148. <%--let dataType = '${dataType}';--%>
  149. // let url = '';
  150. <%-- doThisWindowSaveAndCommit这个JS方法已经没用了 先注释掉让它不报错。Ben(20251124)
  151. let width = ${saveAndCommitwidth};
  152. let height = ${saveAndCommitheight};
  153. let minHeight = ${saveAndCommitminheight};
  154. let maxHeight = ${saveAndCommitmaxheight};
  155. --%>
  156. const f = document.getElementById("commitForm");
  157. f.action = url;
  158. wd.display.resizeComponent(width, height, minHeight, maxHeight);
  159. f.submit();<%-- 提交表单 --%>
  160. }
  161. const data = {
  162. tabConfig: window.SS.dom.tabConfig.map(tab => ({
  163. ...tab,
  164. cgxList: false,
  165. })),
  166. leftDisplay: true,
  167. footerButtons: [
  168. {
  169. text: "保存并提交",
  170. onclick: function(){
  171. // 左侧区域隐藏
  172. const app = window.SS.dom.currentApp;
  173. // 等待iframe加载完成后执行
  174. const $iframe = $('#sub-tab-iframe');
  175. if ($iframe.length) {
  176. const $saveAndCommitBtn = $iframe.contents().find('#saveAndCommit');
  177. if ($saveAndCommitBtn.length) {
  178. if (app) {
  179. app.$data.leftDisplay = false;
  180. }
  181. console.log("$saveAndCommitBtn",$saveAndCommitBtn);
  182. $(".sub-tab-iframe").css('display', 'none');
  183. $("#sub-tab-iframe").css('display', '');
  184. $saveAndCommitBtn.click();
  185. } else {
  186. //在本窗口提交表单
  187. doThisWindowSaveAndCommit();
  188. // console.error('未找到保存并提交按钮');
  189. // alert('未找到保存并提交按钮');
  190. }
  191. } else {
  192. //在本窗口提交表单
  193. doThisWindowSaveAndCommit();
  194. // console.error('未找到iframe元素');
  195. }
  196. },
  197. }
  198. ]
  199. }
  200. SS.ready(function () {
  201. const app = window.SS.dom.initializeFormApp({
  202. el: "#app",
  203. data(){
  204. return data;
  205. },
  206. methods:{
  207. handleMenuChange(menu){
  208. console.log('handleMenuChange', menu);
  209. },
  210. async showTagState(url) {
  211. // 从每个tab的url中提取token
  212. const tokenList = this.tabConfig.map(tab => {
  213. const match = /ssToken=([^&]+)/.exec(tab.url);
  214. return match ? match[1] : null;
  215. });
  216. try {
  217. const response = await $.post(url, {
  218. tokenList: JSON.stringify(tokenList)
  219. });
  220. const result = eval("(" + response + ")");
  221. // 更新每个tab的状态
  222. this.tabConfig = this.tabConfig.map((tab, index) => {
  223. if (!result[index]) return tab;
  224. return {
  225. ...tab,
  226. cgxList: result[index].cgxList === true,
  227. };
  228. });
  229. console.log('更新标签状态成功:', this.tabConfig);
  230. } catch (error) {
  231. console.error('获取标签状态失败:', error);
  232. }
  233. }
  234. },
  235. mounted() {
  236. this.showTagState("<ss:serv name='ss.wrTabState' parm='{ssObjName:"${ssObjName}",ssObjId:"${ssObjId}","${ssObjIdName}":"${ssObjId}",wdConfirmationCaptchaService:"0",dataType:"${dataType}"}'/>");
  237. }
  238. })
  239. window.SS.dom.currentApp = app;
  240. })
  241. </script>