SMMMB00900.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342
  1. //변수선언
  2. var prcpclscd = 2;
  3. var prcpKindCdCol = 3; //처방종류 index
  4. var prcpnmCol = 5; //처방명 컬럼 index
  5. var prcpVolCol = 6; //용량 컬럼 index
  6. var prcpQtyCol = 8; //수량 컬럼 index
  7. var prcpTimsCol = 10; //횟수 컬럼 index
  8. var prcpDayNoCol = 11; //일수 컬럼 index
  9. var prcpDeliveFactCol = 15; //전달사항 컬럼 index
  10. var prcpHopeHdCol = 18; //희망일자 컬럼 index
  11. var ContPrcpDdRow = 6; //지정일 instance row
  12. var prcpNode = "/root/main/prcp/prcplist";
  13. var diagNode = "/root/main/diaginfo/diagcdlist";
  14. var prcpgenrflag = ""; //외래입원구분
  15. /**
  16. * @desc : 처방화면 초기화
  17. * @param :
  18. * @id : model1
  19. * @event : xforms-ready
  20. * @return : void
  21. * @authur : 마정민 2007. 3. 14
  22. * @---------------------------------------------------
  23. */
  24. function fInitializeReady() {
  25. model.recalculate();
  26. model.setfocus( "grd_prcplist" );
  27. grd_prcplist.dispatch("onentercell");
  28. }
  29. function fDirecPrcpSrch(srchflag) {
  30. if(event.keyCode == "13") {
  31. if ( model.getValue(prcpNode+"["+grd_prcplist.row+"]/prcpflag") == "2" && model.getValue(prcpNode+"["+grd_prcplist.row+"]/drugmastspec") =="Y" ){
  32. return;
  33. }
  34. var prcpnm = model.getValue ( prcpNode + "[" + grd_prcplist.row+ "]/prcpnm" );
  35. if ( srchflag == "prcpcd") {
  36. prcpnm = model.getValue ( prcpNode + "[" + grd_prcplist.row+ "]/prcpcd" );
  37. }
  38. var isHangul = fIsHangul (prcpnm);
  39. //한글일때는 1글자만 넣어도 검색가능
  40. if ( isNull(prcpnm)) {
  41. messageBox ( "검색어를", "C001" );
  42. return;
  43. } else if ( isHangul == "E" ){
  44. //영문,숫자일때는 3글자 넣어야 검색가능
  45. if ( prcpnm.length < 2 ){
  46. messageBox ( "2글자 이상", "C001" );
  47. return;
  48. }
  49. } else if ( isHangul == "H" ) {
  50. if ( prcpnm.length < 2 ){
  51. messageBox ( "한글은 2글자 이상", "C001" );
  52. return;
  53. }
  54. }
  55. if (prcpnm.charAt ( 0 ) == "/"){
  56. if ( prcpnm.length == 1 ){
  57. messageBox ( "검색할 수술명이", "I004" );
  58. return;
  59. }
  60. var curRow = grd_prcplist.row;
  61. var srchRow = grd_prcplist.rows -1;
  62. fPrcpModal ( "SPMMO05100", 180, 80 );
  63. } else {
  64. if ( srchflag == "prcpcd") {
  65. fPrcpSrchCom ( prcpnm, model.getValue ( "/root/init/prcpdd" ), model.getValue ( "/root/paminfo/list/insukind"), "TRMMB00201", "", false, "getPrcpCdOldSrchInfo", isHangul );
  66. } else if ( srchflag == "prcpnm") {
  67. fPrcpSrchCom ( prcpnm, model.getValue ( "/root/init/prcpdd" ), model.getValue ( "/root/paminfo/list/insukind"), "TRMMB00201", "", false, "getPrcpNmSrchInfo", isHangul );
  68. } else {
  69. fPrcpSrchCom ( prcpnm, model.getValue ( "/root/init/prcpdd" ), model.getValue ( "/root/paminfo/list/insukind"), "TRMMB00201", "", false, "getPrcpSrchInfo", isHangul );
  70. }
  71. var srchLength = model.instances(0).selectNodes( "/root/prcpsrch/prcplist" ).length;
  72. var curRow = grd_prcplist.row;
  73. var nextRow = grd_prcplist.row + 1;
  74. if( srchLength > 1) {
  75. grd_prcpsrchlist.attribute ( "height" ) = 278;
  76. btn_copy.attribute ( "top" ) = 281;
  77. btn_cancel.attribute ( "top" ) = 281;
  78. import1.attribute ( "height" ) = 306;
  79. if ( grd_prcplist.row <= 12) {
  80. import1.attribute ( "top" ) = 71 + ( grd_prcplist.row - 1) * 23;
  81. } else if ( grd_prcplist.row <= 25) {
  82. import1.attribute ( "top" ) = (grd_prcplist.row - 1) * 23 - 260;
  83. } else if ( grd_prcplist.row > 25 ) {
  84. import1.attribute ( "top" ) = 24 * 23 - 247;
  85. }
  86. import1.visible = true;
  87. model.refresh();
  88. model.setfocus( "grd_prcpsrchlist" );
  89. grd_prcpsrchlist.select( 1, 1, 1, 1) = true;
  90. } else if( srchLength == 1) {
  91. srchRow = addPrcpDetl ( "import" , "/root/prcpsrch/prcplist" , "/root/main/prcp" , 1 , grd_prcplist.row, "00" );
  92. if (srchRow !=0 ) {
  93. focusMain ( srchRow );
  94. }
  95. } else {
  96. messageBox ( "검색된 내용이", "I004" );
  97. grd_prcplist.dispatch("onentercell");
  98. }
  99. }
  100. }
  101. }
  102. function fGetDirecPrcp() {
  103. model.setValue ( "/root/send/cond1", model.getValue ( "/root/init/prcpno" ));
  104. submit("TRMMB00911", false );
  105. appendChildPrcp ( "/root/reset/prcplist", "/root/main/prcp", "main" ); //검색라인추가
  106. model.refresh();
  107. model.recalculate();
  108. }
  109. /**
  110. * @desc : 처방수정.
  111. * @ : 신규일때는 수정표시 안함.
  112. * @ : 삭제,D/C 상태일때는 취소후 수정.
  113. * @param :
  114. * @id : grd_prcplist
  115. * @event : xforms-value-changed
  116. * @return : void
  117. * @authur : 마정민 2007. 6. 4
  118. * @---------------------------------------------------
  119. */
  120. function fPrcpUpdate() {
  121. var status = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row+ "]/status" );
  122. if (status=="-") {
  123. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row+ "]/status", "U" );
  124. model.refresh();
  125. model.recalculate();
  126. }
  127. }
  128. /**
  129. * @desc : 오른쪽 마우스 클릭 삭제
  130. * @ : 신규일 때는 removeNode
  131. * @ : 수정중일 때 원복시킨 후 삭제, D/C 표시
  132. * @ : 삭제, D/C 원복시킬려면 ? 오른쪽 마우스에 삭제 및 D/C 원복
  133. * @ : D/C 후 삭제는 불가
  134. * @param :
  135. * @id : grd_prcplist
  136. * @event : 오른쪽 마우스 클릭 삭제
  137. * @return : void
  138. * @authur : 마정민 2007. 6. 4
  139. * @---------------------------------------------------
  140. */
  141. function fDirecDeleteRow() {
  142. var selectedRows = grd_prcplist.selectedRows;
  143. var node = instance1.selectSingleNode("/root/main/prcp");
  144. var cnt=0;
  145. for (i= selectedRows-1; i >= 0; i--) {
  146. var status = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/status" );
  147. if (status=="-") {
  148. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i)+ "]/status", "D" );
  149. } else if ( status =="I" ) {
  150. //신규입력(I)은 removeNode 이다.
  151. model.removeNode ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]" );
  152. //삭제시 데이터를
  153. } else if (status=="S") {
  154. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/prcpnm", "" );
  155. } else if (status=="D") {
  156. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i)+ "]/status", "-" );
  157. } else if (status=="U") {
  158. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i)+ "]/status", "D" );
  159. }
  160. }
  161. model.refresh();
  162. model.recalculate();
  163. }
  164. /**
  165. * @desc : 처방 오른쪽 마우스 팝업 처리
  166. * @param :
  167. * @id : grd_prcplist
  168. * @event : onmousedown
  169. * @return : void
  170. * @authur : 마정민 2007. 6. 4
  171. * @---------------------------------------------------
  172. */
  173. function fMouseRghtBtnPopup() {
  174. if (event.button == 3) {
  175. if(grd_prcplist.isCell(event.target) && grd_prcplist.mouseRow >= grd_prcplist.fixedRows){
  176. app.showPopupMenu(true);
  177. window.setPopupMenu(true, "/root/init/msrght/mouserght", "label", "func", false);
  178. } else {
  179. window.setPopupMenu(false);
  180. }
  181. }
  182. }
  183. function fDirecPrcpSave() {
  184. for ( var i=1; i < grd_prcplist.rows-1; i++ ) {
  185. if ( model.getValue ( "/root/main/prcp/prcplist[" + i + "]/status" ) == "I" || model.getValue ( "/root/main/prcp/prcplist[" + i + "]/status" ) == "U" ) {
  186. model.setValue("/root/main/prcp/prcplist[" + i + "]/prcpkindcd", "20" );
  187. model.setValue("/root/main/prcp/prcplist[" + i + "]/srchcondcnts", model.getValue ( "/root/init/prcpno" ));
  188. model.setValue("/root/main/prcp/prcplist[" + i + "]/prcpsetcd", opener.javascript.getParameter("SMMMB02100_cond2" ));
  189. }
  190. }
  191. var savePrcpInfo = model.instances(0).selectNodes( "/root/main/prcp/prcplist" );
  192. model.setValue ( "/root/send/cond1", getNodeListCSV(savePrcpInfo));
  193. model.setValue ( "/root/send/cond2", "2" );
  194. if ( !submit ( "TRMMB00203", false )){
  195. model.resetInstanceNode ( "/root/send" );
  196. model.refresh();
  197. return;
  198. }
  199. var prcpErrList = model.instances(0).selectNodes( "/root/result/prcperrlist" );
  200. var xpt = window.screenleft + 100;
  201. var ypt = window.screenTop + 50;
  202. var coord = getRelativeCoordinate ( xpt, ypt );
  203. var mon = coord[0];
  204. xpt = coord[1];
  205. ypt = coord[2];
  206. if ( prcpErrList.length > 0 ) {
  207. if ( !isNull(model.getValue ( "/root/result/prcperrlist[1]/prcpcd"))){
  208. modal ( "SPMMO00600", mon, xpt, ypt, "prcpdetl", "/root/result", "/root/result" ); //오류팝업
  209. model.removeNodeset("/root/result/prcperrlist");
  210. }
  211. return;
  212. }
  213. if (submit("TXMMB00911", false)) {
  214. appendChildPrcp ( "/root/reset/prcplist", "/root/main/prcp", "main" ); //검색라인추가
  215. model.refresh();
  216. model.recalculate();
  217. }
  218. }
  219. /**
  220. * @desc : 약속처방 복사하기 기능
  221. * @param :
  222. * @id : grd_prcplist
  223. * @event : onmousedown
  224. * @return : void
  225. * @authur : 마정민 2007. 6. 12
  226. * @---------------------------------------------------
  227. */
  228. function fCopyRow () {
  229. var selectedRows = grd_prcplist.selectedRows;
  230. var cnt=0;
  231. for (var i=0; i< selectedRows; i++) {
  232. if (model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status") != "S" ){ //검색은 드래그 안한다.
  233. fPrcpBuffer( ++cnt, grd_prcplist.selectedrow(i), "/root/prcpdrag", prcpNode );
  234. }
  235. }
  236. var srcNodeList = model.instances(0).selectNodes("/root/prcpdrag/prcplist");
  237. for ( i=1 ; i<=srcNodeList.length ; i++ ) {
  238. model.setValue ( "/root/prcpdrag/prcplist[" + i + "]/status" , "I" );
  239. }
  240. }
  241. /**
  242. * @desc : 약속처방 붙혀넣기 기능
  243. * @param :
  244. * @id : grd_prcplist
  245. * @event : onmousedown
  246. * @return : void
  247. * @authur : 마정민 2007. 6. 12
  248. * @---------------------------------------------------
  249. */
  250. function fPasteRow () {
  251. var srcNodeList = model.instances(0).selectNodes("/root/prcpdrag/prcplist");
  252. var destNode = model.instances(0).selectSingleNode("/root/main/prcp");
  253. var row = grd_prcplist.rows-1;
  254. for (var i=1; i<srcNodeList.length+1; i++) {
  255. row = row++;
  256. model.duplicate( "/root/main/prcp", "/root/prcpdrag/prcplist[" + i + "]", "*[" + row + "]");
  257. model.setValue ( "/root/main/prcp/prcplist[" + row + "]/status", "I" );
  258. }
  259. model.refresh();
  260. }
  261. /**
  262. * @desc : 처방화면 오른쪽 마우스 클릭 처방잘라내기
  263. * @return : void
  264. * @authur : 마정민 2007. 10. 22
  265. */
  266. function fPrcpCrop() {
  267. if ( model.getValue ("/root/init/cropflag") == "Y" ) {
  268. if (messageBox ( "잘라낸 데이터가 이미 있습니다. 잘라내시겠습니까?", "Q" ) != "6" ) {
  269. return;
  270. }
  271. }
  272. var selectedRows = grd_prcplist.selectedRows;
  273. var cnt=0;
  274. for (var i = selectedRows-1; i >= 0; i--) {
  275. if ( model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status" ) != "S" ){ //검색은 드래그 안한다.
  276. fPrcpBuffer( ++cnt, grd_prcplist.selectedrow(i), "/root/prcpdrag", prcpNode );
  277. if ( model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status" ) == "I" ) {
  278. model.removenode ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]" );
  279. } else {
  280. model.setValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status", "D" )
  281. }
  282. }
  283. model.setValue ( "/root/init/cropflag", "Y" );
  284. }
  285. var srcNodeList = model.instances(0).selectNodes("/root/prcpdrag/prcplist");
  286. for ( i=1 ; i<=srcNodeList.length ; i++ ) {
  287. model.setValue ( "/root/prcpdrag/prcplist[" + i + "]/status" , "I" );
  288. }
  289. model.refresh();
  290. }