SMPIB00600_심사Comment관리.xrw 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855
  1. <?xml version="1.0" encoding="EUC-KR"?>
  2. <?xml-stylesheet type="text/css" href="../../../com/commonweb/css/common.css" ?>
  3. <xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2002/01/xforms" xmlns:ev="http://www.w3.org/2001/xml-events">
  4. <xhtml:head>
  5. <xhtml:title>심사Comment관리(SMPIB00600)</xhtml:title>
  6. <model id="model1">
  7. <instance id="instance1">
  8. <root xmlns="">
  9. <init>
  10. <U0001list>
  11. <U0001>
  12. <cdid/>
  13. <cdnm/>
  14. </U0001>
  15. <UserInfo>
  16. <userId/>
  17. <userNm/>
  18. </UserInfo>
  19. </U0001list>
  20. <appflag/>
  21. <comm/>
  22. <userid/>
  23. <P0495list>
  24. <P0495>
  25. <cdnm/>
  26. <cdid/>
  27. </P0495>
  28. </P0495list>
  29. <P0496list>
  30. <P0496>
  31. <cdnm/>
  32. <cdid/>
  33. <cdval/>
  34. </P0496>
  35. </P0496list>
  36. </init>
  37. <main>
  38. <list1>
  39. <GridMemo01>
  40. <memocd/>
  41. <memoflag/>
  42. <memocls/>
  43. <judgrid/>
  44. <memo/>
  45. <oldmemoflag/>
  46. <oldmemocls/>
  47. <oldmemo/>
  48. <sortno/>
  49. </GridMemo01>
  50. </list1>
  51. <result/>
  52. <tocopyJudgrid/>
  53. <list2>
  54. <GridMemo01>
  55. <memocd/>
  56. <memoflag/>
  57. <memocls/>
  58. <judgrid/>
  59. <memo/>
  60. </GridMemo01>
  61. </list2>
  62. </main>
  63. <send>
  64. <srchFlag/>
  65. <srchFlagNm/>
  66. <judgrID01/>
  67. <memoFlag01/>
  68. <memoCls01/>
  69. <cmtUpdate>
  70. <datalist>
  71. </datalist>
  72. </cmtUpdate>
  73. </send>
  74. <hidden>
  75. <selectGubun/>
  76. <list1>
  77. </list1>
  78. <popupmenu>
  79. <judgrcmt>
  80. <item>
  81. <name>순서 위로</name>
  82. <func>fJudgrcmtNoUp</func>
  83. </item>
  84. <item>
  85. <name>순서 아래로</name>
  86. <func>fJudgrcmtNoDown</func>
  87. </item>
  88. <item>
  89. <name>-</name>
  90. <func/>
  91. </item>
  92. <item>
  93. <name>행 삽입</name>
  94. <func>fJudgrcmtGridInsertRow</func>
  95. </item>
  96. <item>
  97. <name>행 추가</name>
  98. <func>fAddRow</func>
  99. </item>
  100. <item>
  101. <name>행 삭제</name>
  102. <func>fJudgrcmtGridDeleteRow</func>
  103. </item>
  104. </judgrcmt>
  105. </popupmenu>
  106. </hidden>
  107. </root>
  108. </instance>
  109. <script type="javascript" ev:event="xforms-ready">
  110. <![CDATA[
  111. submit("TRPIB00603");
  112. zbcfGetCodeList(new Array("P0495","P0496"), new Array("/root/init/P0495list","/root/init/P0496list"), false);
  113. fInitialize();
  114. ]]>
  115. </script>
  116. <submission id="TRPIB00601" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/list1"/>
  117. <submission id="TRPIB00602" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send" resultref="/root/main/list2"/>
  118. <submission id="TRPIB00603" mediatype="application/x-www-form-urlencoded" method="post" resultref="/root/init/U0001list"/>
  119. <submission id="TXPIB00601" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/cmtUpdate" resultref="/root/main/result"/>
  120. <bind id="bind_memoflag" ref="/root/main/list1/GridMemo01/memoflag" readonly="../judgrid != /root/init/userid"/>
  121. <bind id="bind_memocls" ref="/root/main/list1/GridMemo01/memocls" readonly="../judgrid != /root/init/userid"/>
  122. <bind id="bind_judgrid" ref="/root/main/list1/GridMemo01/judgrid" readonly="../judgrid != /root/init/userid"/>
  123. <bind id="bind_memo" ref="/root/main/list1/GridMemo01/memo" readonly="../judgrid != /root/init/userid"/>
  124. <submission id="TRZBC00101" mediatype="application/x-www-form-urlencoded" method="post" replace="instance"/>
  125. <submission id="TRZBC00102" mediatype="application/x-www-form-urlencoded" method="post" replace="instance"/>
  126. </model>
  127. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  128. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  129. <script type="javascript" src="../../../com/basiccodeweb/js/ZBC001.js"/>
  130. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  131. <script type="javascript">
  132. <![CDATA[
  133. function fInitialize()
  134. {
  135. // grid를 인스턴스에 mapping후 인스턴스에 해당하는 빈줄 1줄이 생기므로 grid 초기화
  136. model.removeNodeset("/root/main/list1/GridMemo01");
  137. grd_judgrcmt.refresh();
  138. cmb_SrchFlag.select(0);
  139. cmb_JudgrID01.select(0);
  140. cmb_MemoFlag01.select(0);
  141. cmb_MemoCd01.select(0);
  142. var userId = getUserId();
  143. // 임시 테스트용
  144. //userId = "98041212";
  145. model.setValue("/root/init/userid", userId);
  146. if (fJudgridCheck()) {
  147. // 로그인한 사용자가 선택된 상태로 만듬
  148. model.setValue("/root/send/judgrID01",userId);
  149. cmb_JudgrID01.refresh();
  150. }
  151. model.setValue("/root/init/appflag", "false");
  152. model.setValue("/root/init/comm", "심사자 COMMENT 입력하세요");
  153. //model.refresh();
  154. }
  155. // 로그인 사용자가 심사자인지 체크한다. (심사자일 경우에만, 행복사, 삭제, 심사comment 저장 등의 작업을 처리할 수 있다)
  156. function fJudgridCheck()
  157. {
  158. var ret = false;
  159. // 심사자 콤보 안에 로그인사용자의 아이디가 존재하면 이는 심사자임
  160. var userid = getUserId();
  161. var judgrid = model.getValue("/root/init/U0001list/U0001[cdid='"+ userid +"']/cdid");
  162. if (userid == judgrid) {
  163. ret = true;
  164. }
  165. return ret;
  166. }
  167. // 심사자 comment 입력 후, 엔터를 치면 자동 입력
  168. function fAddRow() {
  169. grd_judgrcmt.AddRow();
  170. var memoflag = model.getValue("/root/send/memoFlag01");
  171. if (memoflag != "%") {
  172. model.setValue("/root/main/list1/GridMemo01[" + grd_judgrcmt.row+ "]/memoflag", memoflag);
  173. } else {
  174. model.setValue("/root/main/list1/GridMemo01[" + grd_judgrcmt.row+ "]/memoflag", "0");
  175. }
  176. var memocls = model.getValue("/root/send/memoCls01");
  177. if (memocls != "%") {
  178. model.setValue("/root/main/list1/GridMemo01[" + grd_judgrcmt.row+ "]/memocls", memocls);
  179. } else {
  180. model.setValue("/root/main/list1/GridMemo01[" + grd_judgrcmt.row+ "]/memocls", "00");
  181. }
  182. model.setValue("/root/main/list1/GridMemo01[" + grd_judgrcmt.row + "]/judgrid", model.getValue("/root/init/userid"));
  183. model.setValue("/root/main/list1/GridMemo01[" + grd_judgrcmt.row + "]/memo", model.getValue("/root/init/comm"));
  184. // 자동 행추가에 따른 변경 여부 확인을 위해 추가
  185. model.makeNode("/root/main/list1/GridMemo01[" + grd_judgrcmt.row+ "]/memosel");
  186. model.makeNode("/root/main/list1/GridMemo01[" + grd_judgrcmt.row+ "]/changeflag");
  187. model.setValue("/root/main/list1/GridMemo01[" + grd_judgrcmt.row+ "]/changeflag","I");
  188. //grd_judgrcmt.select(grd_judgrcmt.row, grd_judgrcmt.colRef("memocd"), grd_judgrcmt.row, grd_judgrcmt.colRef("memo")) = true;
  189. // 그리드 변경 여부 (메모구분/메모분류/comment만 수정 가능하며, 심사자는 수정할 수 없다)
  190. grd_judgrcmt.colDisabled(grd_judgrcmt.colRef("memoflag")) = false;
  191. grd_judgrcmt.colDisabled(grd_judgrcmt.colRef("memocls")) = false;
  192. grd_judgrcmt.colDisabled(grd_judgrcmt.colRef("judgrid")) = true;
  193. grd_judgrcmt.colDisabled(grd_judgrcmt.colRef("memo")) = false;
  194. grd_judgrcmt.row = grd_judgrcmt.rows - 1;
  195. grd_judgrcmt.vscroll.attribute("pos") = grd_judgrcmt.vscroll.attribute("max");
  196. }
  197. // 메모구분, 메모분류 선택시 필터링
  198. function fFilterMemo() {
  199. var appflag = model.getValue("/root/init/appflag");
  200. if (appflag == "false") {
  201. // 1.조회를 위한 선택(아무 동작 안함)
  202. } else if (appflag == "true") {
  203. var memoflag = model.getValue("/root/send/memoFlag01");
  204. var memocls = model.getValue("/root/send/memoCls01");
  205. if (memoflag == "0" && memocls == "00") {
  206. for (var i = 1; i < grd_judgrcmt.rows; i++) {
  207. grd_judgrcmt.rowHidden(i) = false;
  208. }
  209. } else if (memoflag == "0" && memocls != "00") {
  210. for (var i = 1; i < grd_judgrcmt.rows; i++) {
  211. if (grd_judgrcmt.valueMatrix(i, grd_judgrcmt.colRef("memocls")) != memocls ) {
  212. grd_judgrcmt.rowHidden(i) = true;
  213. } else {
  214. grd_judgrcmt.rowHidden(i) = false;
  215. }
  216. }
  217. } else if (memoflag != "0" && memocls == "00") {
  218. for (var i = 1; i < grd_judgrcmt.rows; i++) {
  219. if (grd_judgrcmt.valueMatrix(i, grd_judgrcmt.colRef("memoflag")) != memoflag) {
  220. grd_judgrcmt.rowHidden(i) = true;
  221. } else {
  222. grd_judgrcmt.rowHidden(i) = false;
  223. }
  224. }
  225. } else {
  226. for (var i = 1; i < grd_judgrcmt.rows; i++) {
  227. if ( (grd_judgrcmt.valueMatrix(i, grd_judgrcmt.colRef("memoflag")) == memoflag) &&
  228. (grd_judgrcmt.valueMatrix(i, grd_judgrcmt.colRef("memocls")) == memocls) ) {
  229. grd_judgrcmt.rowHidden(i) = false;
  230. } else {
  231. grd_judgrcmt.rowHidden(i) = true;
  232. }
  233. }
  234. }
  235. }
  236. }
  237. function fJudgrcmtNoUp() {
  238. var rowstatus = grd_judgrcmt.rowstatus(grd_judgrcmt.row);
  239. var judgrid = grd_judgrcmt.valueMatrix(grd_judgrcmt.row, grd_judgrcmt.colRef("judgrid"));
  240. if (rowstatus == 4) { // 4 : delete
  241. return;
  242. }
  243. if (judgrid != getUserId()) {
  244. messageBox("타심사자 메모를 변경할 수","I004"); // 타심사자 메모를 변경할 수 없습니다.
  245. return;
  246. }
  247. var sortno = parseInt(model.getValue("/root/main/list1/GridMemo01["+ grd_judgrcmt.row +"]/sortno")); // 선택된 줄의 NO
  248. if (sortno > 1) { // 첫번째 줄이 아닌 경우
  249. model.setValue("/root/main/list1/GridMemo01["+ grd_judgrcmt.row +"]/sortno", --sortno);
  250. if (rowstatus == 0 || rowstatus == 2) {
  251. grd_judgrcmt.rowstatus(grd_judgrcmt.row) = 2; // 2 : update
  252. }
  253. // 바로 위 상병순서와 중복되는 경우
  254. var nextrow = grd_judgrcmt.row - 1;
  255. var nextsortno = model.getValue("/root/main/list1/GridMemo01["+ nextrow +"]/sortno");
  256. if (sortno == nextsortno) {
  257. model.setValue("/root/main/list1/GridMemo01["+ nextrow +"]/sortno", ++sortno);
  258. rowstatus = grd_judgrcmt.rowstatus(nextrow);
  259. if (rowstatus == 0 || rowstatus == 2) {
  260. grd_judgrcmt.rowstatus(nextrow) = 2; // 2 : update
  261. }
  262. }
  263. fJudgrcmtSortNo();
  264. }
  265. }
  266. function fJudgrcmtNoDown() {
  267. var judgrid = grd_judgrcmt.valueMatrix(grd_judgrcmt.row, grd_judgrcmt.colRef("judgrid"));
  268. var rowstatus = grd_judgrcmt.rowstatus(grd_judgrcmt.row);
  269. if (rowstatus == 4) { // 4 : delete
  270. return;
  271. }
  272. if (judgrid != getUserId()) {
  273. messageBox("타심사자 메모를 변경할 수","I004"); // 타심사자 메모를 변경할 수 없습니다.
  274. return;
  275. }
  276. // 삭제 상태가 아닌 마지막 줄을 찾는다.
  277. var lastRow = grd_judgrcmt.rows - 1;
  278. for (var i = 1; i < grd_judgrcmt.rows; i++) {
  279. if (grd_judgrcmt.rowstatus(i) == 4) { // delete
  280. lastRow = i - 1;
  281. i = grd_judgrcmt.rows;
  282. }
  283. }
  284. var sortno = parseInt(model.getValue("/root/main/list1/GridMemo01["+ grd_judgrcmt.row +"]/sortno")); // 선택된 줄의 NO
  285. if (sortno < lastRow) { // 마지막 줄이 아닌 경우
  286. model.setValue("/root/main/list1/GridMemo01["+ grd_judgrcmt.row +"]/sortno", ++sortno);
  287. if (rowstatus == 0 || rowstatus == 2) {
  288. grd_judgrcmt.rowstatus(grd_judgrcmt.row) = 2; // 2 : update
  289. }
  290. // 바로 아래 상병순서와 중복되는 경우
  291. var nextrow = grd_judgrcmt.row + 1;
  292. var nextsortno = model.getValue("/root/main/list1/GridMemo01["+ nextrow +"]/sortno");
  293. if (sortno == nextsortno) {
  294. model.setValue("/root/main/list1/GridMemo01["+ nextrow +"]/sortno", --sortno);
  295. rowstatus = grd_judgrcmt.rowstatus(nextrow);
  296. if (rowstatus == 0 || rowstatus == 2) {
  297. grd_judgrcmt.rowstatus(nextrow) = 2; // 2 : update
  298. }
  299. }
  300. fJudgrcmtSortNo();
  301. }
  302. }
  303. function fJudgrcmtGridInsertRow() {
  304. grd_judgrcmt.insertRow(grd_judgrcmt.row, "below", true);
  305. var memoflag = model.getValue("/root/send/memoFlag01");
  306. if (memoflag != "%") {
  307. model.setValue("/root/main/list1/GridMemo01[" + grd_judgrcmt.row+ "]/memoflag", memoflag);
  308. } else {
  309. model.setValue("/root/main/list1/GridMemo01[" + grd_judgrcmt.row+ "]/memoflag", "0");
  310. }
  311. var memocls = model.getValue("/root/send/memoCls01");
  312. if (memocls != "%") {
  313. model.setValue("/root/main/list1/GridMemo01[" + grd_judgrcmt.row+ "]/memocls", memocls);
  314. } else {
  315. model.setValue("/root/main/list1/GridMemo01[" + grd_judgrcmt.row+ "]/memocls", "00");
  316. }
  317. model.setValue("/root/main/list1/GridMemo01[" + grd_judgrcmt.row + "]/judgrid", model.getValue("/root/init/userid"));
  318. model.setValue("/root/main/list1/GridMemo01[" + grd_judgrcmt.row + "]/memo", model.getValue("/root/init/comm"));
  319. model.setValue("/root/main/list1/GridMemo01[" + grd_judgrcmt.row + "]/sortno", grd_judgrcmt.row);
  320. // 자동 행추가에 따른 변경 여부 확인을 위해 추가
  321. model.makeNode("/root/main/list1/GridMemo01[" + grd_judgrcmt.row+ "]/memosel");
  322. model.makeNode("/root/main/list1/GridMemo01[" + grd_judgrcmt.row+ "]/changeflag");
  323. model.setValue("/root/main/list1/GridMemo01[" + grd_judgrcmt.row+ "]/changeflag","I");
  324. //grd_judgrcmt.select(grd_judgrcmt.row, grd_judgrcmt.colRef("memocd"), grd_judgrcmt.row, grd_judgrcmt.colRef("memo")) = true;
  325. // 그리드 변경 여부 (메모구분/메모분류/comment만 수정 가능하며, 심사자는 수정할 수 없다)
  326. grd_judgrcmt.colDisabled(grd_judgrcmt.colRef("memoflag")) = false;
  327. grd_judgrcmt.colDisabled(grd_judgrcmt.colRef("memocls")) = false;
  328. grd_judgrcmt.colDisabled(grd_judgrcmt.colRef("judgrid")) = true;
  329. grd_judgrcmt.colDisabled(grd_judgrcmt.colRef("memo")) = false;
  330. }
  331. function fJudgrcmtGridDeleteRow() {
  332. btn_delRow.dispatch("DOMActivate");
  333. }
  334. function fJudgrcmtSortNo() {
  335. var maxRow = parseInt(grd_judgrcmt.rows) - 1; // rows는 타이틀부분 부터 개수를 센다
  336. grd_judgrcmt.sort(grd_judgrcmt.fixedRows, grd_judgrcmt.colRef("sortno"), maxRow, grd_judgrcmt.colRef("sortno")) = "asc"; // 타이틀을 제외한 data 부분의 첫 줄의 row = 1 / col = 3 : no
  337. grd_judgrcmt.gridToInstance();
  338. }
  339. ]]>
  340. </script>
  341. </xhtml:head>
  342. <xhtml:body pagewidth="950" pageheight="720" guideline="1,928;2,696;" style="font-family:굴림체; margin-left:8; margin-top:8; margin-right:8; margin-bottom:8; ">
  343. <group id="group1" style="left:0px; top:0px; width:927px; height:13px; ">
  344. <caption id="caption6" class="tit_1" style="left:0px; top:0px; width:135px; height:13px; ">심사 Comment 관리</caption>
  345. </group>
  346. <group id="group3" scroll="auto" style="left:0px; top:13px; width:927px; height:652px; ">
  347. <group id="group2" style="left:0px; top:10px; width:920px; height:80px; vertical-align:top; ">
  348. <shape id="roundrect1" appearance="roundrect" style="left:0px; top:0px; width:920px; height:80px; "/>
  349. <caption id="caption2" class="search_name" style="left:19px; top:33px; width:86px; height:17px; ">메모구분 :</caption>
  350. <button id="btn_search" class="btn1_letter2" style="left:854px; top:29px; width:56px; height:22px; ">
  351. <caption>조회</caption>
  352. <script type="javascript" ev:event="DOMActivate">
  353. <![CDATA[
  354. model.removeNodeset("/root/main/list1/GridMemo01");
  355. if (submit("TRPIB00601")) {
  356. //model.refresh();
  357. model.setValue("/root/hidden/selectGubun", "N");
  358. //fJudgridCheck();
  359. model.setValue("/root/init/appflag", "true");
  360. // 그리드 변경 여부 (메모구분/메모분류/comment만 수정 가능하며, 심사자는 수정할 수 없다)
  361. grd_judgrcmt.colDisabled(grd_judgrcmt.colRef("memoflag")) = false;
  362. grd_judgrcmt.colDisabled(grd_judgrcmt.colRef("memocls")) = false;
  363. grd_judgrcmt.colDisabled(grd_judgrcmt.colRef("judgrid")) = true;
  364. grd_judgrcmt.colDisabled(grd_judgrcmt.colRef("memo")) = false;
  365. }
  366. ]]>
  367. </script>
  368. <script type="javascript" ev:event="DOMFocusIn">
  369. <![CDATA[
  370. ]]>
  371. </script>
  372. </button>
  373. <line id="line13" class="line_4" style="x1:839px; y1:9px; x2:839px; y2:72px; "/>
  374. <caption id="caption3" class="search_name" style="left:310px; top:33px; width:86px; height:17px; ">메모분류 :</caption>
  375. <caption id="caption4" class="search_name" style="left:19px; top:9px; width:86px; height:17px; ">검색구분 :</caption>
  376. <caption id="caption5" class="search_name" style="left:565px; top:32px; width:98px; height:17px; ">심사자 :</caption>
  377. <select1 id="cmb_SrchFlag" ref="/root/send/srchFlag" class="combo_search" appearance="minimal" style="left:129px; top:8px; width:80px; height:19px; ">
  378. <choices>
  379. <item>
  380. <label>Comment</label>
  381. <value>C</value>
  382. </item>
  383. </choices>
  384. </select1>
  385. <select1 id="cmb_JudgrID01" ref="/root/send/judgrID01" class="combo_search" appearance="minimal" style="left:670px; top:32px; width:110px; height:19px; ">
  386. <choices>
  387. <itemset nodeset="/root/init/U0001list/U0001">
  388. <label ref="cdnm"/>
  389. <value ref="cdid"/>
  390. </itemset>
  391. </choices>
  392. <script type="javascript" ev:event="xforms-select">
  393. <![CDATA[
  394. //fJudgridCheck();
  395. ]]>
  396. </script>
  397. </select1>
  398. <select1 id="cmb_MemoFlag01" ref="/root/send/memoFlag01" class="combo_search" appearance="minimal" style="left:129px; top:32px; width:110px; height:19px; ">
  399. <choices>
  400. <itemset nodeset="/root/init/P0495list/P0495">
  401. <label ref="cdnm"/>
  402. <value ref="cdid"/>
  403. </itemset>
  404. </choices>
  405. <script type="javascript" ev:event="xforms-value-changed">
  406. <![CDATA[
  407. var memoflag = cmb_MemoFlag01.value
  408. // model.alert(memoflag);
  409. if(memoflag == "6"){
  410. cmb_MemoCd01.choices.itemset.attribute("nodeset") = "/root/init/P0496list/P0496[cdval = '6']";
  411. }else{
  412. cmb_MemoCd01.choices.itemset.attribute("nodeset") = "/root/init/P0496list/P0496[cdval = '0']";
  413. }
  414. //cmb_MemoCd01.choices.itemset.attribute("nodeset") = "/root/send/memoCls01[cdval = '" + cmb_MemoFlag01.value + "']";
  415. //model.setValue("/root/main/orddrid", "");
  416. cmb_MemoCd01.refresh();
  417. ]]>
  418. </script>
  419. </select1>
  420. <select1 id="cmb_MemoCd01" ref="/root/send/memoCls01" class="combo_search" appearance="minimal" style="left:405px; top:32px; width:110px; height:19px; ">
  421. <choices>
  422. <itemset nodeset="/root/init/P0496list/P0496">
  423. <label ref="cdnm"/>
  424. <value ref="cdid"/>
  425. </itemset>
  426. </choices>
  427. <script type="javascript" ev:event="xforms-value-changed">
  428. <![CDATA[
  429. /*
  430. var memocls = model.getValue("/root/send/memoCls01");
  431. if(memocls == "11"){
  432. model.setValue("/root/send/memoCls01");
  433. }
  434. */
  435. // fFilterMemo();
  436. ]]>
  437. </script>
  438. </select1>
  439. <input id="ipt_SrchFlagNm" ref="/root/send/srchFlagNm" class="input_search" style="left:212px; top:8px; width:568px; height:19px; "/>
  440. <input id="input1" ref="/root/init/comm" class="input_search" style="left:129px; top:55px; width:651px; height:19px; ">
  441. <script type="javascript" ev:event="onkeypress">
  442. <![CDATA[
  443. // 심사 comment 1줄 입력 처리
  444. if (event.keyCode=='13') {
  445. inputEnterKey("btn_search", "DOMFocusIn");
  446. if (fJudgridCheck()) {
  447. fAddRow();
  448. } else {
  449. messageBox("심사자","E002");
  450. }
  451. }
  452. ]]>
  453. </script>
  454. </input>
  455. <caption id="caption7" class="search_name" style="left:17px; top:56px; width:90px; height:17px; ">메 모 :</caption>
  456. </group>
  457. <datagrid id="grd_judgrcmt" nodeset="/root/main/list1/GridMemo01" autoresize="true" caption="메모코드^메모구분^메모분류^심사자^Comment^순서^oldmemoflag^oldmemocls^oldmemo" colsep="^" colwidth="0, 99, 71, 79, 579, 53, 0, 0, 0" dataheight="23" ellipsis="true" mergecellsfixedrows="bycolrec" rowheader="update" rowheight="23" rowsep="|" style="left:1px; top:125px; width:920px; height:525px; font-family:굴림체; ">
  458. <col ref="memocd" visibility="hidden" style="text-align:center; "/>
  459. <col ref="memoflag" type="combo">
  460. <choices>
  461. <itemset nodeset="/root/init/P0495list/P0495">
  462. <label ref="cdnm"/>
  463. <value ref="cdid"/>
  464. </itemset>
  465. </choices>
  466. </col>
  467. <col ref="memocls" type="combo">
  468. <choices>
  469. <item>
  470. <label>전체</label>
  471. <value>00</value>
  472. </item>
  473. <item>
  474. <label>약</label>
  475. <value>01</value>
  476. </item>
  477. <item>
  478. <label>주사</label>
  479. <value>02</value>
  480. </item>
  481. <item>
  482. <label>처치</label>
  483. <value>03</value>
  484. </item>
  485. <item>
  486. <label>검사</label>
  487. <value>04</value>
  488. </item>
  489. <item>
  490. <label>기타</label>
  491. <value>99</value>
  492. </item>
  493. <item>
  494. <label>평가공통</label>
  495. <value>11</value>
  496. </item>
  497. <item>
  498. <label>AMI</label>
  499. <value>12</value>
  500. </item>
  501. <item>
  502. <label>CABG</label>
  503. <value>13</value>
  504. </item>
  505. <item>
  506. <label>분만</label>
  507. <value>14</value>
  508. </item>
  509. <item>
  510. <label>뇌졸증</label>
  511. <value>15</value>
  512. </item>
  513. <item>
  514. <label>예방항생제</label>
  515. <value>16</value>
  516. </item>
  517. </choices>
  518. </col>
  519. <col disabled="true" ref="judgrid" type="combo">
  520. <choices>
  521. <itemset nodeset="/root/init/U0001list/U0001">
  522. <label ref="cdnm"/>
  523. <value ref="cdid"/>
  524. </itemset>
  525. </choices>
  526. </col>
  527. <col ref="memo" type="input"/>
  528. <col ref="sortno" type="input" format="999999-9999999"/>
  529. <col ref="oldmemoflag"/>
  530. <col ref="oldmemocls"/>
  531. <col ref="oldmemo"/>
  532. <script type="javascript" ev:event="xforms-value-changed">
  533. <![CDATA[
  534. // 로그인한 사용자의 ID와 다르면 수정 못하도록 해야 한다.
  535. var col = grd_judgrcmt.col;
  536. var row = grd_judgrcmt.row;
  537. var judgrid = grd_judgrcmt.valueMatrix(row, grd_judgrcmt.colRef("judgrid"));
  538. var userid = model.getValue("/root/init/userid");
  539. if (judgrid != userid) {
  540. messageBox("타심사자 메모를 변경할 수","I004"); // 타심사자 메모를 변경할 수 없습니다.
  541. // 이미 수정한 값이 있으면 되돌리고, row 상태 0으로 되돌리기
  542. grd_judgrcmt.valueMatrix(row, grd_judgrcmt.colRef("memoflag")) = grd_judgrcmt.valueMatrix(row, grd_judgrcmt.colRef("oldmemoflag"));
  543. grd_judgrcmt.valueMatrix(row, grd_judgrcmt.colRef("memocls")) = grd_judgrcmt.valueMatrix(row, grd_judgrcmt.colRef("oldmemocls"));
  544. grd_judgrcmt.valueMatrix(row, grd_judgrcmt.colRef("memo")) = grd_judgrcmt.valueMatrix(row, grd_judgrcmt.colRef("oldmemo"));
  545. grd_judgrcmt.rowstatus(row) = 0;
  546. return;
  547. }
  548. var rowstatus = grd_judgrcmt.rowStatus(row);
  549. if (rowstatus == 1 || rowstatus == 3) {
  550. model.setValue("/root/main/list1/GridMemo01[" + row+ "]/changeflag","U");
  551. //model.refresh();
  552. }
  553. // // 심사자를 바꿀 경우, 로그인한 사용자의 ID와 다르면 수정 못하도록 해야 한다.
  554. // if (col == grd_judgrcmt.colRef("judgrid")) {
  555. // var judgrid = grd_judgrcmt.valueMatrix(row, grd_judgrcmt.colRef("judgrid"));
  556. // var userid = model.getValue("/root/init/userid");
  557. // if (judgrid != userid) {
  558. // messageBox("심사자를 변경할 수","I004"); // 심사자를 변경할 수 없습니다.
  559. // grd_judgrcmt.valueMatrix(row, grd_judgrcmt.colRef("judgrid")) = userid;
  560. // }
  561. // }
  562. ]]>
  563. </script>
  564. <script type="javascript" ev:event="onmousedown">
  565. <![CDATA[
  566. if (event.button == 3) { // 3 : 오른쪽 버튼
  567. if (grd_judgrcmt.isCell(event.target) && grd_judgrcmt.mouseRow >= grd_judgrcmt.fixedrows) {
  568. setPopupMenu("grd_judgrcmt", false, "/root/hidden/popupmenu/judgrcmt/item", "name", "func"); // (tfHelper.js) 컨트롤에서 사용자 팝업 설정 함수
  569. }
  570. }
  571. ]]>
  572. </script>
  573. </datagrid>
  574. <caption id="caption1" class="tit_2" style="left:5px; top:105px; width:625px; height:14px; ">심사 Comment : 본인메모만 수정할 수 있습니다. 다른심사자 메모는 수정불가합니다.</caption>
  575. <line id="line1" class="line_1" style="x1:0px; y1:120px; x2:921px; y2:120px; "/>
  576. <button id="btn_addRow" class="btn2_letter3" style="left:813px; top:99px; width:53px; height:19px; ">
  577. <caption>행추가</caption>
  578. <script type="javascript" ev:event="DOMActivate">
  579. <![CDATA[
  580. if (fJudgridCheck()) {
  581. fAddRow();
  582. } else {
  583. messageBox("심사자", "E002");
  584. }
  585. ]]>
  586. </script>
  587. </button>
  588. <button id="btn_delRow" class="btn2_letter3" style="left:868px; top:99px; width:53px; height:19px; ">
  589. <caption>행삭제</caption>
  590. <script type="javascript" ev:event="DOMActivate">
  591. <![CDATA[
  592. if (fJudgridCheck()) {
  593. // 멀티라인 삭제
  594. var rows = grd_judgrcmt.selectedRows;
  595. var userid = model.getValue("/root/init/userid");
  596. for (var i = 0; i < rows; i++) {
  597. var sel = grd_judgrcmt.selectedRow(i);
  598. // 로그인한 사용자에 해당되는 메모만 삭제 가능 처리
  599. if (userid == grd_judgrcmt.valueMatrix(sel,grd_judgrcmt.colRef("judgrid"))) {
  600. grd_judgrcmt.rowstatus(sel) = "4";
  601. }
  602. }
  603. } else {
  604. messageBox("심사자","E002");
  605. }
  606. ]]>
  607. </script>
  608. </button>
  609. <button id="btn_excel" class="btn2_letter4" style="left:692px; top:99px; width:64px; height:19px; ">
  610. <caption>엑셀저장</caption>
  611. <script type="javascript" ev:event="DOMActivate">
  612. <![CDATA[
  613. if (grd_judgrcmt.rows == 1) {
  614. return;
  615. }
  616. var fileName = window.fileDialog("save", ",", false, "심사 Comment", "xls", "Excel Files(*.xls)|*.xls|All Files (*.*)|*.*");
  617. if (fileName != "")
  618. {
  619. grd_judgrcmt.saveExcel(fileName, "SheetName", false, false, "", "");
  620. messageBox("EXCEL 저장이 완료되었습니다.","I999");
  621. }
  622. ]]>
  623. </script>
  624. </button>
  625. <datagrid id="grd_tmpjudgrcmt" nodeset="/root/hidden/list1/memolist" visibility="hidden" autoresize="true" caption="메모구분^메모분류^Comment^caption1^oldmemoflag^oldmemocls" colsep="^" colwidth="89, 71, 633, 100" dataheight="23" ellipsis="true" mergecellsfixedrows="bycolrec" rowheader="update" rowheight="23" rowsep="|" style="left:0px; top:388px; width:920px; height:197px; font-family:굴림체; ">
  626. <col ref="memoflag"/>
  627. <col ref="memocls"/>
  628. <col ref="memo"/>
  629. <col ref="sortno"/>
  630. </datagrid>
  631. <button id="addCopy" class="btn2_letter3" style="left:758px; top:99px; width:53px; height:19px; ">
  632. <caption>행복사</caption>
  633. <script type="javascript" ev:event="DOMActivate">
  634. <![CDATA[
  635. if (fJudgridCheck()) {
  636. // 멀티라인 복사
  637. var rows = grd_judgrcmt.selectedRows;
  638. if (rows <= 0) return;
  639. // 복사할 행들만 임시 그리드에 담아두도록 하고, 모두 담은뒤 그것을 원래 그리드에 반영하도록 한다.
  640. // 선택된 행을 돌면서 그리드에 AddRow() 하게 되면 선택해제 상태로 변하게 되어, 처음 하나만 제대로 복사되고 나머지는 빈값으로 되기 때문
  641. model.removenode("/root/hidden/list1");
  642. grd_tmpjudgrcmt.refresh();
  643. for (var i = 0; i < rows; i++) {
  644. var sel = grd_judgrcmt.selectedRow(i); // 복사할 행의 인덱스값
  645. var memoflag = grd_judgrcmt.valueMatrix(sel, grd_judgrcmt.colRef("memoflag"));
  646. var memocls = grd_judgrcmt.valueMatrix(sel, grd_judgrcmt.colRef("memocls"));
  647. var memo = grd_judgrcmt.valueMatrix(sel, grd_judgrcmt.colRef("memo"));
  648. grd_tmpjudgrcmt.AddRow();
  649. model.makeValue("/root/hidden/list1/memolist[" + grd_tmpjudgrcmt.row+ "]/memoflag", memoflag);
  650. model.makeValue("/root/hidden/list1/memolist[" + grd_tmpjudgrcmt.row + "]/memocls", memocls);
  651. model.makeValue("/root/hidden/list1/memolist[" + grd_tmpjudgrcmt.row + "]/memo", memo);
  652. }
  653. grd_tmpjudgrcmt.refresh();
  654. for (var i = 1; i < grd_tmpjudgrcmt.rows; i++) {
  655. var memoflag = grd_tmpjudgrcmt.valueMatrix(i, grd_tmpjudgrcmt.colRef("memoflag"));
  656. var memocls = grd_tmpjudgrcmt.valueMatrix(i, grd_tmpjudgrcmt.colRef("memocls"));
  657. var memo = grd_tmpjudgrcmt.valueMatrix(i, grd_tmpjudgrcmt.colRef("memo"));
  658. grd_judgrcmt.AddRow();
  659. model.setValue("/root/main/list1/GridMemo01[" + grd_judgrcmt.row+ "]/memoflag", memoflag);
  660. model.setValue("/root/main/list1/GridMemo01[" + grd_judgrcmt.row + "]/memocls", memocls);
  661. model.setValue("/root/main/list1/GridMemo01[" + grd_judgrcmt.row + "]/judgrid", model.getValue("/root/init/userid"));
  662. model.setValue("/root/main/list1/GridMemo01[" + grd_judgrcmt.row + "]/memo", memo);
  663. // 자동 행추가에 따른 변경 여부 확인을 위해 추가
  664. model.makeNode("/root/main/list1/GridMemo01[" + grd_judgrcmt.row+ "]/memosel");
  665. model.makeNode("/root/main/list1/GridMemo01[" + grd_judgrcmt.row+ "]/changeflag");
  666. model.setValue("/root/main/list1/GridMemo01[" + grd_judgrcmt.row+ "]/changeflag","I");
  667. }
  668. // 그리드 변경 여부 (메모구분/메모분류/comment만 수정 가능하며, 심사자는 수정할 수 없다)
  669. grd_judgrcmt.colDisabled(grd_judgrcmt.colRef("memoflag")) = false;
  670. grd_judgrcmt.colDisabled(grd_judgrcmt.colRef("memocls")) = false;
  671. grd_judgrcmt.colDisabled(grd_judgrcmt.colRef("judgrid")) = true;
  672. grd_judgrcmt.colDisabled(grd_judgrcmt.colRef("memo")) = false;
  673. // 조회 심사자에 로그인 사용자가 선택되도록 한다.
  674. model.setValue("/root/send/judgrID01",model.getValue("/root/init/userid"));
  675. cmb_JudgrID01.refresh();
  676. } else {
  677. messageBox("심사자", "E002");
  678. }
  679. ]]>
  680. </script>
  681. </button>
  682. <button id="button1" class="btn2_letter4" style="left:626px; top:99px; width:64px; height:19px; ">
  683. <caption>자동순서</caption>
  684. <script type="javascript" ev:event="DOMActivate">
  685. <![CDATA[
  686. var userid = getUserId();
  687. var cnt = 0;
  688. for (var i = grd_judgrcmt.fixedRows; i < grd_judgrcmt.rows; i++) {
  689. // 로그인한 사용자에 해당되는 메모만 삭제 가능 처리
  690. if ((userid == grd_judgrcmt.valueMatrix(i,grd_judgrcmt.colRef("judgrid"))) && grd_judgrcmt.rowstatus(i) != 4) {
  691. grd_judgrcmt.valueMatrix(i,grd_judgrcmt.colRef("sortno")) = ++cnt;
  692. if (grd_judgrcmt.rowstatus(i) == 4 || grd_judgrcmt.rowstatus(i) == 1 ){
  693. grd_judgrcmt.rowstatus(i) = grd_judgrcmt.rowstatus(i);
  694. } else {
  695. grd_judgrcmt.rowstatus(i) = 2;
  696. }
  697. }
  698. }
  699. ]]>
  700. </script>
  701. <hint>
  702. <![CDATA[화면리스트 기준으로 1부터 순서를 자동생성하는 기능.
  703. *기존 순서는 삭제됩니다.
  704. *조회를 구분별,메모분류별로 상세조회후 실행해 주세요.]]>
  705. </hint>
  706. </button>
  707. </group>
  708. <group id="group4" scroll="auto" style="left:0px; top:668px; width:927px; height:27px; ">
  709. <line id="line23" class="line_6" style="x1:0px; y1:0px; x2:927px; y2:0px; "/>
  710. <button id="button38" class="btn4_letter3" style="left:847px; top:5px; width:68px; height:22px; ">
  711. <caption>초기화</caption>
  712. <script type="javascript" ev:event="onclick">
  713. <![CDATA[
  714. fInitialize();
  715. // 데이터 입력을 위하여 임시로 막아 놓음... 박도형
  716. // judgridCheck();
  717. // 자동 한줄 추가 요청에 따라 추가
  718. //fAddRow();
  719. ]]>
  720. </script>
  721. </button>
  722. <button id="button12" class="btn6_letter2" style="left:0px; top:5px; width:56px; height:22px; ">
  723. <caption>출력</caption>
  724. </button>
  725. <button id="btn_save" class="btn4_letter2" style="left:789px; top:5px; width:56px; height:22px; ">
  726. <caption>저장</caption>
  727. <script type="javascript" ev:event="DOMActivate">
  728. <![CDATA[
  729. if (fJudgridCheck()) {
  730. // 1. 데이터 검사(그리드 말고 인스턴스를 돌아야 하지 않을까 한다.->콤보값을 갖고오지 못하는 듯함)
  731. var rows = grd_judgrcmt.rows;
  732. for(var i = 1; i<rows; i++) {
  733. var rowstatus = grd_judgrcmt.rowstatus(i);
  734. if (rowstatus == 1 || rowstatus == 3) {
  735. if(grd_judgrcmt.valueMatrix(i,grd_judgrcmt.colRef("memo")) == "") {
  736. messageBox("Comment를","C001");
  737. //model.setFocus(grd_judgrcmt.valueMatrix(i,5));
  738. return false;
  739. }
  740. }
  741. }
  742. // 2. 저장 또는 수정 또는 삭제
  743. var updtdata = getGridUpdateData(grd_judgrcmt);
  744. if (updtdata == "") { // 변경된 데이터가 없는경우
  745. messageBox("변경된 데이터가","I004"); // 변경된 데이이터가 없습니다.
  746. return false;
  747. } else {
  748. var rtn = messageBox("", "Q002") ;
  749. if (rtn != 6) return;
  750. model.setValue("/root/send/cmtUpdate/datalist",updtdata);
  751. if ( submit("TXPIB00601") ) {
  752. model.resetInstanceNode("/root/main/list1");
  753. model.resetInstanceNode("/root/main/list2");
  754. submit("TRPIB00601"); // submit() 성공하면 그리드의 i,u,d 상태 제거
  755. messageBox("정상적으로 저장되었습니다.", "I999");
  756. }
  757. model.resetInstanceNode("/root/send/cmtUpdate/datalist");
  758. //model.refresh();
  759. }
  760. } else {
  761. messageBox("심사자","E002");
  762. }
  763. ]]>
  764. </script>
  765. </button>
  766. </group>
  767. </xhtml:body>
  768. </xhtml:html>