SMRPD31700_전문의평가결과조회.xfdl 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <FDL version="1.5">
  3. <TypeDefinition url="..\..\..\default_typedef.xml"/>
  4. <Form id="SMRPD31700" position="absolute 0 0 1200 790" titletext="전문의 평가 - 평가결과조회" oninit="SMRPD31700_oninit" onload="SMRPD31700_onload">
  5. <Layouts>
  6. <Layout>
  7. <Div position="absolute 0 0 1195 23" id="group1">
  8. <Layouts>
  9. <Layout>
  10. <Static text="전문의 평가 - 평가결과조회" position="absolute 0 0 198 24" id="caption6" class="tit_1" anchor="default"/>
  11. <Static id="caption4" class="patient_text_black" anchor="default" position="absolute 0 0 0 0"/>
  12. </Layout>
  13. </Layouts>
  14. </Div>
  15. <Div position="absolute 0 40 1195 784" id="group3" scrollbars="autoboth">
  16. <Layouts>
  17. <Layout>
  18. <Div position="absolute 0 10 1194 45" align="align:center top;" id="grp_sea" class="div_SA">
  19. <Layouts>
  20. <Layout>
  21. <Shape position="absolute 676 6 682 28" linetype="vertical" id="line5" class="line_4"/>
  22. <Button position="absolute 695 7 751 29" align="align:left middle;" id="btn_search" class="btn1" taborder="2" text="조회" onclick="group3_grp_sea_btn_search_onclick"/>
  23. <Combo position="absolute 120 8 262 27" id="cmb_instcd" class="combo_s_default" enable="false" onitemchanged="group3_grp_sea_cmb_instcd_onitemchanged"/>
  24. <Static text="기관코드" position="absolute 49 9 125 26" id="caption1" class="search_name"/>
  25. <Static text="연도" position="absolute 290 9 345 26" id="caption7" class="search_name"/>
  26. <MaskEdit position="absolute 335 8 385 27" align="align:center middle;" id="ipt_year" taborder="1" mask="####" autoselect="true" style="align:center middle;" autoskip="true"/>
  27. <Edit position="absolute 530 8 649 27" id="ipt_emplnm" class="input_default" autoselect="true" onkeyup="group3_grp_sea_ipt_emplnm_onkeyup"/>
  28. <Button position="absolute 512 9 528 25" id="btn_emplno" class="icon_search" text="" onclick="group3_grp_sea_btn_emplno_onclick"/>
  29. <Edit position="absolute 468 8 510 27" id="ipt_emplno" class="input_default" autoselect="true" onkeyup="group3_grp_sea_ipt_emplno_onkeyup"/>
  30. <Static text="대상자" position="absolute 410 9 473 26" id="caption10" class="search_name"/>
  31. <Static position="absolute 790 8 1180 28" id="cp_evalperiod" style="color:#993300ff;font:Dotum,9,bold;"/>
  32. </Layout>
  33. </Layouts>
  34. </Div>
  35. <Shape position="absolute 0 75 585 81" linetype="horizontal" id="line3" class="line_10"/>
  36. <Shape position="absolute 592 75 1193 81" linetype="horizontal" id="line1" class="line_10"/>
  37. <Static text="평가 대상자" position="absolute 0 59 131 75" id="caption21" class="tit_2"/>
  38. <Static text="평가표" position="absolute 593 59 799 75" id="caption20" class="tit_2"/>
  39. <Grid position="absolute 0 80 585 735" id="grd_psnlist" binddataset="ds_main_psnlist" oncellclick="group3_grd_psnlist_oncellclick">
  40. <Formats>
  41. <Format id="default">
  42. <Columns>
  43. <Column size="19" band="left"/>
  44. <Column size="43"/>
  45. <Column size="56"/>
  46. <Column size="53"/>
  47. <Column size="130"/>
  48. <Column size="114"/>
  49. <Column size="57"/>
  50. <Column size="44"/>
  51. <Column size="53"/>
  52. <Column size="0"/>
  53. </Columns>
  54. <Rows>
  55. <Row size="24" band="head"/>
  56. <Row size="24"/>
  57. </Rows>
  58. <Band id="head">
  59. <Cell/>
  60. <Cell col="1" text="사번"/>
  61. <Cell col="2" text="생년월일"/>
  62. <Cell col="3" text="성명"/>
  63. <Cell col="4" text="부서명"/>
  64. <Cell col="5" text="직종"/>
  65. <Cell col="6" text="평가년도"/>
  66. <Cell col="7" text="총평점"/>
  67. <Cell col="8" text="평가자"/>
  68. <Cell col="9" text="instcd"/>
  69. </Band>
  70. <Band id="body">
  71. <Cell celltype="head"/>
  72. <Cell col="1" text="bind:emplno"/>
  73. <Cell col="2" text="bind:rregno"/>
  74. <Cell col="3" style="align:left;" text="bind:emplnm"/>
  75. <Cell col="4" style="align:left top;padding:5 2 1 2;" text="bind:deptnm" wordwrap="word"/>
  76. <Cell col="5" style="align:left top;padding:5 2 1 2;" text="bind:jobkindnm" wordwrap="word"/>
  77. <Cell col="6" text="bind:year"/>
  78. <Cell col="7" displaytype="number" text="bind:totscore" mask="#,###"/>
  79. <Cell col="8" text="bind:evalemplnm"/>
  80. <Cell col="9" text="bind:instcd"/>
  81. </Band>
  82. </Format>
  83. </Formats>
  84. </Grid>
  85. <Static text="총 평" position="absolute 590 679 725 735" align="align:center middle;" id="caption27" class="cell_1"/>
  86. <TextArea position="absolute 725 679 1193 735" id="txt_cmt" wordwrap="word"/>
  87. <Grid position="absolute 590 111 1193 655" id="grd_scorelist" enable="false" binddataset="ds_main_psninfo_scorelist" autosizingtype="row" extendsizetype="row" cellsizingtype="both">
  88. <Formats>
  89. <Format id="default">
  90. <Columns>
  91. <Column size="133"/>
  92. <Column size="240"/>
  93. <Column size="35"/>
  94. <Column size="35"/>
  95. <Column size="35"/>
  96. <Column size="35"/>
  97. <Column size="35"/>
  98. <Column size="35"/>
  99. <Column size="0"/>
  100. <Column size="0"/>
  101. <Column size="0"/>
  102. <Column size="0"/>
  103. </Columns>
  104. <Rows>
  105. <Row size="24" band="head"/>
  106. <Row size="24" band="head"/>
  107. <Row size="24" band="head"/>
  108. <Row size="22"/>
  109. </Rows>
  110. <Band id="head">
  111. <Cell rowspan="3" text="평가항목" taborder="undefined"/>
  112. <Cell col="1" rowspan="3" text="세부항목" taborder="undefined"/>
  113. <Cell col="2" colspan="6" text="평정등급 및 점수" taborder="undefined"/>
  114. <Cell col="8" text="instcd"/>
  115. <Cell col="9" text="year"/>
  116. <Cell col="10" text="emplno"/>
  117. <Cell col="11" text="dtlitemcd"/>
  118. <Cell row="1" col="2" rowspan="2" text="수&#10;(5.0)" taborder="undefined"/>
  119. <Cell row="1" col="3" rowspan="2" text="우&#10;(4.0)" taborder="undefined"/>
  120. <Cell row="1" col="4" rowspan="2" text="미&#10;(3.0)" taborder="undefined"/>
  121. <Cell row="1" col="5" rowspan="2" text="양&#10;(2.0)" taborder="undefined"/>
  122. <Cell row="1" col="6" rowspan="2" text="가&#10;(1.0)" taborder="undefined"/>
  123. <Cell row="1" col="7" rowspan="2" text="평점" taborder="undefined"/>
  124. <Cell row="1" col="8" text="instcd"/>
  125. <Cell row="1" col="9" text="year"/>
  126. <Cell row="1" col="10" text="emplno"/>
  127. <Cell row="1" col="11" text="dtlitemcd"/>
  128. <Cell row="2" col="8" text="instcd"/>
  129. <Cell row="2" col="9" text="year"/>
  130. <Cell row="2" col="10" text="emplno"/>
  131. <Cell row="2" col="11" text="dtlitemcd"/>
  132. </Band>
  133. <Band id="body">
  134. <Cell text="bind:itemnm" suppress="1" suppressalign="middle,over"/>
  135. <Cell col="1" style="align:left middle;padding:1 2 1 2;" text="bind:dtlitemnm" wordwrap="word" autosizerow="limitmin"/>
  136. <Cell col="2" displaytype="checkbox" edittype="checkbox" text="bind:pos1" expr="expr:pos1 == '1' || pos1 == 'Y' ? '1' : '0'"/>
  137. <Cell col="3" displaytype="checkbox" edittype="checkbox" text="bind:pos2" expr="expr:pos2 == '1' || pos2 == 'Y' ? '1' : '0'"/>
  138. <Cell col="4" displaytype="checkbox" edittype="checkbox" text="bind:pos3" expr="expr:pos3 == '1' || pos3 == 'Y' ? '1' : '0'"/>
  139. <Cell col="5" displaytype="checkbox" edittype="checkbox" text="bind:pos4" expr="expr:pos4 == '1' || pos4 == 'Y' ? '1' : '0'"/>
  140. <Cell col="6" displaytype="checkbox" edittype="checkbox" text="bind:pos5" expr="expr:pos5 == '1' || pos5 == 'Y' ? '1' : '0'"/>
  141. <Cell col="7" text="bind:score"/>
  142. <Cell col="8" text="bind:instcd"/>
  143. <Cell col="9" text="bind:year"/>
  144. <Cell col="10" text="bind:emplno"/>
  145. <Cell col="11" text="bind:dtlitemcd"/>
  146. </Band>
  147. </Format>
  148. </Formats>
  149. </Grid>
  150. <Static text="사번" position="absolute 672 80 712 103" align="align:center middle;" id="cap_matrnm" class="cell_1"/>
  151. <Edit readonly="true" position="absolute 710 82 755 101" align="align:center middle;" id="opt_emplno" class="output" style="align:center middle;"/>
  152. <Edit readonly="true" position="absolute 795 82 850 101" id="opt_emplnm" class="output"/>
  153. <Static text="성명" position="absolute 755 80 795 103" align="align:center middle;" id="caption2" class="cell_1"/>
  154. <Static text="부서명" position="absolute 850 80 900 103" align="align:center middle;" id="caption3" class="cell_1"/>
  155. <Edit readonly="true" position="absolute 899 82 1044 101" id="opt_deptnm" class="output"/>
  156. <Static text="직종" position="absolute 1044 80 1084 103" align="align:center middle;" id="caption5" class="cell_1"/>
  157. <Edit readonly="true" position="absolute 1083 82 1193 101" id="opt_jobkindnm" class="output"/>
  158. <Shape position="absolute 592 104 1193 108" linetype="horizontal" id="line4" class="line_10"/>
  159. <Static text="총평점" position="absolute 1030 655 1105 678" align="align:center middle;" id="caption8" class="cell_1"/>
  160. <Edit readonly="true" position="absolute 1105 657 1193 676" align="align:center middle;" id="opt_totscore" class="output" style="align:center middle;"/>
  161. <Static text="연도" position="absolute 592 80 632 103" align="align:center middle;" id="caption9" class="cell_1"/>
  162. <Edit readonly="true" position="absolute 632 82 672 101" align="align:center middle;" id="output1" class="output" style="align:center middle;"/>
  163. <Button position="absolute 521 55 585 74" id="btn_download" class="btn2" taborder="6" text="엑셀저장" onclick="group3_btn_download_onclick"/>
  164. <Button position="absolute 1086 55 1194 74" id="btn_print" class="btn2" taborder="6" text="출력 및 파일저장" onclick="group3_btn_print_onclick"/>
  165. </Layout>
  166. </Layouts>
  167. </Div>
  168. <Div position="absolute 0 13 1195 41" id="group4" scrollbars="autoboth">
  169. <Layouts>
  170. <Layout>
  171. <Shape position="absolute 0 22 1194 28" linetype="horizontal" id="line2" class="line_6" anchor="default"/>
  172. </Layout>
  173. </Layouts>
  174. </Div>
  175. </Layout>
  176. </Layouts>
  177. <Objects>
  178. <Dataset id="ds_send" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  179. <ColumnInfo>
  180. <Column id="instcd" type="STRING" size="256" sumtext="기관코드"/>
  181. <Column id="year" type="STRING" size="256" sumtext="연도"/>
  182. <Column id="emplno" type="STRING" size="256" sumtext="평가자"/>
  183. </ColumnInfo>
  184. <Rows>
  185. <Row/>
  186. </Rows>
  187. </Dataset>
  188. <Dataset id="ds_main_psnlist" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  189. <ColumnInfo>
  190. <Column id="emplno" type="STRING" size="256" sumtext="사번"/>
  191. <Column id="rregno" type="STRING" size="256" sumtext="생년월일"/>
  192. <Column id="emplnm" type="STRING" size="256" sumtext="성명"/>
  193. <Column id="jobkindnm" type="STRING" size="256" sumtext="직종명"/>
  194. <Column id="deptnm" type="STRING" size="256" sumtext="부서명"/>
  195. <Column id="year" type="STRING" size="256" sumtext="연도"/>
  196. <Column id="totscore" type="STRING" size="256" sumtext="평점(계)"/>
  197. <Column id="evalemplnm" type="STRING" size="256" sumtext="평가자"/>
  198. <Column id="instcd" type="STRING" size="256" sumtext="기관코드"/>
  199. </ColumnInfo>
  200. </Dataset>
  201. <Dataset id="ds_init_evalperiodinfo" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  202. <ColumnInfo>
  203. <Column id="evalfromdd" type="STRING" size="256" sumtext="평가 등록 from일자"/>
  204. <Column id="evaltodd" type="STRING" size="256" sumtext="평가 등록 to일자"/>
  205. </ColumnInfo>
  206. </Dataset>
  207. <Dataset id="ds_main_psninfo_cmtinfo" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  208. <ColumnInfo>
  209. <Column id="cmt" type="STRING" size="256" sumtext="총평"/>
  210. <Column id="emplnm" type="STRING" size="256" sumtext="성명"/>
  211. <Column id="jobkindnm" type="STRING" size="256" sumtext="직종명"/>
  212. <Column id="deptnm" type="STRING" size="256" sumtext="부서명"/>
  213. <Column id="totscore" type="STRING" size="256" sumtext="평점(계)"/>
  214. <Column id="instcd" type="STRING" size="256" sumtext="기관코드"/>
  215. <Column id="year" type="STRING" size="256" sumtext="연도"/>
  216. <Column id="emplno" type="STRING" size="256" sumtext="사번"/>
  217. <Column id="strtdd" type="STRING" size="256" sumtext="평정기간(시작일자)"/>
  218. <Column id="enddd" type="STRING" size="256" sumtext="평정기간(끝일자)"/>
  219. </ColumnInfo>
  220. <Rows>
  221. <Row/>
  222. </Rows>
  223. </Dataset>
  224. <Dataset id="ds_main_psninfo_scorelist" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false" oncolumnchanged="ds_main_psninfo_scorelist_oncolumnchanged">
  225. <ColumnInfo>
  226. <Column id="itemnm" type="STRING" size="256" sumtext="코드명"/>
  227. <Column id="dtlitemnm" type="STRING" size="256" sumtext="종료일자"/>
  228. <Column id="score" type="STRING" size="256" sumtext="점수"/>
  229. <Column id="pos1" type="STRING" size="256" sumtext="위치1"/>
  230. <Column id="pos2" type="STRING" size="256" sumtext="위치2"/>
  231. <Column id="pos3" type="STRING" size="256" sumtext="위치3"/>
  232. <Column id="pos4" type="STRING" size="256" sumtext="위치4"/>
  233. <Column id="pos5" type="STRING" size="256" sumtext="위치5"/>
  234. <Column id="instcd" type="STRING" size="256" sumtext="기관코드"/>
  235. <Column id="year" type="STRING" size="256" sumtext="연도"/>
  236. <Column id="emplno" type="STRING" size="256" sumtext="사번"/>
  237. <Column id="dtlitemcd" type="STRING" size="256" sumtext="시작일자"/>
  238. </ColumnInfo>
  239. </Dataset>
  240. <Dataset id="ds_main_condition" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false" oncolumnchanged="ds_main_condition_oncolumnchanged">
  241. <ColumnInfo>
  242. <Column id="instcd" type="STRING" size="256"/>
  243. <Column id="year" type="STRING" size="256"/>
  244. <Column id="emplno" type="STRING" size="256"/>
  245. <Column id="emplnm" type="STRING" size="256"/>
  246. </ColumnInfo>
  247. <Rows>
  248. <Row/>
  249. </Rows>
  250. </Dataset>
  251. <Dataset id="ds_hidden_psninfo_scorelist" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false" oncolumnchanged="ds_main_psninfo_scorelist_oncolumnchanged">
  252. <ColumnInfo>
  253. <Column id="itemnm" type="STRING" size="256" sumtext="코드명"/>
  254. <Column id="dtlitemnm" type="STRING" size="256" sumtext="종료일자"/>
  255. <Column id="score" type="STRING" size="256" sumtext="점수"/>
  256. <Column id="pos1" type="STRING" size="256" sumtext="위치1"/>
  257. <Column id="pos2" type="STRING" size="256" sumtext="위치2"/>
  258. <Column id="pos3" type="STRING" size="256" sumtext="위치3"/>
  259. <Column id="pos4" type="STRING" size="256" sumtext="위치4"/>
  260. <Column id="pos5" type="STRING" size="256" sumtext="위치5"/>
  261. <Column id="instcd" type="STRING" size="256" sumtext="기관코드"/>
  262. <Column id="year" type="STRING" size="256" sumtext="연도"/>
  263. <Column id="emplno" type="STRING" size="256" sumtext="사번"/>
  264. <Column id="dtlitemcd" type="STRING" size="256" sumtext="시작일자"/>
  265. </ColumnInfo>
  266. </Dataset>
  267. <Dataset id="ds_hidden_psninfo_cmtinfo" firefirstcount="0" firenextcount="0" useclientlayout="false" updatecontrol="true" enableevent="true" loadkeymode="keep" loadfiltermode="keep" reversesubsum="false">
  268. <ColumnInfo>
  269. <Column id="cmt" type="STRING" size="256" sumtext="총평"/>
  270. <Column id="emplnm" type="STRING" size="256" sumtext="성명"/>
  271. <Column id="jobkindnm" type="STRING" size="256" sumtext="직종명"/>
  272. <Column id="deptnm" type="STRING" size="256" sumtext="부서명"/>
  273. <Column id="totscore" type="STRING" size="256" sumtext="평점(계)"/>
  274. <Column id="instcd" type="STRING" size="256" sumtext="기관코드"/>
  275. <Column id="year" type="STRING" size="256" sumtext="연도"/>
  276. <Column id="emplno" type="STRING" size="256" sumtext="사번"/>
  277. <Column id="strtdd" type="STRING" size="256" sumtext="평정기간(시작일자)"/>
  278. <Column id="enddd" type="STRING" size="256" sumtext="평정기간(끝일자)"/>
  279. </ColumnInfo>
  280. <Rows>
  281. <Row/>
  282. </Rows>
  283. </Dataset>
  284. </Objects>
  285. <Bind>
  286. <BindItem id="item0" compid="group3.grp_sea.cmb_instcd" propid="value" datasetid="ds_main_condition" columnid="instcd"/>
  287. <BindItem id="item1" compid="group3.grp_sea.ipt_year" propid="value" datasetid="ds_main_condition" columnid="year"/>
  288. <BindItem id="item2" compid="group3.grp_sea.ipt_emplno" propid="value" datasetid="ds_main_condition" columnid="emplno"/>
  289. <BindItem id="item3" compid="group3.grp_sea.ipt_emplnm" propid="value" datasetid="ds_main_condition" columnid="emplnm"/>
  290. <BindItem id="item4" compid="group3.output1" propid="value" datasetid="ds_main_psninfo_cmtinfo" columnid="year"/>
  291. <BindItem id="item5" compid="group3.opt_emplno" propid="value" datasetid="ds_main_psninfo_cmtinfo" columnid="emplno"/>
  292. <BindItem id="item6" compid="group3.opt_emplnm" propid="value" datasetid="ds_main_psninfo_cmtinfo" columnid="emplnm"/>
  293. <BindItem id="item7" compid="group3.opt_deptnm" propid="value" datasetid="ds_main_psninfo_cmtinfo" columnid="deptnm"/>
  294. <BindItem id="item8" compid="group3.opt_jobkindnm" propid="value" datasetid="ds_main_psninfo_cmtinfo" columnid="jobkindnm"/>
  295. <BindItem id="item9" compid="group3.opt_totscore" propid="value" datasetid="ds_main_psninfo_cmtinfo" columnid="totscore"/>
  296. <BindItem id="item10" compid="group3.txt_cmt" propid="value" datasetid="ds_main_psninfo_cmtinfo" columnid="cmt"/>
  297. </Bind>
  298. <Script type="xscript4.0"><![CDATA[/***************************************************************************************
  299. * System Name : 경대 의료정보시스템
  300. * Job Name : mis_dligclaznsmngtxp -> SMRPD31700
  301. * Creator : yjh
  302. * Make Date : 2018-01-05
  303. * Description :
  304. *---------------------------------------------------------------------------------------
  305. * Modify Date Modifier Modify Description
  306. *---------------------------------------------------------------------------------------
  307. * 2018-01-05 yjh TF->XP
  308. *
  309. *---------------------------------------------------------------------------------------
  310. ****************************************************************************************/
  311. //=======================================================================================
  312. // Lib Include
  313. //---------------------------------------------------------------------------------------
  314. include "com_commonxp::comm_main.xjs";
  315. include "mis_miscommonxp::MIS.xjs";
  316. include "mis_humtrafactmngtxp::RPB001.xjs";
  317. //=======================================================================================
  318. // Global Form Variable
  319. //---------------------------------------------------------------------------------------
  320. var arErrorCode = new HashArray();
  321. //=======================================================================================
  322. // Function
  323. //---------------------------------------------------------------------------------------
  324. //========================================================================================
  325. //화면 로드시 초기화 함수
  326. //========================================================================================
  327. function fOpenForm() {
  328. /*
  329. //전문의평가 관리권한 확인용 : 관리권한이 있는 자만 사용 가능
  330. if (submit("TRRPD31102")) {
  331. //alert(model.getValue("/root/init/prvg/cnt"));
  332. if(model.getValue("/root/init/prvg/cnt") != "1") {
  333. messageBox("프로그램 사용권한이 없습니다. 관리자에게 문의바랍니다.", "E999", "");
  334. return;
  335. }
  336. }
  337. */
  338. //model.removenode("/root/main/psnlist");
  339. //model.removenode("/root/main/scorelist");
  340. //model.refresh();
  341. misfComboInstCdListMulti("group3.grp_sea.cmb_instcd", utlf_getCurrentDate(),"","N");
  342. group3.grp_sea.cmb_instcd.value = sysf_getUserInfo("dutplceinstcd");
  343. group3.grp_sea.ipt_year.value = utlf_getCurrentDate().substr(0,4) - 1;
  344. misfGridInit(group3.grd_scorelist);
  345. fGetPsnList(); //평가대상자 목록 조회
  346. // if(model.getValue("/root/main/psnlist[1]/matrcd") != "") {
  347. // grd_psnlist.isSelected(1) = true;
  348. // fGetPsnInfo(1);
  349. // }else {
  350. // fCopyInstance();
  351. // }
  352. }
  353. //========================================================================================
  354. //인스턴스 Copy 함수
  355. //========================================================================================
  356. function fCopyInstance() {
  357. //----model.copyNode("/root/hidden/psninfo/cmtinfo", "/root/main/psninfo/cmtinfo");
  358. ds_hidden_psninfo_cmtinfo.copyData(ds_main_psninfo_cmtinfo);
  359. ds_hidden_psninfo_scorelist.copyData(ds_main_psninfo_scorelist);
  360. }
  361. //========================================================================================
  362. //평가 대상자 목록 조회 함수
  363. //========================================================================================
  364. function fGetPsnList() {
  365. //model.removenode("/root/main/psnlist");//조회시 기존 데이터 삭제
  366. misfGridInit(group3.grd_psnlist);
  367. ds_send.copyRow(0, ds_main_condition, 0);
  368. var oParam = {};
  369. oParam.id = "TRRPD31602";
  370. oParam.service = "dligclaznsmngtapp.DutScheMngt";
  371. oParam.method = "reqGetSpcEvalPsnPeriodList";
  372. oParam.inds = "req=ds_send";
  373. oParam.outds = "ds_init_evalperiodinfo=evalperiodinfo";
  374. oParam.async = false;
  375. oParam.callback = "cf_TRRPD31602";
  376. tranf_submit(oParam);
  377. if(arErrorCode.pop("TRRPD31602") > -1) { //평가 등록기간 조회
  378. var fromdd = utlf_transNullToEmpty(ds_init_evalperiodinfo.getColumn(0, "evalfromdd"));
  379. if(fromdd.length > 0) {
  380. var todd = utlf_transNullToEmpty(ds_init_evalperiodinfo.getColumn(0, "evaltodd"));
  381. group3.grp_sea.cp_evalperiod.text = "※ 평가 등록기간 : "
  382. + fromdd.substr(0,4) + "-" + fromdd.substr(4,2) + "-" + fromdd.substr(6,2) + " ~ "
  383. + todd.substr(0,4) + "-" + todd.substr(4,2) + "-" + todd.substr(6,2) ;
  384. } else {
  385. group3.grp_sea.cp_evalperiod.text = "";
  386. }
  387. }
  388. var oParam = {};
  389. oParam.id = "TRRPD31701";
  390. oParam.service = "dligclaznsmngtapp.DutScheMngt";
  391. oParam.method = "reqGetSpcEvalPsnFnshRsltList";
  392. oParam.inds = "req=ds_send";
  393. oParam.outds = "ds_main_psnlist=psnlist";
  394. oParam.async = false;
  395. //oParam.callback = "cf_TRRPD31701";
  396. tranf_submit(oParam); //평가대상자 목록 조회
  397. ds_main_psnlist.rowposition = -1;
  398. }
  399. function cf_TRRPD31602(sSvcId, nErrorCode, sErrorMsg) {
  400. arErrorCode.push(sSvcId, nErrorCode);
  401. }
  402. //========================================================================================
  403. //평가 점수 및 총평 조회
  404. //========================================================================================
  405. function fGetPsnInfo(pRow) {
  406. if ( pRow > -1 ) {
  407. ds_send.copyRow(0, ds_main_psnlist, pRow);
  408. var oParam = {};
  409. oParam.id = "TRRPD31603";
  410. oParam.service = "dligclaznsmngtapp.DutScheMngt";
  411. oParam.method = "reqGetSpcEvalPsnScoreList";
  412. oParam.inds = "req=ds_send";
  413. oParam.outds = "ds_main_psninfo_scorelist=scorelist ds_main_psninfo_cmtinfo=cmtinfo";
  414. oParam.async = false;
  415. //oParam.callback = "cf_TRRPD31603";
  416. tranf_submit(oParam);
  417. fCopyInstance();
  418. fCalScore();
  419. }
  420. }
  421. //========================================================================================
  422. //신규 버턴 클릭시 인스턴스 초기화
  423. //========================================================================================
  424. function fSetMatrInfo() {
  425. ipt_matrcd.disabled = false;
  426. // 아래 두줄로 변경
  427. //model.resetInstanceNode("/root/main/psninfo");
  428. model.resetInstanceNode("/root/main/psninfo/cmtinfo");
  429. //model.resetInstanceNode("/root/main/psninfo/scorelist");
  430. misfGridInit(grd_scorelist);
  431. //return;
  432. model.setFocus("ipt_matrcd");
  433. model.setValue("/root/main/psninfo/cmtinfo/status", "i");
  434. model.setValue("/root/main/psninfo/cmtinfo/msdsflag", "Y");
  435. // 서식에서 징수의무자 상호(법인명)으로 쓰임. 기본값으로 경북대학교병원장 셋팅.
  436. //model.setValue("/root/main/psninfo/prntnm1" , "경북대학교병원장");
  437. fCopyInstance();
  438. }
  439. //========================================================================================
  440. // 저장버튼 클릭시 저장 수행 함수
  441. //========================================================================================
  442. function fClickSaveBtn() {
  443. /*
  444. if(!fIsValidForSave())//저장전 유효성 검사
  445. return;
  446. */
  447. for(var i = grd_scorelist.fixedRows; i < grd_scorelist.rows; i++) {
  448. if(grd_scorelist.valueMatrix(i, grd_scorelist.colRef("score")) == "") {
  449. messageBox("미평가 항목이 존재합니다. 확인 후 저장하시기 바랍니다. ", "E999", "");
  450. return;
  451. }
  452. }
  453. model.resetInstanceNode("/root/send");
  454. //model.makeNode("root/send/cmtinfo");
  455. model.copyNode("/root/send", "/root/main/psninfo/cmtinfo");
  456. model.makeValue("/root/send/scorelist", grd_scorelist.getUpdateData());
  457. //return;
  458. if(submit("TXRPD31601")) {
  459. fGetPsnList();//평가대상자 목록 재조회
  460. model.copyNode("/root/send", "/root/main/psninfo/cmtinfo");
  461. submit("TRRPD31603"); //상세내역 및 조사표 재조회
  462. fCalScore();
  463. //model.setValue("/root/main/psninfo/cmtinfo/status", "-");
  464. //grd_scorelist.clearStatus();
  465. //--model.makeNode("/root/hidden/psninfo/cmtinfo");
  466. model.makeNode("/root/hidden/psninfo");
  467. fCopyInstance();
  468. }
  469. }
  470. //========================================================================================
  471. //저장전 유효성 검사
  472. //========================================================================================
  473. function fIsValidForSave() {
  474. //필수 입력 항목 체크(공통 ftHelper.js)
  475. if(!isRequiredControls("ipt_matrcd","ipt_matrnm")) { //,"ipt_prodcmpycd"
  476. return false;
  477. }
  478. var tretopendd = "";
  479. var tretclosdd = "";
  480. for(var i = grd_scorelist.fixedRows; i < grd_scorelist.rows; i++) {
  481. if(grd_scorelist.rowStatus(i) < 4) { //행삭제가 아닌 Record만 check한다.
  482. if(grd_scorelist.valueMatrix(i, grd_scorelist.colRef("deptcd")) == "") {
  483. messageBox("부서코드가 입력되지 않았습니다. \n조사표의 부서코드를 확인하십시요. ", "E999", "");
  484. return false;
  485. }
  486. tretopendd = grd_scorelist.valueMatrix(i, grd_scorelist.colRef("tretopendd"));
  487. if( tretopendd.length != 8 ) {
  488. messageBox("취급개시일이 정확하게 입력되지 않았습니다. \n취급개시일을 확인하십시요. ", "E999", "");
  489. return false;
  490. }
  491. tretclosdd = grd_scorelist.valueMatrix(i, grd_scorelist.colRef("tretclosdd"));
  492. if( tretclosdd.length != 8 ) {
  493. messageBox("취급종료일이 정확하게 입력되지 않았습니다. \n취급종료일을 확인하십시요. ", "E999", "");
  494. return false;
  495. }
  496. if( tretopendd > tretclosdd ) {
  497. messageBox("취급개시일이 취급종료일보다 큽니다. 취급일을 확인하십시요. ", "E999", "");
  498. return false;
  499. }
  500. }
  501. }
  502. var sStatus = model.getValue("/root/main/psninfo/cmtinfo/status");
  503. var sNewData = fGetNodeText("/root/main/psninfo/cmtinfo");
  504. var sOldData = fGetNodeText("/root/hidden/psninfo/cmtinfo");
  505. //상세내역에 변경된 정보가 있는지 확인
  506. if(sNewData != sOldData && sStatus == "-") { // 데이터 수정일 경우
  507. model.setValue("/root/main/psninfo/cmtinfo/status","u");
  508. return true;
  509. } else if(sNewData == sOldData && sStatus == "-" ) { //변경된 값이 없을경우
  510. //messageBox("변경된 정보가 ", "I004");
  511. //return false;
  512. return true;
  513. }else if(sStatus == "i") { //데이터 입력일 경우
  514. return true;
  515. }else if(sStatus = "d") { //데이터 삭제일 경우
  516. return true;
  517. }
  518. }
  519. //========================================================================================
  520. //엑셀입력(excel file을 그리드에 입력)
  521. //========================================================================================
  522. function fInputExcel(pGrid) {
  523. var fileName = window.fileDialog("open", ",", false, "", "xls", "All Files (*.*)|*.*|Excel Files(*.xls)|*.xls");
  524. if(fileName != "") {
  525. pGrid.loadExcel(fileName, 1, true);
  526. pGrid.deleteRow(1);
  527. pGrid.refresh();
  528. }
  529. }
  530. //========================================================================================
  531. //동일한 Depth의 인스턴스의 값을 스트링형으로 변환
  532. //========================================================================================
  533. function fGetNodeText(pNode) {
  534. var trgNdoe = instance1.selectSingleNode(pNode);
  535. var trgNdoeList = trgNdoe.childNodes;
  536. var childNode;
  537. var allText = "";
  538. while( childNode = trgNdoeList.nextNode() ) {
  539. allText += childNode.text;
  540. }
  541. return allText;
  542. }
  543. function fOpenPopupDeptHelp(pControl, pInstance)
  544. {
  545. misfOpenPopUpList("02", pControl, "", pInstance);
  546. model.refresh();
  547. }
  548. //========================================================================================
  549. //평점을 계산하여 display합니다.
  550. //========================================================================================
  551. function fCalScore() {
  552. var vTotal = 0;
  553. var vScore = "";
  554. for(var i = 0; i < ds_main_psninfo_scorelist.rowcount; i++) {
  555. vScore = ds_main_psninfo_scorelist.getColumn(i, "score");
  556. if(utlf_isNull(vScore)) continue;
  557. vTotal = vTotal + parseFloat(ds_main_psninfo_scorelist.getColumn(i, "score"));
  558. }
  559. group3.opt_totscore.value = vTotal;
  560. }
  561. //=======================================================================================
  562. // Event
  563. //---------------------------------------------------------------------------------------
  564. /****************************************************************************************
  565. * Components : Form
  566. * Components ID : SMRPD31700
  567. * Event : oninit
  568. * Argument : 01.obj : Object Event has occurred
  569. * : 02.e : Event Object
  570. * Description : 화면 처음 초기화시
  571. ****************************************************************************************/
  572. function SMRPD31700_oninit(obj:Form, e:InitEventInfo)
  573. {
  574. frmf_initForm(obj); //폼 초기화
  575. }
  576. /****************************************************************************************
  577. * Components : Form
  578. * Components ID : SMRPD31700
  579. * Event : onload
  580. * Argument : 01.obj : Object Event has occurred
  581. * : 02.e : Event Object
  582. * Description : 화면 로딩 완료시
  583. ****************************************************************************************/
  584. function SMRPD31700_onload(obj:Form, e:LoadEventInfo)
  585. {
  586. grdf_setRowTypeIcon(group3.grd_psnlist, 0);
  587. grdf_setGridSort(group3.grd_psnlist);
  588. fOpenForm();
  589. }
  590. /****************************************************************************************
  591. * Components : Button
  592. * Components ID : btn_search
  593. * Event : onclick
  594. * Argument : 01.obj : Object Event has occurred
  595. * : 02.e : Event Object
  596. * Description : 조회버튼 클릭시
  597. ****************************************************************************************/
  598. function group3_grp_sea_btn_search_onclick(obj:Button, e:ClickEventInfo)
  599. {
  600. fGetPsnList();
  601. }
  602. /****************************************************************************************
  603. * Components : Combo
  604. * Components ID : cmb_instcd
  605. * Event : onitemchanged
  606. * Argument : 01.obj : Object Event has occurred
  607. * : 02.e : Event Object
  608. * Description : 콤보 값 변경시
  609. ****************************************************************************************/
  610. function group3_grp_sea_cmb_instcd_onitemchanged(obj:Combo, e:ItemChangeEventInfo)
  611. {
  612. //misfGridInit(datagrid1);
  613. }
  614. function ds_main_condition_oncolumnchanged(obj, e)
  615. {
  616. switch( e.columnid ){
  617. case "year" :
  618. fGetPsnList();
  619. break;
  620. case "emplnm" :
  621. group3.grp_sea.ipt_emplnm.value = e.newvalue;
  622. group3.grp_sea.ipt_emplnm.setFocus();
  623. var recv_list = "emplno,emplnm" ;
  624. rpbfValidationCheck("EMPLNM", recv_list);
  625. fGetPsnList();
  626. break;
  627. case "emplno" :
  628. group3.grp_sea.ipt_emplno.value = e.newvalue;
  629. group3.grp_sea.ipt_emplno.setFocus();
  630. var recv_list = "emplno,emplnm" ;
  631. rpbfValidationCheck("EMPLNO", recv_list);
  632. fGetPsnList();
  633. break;
  634. default :
  635. break;
  636. }
  637. }
  638. /****************************************************************************************
  639. * Components : Edit
  640. * Components ID : ipt_emplnm
  641. * Event : onkeyup
  642. * Argument : 01.obj : Object Event has occurred
  643. * : 02.e : Event Object
  644. * Description : 에디터 키 입력시
  645. ****************************************************************************************/
  646. function group3_grp_sea_ipt_emplnm_onkeyup(obj:Edit, e:KeyEventInfo)
  647. {
  648. if (e.keycode == 13 && !utlf_isNull(group3.grp_sea.ipt_emplnm.value)) {
  649. obj.updateToDataset();
  650. var eventObj = new EventInfo(); // 이벤트생성
  651. eventObj.columnid = "emplnm"; //이벤트객체에 값 셋팅
  652. eventObj.newvalue = ds_main_condition.getColumn(0, "emplnm");
  653. ds_main_condition_oncolumnchanged(ds_main_condition, eventObj);
  654. //inputEnterKey("btn_search", "DOMActivate");
  655. }
  656. }
  657. /****************************************************************************************
  658. * Components : Button
  659. * Components ID : btn_emplno
  660. * Event : onclick
  661. * Argument : 01.obj : Object Event has occurred
  662. * : 02.e : Event Object
  663. * Description : 돋보기버튼 클릭시
  664. ****************************************************************************************/
  665. function group3_grp_sea_btn_emplno_onclick(obj:Button, e:ClickEventInfo)
  666. {
  667. var recv_list = "emplno,emplnm" ;
  668. rpbfOpenPopUpList("SPRPB00101", group3.grp_sea.ipt_emplno, recv_list,"1","N");
  669. fGetPsnList();
  670. }
  671. /****************************************************************************************
  672. * Components : Edit
  673. * Components ID : ipt_emplno
  674. * Event : onkeyup
  675. * Argument : 01.obj : Object Event has occurred
  676. * : 02.e : Event Object
  677. * Description : 에디터 키 입력시
  678. ****************************************************************************************/
  679. function group3_grp_sea_ipt_emplno_onkeyup(obj:Edit, e:KeyEventInfo)
  680. {
  681. if (e.keycode == 13 && !utlf_isNull(group3.grp_sea.ipt_emplno.value)) {
  682. obj.updateToDataset();
  683. var eventObj = new EventInfo(); // 이벤트생성
  684. eventObj.columnid = "emplno"; //이벤트객체에 값 셋팅
  685. eventObj.newvalue = ds_main_condition.getColumn(0, "emplno");
  686. ds_main_condition_oncolumnchanged(ds_main_condition, eventObj);
  687. //inputEnterKey("btn_search", "DOMActivate");
  688. }
  689. }
  690. /****************************************************************************************
  691. * Components : Grid
  692. * Components ID : grd_psnlist
  693. * Event : oncellclick
  694. * Argument : 01.obj : Object Event has occurred
  695. * : 02.e : Event Object
  696. * Description : 그리드 셀 클릭시
  697. ****************************************************************************************/
  698. function group3_grd_psnlist_oncellclick(obj:Grid, e:GridClickEventInfo)
  699. {
  700. var cur_row = ds_main_psnlist.rowposition;
  701. fGetPsnInfo(cur_row);
  702. group3.opt_emplno.setFocus();
  703. }
  704. /****************************************************************************************
  705. * Components : Dataset
  706. * Components ID : ds_main_psninfo_scorelist
  707. * Event : oncolumnchanged
  708. * Argument : 01.obj : Object Event has occurred
  709. * : 02.e : Event Object
  710. * Description : 데이터셋 값 변경시
  711. ****************************************************************************************/
  712. function ds_main_psninfo_scorelist_oncolumnchanged(obj:Dataset, e:DSColChangeEventInfo)
  713. {
  714. switch( e.columnid ){
  715. case "pos1" :
  716. case "pos2" :
  717. case "pos3" :
  718. case "pos4" :
  719. case "pos5" :
  720. if( e.newvalue == "1" || e.newvalue == "Y" ){
  721. obj.setColumn(e.row, e.columnid, "Y");
  722. }else{
  723. obj.setColumn(e.row, e.columnid, "N");
  724. }
  725. var icol = group3.grd_scorelist.currentcell;
  726. var irow = e.row;
  727. var offset = 0;
  728. var MaxScore = 5; //최고 점수
  729. if( obj.getColumn(irow, e.columnid) == "Y" ) {
  730. for( var i = group3.grd_scorelist.getBindCellIndex("body", "pos1") ; i <= group3.grd_scorelist.getBindCellIndex("body", "pos5"); i++ ) {
  731. if( i == icol ) {
  732. obj.setColumn(irow, "score", MaxScore - offset);
  733. } else {
  734. obj.setColumn(irow, "score", MaxScore - offset);
  735. grd_scorelist.valueMatrix(irow, "pos"+(i-1), "N");
  736. }
  737. offset++;
  738. }
  739. } else {
  740. obj.setColumn(irow, "score", "");
  741. }
  742. //평점계를 계산하여 display
  743. fCalScore();
  744. break;
  745. default :
  746. break;
  747. }
  748. }
  749. /****************************************************************************************
  750. * Components : Button
  751. * Components ID : btn_download
  752. * Event : onclick
  753. * Argument : 01.obj : Object Event has occurred
  754. * : 02.e : Event Object
  755. * Description : 엑셀저장버튼 클릭시
  756. ****************************************************************************************/
  757. function group3_btn_download_onclick(obj:Button, e:ClickEventInfo)
  758. {
  759. //조회된 자료가 없으면 먼저 조회하라고 message
  760. if(group3.grd_psnlist.rowcount < 1) {
  761. sysf_messageBox("조회된 결과가 존재하지 않습니다. \n\n먼저 조회 후 Download 하십시요. ", "E999", "");
  762. return;
  763. }
  764. //misfSaveExcel(datagrid1, "평가항목");
  765. grdf_exportExcel(group3.grd_psnlist, "excel", "savetype", false, "", "user", false);
  766. }
  767. /****************************************************************************************
  768. * Components : Button
  769. * Components ID : btn_print
  770. * Event : onclick
  771. * Argument : 01.obj : Object Event has occurred
  772. * : 02.e : Event Object
  773. * Description : 출력 및 파일저장버튼 클릭시
  774. ****************************************************************************************/
  775. function group3_btn_print_onclick(obj:Button, e:ClickEventInfo)
  776. {
  777. //출력
  778. var objDOM = rptf_createDOM(); // DOM 객체 설정
  779. rptf_setNodeListToDOM(objDOM, "/root/main/psninfo/scorelist", ds_main_psninfo_scorelist); // 데이터셋 1
  780. rptf_setNodeListToDOM(objDOM, "/root/main/psninfo/cmtinfo", ds_main_psninfo_cmtinfo); // 데이터셋 1
  781. var objParam = new Object();
  782. objParam.xml_data_XML1 = objDOM.documentElement.source; // 최상의노드 XML 스트링 추출
  783. var option = "open=1;save=1;directprint=0;print=1;zoom=0;";
  784. rptf_exeReportPreview30(["RPRPD31701"],[objParam], option);
  785. }
  786. ]]></Script>
  787. </Form>
  788. </FDL>