wp_rkHome.ss.jsp 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title></title>
  5. <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  6. <style>
  7. .modal-overlay {
  8. display: none;
  9. position: fixed;
  10. top: 0;
  11. left: 0;
  12. width: 100%;
  13. height: 100%;
  14. background-color: rgba(0, 0, 0, 0.5);
  15. z-index: 1000;
  16. }
  17. .modal-iframe {
  18. position: fixed;
  19. top: 50%;
  20. left: 50%;
  21. transform: translate(-50%, -50%);
  22. width: 500px;
  23. height: 300px;
  24. background-color: white;
  25. border: none;
  26. border-radius: 5px;
  27. z-index: 1001;
  28. }
  29. .item-container {
  30. margin: 10px;
  31. padding: 10px;
  32. border: 1px solid #ddd;
  33. border-radius: 4px;
  34. display: flex;
  35. justify-content: space-between;
  36. align-items: center;
  37. }
  38. .delete-btn {
  39. background-color: #ff4444;
  40. color: white;
  41. border: none;
  42. padding: 5px 10px;
  43. border-radius: 3px;
  44. cursor: pointer;
  45. }
  46. .delete-btn:hover {
  47. background-color: #cc0000;
  48. }
  49. #add-btn {
  50. margin: 10px;
  51. padding: 10px 20px;
  52. background-color: #4CAF50;
  53. color: white;
  54. border: none;
  55. border-radius: 4px;
  56. cursor: pointer;
  57. }
  58. #add-btn:hover {
  59. background-color: #45a049;
  60. }
  61. #items-list {
  62. margin: 20px;
  63. }
  64. </style>
  65. </head>
  66. <body>
  67. <%-- 改,用 <datep@ss 写法。Lin
  68. <in@put type='text' name='rksj' onClick="wd.edit.datePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})" value=""/>
  69. --%>
  70. <%-- 去掉,用数据库默认时间。Lin
  71. <in@put type='text' name='cqsj'/>
  72. <datep@ss name="cqsj" fmt="yyyy-MM-dd HH:mm:ss"/>
  73. --%>
  74. <equal.ss val="${type}" val2="rk">
  75. <button id="add-btn" onclick='<serv.ss dlg="true" dest="wp_excelRkAdd" parm="{type:&quot;rk&quot;}"/>'>录入入库物品</button>
  76. <div><span>物品名称|供应商名称|计量单位|数量|单价|金额</span></div>
  77. </equal.ss>
  78. <equal.ss val="${type}" val2="pf">
  79. <input name="bmid" placeholder="领用部门" width="195px"/>
  80. <input name="ryid" placeholder="领用人员" width="150px"/>
  81. <ccp.ss name="bm_ry"/>
  82. <input name="wplylbm" placeholder="领用类别" width="150px"/>
  83. <objp.ss name="wplylbm" cb="wplylb"/>
  84. <button id="add-btn" onclick='initPfEdit()'>录入派发物品</button>
  85. <div><span>物品名称|库存数量|计量单位|数量</span></div>
  86. </equal.ss>
  87. <div id="items-list"></div>
  88. <form action="" name="rkForm" method="post">
  89. <equal.ss val="${type}" val2="pf">
  90. <input type="hidden" name="bmid"/>
  91. <input type="hidden" name="ryid"/>
  92. <input type="hidden" name="wplylbm"/>
  93. </equal.ss>
  94. <input type="hidden" name="rkList"/>
  95. <div class="bottom-div">
  96. <div class="bottom-down-div">
  97. <input type="button" value="提交" class="bottom-button" onclick="tjConfirm()"/>
  98. <input type="button" value="取消" class="bottom-button" onclick="wd.display.closeDialog();">
  99. </div>
  100. </div>
  101. </form>
  102. <script>
  103. /* 去掉,用数据库默认时间。Lin
  104. $(function(){
  105. var time = new Date().format("yyyy-MM-dd hh:mm:ss");
  106. $("input[name='cqsj']").val(time);
  107. });
  108. */
  109. function initPfEdit() {
  110. var bmid = wd.edit.objectPicker.instance.bmid.getValue();
  111. if (!bmid) {
  112. wd.display.alert("请先录入部门");
  113. return;
  114. }
  115. var url = '<serv.ss dlg="true" dest="wp_excelRkAdd" parm="{type:&quot;pf&quot;,bmid:&quot;ssVal{bmid}&quot;}"/>';
  116. var json = JSON.parse('{"bmid":"'+ bmid +'"}');
  117. url = wd.display.replaceDynamicParam(url, json);
  118. eval(url);
  119. }
  120. var recordsArray = [];
  121. function tjConfirm(){
  122. if (recordsArray.length == 0) {
  123. wd.display.alert("请先录入物品");
  124. return;
  125. }
  126. if ('${type}' == "pf") {
  127. var bmid = wd.edit.objectPicker.instance.bmid.getValue();
  128. if (!bmid) {
  129. wd.display.alert("请先录入领用部门");
  130. return;
  131. }
  132. var ryid = wd.edit.objectPicker.instance.ryid.getValue();
  133. if (!ryid) {
  134. wd.display.alert("请先录入领用人员");
  135. return;
  136. }
  137. var wplylbm = wd.edit.objectPicker.instance.wplylbm.getValue();
  138. if (!wplylbm) {
  139. wd.display.alert("请先录入领用类别");
  140. return;
  141. }
  142. }
  143. wd.display.confirm(" ","请仔细核对,提交后将正式生效",function(){submitForm()},function(){return;});
  144. }
  145. function submitForm() {
  146. /* 去掉,移到 tjConfirm() -- 先检查,再确认。Lin
  147. if (recordsArray.length == 0) {
  148. wd.display.alert("请先录入物品");
  149. return;
  150. }
  151. */
  152. var rkDataList = [];
  153. for (var i = 0; i < recordsArray.length; i ++) {
  154. var item = recordsArray[i];
  155. /* 去掉,提前在 wp_excelRkAdd.ss.jsp 里检查 -- 需要的话。Lin
  156. if (item.dj > 0) { // .sl(数量),从 wp_excelRkAdd.ss.jsp 传到 wp_rkHome.ss.jsp 已确定有录入了。Lin
  157. */
  158. var record = { // 派发,不需要加 kcsl:(库存数量) -- 不从页面传入,从数据库读取。Lin
  159. wpid: item.wpid,
  160. gysid: item.gysid,
  161. sl: item.sl,
  162. dj: item.dj,
  163. };
  164. rkDataList.push(record);
  165. /* 去掉,提前在 wp_excelRkAdd.ss.jsp 里检查 -- 需要的话。Lin
  166. } else {
  167. wd.display.alert("需要录入单价");
  168. return;
  169. }
  170. */
  171. }
  172. $("[name=rkList]").val(JSON.stringify(rkDataList));
  173. var f = $('form[name="rkForm"]');
  174. if ('${type}' == "rk") {
  175. f.attr('action', "<serv.ss name='wp_excelSureRk' dest='info'/>");
  176. } else {
  177. var bmid = wd.edit.objectPicker.instance.bmid.getValue();
  178. var ryid = wd.edit.objectPicker.instance.ryid.getValue();
  179. var wplylbm = wd.edit.objectPicker.instance.wplylbm.getValue();
  180. $("[name=bmid]").val(bmid);
  181. $("[name=ryid]").val(ryid);
  182. $("[name=wplylbm]").val(wplylbm);
  183. f.attr('action', "<serv.ss name='wp_excelSurePf' dest='info'/>");
  184. }
  185. f.submit();
  186. }
  187. // ---
  188. function schx(data){
  189. // if (data.action === 'close') {
  190. // // 处理关闭消息
  191. // $('.modal-overlay').hide();
  192. // return;
  193. // }
  194. // 遍历items数组,为每个item创建或更新记录
  195. for (var i = 0; i < data.length; i++) { // < data.items.length;。Lin
  196. var item = data[i];
  197. // 检查是否已存在相同ID的记录
  198. var existingRecordIndex = recordsArray.findIndex(function(record) {
  199. /* 改,改用 wpid。Lin
  200. return record.id === item.id;
  201. */ return record.wpid === item.wpid;
  202. });
  203. // 如果数量为0,删除已存在的记录
  204. /* 去掉,不会发送 数量 为 0 的记录。Lin
  205. if (item.quantity === 0) {
  206. if (existingRecordIndex !== -1) {
  207. // 从DOM中删除元素
  208. var recordId = recordsArray[existingRecordIndex].recordId;
  209. $('.item-container[data-record-id="' + recordId + '"]').remove();
  210. // 从数组中删除记录
  211. recordsArray.splice(existingRecordIndex, 1);
  212. }
  213. continue; // 跳过后续处理
  214. }
  215. */
  216. // 如果数量不为0,更新已存在的记录
  217. if (existingRecordIndex !== -1) {
  218. // 更新已存在的记录
  219. var existingRecord = recordsArray[existingRecordIndex];
  220. /* 改,来真的了。Lin
  221. existingRecord.quantity = item.quantity;
  222. */
  223. existingRecord.sl = item.sl;
  224. existingRecord.dj = item.dj;
  225. existingRecord.je = item.je;
  226. // 更新DOM显示
  227. /* 改,来真的了 -- 改用 .wpid。Lin
  228. var existingContainer = $('.item-container[data-record-id="' + existingRecord.recordId + '"]');
  229. existingContainer.find('.item-content').html('项目' + existingRecord.id + ': ' + existingRecord.quantity + '个');
  230. */
  231. var existingContainer = $('.item-container[data-record-id="' + existingRecord.wpid + '"]');
  232. if ('${type}' == "rk")
  233. existingContainer.find('.item-content').html(existingRecord.wpmc +'|'+ existingRecord.gysmc +'|'+ existingRecord.jldwmc +'|'+
  234. existingRecord.sl +'|'+ existingRecord.dj +'|'+ existingRecord.je);
  235. else
  236. existingContainer.find('.item-content').html(existingRecord.wpmc +'|'+ existingRecord.kcsl +'|'+ existingRecord.jldwmc +'|'+
  237. existingRecord.sl);
  238. } else {
  239. // 创建新记录
  240. var record = {
  241. /* 改,来真的了 -- 改用 .wpid。Lin
  242. id: item.id,
  243. quantity: item.quantity,
  244. recordId: 'record_' + Date.now() + '_' + i
  245. */
  246. wpid: item.wpid,
  247. wpmc: item.wpmc,
  248. gysid: item.gysid,
  249. gysmc: item.gysmc,
  250. kcsl: item.kcsl, // 派发,增加 kcsl:(库存数量)。Lin
  251. jldwmc: item.jldwmc,
  252. sl: item.sl,
  253. dj: item.dj,
  254. je: item.je
  255. };
  256. // 将记录添加到数组
  257. recordsArray.push(record);
  258. // 创建新的DOM元素
  259. var container = $('<div>')
  260. .addClass('item-container')
  261. /* 改,改用 .wpid。Lin
  262. .attr('data-record-id', record.recordId);
  263. */ .attr('data-record-id', record.wpid);
  264. var content = $('<div>').addClass('item-content');
  265. /* 改,来真的了 -- 改用 .wpid。Lin
  266. content.append('项目' + record.id + ': ' + record.quantity + '个');
  267. */
  268. if ('${type}' == "rk")
  269. content.append(record.wpmc +'|'+ record.gysmc +'|'+ record.jldwmc +'|'+ record.sl +'|'+ record.dj +'|'+ record.je);
  270. else
  271. content.append(record.wpmc +'|'+ record.kcsl +'|'+ record.jldwmc +'|'+ record.sl);
  272. // 创建删除按钮
  273. var deleteBtn = $('<button>').addClass('delete-btn').text('删除');
  274. // 组装DOM
  275. container.append(content).append(deleteBtn);
  276. $('#items-list').append(container);
  277. }
  278. }
  279. // 用于调试:在控制台显示当前数组内容
  280. console.log('当前记录数组:', recordsArray);
  281. }
  282. // ===
  283. $(document).ready(function() {
  284. // 创建一个数组来保存所有记录
  285. /* 去掉,移高一层 -- 使独立的功能 schx( 能访问到 -- SS 弹出窗口 wp_excelRkAdd.ss.jsp 调用 schx(。Lin,
  286. var recordsArray = [];
  287. */
  288. // // 显示弹窗
  289. // $('#add-btn').click(function() {
  290. // $('.modal-overlay').show();
  291. // });
  292. /* 去掉,移高一层,作为独立的功能 schx( -- SS 弹出窗口 wp_excelRkAdd.ss.jsp 调用。Lin,
  293. // 监听iframe发送的消息
  294. window.addEventListener('message', function(event) {
  295. const data = event.data;
  296. // if (data.action === 'close') {
  297. // // 处理关闭消息
  298. // $('.modal-overlay').hide();
  299. // return;
  300. // }
  301. // 遍历items数组,为每个item创建或更新记录
  302. for (var i = 0; i < data.length; i++) { // < data.items.length;。Lin
  303. var item = data[i];
  304. // 检查是否已存在相同ID的记录
  305. var existingRecordIndex = recordsArray.findIndex(function(record) {
  306. /// * 改,改用 wpid。Lin
  307. // return record.id === item.id;
  308. /// *
  309. return record.wpid === item.wpid;
  310. });
  311. // 如果数量为0,删除已存在的记录
  312. /// * 去掉,不会发送 数量 为 0 的记录。Lin
  313. // if (item.quantity === 0) {
  314. // if (existingRecordIndex !== -1) {
  315. // // 从DOM中删除元素
  316. // var recordId = recordsArray[existingRecordIndex].recordId;
  317. // $('.item-container[data-record-id="' + recordId + '"]').remove();
  318. // // 从数组中删除记录
  319. // recordsArray.splice(existingRecordIndex, 1);
  320. // }
  321. // continue; // 跳过后续处理
  322. // }
  323. /// *
  324. // 如果数量不为0,更新已存在的记录
  325. if (existingRecordIndex !== -1) {
  326. // 更新已存在的记录
  327. var existingRecord = recordsArray[existingRecordIndex];
  328. /// * 改,来真的了。Lin
  329. // existingRecord.quantity = item.quantity;
  330. /// *
  331. existingRecord.sl = item.sl;
  332. existingRecord.dj = item.dj;
  333. existingRecord.je = item.je;
  334. // 更新DOM显示
  335. /// * 改,来真的了 -- 改用 .wpid。Lin
  336. // var existingContainer = $('.item-container[data-record-id="' + existingRecord.recordId + '"]');
  337. // existingContainer.find('.item-content').html('项目' + existingRecord.id + ': ' + existingRecord.quantity + '个');
  338. /// *
  339. var existingContainer = $('.item-container[data-record-id="' + existingRecord.wpid + '"]');
  340. existingContainer.find('.item-content').html(existingRecord.wpmc +'|'+ existingRecord.gysmc +'|'+ existingRecord.jldwmc +'|'+
  341. existingRecord.sl +'|'+ existingRecord.dj +'|'+ existingRecord.je);
  342. } else {
  343. // 创建新记录
  344. var record = {
  345. /// * 改,来真的了 -- 改用 .wpid。Lin
  346. // id: item.id,
  347. // quantity: item.quantity,
  348. // recordId: 'record_' + Date.now() + '_' + i
  349. /// *
  350. wpid: item.wpid,
  351. wpmc: item.wpmc,
  352. gysmc: item.gysmc,
  353. jldwmc: item.jldwmc,
  354. sl: item.sl,
  355. dj: item.dj,
  356. je: item.je
  357. };
  358. // 将记录添加到数组
  359. recordsArray.push(record);
  360. // 创建新的DOM元素
  361. var container = $('<div>')
  362. .addClass('item-container')
  363. /// * 改,改用 .wpid。Lin
  364. // .attr('data-record-id', record.recordId);
  365. /// *
  366. .attr('data-record-id', record.wpid);
  367. var content = $('<div>').addClass('item-content');
  368. /// * 改,来真的了 -- 改用 .wpid。Lin
  369. // content.append('项目' + record.id + ': ' + record.quantity + '个');
  370. /// *
  371. content.append(record.wpmc +'|'+ record.gysmc +'|'+ record.jldwmc +'|'+ record.sl +'|'+ record.dj +'|'+ record.je);
  372. // 创建删除按钮
  373. var deleteBtn = $('<button>').addClass('delete-btn').text('删除');
  374. // 组装DOM
  375. container.append(content).append(deleteBtn);
  376. $('#items-list').append(container);
  377. }
  378. }
  379. // 用于调试:在控制台显示当前数组内容
  380. console.log('当前记录数组:', recordsArray);
  381. });
  382. */
  383. // 删除功能
  384. $(document).on('click', '.delete-btn', function() {
  385. var container = $(this).closest('.item-container');
  386. var recordId = container.attr('data-record-id');
  387. // 从数组中删除对应的记录
  388. recordsArray = recordsArray.filter(function(record) {
  389. /* 改,改用 .wpid。Lin
  390. return record.recordId !== recordId;
  391. */ return record.wpid !== recordId;
  392. });
  393. // 从DOM中删除元素
  394. container.remove();
  395. // 用于调试:在控制台显示当前数组内容
  396. console.log('删除后的记录数组:', recordsArray);
  397. });
  398. });
  399. </script>
  400. </body>
  401. </html>