SMMMB00200.js 38 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036
  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 fPromPrcpSrch(srchflag) {
  30. if(event.keyCode == "13") {
  31. var setno = model.getValue("/root/hidden/prmsprcpsetdetlset/setno");
  32. var setnm = model.getValue("/root/hidden/prmsprcpsetdetlset/setnm");
  33. if(setno == 1){
  34. messageBox("최상위 약속처방 폴더에서 검색", "E001");
  35. return;
  36. }
  37. if ( isNull(setnm)) {
  38. messageBox("선택된 약속처방폴더가", "I004");
  39. return;
  40. }
  41. if ( srchflag == "prcpcd") {
  42. var prcpnm = grd_prcplist.valuematrix(grd_prcplist.row, grd_prcplist.colRef("prcpcd"));
  43. } else {
  44. var prcpnm = grd_prcplist.valuematrix(grd_prcplist.row, grd_prcplist.colRef("prcpnm"));
  45. }
  46. var isHangul = fIsHangul (prcpnm);
  47. //한글일때는 1글자만 넣어도 검색가능
  48. if ( isNull(prcpnm)) {
  49. messageBox("검색어를", "C001");
  50. return;
  51. } else if ( isHangul == "E" ){
  52. //영문,숫자일때는 3글자 넣어야 검색가능
  53. if ( prcpnm.length < 3 ){
  54. messageBox("3글자 이상", "C001");
  55. return;
  56. }
  57. }
  58. if (prcpnm.charAt ( 0 ) == "/"){
  59. if ( prcpnm.length == 1 ){
  60. messageBox("검색할 수술명을", "C001");
  61. return;
  62. }
  63. var curRow = grd_prcplist.row;
  64. var srchRow = grd_prcplist.rows -1;
  65. var xpt = window.screenleft + 180;
  66. var ypt = window.screenTop + 80;
  67. //modael ( "SPMMO05100", 1, xpt, ypt );
  68. modal ( "SPMMO05100", 1, xpt, ypt ); //BY SONJY 2008-09-06 오타 수정.
  69. } else {
  70. if ( srchflag == "prcpcd") {
  71. fPrcpSrchCom ( prcpnm, model.getValue ( "/root/init/prcpdd" ), "11", "TRMMB00201", "", false, "getPrcpCdOldSrchInfo", isHangul );
  72. } else if ( srchflag == "prcpnm") {
  73. fPrcpSrchCom ( prcpnm, model.getValue ( "/root/init/prcpdd" ), "11", "TRMMB00201", "", false, "getPrcpNmSrchInfo", isHangul );
  74. } else {
  75. fPrcpSrchCom ( prcpnm, model.getValue ( "/root/init/prcpdd" ), "11", "TRMMB00201", "", false, "getPrcpSrchInfo", isHangul );
  76. }
  77. var srchLength = model.instances(0).selectNodes( "/root/prcpsrch/prcplist" ).length;
  78. var curRow = grd_prcplist.row;
  79. var nextRow = grd_prcplist.row + 1;
  80. if( srchLength > 1) {
  81. if ( grd_prcplist.row <= 13) {
  82. import1.attribute ( "top" ) = 71 + ( grd_prcplist.row - 1) * 23;
  83. } else if ( grd_prcplist.row <= 27) {
  84. import1.attribute ( "top" ) = (grd_prcplist.row - 1) * 23 - 300;
  85. } else if ( grd_prcplist.row > 27 ) {
  86. import1.attribute ( "top" ) = 24 * 23 - 224;
  87. }
  88. import1.visible = true;
  89. model.refresh();
  90. model.setfocus( "grd_prcpsrchlist" );
  91. grd_prcpsrchlist.select( 1, 1, 1, 1) = true;
  92. } else if( srchLength == 1) {
  93. srchRow = addPrcpDetl ( "import" , "/root/prcpsrch/prcplist" , "/root/main/prcp" , 1 , grd_prcplist.row, "02" );
  94. if ( srchRow != 0 ) {
  95. focusMain ( srchRow );
  96. }
  97. } else {
  98. messageBox ( "검색된 내용이", "I004" );
  99. grd_prcplist.dispatch("onentercell");
  100. }
  101. model.refresh();
  102. model.recalculate();
  103. }
  104. }
  105. }
  106. function fReqGetPrmsSet() {
  107. model.setValue ( "/root/send/cond1", model.getValue ( "/root/hidden/prmsprcpsetdetlset/setno"));
  108. model.setValue ( "/root/send/cond2", model.getValue ( "/root/hidden/prmsprcpsetdetlset/settypecd"));
  109. //submit("TRMMB00202", false);
  110. if(submit( "TRMMB00202" )){
  111. fAbsnSrch ( "/root/main/prcp/prcplist", grd_prcplist );
  112. }
  113. appendChildPrcp ( "/root/reset/prcplist", "/root/main/prcp", "main" ); //검색라인추가
  114. model.refresh();
  115. model.recalculate();
  116. //2008.06.05 appendchild로 grid row추가 후 instance정보가 흐트러짐
  117. grd_prcplist.row = grd_prcplist.rows - 1;
  118. grd_prcplist.col = grd_prcplist.colRef("prcpcd");
  119. btn_editcell.dispatch("DOMActivate");
  120. }
  121. /**
  122. * @desc : 대체약이 있을경우 색처리 및 프로토콜 값 세팅
  123. * @param : strSrc - source 노드
  124. : grdObj - DataGrid
  125. * @return : void
  126. * @authur : 마정민 2007. 7. 03
  127. */
  128. function fAbsnSrch ( strSrc, grdObj ) {
  129. var srcNodeList = model.instances(0).selectNodes( strSrc );
  130. var tempcol16 = "";
  131. var prcpuseflag = "";
  132. var prcpclscd = "";
  133. for(var i = 1; i <= srcNodeList.length; i++) {
  134. tempcol16 = model.getValue ( strSrc + "[" + i + "]/tempcol16");
  135. prcpclscd = model.getValue ( strSrc + "[" + i + "]/prcpclscd");
  136. prcpuseflag = getArrayData (tempcol16, 0, 0, "^", "|" );
  137. grdObj.rowstyle(i, "data", "color") = "#000000"; //기존에 색칠되어 있는 것을 clear 해 준다.
  138. if (prcpuseflag == "D") { // 수가정보에 없는경우
  139. grdObj.rowstyle(i, "data", "color") = "#ff4848";
  140. } else if ( prcpclscd == "A2" || prcpclscd == "A4" || prcpclscd == "A6" ) {
  141. var drugmastspec = model.getValue ( strSrc + "[" + i + "]/drugmastspec") + "^";
  142. if ( getArrayData (drugmastspec, 0, 10, "^", "|" ) == "Y" ) { // 품절여부가 Y 이면 색표시를 해준다.
  143. grdObj.rowstyle(i, "data", "color") = "#c0c0c0";
  144. }
  145. }
  146. }
  147. }
  148. /**
  149. * @desc : 처방수정.
  150. * @ : 신규일때는 수정표시 안함.
  151. * @ : 삭제,D/C 상태일때는 취소후 수정.
  152. * @param :
  153. * @id : grd_prcplist
  154. * @event : xforms-value-changed
  155. * @return : void
  156. * @authur : 마정민 2007. 6. 4
  157. * @---------------------------------------------------
  158. */
  159. function fPrcpUpdate() {
  160. var status = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row+ "]/status" );
  161. if (status=="-") {
  162. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.row+ "]/status", "U" );
  163. model.refresh();
  164. model.recalculate();
  165. }
  166. }
  167. /**
  168. * @desc : 오른쪽 마우스 클릭 삭제
  169. * @ : 신규일 때는 removeNode
  170. * @ : 수정중일 때 원복시킨 후 삭제, D/C 표시
  171. * @ : 삭제, D/C 원복시킬려면 ? 오른쪽 마우스에 삭제 및 D/C 원복
  172. * @ : D/C 후 삭제는 불가
  173. * @param :
  174. * @id : grd_prcplist
  175. * @event : 오른쪽 마우스 클릭 삭제
  176. * @return : void
  177. * @authur : 마정민 2007. 6. 4
  178. * @---------------------------------------------------
  179. */
  180. function fPrmsDeleteRow() {
  181. //타부서의 약속처방을 삭제할 수 없도록 처리. 2008-01-18 오지훈
  182. var prmsflag = opener.model.getValue("/root/main/cond/prmsflag");
  183. if(prmsflag == "T"){
  184. var orddeptcd = opener.model.getValue("/root/main/cond/deptsetcd");
  185. var orddeptnm = opener.cmb_deptset.label;
  186. if(orddeptcd = getUserInfo("dutplcecd")){ //
  187. messageBox("[" + orddeptnm +"] 약속처방을 삭제", "E001");
  188. return;
  189. }
  190. }
  191. var selectedRows = grd_prcplist.selectedRows;
  192. var node = instance1.selectSingleNode("/root/main/prcp");
  193. var cnt=0;
  194. for (i= selectedRows-1; i >= 0; i--) {
  195. var status = model.getValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/status" );
  196. if (status=="-") {
  197. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i)+ "]/status", "D" );
  198. } else if ( status =="I" ) {
  199. //신규입력(I)은 removeNode 이다.
  200. model.removeNode ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]" );
  201. //삭제시 데이터를
  202. } else if (status=="S") {
  203. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i) + "]/prcpnm", "" );
  204. } else if (status=="D") {
  205. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i)+ "]/status", "-" );
  206. } else if (status=="U") {
  207. model.setValue ( "/root/main/prcp/prcplist[" + grd_prcplist.selectedrow(i)+ "]/status", "D" );
  208. }
  209. }
  210. model.refresh();
  211. model.recalculate();
  212. }
  213. /**
  214. * @desc : 처방 오른쪽 마우스 팝업 처리
  215. * @param :
  216. * @id : grd_prcplist
  217. * @event : onmousedown
  218. * @return : void
  219. * @authur : 마정민 2007. 6. 4
  220. * @---------------------------------------------------
  221. */
  222. function fMouseRghtBtnPopup() {
  223. if (event.button == 3) {
  224. if(grd_prcplist.isCell(event.target) && grd_prcplist.mouseRow >= grd_prcplist.fixedRows){
  225. app.showPopupMenu(true);
  226. window.setPopupMenu(true, "/root/init/msrght/mouserght", "label", "func", false);
  227. } else {
  228. window.setPopupMenu(false);
  229. }
  230. }
  231. }
  232. function fPrmsPrcpSave() {
  233. var setno = model.getValue ("/root/hidden/prmsprcpsetdetlset/setno" );
  234. var settypecd = model.getValue ("/root/hidden/prmsprcpsetdetlset/settypecd" );
  235. var setnm = model.getValue( "/root/hidden/prmsprcpsetdetlset/setnm");
  236. var sPrcpcd = "";
  237. var sStatus = "";
  238. var sSubjNm = "";
  239. if(setno == 1){
  240. model.alert ( "최상위 약속처방폴더에는 저장하실 수 없습니다.");
  241. return;
  242. }
  243. if ( isNull(setnm)) {
  244. model.alert ( "선택된 약속처방폴더가 없습니다.");
  245. return;
  246. } else {
  247. if ( messageBox( setnm + " 약속처방폴더에 선택하신 처방을", "Q002") == "7" ) {
  248. return;
  249. }
  250. }
  251. //kimsj 임상연구 - 연구코드와 처방코드, 처방권한 여부 확인(에러체크)
  252. if ( opener.window.javascript.getScreenID() == "SMMMB08300" ) {
  253. sSubjNm = opener.model.getValue("/root/hidden/subjinfo/subjlist/subjno");
  254. model.removeNodeset("/root/tempsubj");
  255. model.makeValue("/root/tempsubj/reqdata/subjno", opener.model.getValue("/root/main/subjinfo/subjlist[subjno='" + sSubjNm + "']/subjid"));
  256. submit("TRMMB08302");
  257. if ( isNull(model.getValue("/root/tempsubj/result/userlist[empid='" + getUserInfo ("userid") + "']/empid")) ) {
  258. messageBox ( "임상연구의 처방", "E002"); //" 권한이 없습니다."
  259. return;
  260. }
  261. for ( var i=1; i < grd_prcplist.rows-1; i++ ) {
  262. sStatus = model.getValue("/root/main/prcp/prcplist[" + i + "]/status");
  263. sPrcpcd = model.getValue("/root/main/prcp/prcplist[" + i + "]/prcpcd");
  264. if ( sStatus != "S" && sStatus != "D" && sPrcpcd.substring(0,3) == "XD-" ) {
  265. if ( isNull(model.getValue("/root/tempsubj/result/druglist[drugcd='" + sPrcpcd + "']/drugcd")) ) {
  266. messageBox ( "["+sPrcpcd+"] 코드는 해당 임상연구에 부합하는 처방코드가 아닙니다. \n\n삭제 후 다시 저장하시기 바랍니다.", "E");
  267. return;
  268. }
  269. }
  270. }
  271. }
  272. //end kimsj 임상연구
  273. for ( var i=1; i < grd_prcplist.rows-1; i++ ) {
  274. var tempcol16 = model.getValue( "/root/main/prcp/prcplist[" + i + "]/tempcol16");
  275. if(tempcol16 != null) {
  276. var prcpuseflag = getArrayData (tempcol16, 0, 0, "^", "|" );
  277. if(prcpuseflag == "D" && model.getValue ( "/root/main/prcp/prcplist[" + i + "]/status" ) == "U" ) {
  278. var prcpnm = model.getValue ( "/root/main/prcp/prcplist[" + i + "]/prcpnm" );
  279. model.alert ( prcpnm + "은 수가 또는 검사실 사용종료 되어 수정 할 수 없습니다. 삭제만 가능합니다.");
  280. return;
  281. }
  282. }
  283. if ( model.getValue ( "/root/main/prcp/prcplist[" + i + "]/status" ) == "I" ) {
  284. model.setValue("/root/main/prcp/prcplist[" + i + "]/prcpkindcd", "20" );
  285. model.setValue("/root/main/prcp/prcplist[" + i + "]/prcppkspec", setno + "|" + settypecd);
  286. }
  287. var drprcpetc2 = model.getValue("/root/main/prcp/prcplist[" + i + "]/drprcpetc2"); // 특수주사실 정보가 없으면 저장 시 오류 수정
  288. if ( isNull(drprcpetc2) ) {
  289. model.setValue("/root/main/prcp/prcplist[" + i + "]/drprcpetc2", "-");
  290. }
  291. }
  292. var savePrcpInfo = model.instances(0).selectNodes( "/root/main/prcp/prcplist" );
  293. //model.setValue ( "/root/send/cond1", getNodeListCSV(savePrcpInfo));
  294. copyNodeListType ( "/root/send/cond1", "/root/main/prcp/prcplist[status!='S']", "replace", model, model); //sort기능 추가 후 약속셋copy 시 컬럼순서때문 오류 수정 (2009.10.28 by JJE)
  295. model.setValue ( "/root/send/cond2", "1" );
  296. if ( !submit ( "TRMMB00203", false )){
  297. model.removeNodeset("/root/send/cond1/prcplist"); //reset (2009.10.28 by JJE)
  298. model.resetInstanceNode ( "/root/send" );
  299. model.refresh();
  300. return;
  301. }
  302. var prcpErrList = model.instances(0).selectNodes( "/root/result/prcperrlist" );
  303. var xpt = window.screenleft + 100;
  304. var ypt = window.screenTop + 50;
  305. var coord = getRelativeCoordinate ( xpt, ypt );
  306. var mon = coord[0];
  307. xpt = coord[1];
  308. ypt = coord[2];
  309. if ( prcpErrList.length > 0 ) {
  310. if ( !isNull(model.getValue ( "/root/result/prcperrlist[1]/prcpcd"))){
  311. open ( "SPMMO00600", mon, xpt, ypt, "prcpdetl", "/root/result", "/root/result" ); //오류팝업
  312. model.removeNodeset("/root/result/prcperrlist");
  313. }
  314. return;
  315. }
  316. if (submit("TXMMB00201", false)) {
  317. appendChildPrcp ( "/root/reset/prcplist", "/root/main/prcp", "main" ); //검색라인추가
  318. fAbsnSrch ( "/root/main/prcp/prcplist", grd_prcplist );
  319. model.refresh();
  320. model.recalculate();
  321. }
  322. model.removeNodeset("/root/send/cond1/prcplist"); //reset (2009.10.28 by JJE)
  323. }
  324. /**
  325. * @desc : 약속처방 복사하기 기능
  326. * @param :
  327. * @id : grd_prcplist
  328. * @event : onmousedown
  329. * @return : void
  330. * @authur : 마정민 2007. 6. 12
  331. * @---------------------------------------------------
  332. */
  333. function fCopyRow () {
  334. var selectedRows = grd_prcplist.selectedRows;
  335. var cnt=0;
  336. var sStatus = "";
  337. var sTempcol16 = "";
  338. var sPrcpuseflag = "";
  339. for (var i=0; i< selectedRows; i++) {
  340. sStatus = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status");
  341. sTempcol16 = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/tempcol16");
  342. if(sTempcol16 != null) {
  343. sPrcpuseflag = getArrayData (sTempcol16, 0, 0, "^", "|" );
  344. }
  345. if (sStatus != "S" && sPrcpuseflag != "D"){ //검색, 수가 종료은 드래그 안한다.
  346. fPrcpBuffer( ++cnt, grd_prcplist.selectedrow(i), "/root/prcpdrag", prcpNode );
  347. }
  348. }
  349. var srcNodeList = model.instances(0).selectNodes("/root/prcpdrag/prcplist");
  350. for ( i=1 ; i<=srcNodeList.length ; i++ ) {
  351. model.setValue ( "/root/prcpdrag/prcplist[" + i + "]/status" , "I" );
  352. }
  353. }
  354. /**
  355. * @desc : 약속처방 붙혀넣기 기능
  356. * @param :
  357. * @id : grd_prcplist
  358. * @event : onmousedown
  359. * @return : void
  360. * @authur : 마정민 2007. 6. 12
  361. * @---------------------------------------------------
  362. */
  363. function fPasteRow () {
  364. var srcNodeList = model.instances(0).selectNodes("/root/prcpdrag/prcplist");
  365. var destNode = model.instances(0).selectSingleNode("/root/main/prcp");
  366. var row = grd_prcplist.rows-1;
  367. for (var i=1; i<srcNodeList.length+1; i++) {
  368. row = row++;
  369. model.duplicate( "/root/main/prcp", "/root/prcpdrag/prcplist[" + i + "]", "*[" + row + "]");
  370. model.setValue ( "/root/main/prcp/prcplist[" + row + "]/status", "I" );
  371. }
  372. model.refresh();
  373. }
  374. /**
  375. * @desc : SET폴더 삭제시, 약속처방 데이터 삭제
  376. * @
  377. * @param :
  378. * @return :
  379. * @---------------------------------------------------
  380. */
  381. function fClrGridData(){
  382. model.removeNodeset("/root/main/prcp/prcplist");
  383. model.refresh();
  384. }
  385. /**
  386. * @desc : 믹스번호처리
  387. * @return : void
  388. * @authur : 마정민 2007.10.09
  389. */
  390. function fMixNoCnt() {
  391. var selectedRows = grd_prcplist.selectedRows;
  392. var cnt = 0;
  393. for ( var i=selectedRows-1; i >= 0; i-- ){
  394. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  395. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  396. if ( selprcpclscd == "A6" ) {
  397. cnt++
  398. } else {
  399. grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  400. }
  401. }
  402. if ( cnt <= 1 ) {
  403. messageBox ( "Mix할 처방이 ", "E014");
  404. } else {
  405. var selectedRows = grd_prcplist.selectedRows;
  406. var prcpmixno = eval(model.getValue ( "/root/init/prcpmixno" )) + 1;
  407. for (var i=0; i< selectedRows; i++) {
  408. model.setValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpmixno", prcpmixno );
  409. fSetCpVal(grd_prcplist.selectedrow(i), "U");
  410. // if ( model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status" ) == "-" ) {
  411. // model.setValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status", "U" );
  412. // }
  413. }
  414. model.setValue ( "/root/init/prcpmixno", prcpmixno );
  415. for (var i=1; i < grd_prcplist.rows; i++) {
  416. var chkPrcpmixno = model.getValue ( prcpNode + "[" + i + "]/prcpmixno" );
  417. //믹스번호가 있는 것중에
  418. if ( chkPrcpmixno != "-" && !isNull(chkPrcpmixno)) {
  419. //삭제를 제외하고 값이 한개 밖에 없으면 mix를 해제해 준다.
  420. var srcNodeList = model.instances(0).selectNodes ( prcpNode + "[prcpmixno='" + chkPrcpmixno + "']" );
  421. if ( srcNodeList.length <= 1) {
  422. model.setValue ( prcpNode + "[" + i + "]/prcpmixno", "-" );
  423. // if ( model.getValue ( prcpNode + "[" + i + "]/status" ) == "-" ) {
  424. // model.setValue ( prcpNode + "[" + i + "]/status", "U" );
  425. // }
  426. }
  427. }
  428. }
  429. }
  430. }
  431. /**
  432. * @desc : 믹스번호취소처리
  433. * @return : void
  434. * @authur : 마정민 2007.10.16
  435. */
  436. function fMixNoDel() {
  437. var selectedRows = grd_prcplist.selectedRows;
  438. var cnt = 0;
  439. for ( var i=selectedRows-1; i >= 0; i-- ){
  440. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  441. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  442. if ( selprcpclscd == "A6" ) {
  443. cnt++
  444. } else {
  445. grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  446. }
  447. }
  448. var selectedRows = grd_prcplist.selectedRows;
  449. for (var i=0; i< selectedRows; i++) {
  450. model.setValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpmixno", "-" );
  451. fSetCpVal(grd_prcplist.selectedrow(i), "U");
  452. // if ( model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status" ) == "-" ) {
  453. // model.setValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status", "U" );
  454. // }
  455. }
  456. for (var i=1; i < grd_prcplist.rows; i++) {
  457. var chkPrcpmixno = model.getValue ( prcpNode + "[" + i + "]/prcpmixno" );
  458. //믹스번호가 있는 것중에
  459. if ( chkPrcpmixno != "-" && !isNull(chkPrcpmixno)) {
  460. //삭제를 제외하고 값이 한개 밖에 없으면 mix를 해제해 준다.
  461. var srcNodeList = model.instances(0).selectNodes ( prcpNode + "[prcpmixno='" + chkPrcpmixno + "']" );
  462. if ( srcNodeList.length <= 1) {
  463. model.setValue ( prcpNode + "[" + i + "]/prcpmixno", "-" );
  464. // if ( model.getValue ( prcpNode + "[" + i + "]/status" ) == "-" ) {
  465. // model.setValue ( prcpNode + "[" + i + "]/status", "U" );
  466. // }
  467. }
  468. }
  469. }
  470. }
  471. /**
  472. * @desc : 처방화면 오른쪽 마우스 클릭 처방 붙혀넣기
  473. * @return : void
  474. * @authur : 마정민 2007. 10. 22
  475. */
  476. function fPrcpPaste() {
  477. model.setValue ( "/root/init/cropflag", "N" );
  478. srcNodeList = model.instances(0).selectNodes("/root/prcpdrag/prcplist");
  479. var destNode = model.instances(0).selectSingleNode("/root/main/prcp");
  480. var dropRow = grd_prcplist.row;
  481. var endRow = grd_prcplist.rows -1;
  482. if ( dropRow == endRow ) {
  483. dropRow = dropRow -1;
  484. }
  485. for ( var i= 1; i<=srcNodeList.length ; i++){
  486. row = dropRow + i;
  487. model.duplicate( "/root/main/prcp", "/root/prcpdrag/prcplist[" + i + "]", "*[" + row + "]");
  488. fSetCpVal( row, "I");
  489. }
  490. model.removeNodeset ( "/root/prcpdrag/prcplist" );
  491. model.recalculate();
  492. model.refresh();
  493. }
  494. /**
  495. * @desc : 처방화면 오른쪽 마우스 클릭 처방 잘라내기
  496. * @return : void
  497. * @authur : 마정민 2007. 10. 22
  498. */
  499. function fPrcpCrop() {
  500. if ( model.getValue ("/root/init/cropflag") == "Y" ) {
  501. if (messageBox ( "잘라낸 데이터가 이미 있습니다. 잘라내시겠습니까?", "Q" ) != "6" ) {
  502. return;
  503. }
  504. }
  505. var selectedRows = grd_prcplist.selectedRows;
  506. var cnt=0;
  507. var sStatus = "";
  508. var sTempcol16 = "";
  509. var sPrcpuseflag = "";
  510. for (var i = selectedRows-1; i >= 0; i--) {
  511. sStatus = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status");
  512. sTempcol16 = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/tempcol16");
  513. if(sTempcol16 != null) {
  514. sPrcpuseflag = getArrayData (sTempcol16, 0, 0, "^", "|" );
  515. }
  516. if (sStatus != "S" && sPrcpuseflag != "D"){ //검색, 수가 종료 드래그 안한다.
  517. fPrcpBuffer( ++cnt, grd_prcplist.selectedrow(i), "/root/prcpdrag", prcpNode );
  518. if ( model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status" ) == "I" ) {
  519. model.removenode ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]" );
  520. } else {
  521. model.setValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/status", "D" )
  522. }
  523. }
  524. model.setValue ( "/root/init/cropflag", "Y" );
  525. }
  526. var srcNodeList = model.instances(0).selectNodes("/root/prcpdrag/prcplist");
  527. for ( i=1 ; i<=srcNodeList.length ; i++ ) {
  528. model.setValue ( "/root/prcpdrag/prcplist[" + i + "]/status" , "I" );
  529. }
  530. model.refresh();
  531. }
  532. /**
  533. * @desc : 처방상세 일괄입력
  534. * @param :
  535. * @return : void
  536. * @authur : 마정민 2007. 6. 30
  537. */
  538. function fPrcpDetlCom() {
  539. var xpt = 510;
  540. var ypt = 180;
  541. var header = "";
  542. var useyn = "";
  543. var value = "";
  544. var cnt = 0;
  545. var selectedRows = grd_prcplist.selectedRows;
  546. var prcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(0) + "]/prcpclscd" );
  547. var prnscrID = getScreenID(); //LYJ 2010.01.02 PRN처방 팝업 뜨는 조건위해 화면 ID 추가
  548. //fPrcpModal ( "SPMMO 10400", xpt, ypt ); //일괄입력 공통
  549. if ( prcpclscd == "A2" || prcpclscd == "A4" ) { //약
  550. for ( var i=selectedRows-1; i >= 0; i-- ){
  551. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  552. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  553. if ( selprcpclscd != "A2" && selprcpclscd != "A4" ) {
  554. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  555. cnt++;
  556. }
  557. }
  558. if ( cnt > 0) {
  559. fPrcpModal ( "SPMMO10400", xpt, ypt );
  560. } else {
  561. setParameter ( "SPMMO12100_prnchk", prnscrID); //LYJ 2010.01.02 PRN처방 팝업 뜨는 조건위해 화면 ID 추가
  562. fPrcpModal ( "SPMMO12100", xpt, ypt );
  563. }
  564. } else if ( prcpclscd == "A6" ) { //주사
  565. for ( var i=selectedRows-1; i >= 0; i-- ){
  566. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  567. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  568. if ( selprcpclscd != prcpclscd ) {
  569. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  570. cnt++;
  571. }
  572. }
  573. if ( cnt > 0) {
  574. fPrcpModal ( "SPMMO10400", xpt, ypt );
  575. } else {
  576. setParameter ( "SPMMO12200_prnchk", prnscrID); //LYJ 2010.01.02 PRN처방 팝업 뜨는 조건위해 화면 ID 추가
  577. fPrcpModal ( "SPMMO12200", xpt, ypt );
  578. }
  579. } else if ( prcpclscd == "F2" ) { //재활
  580. for ( var i=selectedRows-1; i >= 0; i-- ){
  581. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  582. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  583. if ( selprcpclscd != prcpclscd ) {
  584. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  585. cnt++;
  586. }
  587. }
  588. if ( cnt > 0) {
  589. fPrcpModal ( "SPMMO10400", xpt, ypt );
  590. } else {
  591. fPrcpModal ( "SPMMO11200", xpt, ypt );
  592. }
  593. } else if ( prcpclscd == "C2" || prcpclscd == "C6" || prcpclscd == "E2" ) {
  594. //방사선 검사(기능검사, 내시경,천자,생검, 방사선, 핵의학영상, 방사선치료)
  595. for ( var i=selectedRows-1; i >= 0; i-- ){
  596. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  597. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  598. if ( selprcpclscd != "C2" && selprcpclscd != "C6" && selprcpclscd != "E2" ) {
  599. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  600. cnt++;
  601. }
  602. }
  603. if ( cnt > 0) {
  604. fPrcpModal ( "SPMMO10400", xpt, ypt );
  605. } else {
  606. setParameter ( "SPMMO12300_prcpclscd", prcpclscd );
  607. fPrcpModal ( "SPMMO12300", xpt, ypt );
  608. setParameter ( "SPMMO12300_prcpclscd", "" );
  609. }
  610. } else if ( prcpclscd == "B2" || prcpclscd == "B6" ) { //진단검사 (검체검사), 핵의학 체내
  611. for ( var i=selectedRows-1; i >= 0; i-- ){
  612. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  613. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  614. if ( selprcpclscd != "B2" && selprcpclscd != "B6" ) {
  615. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  616. cnt++;
  617. }
  618. }
  619. if ( cnt > 0) {
  620. fPrcpModal ( "SPMMO10400", xpt, ypt );
  621. } else {
  622. setParameter ( "SPMMO12400_prcpclscd", prcpclscd );
  623. fPrcpModal ( "SPMMO12400", xpt, ypt );
  624. setParameter ( "SPMMO12400_prcpclscd", "" );
  625. }
  626. } else if ( prcpclscd == "H2" ) { //수술, 처치, 치과
  627. for ( var i=selectedRows-1; i >= 0; i-- ){
  628. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  629. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  630. if ( selprcpclscd != "H2" && selprcpclscd != "H4" ) {
  631. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  632. cnt++;
  633. }
  634. }
  635. if ( cnt > 0) {
  636. fPrcpModal ( "SPMMO10400", xpt, ypt );
  637. } else {
  638. fPrcpModal ( "SPMMO12600", xpt, ypt );
  639. }
  640. } else if ( prcpclscd == "K2" ) {
  641. for ( var i=selectedRows-1; i >= 0; i-- ){
  642. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  643. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  644. if ( selprcpclscd != "K2" ) {
  645. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  646. cnt++;
  647. }
  648. }
  649. if ( cnt > 0) {
  650. fPrcpModal ( "SPMMO10400", xpt, ypt );
  651. } else {
  652. fPrcpModal ( "SPMMO13500", xpt, ypt );
  653. }
  654. } else if ( prcpclscd == "03" ) { //식이
  655. for ( var i=selectedRows-1; i >= 0; i-- ){
  656. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  657. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  658. if ( selprcpclscd != prcpclscd ) {
  659. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  660. cnt++;
  661. }
  662. }
  663. if ( cnt > 0) {
  664. fPrcpModal ( "SPMMO10400", xpt, ypt );
  665. } else {
  666. fPrcpModal ( "SPMMO12700", xpt, ypt );
  667. }
  668. } else if ( prcpclscd == "I2" || prcpclscd == "I4" ) { //마취
  669. for ( var i=selectedRows-1; i >= 0; i-- ){
  670. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  671. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  672. if ( selprcpclscd != "I2" && selprcpclscd != "I4") {
  673. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  674. cnt++;
  675. }
  676. }
  677. if ( cnt > 0) {
  678. fPrcpModal ( "SPMMO10400", xpt, ypt );
  679. } else {
  680. fPrcpModal ( "SPMMO12800", xpt, ypt );
  681. }
  682. } else if ( prcpclscd == "C4" ) { //angio
  683. for ( var i=selectedRows-1; i >= 0; i-- ){
  684. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  685. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  686. if ( selprcpclscd != prcpclscd ) {
  687. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  688. cnt++;
  689. }
  690. }
  691. if ( cnt > 0) {
  692. fPrcpModal ( "SPMMO10400", xpt, ypt );
  693. } else {
  694. fPrcpModal ( "SPMMO12900", xpt, ypt );
  695. }
  696. } else if ( prcpclscd == "D2" ) { //병리
  697. for ( var i=selectedRows-1; i >= 0; i-- ){
  698. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  699. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  700. if ( selprcpclscd != prcpclscd ) {
  701. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  702. cnt++;
  703. }
  704. }
  705. if ( cnt > 0) {
  706. fPrcpModal ( "SPMMO10400", xpt, ypt );
  707. } else {
  708. fPrcpModal ( "SPMMO13000", xpt, ypt );
  709. }
  710. } else if ( prcpclscd == "M2" ) { //재료
  711. for ( var i=selectedRows-1; i >= 0; i-- ){
  712. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  713. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  714. if ( selprcpclscd != prcpclscd ) {
  715. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  716. cnt++;
  717. }
  718. }
  719. if ( cnt > 0) {
  720. fPrcpModal ( "SPMMO10400", xpt, ypt );
  721. } else {
  722. fPrcpModal ( "SPMMO13600", xpt, ypt );
  723. }
  724. } else if ( prcpclscd == "G2" ) { //RT
  725. for ( var i=selectedRows-1; i >= 0; i-- ){
  726. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  727. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  728. if ( selprcpclscd != prcpclscd ) {
  729. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  730. cnt++;
  731. }
  732. }
  733. if ( cnt > 0) {
  734. fPrcpModal ( "SPMMO10400", xpt, ypt );
  735. } else {
  736. fPrcpModal ( "SPMMO13700", xpt, ypt );
  737. }
  738. } else if ( prcpclscd == "H4" ) { //처치
  739. for ( var i=selectedRows-1; i >= 0; i-- ){
  740. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  741. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  742. if ( selprcpclscd != prcpclscd ) {
  743. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  744. cnt++;
  745. }
  746. }
  747. if ( cnt > 0) {
  748. fPrcpModal ( "SPMMO10400", xpt, ypt );
  749. } else {
  750. fPrcpModal ( "SPMMO13800", xpt, ypt );
  751. }
  752. } else if ( prcpclscd == "B4" ) { //수혈 (혈액수혈)
  753. for ( var i=selectedRows-1; i >= 0; i-- ){
  754. //첫번째 SELECT 된 것을 기준으로 다른 것은 SELECT를 해제한다.
  755. var selprcpclscd = model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/prcpclscd" );
  756. if ( selprcpclscd != prcpclscd ) {
  757. //grd_prcplist.select( grd_prcplist.selectedrow(i), 1, grd_prcplist.selectedrow(i), 1) = false;
  758. cnt++;
  759. }
  760. }
  761. if ( cnt > 0) {
  762. fPrcpModal ( "SPMMO10400", xpt, ypt );
  763. } else {
  764. fPrcpModal ( "SPMMO12500", xpt, ypt );
  765. }
  766. }
  767. fBatIpt ( "batipt_rtn1_useyn", "batipt_rtn1" );
  768. }
  769. /**
  770. * @desc : PreWorkUp 처리 오른쪽 마우스 클릭
  771. * @return : void
  772. * @authur : 마정민 2007. 4. 30
  773. */
  774. function fPreWorkUp () {
  775. var selectedRows = grd_prcplist.selectedRows;
  776. for (var i=0; i< selectedRows; i++) {
  777. if ( model.getValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/trnptbftestflag" ) == "Y" ) {
  778. model.setValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/trnptbftestflag", "N" )
  779. } else {
  780. model.setValue ( prcpNode + "[" + grd_prcplist.selectedrow(i) + "]/trnptbftestflag", "Y" )
  781. }
  782. makePrcpNm( prcpNode, grd_prcplist.selectedrow(i) );
  783. fSetCpVal(grd_prcplist.selectedrow(i), "U");
  784. }
  785. }
  786. /**
  787. * @desc : fMoveGridRows 그리드 선택행 이동
  788. * @param : grd_id 그리드 아이디
  789. * flag 이동방향('UP' or 'DOWN')
  790. * @return : void
  791. * @authur : 마정민 2007. 4. 30
  792. */
  793. function fMoveGridRows(grd_id, flag) {
  794. var grdObj = document.controls.item(grd_id);
  795. var row = grdObj.row;
  796. var fixRow = grdObj.fixedRows;
  797. var delRow = null;
  798. var insRow = null;
  799. var MaxRow = null;
  800. var MinRow = null;
  801. var i = null;
  802. var sStatus = "";
  803. //멀티로 선택된 로우 개수
  804. var selectedCnt = grdObj.selectedRows;
  805. if(selectedCnt < 1){
  806. alert("선택한 행이 없습니다.");
  807. return;
  808. }
  809. var selectedRows = Array(selectedCnt);
  810. for(i=0; i<selectedCnt; i++) {
  811. selectedRows[i] = grdObj.selectedRow(i);
  812. if(i == 0){
  813. MaxRow = grdObj.selectedRow(i);
  814. MinRow = grdObj.selectedRow(i);
  815. } else {
  816. if (MaxRow < grdObj.selectedRow(i))
  817. MaxRow = grdObj.selectedRow(i);
  818. if (MinRow > grdObj.selectedRow(i))
  819. MinRow = grdObj.selectedRow(i);
  820. }
  821. }
  822. if(MinRow < fixRow){
  823. alert("고정된 행은 선택할 수 없습니다.");
  824. return;
  825. }
  826. switch (flag) {
  827. case "UP": // 아래에서 위로 올릴때
  828. if(MinRow == fixRow){
  829. alert("최상위 행은 위로 이동할 수 없습니다.");
  830. return;
  831. }
  832. grdObj.disabled = true;
  833. for(i=0; i<selectedCnt; i++){
  834. grdObj.isSelected(selectedRows[i]) = false; // 선택취소
  835. insRow = selectedRows[i] - 1;
  836. delRow = selectedRows[i] + 1;
  837. grdObj.insertRow(insRow, "above", false);
  838. model.copyNode(grdObj.nodeset + "[" + insRow + "]", grdObj.nodeset + "[" + delRow + "]");
  839. grdObj.deleteRow(delRow, true);
  840. sStatus = model.getValue ( prcpNode + "[" + insRow + "]/status");
  841. if( sStatus == "-") {
  842. model.setValue ( prcpNode + "[" + insRow + "]/status", "U");
  843. }
  844. sStatus = model.getValue ( prcpNode + "[" + (insRow+1) + "]/status");
  845. if( sStatus == "-") {
  846. model.setValue ( prcpNode + "[" + (insRow+1) + "]/status", "U");
  847. }
  848. }
  849. grdObj.refresh()
  850. grdObj.row = MinRow-1;
  851. for(i=0; i<selectedCnt; i++) {
  852. grdObj.AddListSelect(selectedRows[i]-1);
  853. }
  854. grdObj.disabled = false;
  855. break;
  856. case "DOWN": // 위에서 아래로 내릴때
  857. if(MaxRow == grdObj.rows - 1){
  858. alert("최하위 행은 아래로 이동할 수 없습니다.");
  859. return;
  860. }
  861. grdObj.disabled = true;
  862. for(i=selectedCnt-1; i>=0; i--){
  863. grdObj.isSelected(selectedRows[i]) = false; // 선택취소
  864. insRow = selectedRows[i] + 1;
  865. delRow = selectedRows[i];
  866. grdObj.insertRow(insRow, "below" , false);
  867. model.copyNode(grdObj.nodeset + "[" + (insRow+1) + "]", grdObj.nodeset + "[" + delRow + "]");
  868. grdObj.deleteRow(delRow, true);
  869. sStatus = model.getValue ( prcpNode + "[" + insRow + "]/status");
  870. if( sStatus == "-") {
  871. model.setValue ( prcpNode + "[" + insRow + "]/status", "U");
  872. }
  873. sStatus = model.getValue ( prcpNode + "[" + (insRow-1) + "]/status");
  874. if( sStatus == "-") {
  875. model.setValue ( prcpNode + "[" + (insRow-1) + "]/status", "U");
  876. }
  877. }
  878. grdObj.refresh();
  879. grdObj.row = MinRow+1;
  880. for(i=0; i<selectedCnt; i++) {
  881. grdObj.AddListSelect(selectedRows[i]+1);
  882. }
  883. grdObj.disabled = false;
  884. break;
  885. default:
  886. alert("fMoveGridRows() flag 값은 UP 또는 DOWN만 가능 합니다.");
  887. return;
  888. }
  889. fAbsnSrch(prcpNode, grdObj );
  890. }
  891. /**
  892. * @desc : 엑셀저장
  893. * @
  894. * @param : sechflag S:싱글(처방리스트에서 호출) T:트리하위까지(트리에서 호출) P:개인 약속셋 전체 D:부서약속셋 전체
  895. * settrgtcd sechflag 값이 P 또는 D일때 사번 또는 부서코드
  896. * ioflag sechflag 값이 P 또는 D일때 진료구분 (O:외래, I:입원)
  897. * @return :
  898. * @author : 엄영만 (2012.01.30)
  899. * @---------------------------------------------------
  900. */
  901. function fsaveToExcel(sechflag, settrgtcd, ioflag){
  902. var setno = model.getValue("/root/hidden/prmsprcpsetdetlset/setno");
  903. var settypecd = model.getValue("/root/hidden/prmsprcpsetdetlset/settypecd");
  904. var setnm = model.getValue("/root/hidden/prmsprcpsetdetlset/setnm");
  905. //파일 이름 사용 불가 문자열 처리
  906. var specialChars = /[/\~!#$^&*+|:;?"<>']/; // 특수기호 처리
  907. setnm = setnm.split(specialChars).join(" ");
  908. var sTitle = "약속처방 " + setnm;
  909. model.setValue ( "/root/send/cond1", setno);
  910. model.setValue ( "/root/send/cond2", settypecd);
  911. model.setValue ( "/root/send/cond3", sechflag);
  912. model.setValue ( "/root/send/cond4", settrgtcd);
  913. model.setValue ( "/root/send/cond5", ioflag);
  914. submit("TRMMB00204", false);
  915. grid_excel.refresh();
  916. var fileName = window.fileDialog("save", ",", false, sTitle, "xls", "Excel Files(*.xls)|*.xls|All Files (*.*)|*.*");
  917. if (fileName != ""){
  918. grid_excel.saveExcel(fileName, sTitle, true, true, "", "", true);
  919. }
  920. }