grcz_grtfAdd.jsp 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. <%@ page import="java.util.Map" %>
  2. <%@ page import="java.util.TreeMap" %>
  3. <%@ page language="java" pageEncoding="UTF-8" isELIgnored="false" %>
  4. <%@ taglib uri="/ssTag" prefix="ss"%>
  5. <% pageContext.setAttribute(ss.page.PageC.PAGE_objName,"grcz");%>
  6. <%pageContext.setAttribute("wdpageinformation","{'hastab':'0'}");%>
  7. <!DOCTYPE html>
  8. <html>
  9. <head>
  10. <%@ include file="/page/clip/header.jsp" %>
  11. <style>
  12. .table-container>tr>th{
  13. width:130px !important;
  14. }
  15. /* 把content-box的高度限制 从公共css 抽到具体有需要的页面 by xu 20251215 */
  16. .form-container .content-box {
  17. height: calc(100% - 80px) !important;
  18. }
  19. td{
  20. display: flex;
  21. align-items: center;
  22. justify-content: flex-start;
  23. }
  24. </style>
  25. </head>
  26. <body class="env-input-body">
  27. <form method="post" id="app" class="form-container">
  28. <div class="content-box fit-height-content">
  29. <div class="content-div" ssFith="true">
  30. <table class='form'>
  31. <tr>
  32. <th style="width: 120px">退费类别</th>
  33. <td >
  34. <script>
  35. ss.dom.formElemConfig.grczlbm={val:'11',type:window.ss.dom.TYPE.ONOFFBTN};
  36. </script>
  37. <%
  38. Map<Integer,String > grczlbMap = (Map)(request.getAttribute("grczlbMap"));
  39. for (Integer key : grczlbMap.keySet()) {
  40. pageContext.setAttribute("k",key);
  41. pageContext.setAttribute("v",grczlbMap.get(key));
  42. %>
  43. <ss-onoff
  44. v-model="grczlbm"
  45. name="grczlbm"
  46. label="${v}"
  47. value="${k}"
  48. :multiple="false"
  49. :null="false"
  50. placeholder="${v}"
  51. v-model="grczlbm"
  52. :readonly="false"
  53. ></ss-onoff>
  54. <%
  55. }
  56. %>
  57. </td>
  58. </tr>
  59. <%-- 再改,合并到 "班级" 里。Lin
  60. <tr>
  61. <th>人员类别</th>
  62. <td >
  63. <onoff@ss name="rylbm" mode="edit" rad="true" null="false" val="1100" />
  64. <@input name="rylbm" value="学员" ssVal="1100" />
  65. <@input name="rylbm" value="职工亲属" ssVal="1000" />
  66. </td>
  67. </tr>
  68. --%>
  69. <tr>
  70. <th>班级/亲属</th>
  71. <td >
  72. <script>
  73. ss.dom.formElemConfig.bjid={val:null,type:window.ss.dom.TYPE.OBJP};
  74. </script>
  75. <ss-objp
  76. :opt="bjidOption"
  77. :inp="true"
  78. url="<ss:serv name='loadObjpOpt' parm='{"objectpickerdropdown":"1"}' />"
  79. cb="bj"
  80. v-model="bjid"
  81. name="bjid"
  82. :readonly="false"
  83. width="200px"
  84. onChange="handleBjChange"
  85. ></ss-objp>
  86. <script>
  87. ss.dom.formElemConfig.rylbm={val:'1100',type:window.ss.dom.TYPE.ONOFFBTN};
  88. </script>
  89. <ss-onoff
  90. v-model="rylbm"
  91. name="rylbm"
  92. label="职工亲属"
  93. value="1000"
  94. :multiple="true"
  95. :null="false"
  96. placeholder="职工亲属"
  97. v-model="rylbm"
  98. :readonly="false"
  99. onchange="handleRylbmChange"
  100. ></ss-onoff>
  101. </td>
  102. </tr>
  103. <%-- 先去掉,接入读卡器时再加。Lin
  104. <tr>
  105. <th>卡号</th>
  106. <td >
  107. <@input name="kah"/>
  108. </td>
  109. </tr>
  110. --%>
  111. <tr>
  112. <th>人员</th>
  113. <td>
  114. <input name="czryid" type="hidden" value='${sessionScope.ssUser.ryid}'/> <%-- 操作人员ID。Lin --%>
  115. <script>
  116. ss.dom.formElemConfig.ryid={val:null,type:window.ss.dom.TYPE.OBJP};
  117. </script>
  118. <ss-objp
  119. :opt="ryidOption"
  120. :inp="true"
  121. url="<ss:serv name='loadObjpOpt' parm='{"objectpickerdropdown":"1","objectpickerfilterField":"bjid,rylbm"}' />"
  122. cb="ryByBjOrRylb"
  123. v-model="ryid"
  124. name="ryid"
  125. :readonly="false"
  126. filterField="bjid,rylbm"
  127. onChange="selBaseInfoByRyid"
  128. ></ss-objp>
  129. </td>
  130. </tr>
  131. <tr>
  132. <th>部门/班级</th>
  133. <td id='bmbj'></td>
  134. </tr>
  135. <tr>
  136. <th>姓名</th>
  137. <td id='xm'></td>
  138. </tr>
  139. <tr>
  140. <th>人员号</th>
  141. <td id='ryh'></td>
  142. </tr>
  143. <tr>
  144. <th>金额</th>
  145. <td><input name="je"/></td>
  146. </tr>
  147. <tr>
  148. <th>描述</th>
  149. <td><input name="ms"/></td>
  150. </tr>
  151. </table>
  152. </div>
  153. <div class='bottom-div'>
  154. <ss-bottom-button
  155. id="saveAndCommit"
  156. text="保存并提交"
  157. onclick='ss.form.submit({url:"<ss:serv name='grcz_lr_tj' dest='addSure' parm='{thisViewObject:"grcz",dataType:"update"}'/>",width:881,height:361,minHeight:515,maxHeight:515,targetWin:null});'<%-- 最后一个参数原来为targetWin:parent导致刷新了顶层窗口,改为null Ben(20251215) --%>
  158. icon-class="bottom-div-save"
  159. ></ss-bottom-button>
  160. <ss-bottom-button
  161. text="关闭"
  162. onclick='ss.display.closeDialog();'
  163. icon-class="bottom-div-close"
  164. ></ss-bottom-button>
  165. </div>
  166. <input name='wdComponentID' type='hidden' value='grcz_grtfAdd'/></div></form>
  167. <script type="text/javascript">var wdRecordValue='${wdRecordValue}';</script>
  168. <script type="text/javascript" src="/ss/js/wdRecord.js"></script>
  169. <script type="text/javascript">(function(){wdRecord("grcz_grtfAdd");})();</script>
  170. <script type="text/javascript" src="/ss/js/wdFitHeight.js"></script>
  171. <script type="text/javascript">initWdFitHeight(0)</script>
  172. <script type="text/javascript">initWdFitHeightFunction=function(){initWdFitHeight(0);};</script>
  173. <ss:equal val="${empty resizeComponent}" val2="false">
  174. <script>{var iframe=wd.display.getFrameOfWindow();
  175. if(iframe&&iframe.contentWindow==window)
  176. wd.display.resizeComponent(${resizeComponent.width}, ${resizeComponent.height}, ${empty resizeComponent.minHeight?'null':resizeComponent.minHeight}, ${empty resizeComponent.maxHeight?'null':resizeComponent.maxHeight});}</script>
  177. </ss:equal>
  178. <ss:help/>
  179. </body>
  180. <script type="text/javascript">
  181. try{wd.display.showMsgPopup('${msg}');
  182. }catch(err){console.error(err);}
  183. </script>
  184. <ss:equal val="${empty wdclosewindowparam}" val2="false">
  185. <script type="text/javascript">
  186. try{wd.display.setCloseWindowParam('${wdclosewindowparam}');
  187. }catch(err){console.error(err);}
  188. </script>
  189. </ss:equal>
  190. </html>
  191. <%@ include file="/page/clip/footer.jsp" %>
  192. <script>
  193. function getFormAppVm(){
  194. var appEl = document.getElementById("app");
  195. if (!appEl || !appEl.__vue_app__ || !appEl.__vue_app__._instance) {
  196. return null;
  197. }
  198. return appEl.__vue_app__._instance.proxy || null;
  199. }
  200. function normalizeRylbmValues(value){
  201. if (Array.isArray(value)) {
  202. return value.map(function(item){
  203. return item == null ? "" : item.toString();
  204. }).filter(Boolean);
  205. }
  206. if (value == null || value === "") {
  207. return [];
  208. }
  209. var cleanValue = value.toString().replace(/^,+/, "");
  210. if (!cleanValue) {
  211. return [];
  212. }
  213. return cleanValue.split(/[,|]/).filter(Boolean);
  214. }
  215. function hasRelativeRylbmValue(value){
  216. return normalizeRylbmValues(value).indexOf("1000") !== -1;
  217. }
  218. function clearRyDisplay(){
  219. var bmbjEl = document.getElementById('bmbj');
  220. var xmEl = document.getElementById('xm');
  221. var ryhEl = document.getElementById('ryh');
  222. if (bmbjEl) bmbjEl.innerHTML = "";
  223. if (xmEl) xmEl.innerHTML = "";
  224. if (ryhEl) ryhEl.innerHTML = "";
  225. }
  226. function clearRySelection(vm){
  227. if (!vm) {
  228. clearRyDisplay();
  229. return;
  230. }
  231. vm.ryid = "";
  232. clearRyDisplay();
  233. }
  234. function handleRylbmChange(groupValue){
  235. if (!hasRelativeRylbmValue(groupValue)) {
  236. return;
  237. }
  238. var vm = getFormAppVm();
  239. if (!vm) {
  240. clearRyDisplay();
  241. return;
  242. }
  243. vm.bjid = "";
  244. clearRySelection(vm);
  245. }
  246. function handleBjChange(value){
  247. if (value == null || value === "") {
  248. return;
  249. }
  250. var vm = getFormAppVm();
  251. if (!vm) {
  252. clearRyDisplay();
  253. return;
  254. }
  255. if (hasRelativeRylbmValue(vm.rylbm)) {
  256. vm.rylbm = "1100";
  257. }
  258. clearRySelection(vm);
  259. }
  260. function selBaseInfoByRyid(value){
  261. $.ajax({
  262. url:"<ss:serv name='ry_selBaseInfoByRyid'/>",
  263. type:"post",
  264. data:{
  265. ryid:value
  266. },
  267. dataType:"json",
  268. success:function(data){
  269. if (data.ssCode != 0) {
  270. alert(data.ssMsg);
  271. return;
  272. }
  273. var d = data.ssData;
  274. document.getElementById('xm').innerHTML = d.xm;
  275. document.getElementById('ryh').innerHTML = d.ryh;
  276. if (d.rylbm != 1100) { // 不是学员。Lin
  277. if (d.bmmc)
  278. document.getElementById('bmbj').innerHTML = d.bmmc;
  279. else
  280. document.getElementById('bmbj').innerHTML = "(无)";
  281. } else {
  282. if (d.bjmc)
  283. document.getElementById('bmbj').innerHTML = d.bjmc;
  284. else
  285. document.getElementById('bmbj').innerHTML = "(无)";
  286. }
  287. }
  288. });
  289. }
  290. </script>