objChg.jsp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  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="objChg"; 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. <script src="/js/load.js"></script> <%-- ="/newUI/ss/js/base.js"。Lin(新UI) --%>
  24. <style type="text/css">
  25. .lightTab-selected,.lightTab{height: 34px;}
  26. </style>
  27. </head>
  28. <body>
  29. <%
  30. pageContext.setAttribute("dataType","change");
  31. %>
  32. <%-- 改为 <data@ss name="obj"/>。Lin
  33. <tab@ss name=""/> --%>
  34. <%-- <data@ss name="obj"/> 再去掉,好像不需要。Lin --%>
  35. <ss:tab name='chgBaseInfo,child'/>
  36. <%-- 改为 <jsp@ss file="/ss/tabState.jsp"/>。Lin
  37. <tab@ss name="tagState"/> --%>
  38. <%@include file="/ss/clip/tabState.jsp"%>
  39. <script>
  40. function addWdFitHeight(selecter,param){
  41. console.log(selecter);
  42. console.log(param);
  43. var aa="";
  44. if(param.minHeight){
  45. aa+="min:"+param.minHeight+",";
  46. }
  47. if(param.maxHeight){
  48. aa+="max:"+param.maxHeight+",";
  49. }
  50. if(param&&aa){
  51. aa=aa.substr(0,aa.length-1)
  52. document.querySelector(selecter).setAttribute("ssFith",aa); // ("wdFitHeight",。Lin
  53. }
  54. }
  55. </script>
  56. <%--<div class="tab-div">
  57. <ul ssNormClazz="tab-normal1111" ssHovClazz="tab-hover11111" ssSelClazz="tab-selected11111">
  58. <ss:rpt name='${tabList}' id='item'>
  59. <li name="${item.name}"--%> <%-- wdTabSite="${item.wdTabSite}"。先去掉,用到再弄。好像是 个人选项卡 的东西。Lin --%>
  60. <%--_sizeinfo="width:${item.width},height:${item.height},minHeight:${item.minHeight}, maxHeight:${item.maxHeight}"--%>
  61. <%-- 增加 删除二级对象的基本情况变动 功能,使用页面参数混写来传递 bdlbm 和 sqid。Lin
  62. wdTabClick="<varServ@ss name='${item.service}' dest='${item.dest}' parm='${item.param}'/>"> --%>
  63. <%-- 再改,不在页面混写。Lin
  64. ssTabClick="<ss:serv name='${item.service}' dest='${item.dest}' parm='{${item.paramStr},bdlbm:"${bdlbm}",sqid:"${sqid}"}'/>"> --%>
  65. <%--ssTabClick="<ss:serv name='${item.service}' dest='${item.dest}' parm='${item.param}'/>">
  66. ${item.desc}
  67. </li>
  68. </ss:rpt>
  69. </ul>
  70. </div>
  71. <div>
  72. <iframe frameborder="none" name="ssTabIframe" width="100%" ></iframe>
  73. </div>--%>
  74. <div id="app">
  75. <div class="project-edit-container">
  76. <ss-sub-tab
  77. :menu-list="tabConfig"
  78. active-menu="相对方"
  79. @menu-change="handleMenuChange"
  80. :footer-buttons="footerButtons"
  81. :left-display="leftDisplay"
  82. />
  83. </div>
  84. </div>
  85. <script>
  86. var tabHeight=<ss:txt val='${tabHeight}'/>;
  87. //addWdFitHeight("[name=ssTabIframe]",tabHeight); ("[name=wdTabFrame]",。Lin
  88. $(document).ready(function(){
  89. /* 改,规范 wdTabFrame 命名。Lin
  90. $("iframe[name=wdTabFrame]").height($("iframe[name=wdTabFrame]").height() -5)
  91. */ $("iframe[name=ssTabIframe]").height($("iframe[name=ssTabIframe]").height() -5)
  92. })
  93. </script>
  94. <script type="text/javascript">var wdRecordValue='${wdRecordValue}';</script>
  95. <script type="text/javascript" src="/ss/js/wdRecord.js"></script>
  96. <script type="text/javascript">(function(){wdRecord("objChg");})();</script>
  97. <script type="text/javascript" src="/ss/js/wdFitHeight.js"></script>
  98. <script type="text/javascript">initWdFitHeight(30)</script>
  99. <script type="text/javascript">initWdFitHeightFunction=function(){initWdFitHeight(30);};</script>
  100. <script type='text/javascript'>wd.display.wdTabNo='${ssNextTabNo}';</script><script type="text/javascript" src="/ss/js/wdDrag.js"></script>
  101. <script type="text/javascript" src="/ss/js/configurableTab.js"></script>
  102. <script type="text/javascript">
  103. wd.configurableTab.init(1,"objChg");</script>
  104. <ss:equal val="${empty resizeComponent}" val2="false">
  105. <script>{var iframe=wd.display.getFrameOfWindow();
  106. if(iframe&&iframe.contentWindow==window)
  107. wd.display.resizeComponent(${resizeComponent.width}, ${resizeComponent.height}, ${empty resizeComponent.minHeight?'null':resizeComponent.minHeight}, ${empty resizeComponent.maxHeight?'null':resizeComponent.maxHeight});}</script>
  108. </ss:equal>
  109. <ss:help/>
  110. </body>
  111. <script type="text/javascript">
  112. try{wd.display.showMsgPopup('${msg}');
  113. }catch(err){console.error(err);}
  114. </script>
  115. <ss:equal val="${empty wdclosewindowparam}" val2="false">
  116. <script type="text/javascript">
  117. try{wd.display.setCloseWindowParam('${wdclosewindowparam}');
  118. }catch(err){console.error(err);}
  119. </script>
  120. </ss:equal>
  121. </html>
  122. <script type="text/javascript">
  123. <%-- 增加初始化选项卡json start Ben --%>
  124. window.SS.dom.tabConfig = window.SS.dom.tabConfig || [];
  125. console.log(window.SS.dom.tabConfig);
  126. <ss:rpt name='${tabList}' id='item'>
  127. {
  128. let item = {
  129. <%--url: "<ss:serv name='${item.service}' dest='${item.dest}' parm='{${item.paramStr},bdlbm:"${bdlbm}",sqid:"${sqid}"}'/>",--%>title:"${item.desc}",
  130. url:"<ss:serv name='${item.service}' dest='${item.dest}' parm='${item.param}'/>",
  131. name:"${item.name}",
  132. <%-- 下面的属性是为了计算选项卡高度fitHeight准备的 --%>
  133. width:"${item.width}",
  134. height:"${item.height}",
  135. minHeight:"${item.minHeight}",
  136. maxHeight:"${item.maxHeight}"
  137. };
  138. window.SS.dom.tabConfig.push(item);
  139. }
  140. </ss:rpt>
  141. console.log('tabConfig:'+JSON.stringify(window.SS.dom.tabConfig));
  142. <%-- 增加初始化选项卡json end Ben --%>
  143. tokenCleanser("<ss:serv name='ss.clearPageToken'/>", {tokenList:"<%= pageContext.getAttribute(ss.page.PageC.PAGE_tokenList)%>"});
  144. </script>
  145. <script type="module">
  146. console.log("objChg.jsp");
  147. <%
  148. // System.out.println("@@@@dataType:"+pageContext.getAttribute("dataType"));
  149. String dataType = pageContext.getAttribute("dataType").toString();
  150. if(dataType.equals("change")){
  151. if(request.getAttribute("saveAndCommit")==null)
  152. request.setAttribute("saveAndCommit","dw_bd_tj");
  153. if(request.getAttribute("saveAndCommitDest")==null)
  154. request.setAttribute("saveAndCommitDest","chgSure");
  155. }else {
  156. if(request.getAttribute("saveAndCommit")==null)
  157. request.setAttribute("saveAndCommit","dw_lr_tj");
  158. if(request.getAttribute("saveAndCommitDest")==null)
  159. request.setAttribute("saveAndCommitDest","addSure");
  160. }
  161. if(request.getAttribute("saveAndCommitParam")==null){
  162. String objName = request.getParameter("ssObjName");
  163. String objId = request.getParameter("ssObjId");
  164. request.setAttribute("saveAndCommitParam","\"thisViewObject\":\""+objName+"\",\"dwid\":\""+objId+"\"");
  165. // request.setAttribute("saveAndCommitParam","\"thisViewObject\":\"dw\",\"dwid\":\"1011181\"");
  166. }
  167. if(request.getAttribute("saveAndCommitwidth")==null)
  168. request.setAttribute("saveAndCommitwidth","881");
  169. if(request.getAttribute("saveAndCommitheight")==null)
  170. request.setAttribute("saveAndCommitheight","361");
  171. if(request.getAttribute("saveAndCommitminheight")==null)
  172. request.setAttribute("saveAndCommitminheight","515");
  173. if(request.getAttribute("saveAndCommitmaxheight")==null)
  174. request.setAttribute("saveAndCommitmaxheight","515");
  175. %>
  176. //在本窗口提交表单
  177. function doThisWindowSaveAndCommit(){
  178. let url = null;
  179. //下面这行运行时报错,暂时注释掉
  180. <%--url = "<ss:serv name='${saveAndCommit}' dest='${saveAndCommitDest}' parm='${saveAndCommitParam}' />";--%>
  181. <%--let saveAndCommit = '${saveAndCommit}';--%>
  182. <%--let saveAndCommitDest = '${saveAndCommitDest}';--%>
  183. <%--let saveAndCommitParam = '${saveAndCommitParam}';--%>
  184. <%--let dataType = '${dataType}';--%>
  185. // let url = '';
  186. let width = ${saveAndCommitwidth};
  187. let height = ${saveAndCommitheight};
  188. let minHeight = ${saveAndCommitminheight};
  189. let maxHeight = ${saveAndCommitmaxheight};
  190. const f = document.getElementById("commitForm");
  191. f.action = url;
  192. wd.display.resizeComponent(width, height, minHeight, maxHeight);
  193. f.submit();<%-- 提交表单 --%>
  194. }
  195. const data = {
  196. tabConfig: window.SS.dom.tabConfig.map(tab => ({
  197. ...tab,
  198. cgxList: false,
  199. })),
  200. leftDisplay: true,
  201. footerButtons: [
  202. {
  203. text: "保存并提交",
  204. onclick: function(){
  205. // 左侧区域隐藏
  206. const app = window.SS.dom.currentApp;
  207. // 等待iframe加载完成后执行
  208. const $iframe = $('#sub-tab-iframe');
  209. if ($iframe.length) {
  210. const $saveAndCommitBtn = $iframe.contents().find('#saveAndCommit');
  211. if ($saveAndCommitBtn.length) {
  212. $saveAndCommitBtn.click();
  213. if (app) {
  214. app.$data.leftDisplay = false;
  215. }
  216. $(".sub-tab-iframe").css('display', 'none');
  217. $("#sub-tab-iframe").css('display', '');
  218. } else {
  219. //在本窗口提交表单
  220. doThisWindowSaveAndCommit();
  221. // console.error('未找到保存并提交按钮');
  222. // alert('未找到保存并提交按钮');
  223. }
  224. } else {
  225. //在本窗口提交表单
  226. doThisWindowSaveAndCommit();
  227. // console.error('未找到iframe元素');
  228. }
  229. },
  230. }
  231. ]
  232. }
  233. SS.ready(function () {
  234. const app = window.SS.dom.initializeFormApp({
  235. el: "#app",
  236. data(){
  237. return data;
  238. },
  239. methods:{
  240. handleMenuChange(menu){
  241. console.log('handleMenuChange', menu);
  242. },
  243. async showTagState(url) {
  244. // 从每个tab的url中提取token
  245. const tokenList = this.tabConfig.map(tab => {
  246. const match = /ssToken=([^&]+)/.exec(tab.url);
  247. return match ? match[1] : null;
  248. });
  249. try {
  250. const response = await $.post(url, {
  251. tokenList: JSON.stringify(tokenList)
  252. });
  253. const result = eval("(" + response + ")");
  254. // 更新每个tab的状态
  255. this.tabConfig = this.tabConfig.map((tab, index) => {
  256. console.log('result[index]:', result[index]);
  257. if (!result[index]) return tab;
  258. return {
  259. ...tab,
  260. cgxList: result[index].cgxList === true,
  261. };
  262. });
  263. console.log('更新标签状态成功:', this.tabConfig);
  264. } catch (error) {
  265. console.error('获取标签状态失败:', error);
  266. }
  267. }
  268. },
  269. mounted() {
  270. this.showTagState("<ss:serv name='ss.wrTabState' parm='{ssObjName:"${ssObjName}",ssObjId:"${ssObjId}","${ssObjIdName}":"${ssObjId}",wdConfirmationCaptchaService:"0",dataType:"${dataType}"}'/>");
  271. }
  272. })
  273. window.SS.dom.currentApp = app;
  274. })
  275. </script>