SPMMB00800_약속SET순서변경.xfdl 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FDL version="1.4">
  3. <TypeDefinition url="..\..\..\default_typedef.xml"/>
  4. <Form id="SPMMB00800" position="absolute 0 0 337 714" titletext="약속SET순서변경" oninit="SPMMB00800_oninit" onload="SPMMB00800_onload" class="frm_POP">
  5. <Layouts>
  6. <Layout>
  7. <Button position="absolute 215 684 271 706" id="button1" class="btn4" text="저장" onclick="button1_onclick"/>
  8. <Button position="absolute 273 684 329 706" id="button2" class="btn3" text="닫기" onclick="button2_onclick"/>
  9. <Grid id="trv_prmsprcpsetlist" taborder="1" binddataset="ds_main_prmsprcpsetlist" useinputpanel="false" selecttype="treecell" autosizingtype="col" treeusecheckbox="false" onrbuttondown="trv_promprcpset_onrbuttondown" position="absolute 2 35 335 679" autofit="col" userdata="0" cantreestatuschange="trv_prmsprcpsetlist_cantreestatuschange" oncellclick="trv_prmsprcpsetlist_oncellclick" onkeydown="trv_prmsprcpsetlist_onkeydown" ondrag="trv_prmsprcpsetlist_ondrag" ondragmove="trv_prmsprcpsetlist_ondragmove" ondrop="trv_prmsprcpsetlist_ondrop" ondragleave="trv_prmsprcpsetlist_ondragleave">
  10. <Formats>
  11. <Format id="default">
  12. <Columns>
  13. <Column size="322"/>
  14. </Columns>
  15. <Rows>
  16. <Row size="24"/>
  17. </Rows>
  18. <Band id="body">
  19. <Cell displaytype="tree" edittype="tree" style="line:0 none #808080ff ;background:EXPR(fDragOverColorChng(currow));background2:EXPR(fDragOverColorChng(currow));cursor: ;" text="bind:setnm" treestartlevel="1" treelevel="bind:levl" autosizecol="limitmin"/>
  20. </Band>
  21. </Format>
  22. </Formats>
  23. </Grid>
  24. <Static id="stt_titleText" text="SET폴더 순서변경" class="sta_POP_title" position="absolute 12 8 225 28" style="align:left middle;"/>
  25. <Button id="btn_close" taborder="2" onclick="btn_close_onclick" class="btn_POP_cls" position="absolute 311 12 325 25"/>
  26. </Layout>
  27. </Layouts>
  28. <Objects>
  29. <Dataset id="ds_send_reqdata" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  30. <ColumnInfo>
  31. <Column id="settypecd" type="STRING" size="256" sumtext="set형태코드"/>
  32. <Column id="setkindcd" type="STRING" size="256" sumtext="set종류코드"/>
  33. <Column id="setclscd" type="STRING" size="256" sumtext="set분류코드"/>
  34. <Column id="procflag" type="STRING" size="256" sumtext="처리구분"/>
  35. <Column id="deptnm" type="STRING" size="256" sumtext="부서명"/>
  36. <Column id="deptcd" type="STRING" size="256" sumtext="부서코드"/>
  37. <Column id="ioflag" type="STRING" size="256" sumtext="외래입원구분"/>
  38. </ColumnInfo>
  39. </Dataset>
  40. <Dataset id="ds_send_savedata" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  41. <ColumnInfo>
  42. <Column id="setno" type="INT" size="256" sumtext="set번호"/>
  43. <Column id="supsetno" type="INT" size="256" sumtext="상위set번호"/>
  44. <Column id="sortno" type="INT" size="256" sumtext="정렬순서"/>
  45. <Column id="setkindcd" type="STRING" size="256" sumtext="set종류코드"/>
  46. <Column id="setclscd" type="STRING" size="256" sumtext="set분류코드"/>
  47. <Column id="settrgtcd" type="STRING" size="256" sumtext="set대상코드"/>
  48. <Column id="setnm" type="STRING" size="256" sumtext="set명"/>
  49. <Column id="settypecd" type="STRING" size="256" sumtext="set구분코드"/>
  50. <Column id="ioflag" type="STRING" size="256" sumtext="외래입원구분"/>
  51. <Column id="setrefseq" type="INT" size="256" sumtext="조회순서"/>
  52. </ColumnInfo>
  53. </Dataset>
  54. <Dataset id="ds_main_prmsprcpsetlist" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  55. <ColumnInfo>
  56. <Column id="levl" type="INT" size="256" sumtext="level값"/>
  57. <Column id="setno" type="STRING" size="256" sumtext="set번호"/>
  58. <Column id="settypecd" type="STRING" size="256" sumtext="set종류코드"/>
  59. <Column id="supsetno" type="STRING" size="256" sumtext="상위set번호"/>
  60. <Column id="setkindcd" type="STRING" size="256" sumtext="set종류코드"/>
  61. <Column id="setclscd" type="STRING" size="256" sumtext="set분류코드"/>
  62. <Column id="settrgtcd" type="STRING" size="256" sumtext="대상코드(과,개인)"/>
  63. <Column id="prtlno" type="STRING" size="256" sumtext="프로토콜번호"/>
  64. <Column id="setnm" type="STRING" size="256" sumtext="set명"/>
  65. <Column id="ioflag" type="STRING" size="256" sumtext="외래입원구분"/>
  66. <Column id="setrefseq" type="STRING" size="256" sumtext="순서"/>
  67. </ColumnInfo>
  68. </Dataset>
  69. </Objects>
  70. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  71. * System Name :
  72. * Job Name :
  73. * Creator :
  74. * Make Date : 2014-08-29
  75. * Description :
  76. *---------------------------------------------------------------------------------------
  77. * Modify Date Modifier Modify Description
  78. *---------------------------------------------------------------------------------------
  79. * 2014-08-29 Live Converter TF->XP
  80. *
  81. *---------------------------------------------------------------------------------------
  82. ****************************************************************************************/
  83. include "com_commonxp::comm_main.xjs";
  84. var g_prevmouserow = -1;
  85. function SPMMB00800_oninit(obj:Form, e:InitEventInfo)
  86. {
  87. frmf_initForm(obj);
  88. }
  89. function SPMMB00800_onload(obj:Form, e:LoadEventInfo)
  90. {
  91. stt_titleText.text = "SET폴더 순서변경";
  92. fInitialize_SPMMB00800();
  93. }
  94. function btn_close_onclick(obj:Button, e:ClickEventInfo)
  95. {
  96. fClkBtnClose();
  97. }
  98. function button1_onclick(obj:Button, e:ClickEventInfo)
  99. {
  100. fUpdtRefSeq();
  101. fClkBtnClose();
  102. }
  103. function button2_onclick(obj:Button, e:ClickEventInfo)
  104. {
  105. fClkBtnClose();
  106. }
  107. function trv_prmsprcpsetlist_cantreestatuschange(obj:Grid, e:GridTreeStatusEventInfo)
  108. {
  109. obj.userdata = 1;
  110. }
  111. function trv_prmsprcpsetlist_oncellclick(obj:Grid, e:GridClickEventInfo)
  112. {
  113. // icon으로 tree를 컨트롤 하는 경우는 여기를 태우지 않는다.
  114. if(obj.userdata == 1) {
  115. obj.userdata = 0;
  116. return;
  117. }
  118. var row = obj.getTreeRow(e.row);
  119. if(obj.getTreeStatus(row) == 0)
  120. obj.setTreeStatus(row, true);
  121. else if(obj.getTreeStatus(row) == 1)
  122. obj.setTreeStatus(row, false);
  123. obj.userdata = 0;
  124. }
  125. function trv_prmsprcpsetlist_onkeydown(obj:Grid, e:KeyEventInfo)
  126. {
  127. if(e.keycode == 13) {
  128. trv_prmsprcpsetlist.oncellclick.fireEvent(trv_prmsprcpsetlist, new GridClickEventInfo());
  129. }
  130. }
  131. /**
  132. * @desc : 약속SET순서변경 초기화
  133. * @
  134. * @param :
  135. * @return :
  136. * @author : 오지훈 2007. 10. 30
  137. * @---------------------------------------------------
  138. */
  139. function fInitialize_SPMMB00800(){
  140. var openerparam = opener.frmf_getParameter("SPMMB00800_param");
  141. var param = openerparam.split("▦");
  142. var setkindcd = param[0];
  143. var setclscd = param[1];
  144. var settypecd = param[2];
  145. var procflag = param[3];
  146. var deptcd = param[4];
  147. var deptnm = param[5];
  148. var ioflag = param[6];
  149. var indx = param[7];
  150. fReqSetTreeView(setkindcd, setclscd, settypecd, procflag, deptcd, deptnm, ioflag);
  151. grdf_expandTree(trv_prmsprcpsetlist, indx);
  152. }
  153. /**
  154. * @desc : 약속SET 처방/진단/수술/프로토콜 조회
  155. * @
  156. * @param : setkindcd - SET종류코드(개인P/부서D)
  157. * : setclscd - SET분류코드(의사D)
  158. * : settypecd - SET분류코드(처방P/진단D/수술O/프로토콜C)
  159. * : procflag - 처리구분(부서SET:D)
  160. * : deptcd - 부서코드
  161. * : deptnm - 부서명
  162. * : ioflag - 외래/입원구분
  163. * @return :
  164. * @authur : 오지훈 2007. 6. 27
  165. * @---------------------------------------------------
  166. */
  167. function fReqSetTreeView(setkindcd, setclscd, settypecd, procflag, deptcd, deptnm, ioflag){
  168. ds_send_reqdata.clearData();
  169. ds_send_reqdata.addRow();
  170. ds_send_reqdata.setColumn(0, "setkindcd", setkindcd); //개인, 부서
  171. ds_send_reqdata.setColumn(0, "setclscd" , setclscd); //의사
  172. ds_send_reqdata.setColumn(0, "settypecd", settypecd); //처방, 진단, 수술, 프로토콜
  173. ds_send_reqdata.setColumn(0, "procflag", procflag); //처리구분(부서SET 조회시 설정)
  174. ds_send_reqdata.setColumn(0, "deptcd", deptcd); //부서코드(부서SET 조회시 설정)
  175. ds_send_reqdata.setColumn(0, "deptnm", deptnm); //부서명 (부서SET 조회시 설정)
  176. if(settypecd == "D"||settypecd == "O"){ //진단, 수술인 경우N으로 처리
  177. ioflag = "N";
  178. }
  179. ds_send_reqdata.setColumn(0, "ioflag", ioflag); //외래입원구분
  180. var oParam = {};
  181. oParam.id = "TRMMB00601";
  182. oParam.service = "prcpbaseapp.PrmsPrcpMngt";
  183. oParam.method = "reqGetPrmsPrcpSetList";
  184. oParam.inds = "req=ds_send_reqdata";
  185. oParam.outds = "ds_main_prmsprcpsetlist=prmsprcpsetlist";
  186. oParam.async = false;
  187. tranf_submit(oParam);
  188. }
  189. /**
  190. * @desc : tree nodeset 순서 설정
  191. * @
  192. * @param :
  193. * @return :
  194. * @author : 오지훈 2007. 10. 31
  195. * @---------------------------------------------------
  196. */
  197. function fUpdtRefSeq(){
  198. var indx = ds_main_prmsprcpsetlist.rowposition;
  199. var totcnt = ds_main_prmsprcpsetlist.rowcount;
  200. for(var i = 1; i < totcnt; i++){
  201. ds_main_prmsprcpsetlist.setColumn(i, "setrefseq", i);
  202. }
  203. ds_send_savedata.copyData(ds_main_prmsprcpsetlist);
  204. var oParam = {};
  205. oParam.id = "TXMMB00801";
  206. oParam.service = "prcpbaseapp.PrmsPrcpMngt";
  207. oParam.method = "reqSetPrmsFolderOrder";
  208. oParam.inds = "req=ds_send_savedata";
  209. oParam.outds = "ds_main_prmsprcpsetlist=prmsprcpsetlist";
  210. oParam.async = false;
  211. tranf_submit(oParam);
  212. }
  213. /**
  214. * @desc : tree nodeset 순서 설정
  215. * @
  216. * @param :
  217. * @return :
  218. * @author : 오지훈 2007. 10. 31
  219. * @---------------------------------------------------
  220. */
  221. function fClkBtnClose(){
  222. opener.frmf_setParameter("SPMMB00800_rtnparam", ds_main_prmsprcpsetlist.rowposition);
  223. close();
  224. }
  225. function trv_prmsprcpsetlist_ondrag(obj:Grid, e:GridDragEventInfo)
  226. {
  227. if(e.row < 0 || e.col < 0) return false;
  228. return true;
  229. }
  230. function trv_prmsprcpsetlist_ondragmove(obj:Grid, e:GridDragEventInfo)
  231. {
  232. if(e.row != g_prevmouserow)
  233. g_prevmouserow = e.row;
  234. }
  235. function trv_prmsprcpsetlist_ondrop(obj:Grid, e:GridDragEventInfo)
  236. {
  237. if(g_prevmouserow == -1) return false;
  238. fDropTrvItem(obj, e.row);
  239. g_prevmouserow = -1;
  240. }
  241. function trv_prmsprcpsetlist_ondragleave(obj:Grid, e:DragEventInfo)
  242. {
  243. g_prevmouserow = -1;
  244. }
  245. /**
  246. * @desc : Mouse Drag Over중 선택한 treeview item의 색깔 변경
  247. * @
  248. * @param :
  249. * @return :
  250. * @author : 오지훈 2007. 10. 30
  251. * @---------------------------------------------------
  252. */
  253. function fDragOverColorChng(currow){
  254. return (currow == g_prevmouserow) ? "#ccffff" : "#ffffff";
  255. }
  256. /**
  257. * @desc : Mouse Drop시 treeview item의 순서 변경
  258. * @
  259. * @param :
  260. * @return :
  261. * @author : 오지훈 2007. 10. 30
  262. * @---------------------------------------------------
  263. */
  264. function fDropTrvItem(obj:Grid, trgtindx){
  265. //선택된 아이템
  266. var srcindx = ds_main_prmsprcpsetlist.rowposition;
  267. var srcval = ds_main_prmsprcpsetlist.getColumn(srcindx, "setno");
  268. //드롭 위치의 아이템
  269. var trgtval = ds_main_prmsprcpsetlist.getColumn(trgtindx, "setno");
  270. if(trgtval == 1){
  271. sysf_messageBox("선택된 폴더로 이동", "E001");
  272. return;
  273. }
  274. var srcparentindx = obj.getTreeParentRow(srcindx, true);
  275. var trgtparentindx = obj.getTreeParentRow(trgtindx, true);
  276. if(srcparentindx == trgtparentindx){
  277. var scrollPos = obj.vscrollbar.pos; // 현재 스크롤 위치 임시 저장
  278. var srcLastChildItemIndex = getLastChildItemIndex(srcindx, obj);
  279. var trgLastChildItemIndex = getLastChildItemIndex(trgtindx, obj);
  280. var srcChildCount = srcindx - srcLastChildItemIndex;
  281. var trgChildCount = trgtindx - trgLastChildItemIndex;
  282. if(srcChildCount < 0) srcChildCount *= -1;
  283. if(trgChildCount < 0) trgChildCount *= -1;
  284. var finalSrcIndex;
  285. var finalTrgtIndex;
  286. var lastIndex;
  287. ds_main_prmsprcpsetlist.enableevent = false;
  288. if(srcindx > trgtindx) { // 아래에서 위로 이동하는 경우
  289. finalSrcIndex = srcindx + srcChildCount;
  290. finalTrgtIndex = trgtindx;
  291. lastIndex = trgtindx;
  292. } else { // 위에서 아래로 이동하는 경우
  293. finalSrcIndex = srcindx;
  294. finalTrgtIndex = trgtindx + trgChildCount;
  295. lastIndex = trgtindx - srcChildCount + trgChildCount;
  296. }
  297. var count = srcChildCount + 1;
  298. var nRow;
  299. for(var i = 0; i < count; i++)
  300. nRow = ds_main_prmsprcpsetlist.moveRow(finalSrcIndex, finalTrgtIndex);
  301. ds_main_prmsprcpsetlist.applyChange();
  302. ds_main_prmsprcpsetlist.enableevent = true;
  303. grdf_expandTree(obj, lastIndex, false);
  304. obj.vscrollbar.pos = scrollPos; // 현재 스크롤 위치를 유지하기 위함
  305. }else{
  306. sysf_messageBox("선택된 폴더로 이동", "E001");
  307. }
  308. }
  309. /**
  310. * @desc : 현재 아이템 인덱스의 자식 아이템중 마지막 아이템 인덱스를 반환
  311. * @
  312. * @param :
  313. * @return :
  314. * @author : 김기용 2007. 1. 10
  315. * @---------------------------------------------------
  316. */
  317. function getLastChildItemIndex(itemIndex, obj:Grid) {
  318. if(!obj.isTreeLeafRow(itemIndex)) {
  319. var oDataset = eval(obj.binddataset);
  320. var curDepthValue = oDataset.getColumn(itemIndex + 1, "levl");
  321. var childDepthValue = oDataset.getColumn(itemIndex + 2, "levl");
  322. itemIndex++;
  323. while(curDepthValue <= childDepthValue) {
  324. childDepthValue = oDataset.getColumn(itemIndex + 2, "levl");
  325. itemIndex++;
  326. }
  327. }
  328. return itemIndex;
  329. }]]></Script>
  330. </Form>
  331. </FDL>