SMMSG03100.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438
  1. /*
  2. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  3. 진료재료파트 CSR 일일업무일지 ( SMRSG03100_진료재료파트CSR일일업무일지.xrw - JScript )
  4. - Version :
  5. 1) : Ver.1.00.01
  6. - Author : 최원돈
  7. - ▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩▩
  8. */
  9. var sDYBIZDIARYINFO_PATH = "/root/main/dyBizDiaryinfo";
  10. var sDYBIZDIARYGNRLINFO_PATH = "/root/main/dyBizDiaryinfo/workGnrlinfo";
  11. var sDYBIZDIARYBSLIST_PATH = "/root/main/dyBizDiaryinfo/workBslist";
  12. var sDYBIZDIARYSETLIST_PATH = "/root/main/dyBizDiaryinfo/workSetlist";
  13. /**
  14. * @---------------------------------------------------
  15. * @creat : 20101023
  16. * @author : 최원돈
  17. * @desc : 초기화
  18. * @---------------------------------------------------
  19. */
  20. function fInitialize(){
  21. //그리드 노드 초기화
  22. model.removenode("/root/main/dyBizDiaryinfo");
  23. model.makenode("/root/main/dyBizDiaryinfo");
  24. var pCode = "'T09'"; // 조회할 CdGrupID 코드정보
  25. var pDate = getCurrentDate(); // 조회기준일자
  26. fGetNursHardCdInfo(pCode, pDate); // 간호코드 조회
  27. model.setValue("/root/main/cond/workdd", getCurrentDate());
  28. model.refresh();
  29. //확인자가 아니면 '확인' 불가
  30. if (model.getValue("/root/code/codeinfo/codelist[cdid = '" + getUserId() + "']/cdnm") == '')
  31. {
  32. btn_cnfm.disabled = true;
  33. }
  34. else
  35. {
  36. btn_cnfm.disabled = false;
  37. }
  38. fGetdyBizDiaryinfo();
  39. }
  40. /**
  41. * @---------------------------------------------------
  42. * @creat : 20101023
  43. * @author : 최원돈
  44. * @desc : 진료재료파트 체크리스트항목 조회
  45. * @---------------------------------------------------
  46. */
  47. function fGetdyBizDiaryinfo(){
  48. //send parameter 설정
  49. model.removenode("/root/send/reqdata");
  50. model.makeNode("/root/send/reqdata");
  51. model.copyNode("/root/send/reqdata", "/root/main/cond");
  52. //submit 호출
  53. if(!submit("TRMSG03101")){
  54. messageBox("조회를 실패하였습니다.", "E999");
  55. return;
  56. }
  57. createTempNode(); // Temp 노드를 생성한다.
  58. setGridStyleworkBslist(); // workBslist DataGrid의 Style을 설정한다.
  59. }
  60. /**
  61. * @---------------------------------------------------
  62. * @creat : 20101023
  63. * @author : 최원돈
  64. * @desc : 진료재료파트 체크리스트항목 출력
  65. * @---------------------------------------------------
  66. */
  67. function fPrintdyBizDiaryinfo()
  68. {
  69. if(model.getValue(sDYBIZDIARYGNRLINFO_PATH + "/writid") == "") // Empty 체크
  70. {
  71. messageBox('출력할 내역이 없습니다.', 'E999');
  72. return;
  73. }
  74. if(!chkIdenNode("/root/temp", sDYBIZDIARYINFO_PATH)) // 동일여부체크
  75. {
  76. messageBox("입력된 정보가 있어서 출력할 수 없습니다.", "E999");
  77. return;
  78. }
  79. if (rdo_srchflag.value == "A") // 기본업무관리
  80. {
  81. //send parameter 설정
  82. model.removenode("/root/send/reqdata");
  83. model.makeNode("/root/send/reqdata");
  84. model.copyNode("/root/send/reqdata", "/root/main/prtcond");
  85. //submit 호출
  86. if(!submit("TRMSG03102")){
  87. messageBox("출력 조회를 실패하였습니다.", "E999");
  88. return;
  89. }
  90. exeReportPreview("RPMSG03101", "XMLSTR", "", "", "false","","","","","false", "", "");//미리보기
  91. grp_prt.visible = false;
  92. }
  93. else // 기구,SET관리
  94. {
  95. exeReportPreview("RPMSG03102", "XMLSTR", "", "", "false","","","","","false", "", "");//미리보기
  96. }
  97. }
  98. /**
  99. * @---------------------------------------------------
  100. * @creat : 20101023
  101. * @author : 최원돈
  102. * @desc : 진료재료파트 체크리스트항목 저장
  103. * @---------------------------------------------------
  104. */
  105. function fClkBtndyBizDiarySave()
  106. {
  107. if(chkIdenNode("/root/temp", sDYBIZDIARYINFO_PATH)) // 동일여부체크
  108. {
  109. messageBox("저장할 데이터가", "I004");
  110. return;
  111. }
  112. model.setValue(sDYBIZDIARYGNRLINFO_PATH + "/writid", getUserId());
  113. model.removeNodeset("/root/difinfo");
  114. model.makeNode("/root/difinfo/workGnrlinfo");
  115. model.makeNode("/root/difinfo/workBslist");
  116. model.makeNode("/root/difinfo/workSetlist");
  117. var nodeworkGnrlinfo = instance1.selectSingleNode("/root/difinfo/workGnrlinfo");
  118. var nodeworkBslist = instance1.selectSingleNode("/root/difinfo/workBslist");
  119. var nodeworkSetlist = instance1.selectSingleNode("/root/difinfo/workSetlist");
  120. //수정 정보 추출
  121. setDifNode("/root/temp", sDYBIZDIARYINFO_PATH, nodeworkGnrlinfo, nodeworkBslist, nodeworkSetlist);
  122. var nodeListGnrlinfo = nodeworkGnrlinfo.childNodes;
  123. var nodeListBslist = nodeworkBslist.childNodes;
  124. var nodeListSetlist = nodeworkSetlist.childNodes;
  125. //send parameter 설정
  126. model.removenode("/root/send/reqdata");
  127. model.makeNode("/root/send/reqdata");
  128. model.copyNode("/root/send/reqdata", "/root/main/cond");
  129. model.removeNodeset("/root/send/savedata");
  130. if (nodeListGnrlinfo.length > 0)
  131. {
  132. model.makeValue("/root/send/savedata/saveGnrldata", getNodeListCSV(nodeListGnrlinfo));
  133. }
  134. if (nodeListBslist.length > 0)
  135. {
  136. model.makeValue("/root/send/savedata/saveBsdata", getNodeListCSV(nodeListBslist));
  137. }
  138. if (nodeListSetlist.length > 0)
  139. {
  140. model.makeValue("/root/send/savedata/saveSetdata", getNodeListCSV(nodeListSetlist));
  141. }
  142. if(!submit("TXMSG03101")){
  143. messageBox("저장을 실패하였습니다.", "E999");
  144. return;
  145. }
  146. createTempNode(); // Temp 노드를 생성한다.
  147. }
  148. /**
  149. * @---------------------------------------------------
  150. * @creat : 20101023
  151. * @author : 최원돈
  152. * @desc : 진료재료파트 체크리스트항목 확정
  153. * @---------------------------------------------------
  154. */
  155. function fClkBtndyBizDiaryCnfmr()
  156. {
  157. model.setValue(sDYBIZDIARYGNRLINFO_PATH + "/cnfmrid", getUserId());
  158. if(!chkIdenNode("/root/temp", sDYBIZDIARYINFO_PATH)) // 동일여부체크
  159. {
  160. fClkBtndyBizDiarySave(); // 저장으로 처리함.
  161. return;
  162. }
  163. var nodeListGnrlinfo = instance1.selectNodes(sDYBIZDIARYGNRLINFO_PATH);
  164. model.removeNodeset("/root/send/savedata");
  165. model.makeValue("/root/send/savedata/saveGnrldata", getNodeListCSV(nodeListGnrlinfo));
  166. if(!submit("TXMSG03101")){
  167. messageBox("저장을 실패하였습니다.", "E999");
  168. return;
  169. }
  170. createTempNode(); // Temp 노드를 생성한다.
  171. }
  172. /**
  173. * @---------------------------------------------------
  174. * @creat : 20101023
  175. * @author : 최원돈
  176. * @desc : 틀린노드를 저장한다.
  177. * @---------------------------------------------------
  178. */
  179. function setDifNode(desNode, srcNode, nodeworkGnrlinfo, nodeworkBslist, nodeworkSetlist)
  180. {
  181. var node = instance1.selectSingleNode(desNode);
  182. var node2 = instance1.selectSingleNode(srcNode);
  183. var nodeList = node.childNodes;
  184. var nodeList2 = node2.childNodes;
  185. var checkYn = false;
  186. for(var i=0; i<nodeList2.length; i++)
  187. {
  188. var infonode2 = nodeList2.item(i);
  189. var infonodeListChild2 = infonode2.childNodes;
  190. if (nodeList.length <= i)
  191. {
  192. checkYn = true;
  193. }
  194. else
  195. {
  196. var infonode = nodeList.item(i);
  197. var infonodeListChild = infonode.childNodes;
  198. while(infochildNode2 = infonodeListChild2.nextNode())
  199. {
  200. var infochildNode = infonodeListChild.nextNode();
  201. if(infochildNode.NodeValue != infochildNode2.NodeValue)
  202. {
  203. checkYn = true;
  204. break;
  205. }
  206. }
  207. }
  208. if (checkYn)
  209. {
  210. if(infonode2.nodeName == "workGnrlinfo")
  211. {
  212. nodeworkGnrlinfo.appendChild(infonode2);
  213. }
  214. else if (infonode2.nodeName == "workBslist")
  215. {
  216. nodeworkBslist.appendChild(infonode2);
  217. }
  218. else
  219. {
  220. nodeworkSetlist.appendChild(infonode2);
  221. }
  222. checkYn = false;
  223. }
  224. }
  225. return;
  226. }
  227. /**
  228. * @---------------------------------------------------
  229. * @creat : 20101023
  230. * @author : 최원돈
  231. * @desc : 동일여부를 체크한다.
  232. * @---------------------------------------------------
  233. */
  234. function chkIdenNode(desNode, srcNode)
  235. {
  236. var node = instance1.selectSingleNode(desNode);
  237. var node2 = instance1.selectSingleNode(srcNode);
  238. var nodeList = node.childNodes;
  239. var nodeList2 = node2.childNodes;
  240. var checkYn = false;
  241. for(var i=0; i<nodeList2.length; i++)
  242. {
  243. var infonode2 = nodeList2.item(i);
  244. var infonodeListChild2 = infonode2.childNodes;
  245. if (nodeList.length <= i)
  246. {
  247. return false;
  248. }
  249. else
  250. {
  251. var infonode = nodeList.item(i);
  252. var infonodeListChild = infonode.childNodes;
  253. while(infochildNode2 = infonodeListChild2.nextNode())
  254. {
  255. var infochildNode = infonodeListChild.nextNode();
  256. if(infochildNode.NodeValue != infochildNode2.NodeValue)
  257. {
  258. return false;
  259. }
  260. }
  261. }
  262. }
  263. return true;
  264. }
  265. /**
  266. * @---------------------------------------------------
  267. * @creat : 20101023
  268. * @author : 최원돈
  269. * @desc : Grid의 Column 수정 가능여부 설정
  270. * @ - '항목' OR 삭제 OR 미체크된 Row 일 경우에는 '수량'을 수정할 수 없음.
  271. * @---------------------------------------------------
  272. */
  273. function setonstarteditGridColDisabled()
  274. {
  275. if ( grd_workBslist.valueMatrix(grd_workBslist.row,grd_workBslist.colRef("flagyn")) == "Y"
  276. || grd_workBslist.valueMatrix(grd_workBslist.row,grd_workBslist.colRef("delyn")) == "Y"
  277. || grd_workBslist.valueMatrix(grd_workBslist.row,grd_workBslist.colRef("chkyn")) == "N")
  278. {
  279. event.defaultAction = "cancel";
  280. }
  281. else
  282. {
  283. event.defaultAction = "perform";
  284. }
  285. }
  286. /**
  287. * @---------------------------------------------------
  288. * @creat : 20101023
  289. * @author : 최원돈
  290. * @desc : workBslist DataGrid의 Style을 설정한다.
  291. * @---------------------------------------------------
  292. */
  293. function setGridStyleworkBslist()
  294. {
  295. //저장 권한 체크
  296. if ( model.getValue(sDYBIZDIARYGNRLINFO_PATH + "/cnfmrid") == ''
  297. || model.getValue(sDYBIZDIARYGNRLINFO_PATH + "/cnfmrid") == getUserId())
  298. {
  299. btn_save.disabled = false;
  300. }
  301. else
  302. {
  303. btn_save.disabled = true;
  304. }
  305. var iRows = grd_workBslist.rows
  306. if (iRows > 0)
  307. {
  308. grd_workBslist.rebuildStyle();
  309. var ii = 0;
  310. for( var i = 1; i <= iRows; i++ ) {
  311. if(model.getValue(sDYBIZDIARYBSLIST_PATH + "["+i+"]/flagyn") == "Y") // 분류 Row Style 설정 (구분)
  312. {
  313. ii = 0; // 분류이면 0 설정
  314. }
  315. else // 입력 Row Style 설정 (항목)
  316. {
  317. grd_workBslist.rowstyle( i-1 , "data", "font-weight") = "normal";
  318. ii++;
  319. if( ii % 2 == 0 )
  320. {
  321. grd_workBslist.rowstyle( i-1 , "data", "background-color") = "#FFFFFF"; //짝수
  322. }
  323. else
  324. {
  325. grd_workBslist.rowstyle( i-1 , "data", "background-color") = "#F7FFF7"; //홀수
  326. }
  327. }
  328. }
  329. grd_workBslist.colstyle(grd_workBslist.colRef("dayold"), "data", "background-color") = "#ffff00";
  330. grd_workBslist.colstyle(grd_workBslist.colRef("eveold"), "data", "background-color") = "#ffff00";
  331. for( var i = 1; i <= iRows; i++ ) {
  332. if(model.getValue(sDYBIZDIARYBSLIST_PATH + "["+i+"]/flagyn") == "Y") // 분류 Row Style 설정 (구분)
  333. {
  334. grd_workBslist.rowstyle( i-1 , "data", "background-color") = "#8EBCFF"; //#B9E5FB
  335. grd_workBslist.rowstyle( i-1 , "data", "text-align") = "center";
  336. }
  337. if( model.getValue(sDYBIZDIARYBSLIST_PATH + "["+i+"]/delyn") == "Y" // 삭제, 미체크 Row Style 설정
  338. || model.getValue(sDYBIZDIARYBSLIST_PATH + "["+i+"]/chkyn") == "N")
  339. {
  340. grd_workBslist.rowstyle( i-1 , "data", "color") = "#ff0000";
  341. }
  342. }
  343. }
  344. }
  345. /**
  346. * @---------------------------------------------------
  347. * @creat : 20101023
  348. * @author : 최원돈
  349. * @desc : Temp 노드를 생성한다.
  350. * @---------------------------------------------------
  351. */
  352. function createTempNode()
  353. {
  354. // 일일업무일지_일반정보가 없으면, 임의로 Node를 만든다.
  355. if (instance1.selectNodes(sDYBIZDIARYGNRLINFO_PATH).length <= 0)
  356. {
  357. model.makeValue(sDYBIZDIARYGNRLINFO_PATH + "/workdd" , model.getValue("/root/main/cond/workdd"));
  358. model.makeValue(sDYBIZDIARYGNRLINFO_PATH + "/workseq", 1);
  359. model.makeNode (sDYBIZDIARYGNRLINFO_PATH + "/writid" );
  360. model.makeNode (sDYBIZDIARYGNRLINFO_PATH + "/cnfmrid");
  361. model.makeNode (sDYBIZDIARYGNRLINFO_PATH + "/split" );
  362. model.makeNode (sDYBIZDIARYGNRLINFO_PATH + "/day" );
  363. model.makeNode (sDYBIZDIARYGNRLINFO_PATH + "/eve" );
  364. model.makeNode (sDYBIZDIARYGNRLINFO_PATH + "/notice" );
  365. model.makeNode (sDYBIZDIARYGNRLINFO_PATH + "/spcf" );
  366. model.makeNode (sDYBIZDIARYGNRLINFO_PATH + "/eqmt" );
  367. model.makeNode (sDYBIZDIARYGNRLINFO_PATH + "/tmpr" );
  368. model.makeNode (sDYBIZDIARYGNRLINFO_PATH + "/humi" );
  369. model.makeNode (sDYBIZDIARYGNRLINFO_PATH + "/remfact");
  370. model.makeNode (sDYBIZDIARYGNRLINFO_PATH + "/instcd" );
  371. model.makeNode (sDYBIZDIARYGNRLINFO_PATH + "/writnm" );
  372. model.makeNode (sDYBIZDIARYGNRLINFO_PATH + "/cnfmrnm");
  373. }
  374. model.removeNodeset("/root/temp");
  375. model.makeNode("/root/temp");
  376. model.copyNode("/root/temp", sDYBIZDIARYINFO_PATH);
  377. model.refresh();
  378. }