wp_excelRkAdd.ss.jsp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392
  1. <html>
  2. <head>
  3. <style type="text/css">
  4. .left-div, .right-div {
  5. float: left;
  6. /*width: 48%;*/
  7. height: 94%;
  8. box-sizing: border-box;
  9. position: relative;
  10. }
  11. .left-div {
  12. width: 37%;
  13. }
  14. .right-div {
  15. width: 62.7%;
  16. }
  17. table.list {
  18. margin-left: 0px !important;
  19. }
  20. table.list th{
  21. /* width: 158px;*/
  22. }
  23. table.list td{
  24. /* width: 158px;*/
  25. }
  26. .list-div tr {
  27. border-bottom: 1px solid #e4e4e4;
  28. background-color: #f0f0f0;
  29. }
  30. .list-div tr:hover {
  31. border-bottom: 1px solid #e4e4e4;
  32. background-color: #c7e3fc;
  33. }
  34. .list tr:nth-child(even):hover {
  35. background-color:#c7e3fc;
  36. }
  37. .list-div td {
  38. /*max-width: 140px !important;*/
  39. padding: 0px 12px 0px 12px !important;
  40. }
  41. .list-div th {
  42. padding: 0px 12px 0px 12px !important;
  43. }
  44. .left-button {
  45. width: 100%;
  46. float: left;
  47. text-align: center;
  48. position: absolute;
  49. bottom: 0;
  50. }
  51. .left-div {
  52. margin-right: 1px;
  53. }
  54. .times {
  55. width: 80px !important;
  56. }
  57. .form-text {
  58. overflow: hidden;
  59. text-overflow: ellipsis;
  60. white-space: nowrap;
  61. }
  62. .cjfs {
  63. width: 60px !important;
  64. }
  65. .list tr td {
  66. padding-right: 28px;
  67. }
  68. input::-webkit-outer-spin-button, input::-webkit-inner-spin-button {
  69. -webkit-appearance: none;
  70. }
  71. input[type="text"] {
  72. -moz-appearance: textfield;
  73. width: 65px;
  74. text-align: right;
  75. }
  76. .content-div {
  77. padding-right:15px!important;
  78. }
  79. .xylist {
  80. display: block;
  81. height: 630px;
  82. overflow-y: auto;
  83. }
  84. .list tr{
  85. display: table;
  86. width: 100%;
  87. table-layout: fixed;
  88. }
  89. .list-highlight {
  90. color: #2b368f!important;
  91. font-size: 14px!important;
  92. }
  93. </style>
  94. <script type="text/javascript">
  95. console.log("start!!!");
  96. function loadXsCj(e){
  97. console.log("loadXsCj");
  98. var gysid;
  99. if ('${type}' == "rk")
  100. gysid = wd.edit.objectPicker.instance.gys.getValue();
  101. else
  102. gysid = wd.edit.objectPicker.instance.wplymb.getValue();
  103. var mc = document.getElementById('mc').value;
  104. var url;
  105. if ('${type}' == "rk")
  106. url = "<serv.ss name='wp_excelSearchRk'/>";
  107. else
  108. url = "<serv.ss name='wp_excelSearchPf'/>";
  109. $.ajax({
  110. url : url,
  111. type : 'post',
  112. async : false,
  113. dataType: "json", // 增加。Lin
  114. data : {
  115. 'gysid' : gysid,
  116. 'mc': mc
  117. },
  118. success : function(result) {
  119. if (result.msg) {
  120. alert(result.msg);
  121. return;
  122. }
  123. $('.xylist')[0].innerHTML=''; // 删除之前的。Lin
  124. var stuData = result;
  125. for (var i in stuData) {
  126. console.log(stuData[i]);
  127. var stu = stuData[i];
  128. var str = "<tr>";
  129. if ('${type}' == "rk") {
  130. str += "<input type='hidden' value='"+ stu.wpid +"' name='wpid' dataFlag='data' rowNo='"+ i +"'/>";
  131. str += "<input type='hidden' value='"+ ((stu.gysid)? stu.gysid : "") +"' name='gysid' dataFlag='data' rowNo='"+ i +"'/>";
  132. str += "<td style='width:120px;' class='list-highlight'>"+
  133. "<input type='text' readonly='true' value='"+ stu.wpmc +"' name='wpmc' dataFlag='data' rowNo='"+ i +"'/>"+
  134. "</td>";
  135. str += "<td style='width:100px;' class='list-highlight'>"+
  136. "<input type='text' readonly='true' value='"+ ((stu.gysmc)? stu.gysmc : "") +"' name='gysmc' dataFlag='data' rowNo='"+ i +"'/>"+
  137. "</td>";
  138. str += "<td style='width:60px;' class='list-highlight'>"+
  139. "<input type='text' readonly='true' value='"+ stu.jldwmc +"' name='jldwmc' dataFlag='data' rowNo='"+ i +"'/>"+
  140. "</td>";
  141. // 数量。Lin
  142. str += "<td style='width:80px;text-align: right;'>" +
  143. "<input type='text' name='sl' tab='tabField' dataFlag='data' rowNo='"+ i +"'"+
  144. " onfocus='keydown_to_tab(this)' onkeypress='if(event.keyCode==13) focusNextInput(this);'/>" +
  145. "</td>";
  146. // 单价。Lin
  147. str += "<td style='width:80px;text-align: right;'>"+
  148. "<input type='text' value='"+ stu.dj +"' name='dj' tab='tabField' dataFlag='data' rowNo='"+ i +"'"+
  149. " onfocus='keydown_to_tab(this)' onkeypress='if(event.keyCode==13) focusNextInput(this);'/>" +
  150. "</td>";
  151. // 金额。Lin
  152. str += "<td style='width:80px;text-align: right;'>" +
  153. "<input type='text' readonly='true' name='je' dataFlag='data' rowNo='"+ i +"'/>"+
  154. "</td>";
  155. } else {
  156. str += "<input type='hidden' value='"+ stu.wpid +"' name='wpid' dataFlag='data' rowNo='"+ i +"'/>";
  157. str += "<input type='hidden' value='"+ ((stu.gysid)? stu.gysid : "") +"' name='gysid' dataFlag='data' rowNo='"+ i +"'/>";
  158. str += "<td style='width:120px;' class='list-highlight'>"+
  159. "<input type='text' readonly='true' value='"+ stu.wpmc +"' name='wpmc' dataFlag='data' rowNo='"+ i +"'/>"+
  160. "</td>";
  161. str += "<td style='width:100px;' class='list-highlight'>"+
  162. "<input type='text' readonly='true' value='"+ stu.kcsl +"' name='kcsl' dataFlag='data' rowNo='"+ i +"'/>"+
  163. "</td>";
  164. str += "<td style='width:60px;' class='list-highlight'>"+
  165. "<input type='text' readonly='true' value='"+ stu.jldwmc +"' name='jldwmc' dataFlag='data' rowNo='"+ i +"'/>"+
  166. "</td>";
  167. // 数量。Lin
  168. str += "<td style='width:80px;text-align: right;'>" +
  169. "<input type='text' name='sl' tab='tabField' dataFlag='data' rowNo='"+ i +"'"+
  170. " onfocus='keydown_to_tab(this)' onkeypress='if(event.keyCode==13) focusNextInput(this);'/>" +
  171. "</td>";
  172. }
  173. str += "</tr>";
  174. $('.xylist').append($(str));
  175. }
  176. }
  177. });
  178. }
  179. </script>
  180. </head>
  181. <body>
  182. <!-- 查询 -->
  183. <%-- 再改,点击 保存 按钮后不能关闭弹出窗口的问题 -- <form action= 里增加 dest=。Lin
  184. <form action="" name="cjform" method="post"> --%>
  185. <input type="hidden" name="xxx" value="${dataType}" />
  186. <%--<in@put type="hidden" name="rcid" value="${rcid}" />--%>
  187. <div class="content-div" >
  188. <equal.ss val="${type}" val2="rk">
  189. <input name="gys" placeholder="供应商" type="hidden" width="200px"/>
  190. <objp.ss name="gys" cb="gys"/>
  191. </equal.ss>
  192. <equal.ss val="${type}" val2="pf">
  193. <input name="wplymb" placeholder="物品领用模板" type="hidden" width="200px"/>
  194. <objp.ss name="wplymb" cb="wplymbByBm" filter="{bmid:${bmid}}"/>
  195. </equal.ss>
  196. <input id="mc" name="mc" placeholder="物品名称" type="text">
  197. <input type="button" class="content-invertButton" value="查询" onclick="loadXsCj()" />
  198. </div>
  199. <div class="list-div list-search-div" style="height: 90% overflow-x:hidden; min-height:80%;">
  200. <table class="list aa" style=" float:right;width:100%!important;">
  201. <thead style="width: 100%">
  202. <tr style="border:none;">
  203. <equal.ss val="${type}" val2="rk">
  204. <th style="padding: 0 0 0 12px;width: 120px;">物品</th>
  205. <th style="width:100px;">供应商</th>
  206. <th style="width:60px;">计量单位</th>
  207. <th style="width:80px;">数量</th>
  208. <th style="width:80px;">单价</th>
  209. <th style="width:80px;">金额</th>
  210. </equal.ss>
  211. <equal.ss val="${type}" val2="pf">
  212. <th style="padding: 0 0 0 12px;width: 120px;">物品</th>
  213. <th style="width:100px;">库存数量</th>
  214. <th style="width:60px;">计量单位</th>
  215. <th style="width:80px;">数量</th>
  216. </equal.ss>
  217. </tr>
  218. </thead>
  219. <tbody class="xylist scrollbar" ssOddClazz="list-odd" ssEvenClazz="list-even" ssHovClazz="list-hover" ssFith="{list:true,rowHeight:35}" >
  220. </tbody>
  221. </table>
  222. </div>
  223. <div class="bottom-div">
  224. <equal.ss val='${dataType=="play"}' val2="false">
  225. <div class="bottom-down-div">
  226. <input type="button" value="保存" class="bottom-button" onclick="sendDataToParent()"/>
  227. <input type="button" value="关闭" class="bottom-button" onclick="wd.display.closeDialog();">
  228. </div>
  229. </equal.ss>
  230. </div>
  231. </body>
  232. <script type="text/javascript">
  233. if ('${type}' == "rk")
  234. wd.edit.objectPicker.instance.gys.onchange = loadXsCj; // 需要放在 <objp.ss 后面。Lin
  235. else
  236. wd.edit.objectPicker.instance.wplymb.onchange = loadXsCj; // 需要放在 <objp.ss 后面。Lin
  237. function sendDataToParent() {
  238. var inputs = $("input[dataFlag='data']");
  239. // 收集所有有数量的输入项
  240. const data = [];
  241. var curRowNo = 0;
  242. var item = [];
  243. var wpid, wpmc, gysid, gysmc, kcsl, jldwmc, sl, dj, je;
  244. for (let i = 0; i < inputs.length; i ++) {
  245. var rowNo = inputs[i].getAttribute("rowNo");
  246. var colName = inputs[i].getAttribute("name");
  247. if (rowNo == curRowNo) {
  248. switch (colName) {
  249. case 'wpid':
  250. wpid = inputs[i].value;
  251. break;
  252. case 'wpmc':
  253. wpmc = inputs[i].value;
  254. break;
  255. case 'gysid':
  256. gysid = inputs[i].value;
  257. break;
  258. case 'gysmc':
  259. gysmc = inputs[i].value;
  260. break;
  261. case 'kcsl':
  262. kcsl = inputs[i].value;
  263. break;
  264. case 'jldwmc':
  265. jldwmc = inputs[i].value;
  266. break;
  267. case 'sl':
  268. sl = inputs[i].value;
  269. break;
  270. case 'dj':
  271. dj = inputs[i].value;
  272. break;
  273. case 'je':
  274. je = inputs[i].value;
  275. break;
  276. }
  277. } else {
  278. curRowNo = rowNo;
  279. if (('${type}' == 'rk' && sl && sl > 0 && dj && dj >= 0) || ('${type}' == 'pf' && sl && sl > 0)) {
  280. data.push({
  281. wpid: wpid,
  282. wpmc: wpmc,
  283. gysid: gysid,
  284. gysmc: gysmc,
  285. kcsl: kcsl,
  286. jldwmc: jldwmc,
  287. sl: sl, // parseInt(sl)。不能转为数值 100,Gson.fromJson( 会被转为 100.0。Lin
  288. dj: dj,
  289. je: je
  290. });
  291. }
  292. switch (colName) {
  293. case 'wpid':
  294. wpid = inputs[i].value;
  295. break;
  296. case 'wpmc':
  297. wpmc = inputs[i].value;
  298. break;
  299. case 'gysid':
  300. gysid = inputs[i].value;
  301. break;
  302. case 'gysmc':
  303. gysmc = inputs[i].value;
  304. break;
  305. case 'kcsl':
  306. kcsl = inputs[i].value;
  307. break;
  308. case 'jldwmc':
  309. jldwmc = inputs[i].value;
  310. break;
  311. case 'sl':
  312. sl = inputs[i].value;
  313. break;
  314. case 'dj':
  315. dj = inputs[i].value;
  316. break;
  317. case 'je':
  318. je = inputs[i].value;
  319. break;
  320. }
  321. }
  322. }
  323. if (('${type}' == 'rk' && sl && sl > 0 && dj && dj >= 0) || ('${type}' == 'pf' && sl && sl > 0)) {
  324. data.push({
  325. wpid: wpid,
  326. wpmc: wpmc,
  327. gysid: gysid,
  328. gysmc: gysmc,
  329. kcsl: kcsl,
  330. jldwmc: jldwmc,
  331. sl: sl, // parseInt(sl)。不能转为数值 100,Gson.fromJson( 会被转为 100.0。Lin
  332. dj: dj,
  333. je: je
  334. });
  335. }
  336. // 发送消息给父窗口
  337. /* 改,SS 弹窗,无法触发父窗口的 message 事件。Lin
  338. * 抄自 阿枫 食材 > 入库单 > 选择食材里的 $("#bc").on("click", function ()
  339. window.parent.postMessage(data, '*');
  340. */
  341. var topWin = wd.display.getwdDialogOpener();
  342. topWin.schx(data);
  343. wd.display.alert("保存成功");
  344. }
  345. // ===
  346. // 回车下一个获取焦点
  347. function focusNextInput(thisInput) {
  348. var inputs = $("input[tab='tabField']"); // = $("input[name='cjfs']")。Lin
  349. for (var i = 0; i < inputs.length; i++) {
  350. // 如果是最后一个,则焦点回到第一个
  351. if (i == (inputs.length - 1)) {
  352. inputs[0].focus(); break;
  353. } else if (thisInput == inputs[i]) {
  354. inputs[i + 1].focus(); break;
  355. }
  356. }
  357. }
  358. // 上一个获取焦点
  359. function focusUpInput(thisInput) {
  360. // console.log(11111);
  361. var inputs = $("input[tab='tabField']"); // = $("input[name='cjfs']")。Lin
  362. for (var i = 0; i < inputs.length; i++) {
  363. // 如果是第一个,则焦点回到最后一个
  364. if (thisInput == inputs[i]) {
  365. inputs[i - 1].focus(); break;
  366. } else if (thisInput == inputs[0]) {
  367. inputs[inputs.length - 1].focus(); break;
  368. }
  369. }
  370. }
  371. function keydown_to_tab($input) { //聚焦
  372. // console.log($input)
  373. $($input).bind("keydown", function(e) {
  374. // var n = $('.cjfs').length; // 去掉,没用到。Lin
  375. // console.log(n,e.keyCode)
  376. if (e.keyCode == 40) { //键盘按下
  377. focusNextInput($input)
  378. } else if (e.keyCode == 38) { //键盘按上
  379. focusUpInput($input)
  380. }
  381. });
  382. }
  383. </script>
  384. </html>