123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775 |
- <?xml version="1.0" encoding="utf-8"?>
- <Script type="xscript4.0"><![CDATA[/***************************************************************************************
- * System Name : KNUH2.0
- * Job Name : EMR
- * Creator :
- * Make Date : 2015-02-05
- * Description :
- *---------------------------------------------------------------------------------------
- * Modify Date Modifier Modify Description
- *---------------------------------------------------------------------------------------
- * 2015-02-05 Live Converter TF->XP
- *
- *---------------------------------------------------------------------------------------
- ****************************************************************************************/
- var SELECTED_OPROOMCD = "";
- var SELECTED_GRDOBJ_ID = "";
- var gSTATUS_VAL = ""; //status
- var gOPROOMCD_VAL = ""; //oproomcd
- var gOPREGSTNO_VAL = ""; //opregstno
- var gOPREGSTHISTNO_VAL = ""; //opregsthistno
- var gPID = ""; //pid
- var gOPSCHEDD = ""; //opschedd
- var gPERFDEPTCD = ""; //perfdeptcd
- var gOPFROMTMCD = "";
- var gOPENDTMCD = "";
- var gQUERYFLAG = "";
- var gOPSTATCD = ""; //opstatcd
- var g_startpos = 0; //시작점
- var g_endpos = 0; //끝점
- var g_choiceflag = "N";//선택여부
- var nextmin = "";
- //=======================================================================================
- // Function
- //---------------------------------------------------------------------------------------
- /****************************************************************************************
- * Function : fInitOpScheTime
- * Description : 수술예약시간 초기화
- * : -마취스케줄관리 tbl의 시작, 종료시간 조회 정보를 기반으로
- * : -그리드의 시간표시 범위를 설정함
- * Argument :
- * return type :
- * Creator :
- ****************************************************************************************/
- function fInitOpScheTime(){
- fReqRegOpTime();
- }
- /****************************************************************************************
- * Function : fReqRegOpTime
- * Description : 정규수술시간 조회
- * Argument :
- * return type :
- * Creator :
- ****************************************************************************************/
- function fReqRegOpTime(){
- if(gOPSCHEDD == ""){
- var nextdate = utlf_getCurrentDate();
- }else{
- var nextdate = gOPSCHEDD;
- }
- ds_send_reqdata.clear();
- dsf_makeValue(ds_send_reqdata,"nextdate","string",nextdate);
-
- var oParam = {};
- oParam.id = "TRMMO05705";
- oParam.service = "prcpmngtapp.OpMngt";
- oParam.method = "reqGetOpScheRegTimeList";
- oParam.inds = "req=ds_send_reqdata";
- oParam.outds = "ds_main_scheregtimelist=scheregtimelist";
- oParam.async = false;
- oParam.callback = "cf_TRMMO05705";
- tranf_submit(oParam);
- }
- function cf_TRMMO05705(sSvcId, nErrorCode, sErrorMsg) {
- if(nErrorCode < 0) return;
- else {
- // var xml = instance1.selectSingleNode("/root/main/scheregtimelist/scheregtimelist");
- var rsltcnt = ds_main_scheregtimelist.rowcount
- if(rsltcnt > 0){
- dsf_makeValue(ds_tmp,"regtmflag","string","N");
- dsf_makeValue(ds_main_scheregtimelist,"regfromtm","string","08");
- dsf_makeValue(ds_main_scheregtimelist,"regendtm" ,"string","17");
- } else {
- dsf_makeValue(ds_tmp,"regtmflag","string","Y");
- }
- }
- }
- /****************************************************************************************
- * Function : fInitialize_SMMMO08800
- * Description : 수술예약시간설정 화면 초기화
- * Argument :
- * return type :
- * Creator :
- ****************************************************************************************/
- function fInitialize_SMMMO08800(){
- var param = opener.frmf_getParameter("SPMMO08800_param");
- if(utlf_isNull(param)){
- sysf_messageBox("수술예약정보를 찾을 수 ", "I004");
- this.close();
- }
- fDispRegOpTime(grd_optimelist1); //grid1 정규시간설정
- fDispRegOpTime(grd_optimelist2); //grid2 정규시간설정
- fDispRegOpTime(grd_optimelist3); //grid3 정규시간설정
- param = param.split("▦");
- gSTATUS_VAL = param[0];
- gOPROOMCD_VAL = param[1];
- gOPREGSTNO_VAL = param[2];
- gOPREGSTHISTNO_VAL = param[3];
- gPID = param[4];
- gOPSCHEDD = param[5];
- gPERFDEPTCD = param[6];
- gOPFROMTMCD = param[7];
- gOPENDTMCD = param[8];
- gQUERYFLAG = param[9];
- gPERFDRID = param[10];
- gOPSTATCD = param[11];
- SELECTED_OPROOMCD = gOPROOMCD_VAL;
- // reqHardCodeInfo("/root/send/reqdata", "/root/init/hardcd", 18);
- lf_reqHardCodeInfo(ds_init_hardcd, 18);
- var hardcd = ds_init_hardcd.getColumn(0,"hardcd");
- if(sysf_getUserInfo("dutplcecd")== hardcd || sysf_getUserInfo("userid") == "EMR"){ //마취통증의학과의 경우 모든 수술방에 대해 예약입력 가능 권한을 부여
- lf_reqOpRoomList(utlf_getCurrentDate(), ds_init_oproomlist, ds_init_alloproomlist, "total"); //전체 수술실 조회
- }else{
- lf_reqOpRoomList(gOPSCHEDD, ds_init_oproomlist, ds_init_alloproomlist, "detl", gPERFDEPTCD, gPERFDRID); //수술방 조회(일별로 예약가능한)
- }
- var depthngnm = "";
- // var oproomnode= model.instance1.selectSingleNode("/root/init/oproomlist/oproomlist");
- var oprommcnt = ds_init_oproomlist.rowcount;
- if(oprommcnt == 0){
- sysf_messageBox("[" + depthngnm + "]등록된 수술방이", "I004");
- this.close();
- return;
- }
- if(gSTATUS_VAL == "r"){ //status 조회인 경우, grdobj를 disabled로 설정
- grd_optimelist1.enable = false;
- grd_optimelist2.enable = false;
- grd_optimelist3.enable = false;
- } else if(gSTATUS_VAL == "x") {
- // caption7.visible = "visible";
- // combo1.visible = "visible";
- }
- //sysf_trace("param/hardcd/oprommcnt/gSTATUS_VAL = "+param+"/"+hardcd+"/"+oprommcnt+"/"+gSTATUS_VAL);
- fSetOpRoomNM(Math.ceil(fFindInstanceCount()/3)); //수술방명 설정
- fReqOpRoomScheList(); //수술방 스케줄 조회
- fSetOpScheTimeGrd(); //스케줄 표시
- if(gSTATUS_VAL == "i" || gSTATUS_VAL == "u"){ //status 가 신규인 경우,
- if(gOPFROMTMCD != "" && gOPENDTMCD != ""){ //시작, 종료시간이 설정된 경우에만 실행
- g_choiceflag = "X";
- fFindGridID();
- // grdobj = document.controls.item(SELECTED_GRDOBJ_ID);
- grdobj = components[SELECTED_GRDOBJ_ID];
- if(!utlf_isNull(grdobj)) { //grid object가 null이 아닌 경우에만 표시
- fChkOpScheTime(grdobj, gOPFROMTMCD.substr(0,4), gOPENDTMCD.substr(0,4), "", "#0000ff"); //grid에 표시될 시작, 종료시간을 check
- }
- }
- }
-
- frmf_createPopupMenu("popmenu"
- ,"fCnclOpScheTime"
- ,[{id: "D", level: "0", title: "삭제"}] //항목추가
- );
- }
- /****************************************************************************************
- * Function : fDispRegOpTime
- * Description : 정규수술시간 조회
- * Argument : grdobj : 대상 그리드
- * return type :
- * Creator :
- ****************************************************************************************/
- function fDispRegOpTime(grdobj){
- var regfromtm = ds_main_scheregtimelist.getColumn(0,"regfromtm");
- var regendtm = ds_main_scheregtimelist.getColumn(0,"regendtm");
- var totcol = grdobj.getFormatColCount();
-
- for(var i = 2; i < totcol; i++){ //정규시작 시간까지 column을 hidden
- var cellidx = Math.ceil((i+5)/6); // col index로 cell index구함
- var time = grdobj.getCellText(-1, cellidx);
- if(time == regfromtm){
- break;
- } else {
- grdobj.setFormatColProperty(i,"size",0);
- }
- }
- for(var j = i; i < totcol; i++){ //정규종료 시간까지 column을 visible
- var cellidx = Math.ceil((i+5)/6); // col index로 cell index구함
- var time = grdobj.getCellText(-1, cellidx);
- if(time == regendtm){
- break;
- } else {
- grdobj.setFormatColProperty(i,"size",25);
- }
- }
- // 2008.11.19 종료시간 이후도 hidden 되도록
- for(var x = i; i < totcol; i++){ //정규종료 시간까지 column을 hidden
- var cellidx = Math.ceil((i+5)/6); // col index로 cell index구함
- var time = grdobj.getCellText(-1, cellidx);
- grdobj.setFormatColProperty(i,"size",0);
- }
- // (e)
- }
- /****************************************************************************************
- * Function : fSetOpRoomNM
- * Description : 수술방명 설정
- * Argument : curcnt : 들어갈 수술방
- * return type :
- * Creator :
- ****************************************************************************************/
- function fSetOpRoomNM(curcnt){
- var roomcnt = ds_init_oproomlist.rowcount;
- fSetOpRoomCnt(curcnt, roomcnt);
- var curcnt = ds_main_cond.getColumn(0,"curcnt");
- var tmpval = (curcnt - 1) * 3; // 1, 4, 7..순으로 수술방을 표현하기 위함
- for(var i = 1; i <= 3; i++){
- // var xmlnode = model.instance1.selectSingleNode("/root/init/oproomlist/oproomlist[" + (i + tmpval) + "]/oproomnm");
- var xmlnode = ds_init_oproomlist.getColumn(i+tmpval-1,"oproomnm");
- // sysf_trace(ds_init_oproomlist.saveXML());
- // alert(xmlnode);
- if(utlf_isNull(xmlnode)){
- continue;
- }
- var oproomnm = ds_init_oproomlist.getColumn(i + tmpval-1,"oproomnm");
- var oproomcd = ds_init_oproomlist.getColumn(i + tmpval-1,"oproomcd");
- var grdid = "grd_optimelist" + "" + i + "";
- // var grdobj = document.controls.item(grdid);
- var grdobj = components[grdid];
- if(utlf_isNull(grdobj)){break;}
- grdobj.setCellProperty("Head",0,"text",oproomnm); //수술방명 설정
- //grdobj.setCellProperty("Head",0,"text",oproomnm);
- grdobj.setCellProperty("Head",1,"text",oproomcd); //수술방코드 설정
- //grdobj.setCellProperty("Head",1,"text",oproomcd);
- }
- // if(utlf_isNull(grdobj)){grdobj.refresh();}
- }
- /****************************************************************************************
- * Function : fReqOpRoomScheList
- * Description : 수술방명 설정
- * Argument :
- * return type :
- * Creator :
- ****************************************************************************************/
- function fReqOpRoomScheList(){
- ds_send_reqdata.clear();
- dsf_makeValue(ds_send_reqdata,"opschedd" ,"string", gOPSCHEDD);
- dsf_makeValue(ds_send_reqdata,"perfdeptcd","string", gPERFDEPTCD);
- dsf_makeValue(ds_send_reqdata,"queryflag" ,"string", gQUERYFLAG);
- dsf_makeValue(ds_send_reqdata,"regtmflag" ,"string", ds_tmp.getColumn(0,"regtmflag"));
-
- if(gQUERYFLAG == "oprsrv" && gSTATUS_VAL == "u"){ //시간설정화면에서 수술예약정보의 데이터를 수정하는 경우
- dsf_makeValue(ds_send_reqdata,"oprsrvno" ,"string", gOPREGSTNO_VAL); //해당 환자의 수술예약정보는 조회하지 않음. 화면에 표시는 parameter로 처리
- }
- // submit("TRMMO08801");
- var oParam = {};
- oParam.id = "TRMMO08801";
- oParam.service = "prcpmngtapp.OpMngt";
- oParam.method = "reqGetOpScheTimeInfo";
- oParam.inds = "req=ds_send_reqdata";
- oParam.outds = "ds_main_optimelist=optimelist";
- oParam.async = false;
- oParam.callback = "";
- tranf_submit(oParam);
- }
- /****************************************************************************************
- * Function : fSetOpScheTimeGrd
- * Description : 수술방 시간 그리드 표시
- * Argument :
- * return type :
- * Creator :
- ****************************************************************************************/
- function fSetOpScheTimeGrd(){
- var totcnt = ds_main_optimelist.rowcount; //수술방 시간 전체 count
- for(var i = 0 ; i <= totcnt ; i++){
- var oproomcd = ds_main_optimelist.getColumn(i,"oproomcd"); //oproomcd를 구한후,
- var opfromtmcd = ds_main_optimelist.getColumn(i,"opfromtmcd"); //opfromtmcd
- var opendtmcd = ds_main_optimelist.getColumn(i,"opendtmcd"); //opendtmcd
- var usernm = ds_main_optimelist.getColumn(i,"usernm"); //usernm
- var opregstno = ds_main_optimelist.getColumn(i,"opregstno"); //opregstno
- var opregsthistno = ds_main_optimelist.getColumn(i,"opregsthistno"); //opregsthistno
- var pid = ds_main_optimelist.getColumn(i,"pid"); //pid
- for(var j = 1; j < 4; j++){
- var grdid = "grd_optimelist" + "" + j + "";
- // var grdobj = document.controls.item(grdid);
- var grdobj = components[grdid];
- if(oproomcd == grdobj.getCellText(-1,1)){ //grid에 설정된 oproomcd와 동일한 경우, 해당 정보를 setting
- if(gSTATUS_VAL == "u" && opregstno == gOPREGSTNO_VAL && opregsthistno == gOPREGSTHISTNO_VAL && pid == gPID){
- var opfromtmcd = gOPFROMTMCD.substr(0,4);
- var opendtmcd = gOPENDTMCD.substr(0,4);
- var color = "#0000ff";
- usernm = "";
- }else{
- var opfromtmcd = opfromtmcd.substr(0,4);
- var opendtmcd = opendtmcd.substr(0,4);
- var color ="#00ff00";
- }
- fChkOpScheTime(grdobj, opfromtmcd, opendtmcd, usernm, color); //grid에 표시될 시작, 종료시간을 check
- }
- }
- }
- }
- /****************************************************************************************
- * Function : fFindGridID
- * Description : rd id 찾기, global변수에 id 설정
- * Argument :
- * return type :
- * Creator :
- ****************************************************************************************/
- function fFindGridID(){
- for(var i = 1 ; i <= 3; i++){ //grid id찾기
- var grdid = "grd_optimelist" + i + "";
- var tmpobj = components[grdid];
- if(tmpobj.getCellText(-1, 1) == SELECTED_OPROOMCD){
- SELECTED_GRDOBJ_ID = grdid;
- }
- }
- }
- /****************************************************************************************
- * Function : fChkOpScheTime
- * Description : 수술방 시간 그리드 표시
- * Argument :
- * return type :
- * Creator :
- ****************************************************************************************/
- function fChkOpScheTime(grdobj, fromtime, endtime, usernm, color){
- for(var i = 2; i < grdobj.getFormatColCount(); i++){
- var cellidx = Math.ceil((i+5)/6); // col index로 cell index구함
- var header = fGetOpSchdHeaderInfo(grdobj, cellidx, i+15); //그리드 상단 시간정보 조회
- if(header == fromtime){ //시작시간과 같은 경우 startpos 설정
- var startpos = i;
- }
- if(header == endtime){ //종료시간과 같은 경우 endpos 설정
- var endpos = i;
- }
- }
- fPaintGrdColor(grdobj, startpos, endpos, usernm, color);
- }
- /****************************************************************************************
- * Function : fGetOpSchdHeaderInfo
- * Description : 수술방 그리드 상단시간 정보 조회
- * Argument : grdobj : grid ID
- * : cellh : 시표시 부분 cell index
- * : cellm : 분표시 부분 cell index
- * return type :
- * Creator :
- ****************************************************************************************/
- function fGetOpSchdHeaderInfo(grdobj, cellh, cellm){
- var hour = grdobj.getCellText(-1, cellh);
- var minutes= grdobj.getCellText(-1, cellm);
- if(minutes == "00"){
- nextmin = "10";
- }else if(minutes == "20"){
- nextmin = "30";
- }else if(minutes == "40"){
- nextmin = "50";
- }
- if(minutes == ""){
- minutes = nextmin;
- }
- var header = hour + "" + minutes;
- return header;
- }
- /****************************************************************************************
- * Function : fGetOpSchdHeaderInfo
- * Description : 그리드 색깔 설정 및 데이터 입력
- * Argument : grdobj : grid ID
- * : startpos : 시작 컬럼index
- * : endpos : 종료 컬럼index
- * : usernm : Text 표기할 데이터
- * : color : 설정할 색
- * return type :
- * Creator :
- ****************************************************************************************/
- function fPaintGrdColor(grdobj, startpos, endpos, usernm, color){
- for(var i = startpos; i < endpos; i++){
- // grdobj.cellStyle("background-color", 2, i) = color;
- grdobj.setCellProperty("body",i,"background",color);
- // objects[grdobj.binddataset].setColumn(0, i, usernm); // 굳이 필요한지? 쓰임새가 없는듯
- }
- if(startpos != endpos-1){
- if(color == "#00ff00"){
- //grdobj.mergeByFree(2, startpos, 2, endpos-1); // 데이터 영역 colspan이 가능할까?
- }
- }
- }
- /****************************************************************************************
- * Function : fFindInstanceCount
- * Description : 해당값이 instance에 몇번째 있는지 확인한다.
- * Argument : param : 찾으려는 값
- * return type :
- * Creator :
- ****************************************************************************************/
- function fFindInstanceCount(param){
- if(!utlf_isNull(param)){
- var cmpval = param;
- }else{ //param이 없는 경우, opener에서 받은 oproomcd를 기본으로 설정함
- var cmpval = gOPROOMCD_VAL;
- }
- var totcnt = ds_init_oproomlist.rowcount;
- for(var i = 0; i < totcnt; i++){
- var oproomcd = ds_init_oproomlist.getColumn(i,"oproomcd");
- if(oproomcd == cmpval){
- return i+1;
- }
- }
- return 1; //선택된 수술방이 없는 경우 첫번째 instance로 무조건 설정함
- }
- /****************************************************************************************
- * Function : fSetOpRoomCnt
- * Description : 수술방 count 설정, 현재 page / 총 page
- * Argument : curcnt : 수술방번호
- * : totcnt : 전체수술실수
- * return type :
- * Creator :
- ****************************************************************************************/
- function fSetOpRoomCnt(curcnt, totcnt){
- ds_main_cond.setColumn(0,"totcnt", Math.ceil(totcnt/3));
- ds_main_cond.setColumn(0,"curcnt", curcnt);
- }
- /****************************************************************************************
- * Function : fSelectOpScheTime
- * Description : 그리드 클릭시, 색깔 설정
- * Argument :
- * return type :
- * Creator :
- ****************************************************************************************/
- function fSelectOpScheTime(grdobj){
- var extra = ds_main_cond.getColumn(0,"extra");
- if(extra == "Y"){
- var rtnval = sysf_messageBox("정규시간 이외 설정을 해체를", "Q004");
- if(rtnval == 6){
- ds_main_cond.setColumn(0,"extra" , "N");
- ds_main_cond.setColumn(0,"oproomcd" , "");
- ds_main_cond.setColumn(0,"exfromtmcd", "");
- ds_main_cond.setColumn(0,"exendtmcd" , "");
- cmb_oproom.enable = false;
- cmb_exfromtmcd.enable = false;
- cmb_exendtmcd.enable = false;
- fCnclOpScheTime();
- }else{
- return;
- }
- }
- var col = grdobj.getCellPos();
- if(col < 2){
- return;
- }
- if(grdobj.getCellText(-1,1) == ""){
- return;
- }
- if(fChkChngOpRoom(grdobj) == false){
- return;
- }
- SELECTED_OPROOMCD = grdobj.getCellText(-1, 1);
- // 오전과 오후의 진료과가 다른 경우 자신의 해당하는 시간에만 정규 수술의뢰를 할 수 있도록 수정 : 2009. 07. 09 김영학
- var cellidx = Math.ceil((col+5)/6); // col index로 cell index구함
- SELECTED_time = grdobj.getCellText(-1, cellidx);
- SELECTED_MIN = grdobj.getCellText(-1, col+15);
- if(SELECTED_MIN == ""){ //값이 없는 부분은 그 전의 값에 따라 15분 또는 45분
- var bfminutes = grdobj.getCellText(-1, col+14);
- if(bfminutes == "00"){
- SELECTED_MIN = "10";
- }else if(bfminutes == "20"){
- SELECTED_MIN = "30";
- }else if(bfminutes == "40"){
- SELECTED_MIN = "50";
- }
- }
- var amdeptcd = ds_init_alloproomlist.getColumn(ds_init_alloproomlist.findRowExpr("oproomcd == '"+ SELECTED_OPROOMCD +"' && usescheflag == '1'"),"perfdeptcd");
- var amdeptnm = ds_init_alloproomlist.getColumn(ds_init_alloproomlist.findRowExpr("oproomcd == '"+ SELECTED_OPROOMCD +"' && usescheflag == '1'"),"deptnm");
- var pmdeptcd = ds_init_alloproomlist.getColumn(ds_init_alloproomlist.findRowExpr("oproomcd == '"+ SELECTED_OPROOMCD +"' && usescheflag == '2'"),"perfdeptcd");
- var pmdeptnm = ds_init_alloproomlist.getColumn(ds_init_alloproomlist.findRowExpr("oproomcd == '"+ SELECTED_OPROOMCD +"' && usescheflag == '2'"),"deptnm");
- var oproomnm = ds_init_alloproomlist.getColumn(ds_init_alloproomlist.findRowExpr("oproomcd == '"+ SELECTED_OPROOMCD +"'"),"oproomcd");
- var perfdeptcd = ds_send_reqdata.getColumn(0,"perfdeptcd");
- if (amdeptcd != pmdeptcd) {
- if (SELECTED_time + SELECTED_MIN >= "1300" && pmdeptcd != perfdeptcd && pmdeptcd !="-") {
- sysf_messageBox("오후시간은 " + pmdeptnm + "로 배정된 시간으로 수술시간 지정이 불가합니다.\n 수술 소요시간이 배정된 시간을 초과되는 경우에는 전달사항에 입력하시기 바랍니다. ", "I");
- fCnclOpScheTime();
- return;
- } else if (SELECTED_time + SELECTED_MIN < "1300" && amdeptcd != perfdeptcd && amdeptcd !="-") {
- sysf_messageBox("오전시간은 " + amdeptnm + "로 배정된 시간으로 수술시간 지정이 불가합니다.\n 수술 소요시간이 배정된 시간을 초과되는 경우에는 전달사항에 입력하시기 바랍니다. ", "I");
- fCnclOpScheTime();
- return;
- }
- }
- // 오전과 오후의 진료과가 다른 경우 자신의 해당하는 시간에만 정규 수술의뢰를 할 수 있도록 수정 : 2009. 07. 09 김영학 -- end
- if(g_choiceflag == "N"){ //선택이 안된 경우
- var bgcolor = grdobj.getCellProperty("body",col,"background");
- bgcolor = String(bgcolor).substr(0,7);
- if(bgcolor == "#0000ff"){
- grdobj.setCellProperty("body",col,"background","#ffffff");
- }else if(bgcolor == "#00ff00"){
- return;
- }else{
- grdobj.setCellProperty("body",col,"background","#0000ff");
- }
- g_choiceflag = "Y";
- g_startpos = col;
- }else if(g_choiceflag == "Y"){//선택이 된 경우
- g_endpos = col;
- grdobj.setCellProperty("body",col,"background","#0000ff");
- for(var i = g_startpos + 1; i < g_endpos; i++){
- if(grdobj.getCellProperty("body",i,"background") != "white"){
- break;
- }else{
- grdobj.setCellProperty("body",i,"background","#0000ff");
- }
- }
- g_choiceflag = "X";
- g_startpos = 0;
- g_endpos = 0;
- }
- }
- /****************************************************************************************
- * Function : fCnclOpScheTime
- * Description : 수술예약시간 삭제
- * Argument :
- * return type :
- * Creator :
- ****************************************************************************************/
- function fCnclOpScheTime(){
- fClearOpScheGrdInfo();
- var curcnt = ds_main_cond.getColumn(0,"curcnt");
- fSetOpRoomNM(curcnt);
- //var opregstno = model.getValue("/root/main/optimeinfo/optimelist[" + i + "]/opregstno"); //opregstno
- // model.removeNode("/root/main/optimeinfo/optimelist[opregstno='" + gOPREGSTNO_VAL + "']");
- ds_main_optimelist.deleteRow(ds_main_optimelist.findRow("opregstno",gOPREGSTNO_VAL));
- fSetOpScheTimeGrd();
- g_choiceflag = "N";
- g_startpos = 0;
- g_endpos = 0;
- }
- /****************************************************************************************
- * Function : fClearOpScheGrdInfo
- * Description : 수술예약시간 설정 정보 clear
- * Argument :
- * return type :
- * Creator :
- ****************************************************************************************/
- function fClearOpScheGrdInfo(){
- for(var i = 1; i <= 3; i++){
- var grdid = "grd_optimelist" + "" + i + "";
- var grdobj = components[grdid];
- grdobj.setCellProperty("Head",0,"text",""); //수술방명 설정
- //grdobj.valueMatrix(1, 0) = "";
- grdobj.setCellProperty("Head",1,"text",""); //수술방코드 설정
- //grdobj.valueMatrix(1, 1) = "";
- //model.removeNodeset(grdobj.nodeset);
- objects[grdobj.binddataset].clearData();
- }
- for(var i = 1; i <= 3; i++){
- var grdid = "grd_optimelist" + "" + i + "";
- var grdobj = components[grdid];
- objects[grdobj.binddataset].addRow();
- for(var j = 2; j < grdobj.getFormatColCount(); j++) {
- grdobj.setCellProperty("body",j,"background","white");
- }
- }
- }
- /****************************************************************************************
- * Function : fChkChngOpRoom
- * Description : 수술방변경 검사
- * Argument :
- * return type :
- * Creator :
- ****************************************************************************************/
- function fChkChngOpRoom(grdobj){
- var oproomcd = grdobj.getCellText(-1, 1);
- if(SELECTED_OPROOMCD != oproomcd && SELECTED_OPROOMCD != ""){
- if(gSTATUS_VAL != "i"){ //신규인 경우 변경 여부를 묻는다.
- if(gOPSTATCD > 30) {
- var rtnval = sysf_messageBox("예정된 수술방에서 수술이 진행되었습니다. 수술방은 변경 ", "E001");
- return false;
- }else{
- var rtnval = sysf_messageBox("수술방을 [" + grdobj.getCellText(-1, 0) + "]로 변경하고 ", "Q003");
- }
- }else{ //신규가 아닌 경우는 변경 여부 없이 바로 진행
- var rtnval = 6
- }
- if(rtnval == 7){ //아니오를 클릭한 경우
- return false;
- }else{
- fClearOpScheGrdInfo();
- var curcnt = ds_main_cond.getColumn(0,"curcnt");
- fSetOpRoomNM(curcnt);
- fSetOpScheTimeGrd();
- g_choiceflag = "N";
- g_startpos = 0;
- g_endpos = 0;
- ds_main_cond.setColumn(0,"roomflag", "N"); //방없음 N으로 해체
- return true;
- }
- }
- }
- /****************************************************************************************
- * Function : fClkBtnBefore
- * Description : 이전 버튼 클릭
- * Argument :
- * return type :
- * Creator :
- ****************************************************************************************/
- function fClkBtnBefore(){
- var totcnt = ds_main_cond.getColumn(0,"totcnt");
- var curcnt = ds_main_cond.getColumn(0,"curcnt");
- curcnt--;
- if(curcnt == 0){
- curcnt++;
- return;
- }
- fClearOpScheGrdInfo(); //그리드에 설정된 값을 모두 clear
- ds_main_cond.setColumn(0,"curcnt",curcnt);
- fSetOpRoomNM(curcnt);
- fSetOpScheTimeGrd();
- }
- /****************************************************************************************
- * Function : fClkBtnAfter
- * Description : 다음 버튼 클릭
- * Argument :
- * return type :
- * Creator :
- ****************************************************************************************/
- function fClkBtnAfter(){
- var totcnt = ds_main_cond.getColumn(0,"totcnt");
- var curcnt = ds_main_cond.getColumn(0,"curcnt");
- curcnt++;
- if(curcnt == 0){
- curcnt--;
- return;
- }
- fClearOpScheGrdInfo(); //그리드에 설정된 값을 모두 clear
- ds_main_cond.setColumn(0,"curcnt",curcnt);
- fSetOpRoomNM(curcnt);
- fSetOpScheTimeGrd();
- }
- /****************************************************************************************
- * Function : fChkSaveData
- * Description : 수술예약시간 무결성 확인
- * Argument :
- * return type :
- * Creator :
- ****************************************************************************************/
- function fChkSaveData(){
- var extra = ds_main_cond.getColumn(0,"extra");
- var roomflag = ds_main_cond.getColumn(0,"roomflag");
- var startpos = 0;
- var endpos = 0;
- fFindGridID(); //grid id찾기 global변수에 id 설정
- var icnt = 0;
- grdobj = components[SELECTED_GRDOBJ_ID];
- for(var col = 2; col < grdobj.getFormatColCount(); col++){
- var color = grdobj.getCellProperty("body",col,"background");
- color = String(color).substr(0,7);
- if(color == "#0000ff" && startpos == 0){ //파란색으로 시작되는 지점 구하기
- startpos = col;
- }
- if(startpos!=0){icnt++;} //시작지점이 0이 아닌때부터 count함
- if(color != "#0000ff" && startpos != 0){ //파란색으로 종료되는 지점 구하기
- endpos = col-1;
- break;
- }
- }
- if(startpos == 0){ //시작점이 없는 경우는 값이 없는 값으로 넘긴다
- var oproomcd = grdobj.getCellText(-1,1);
- var rtnparam = oproomcd + "▦▦"
- opener.frmf_setParameter("SPMMO08800_rtn_param", rtnparam);
- opener.frmf_setParameter("SPMMO08800_rtn_useyn", "Y");
- this.close();
- }
- var cellidx = Math.ceil((startpos+5)/6); // col index로 cell index구함
- var starthour = grdobj.getCellText(-1,cellidx);
- var startminutes = grdobj.getCellText(-1,startpos+15);
-
- if(utlf_isNull(startminutes)){ //값이 없는 부분은 그 전의 값에 따라 15분 또는 45분
- var bfminutes = grdobj.getCellText(-1,startpos+14);
- if(bfminutes == "00"){
- startminutes = "10";
- }else if(bfminutes == "20"){
- startminutes = "30";
- }else if(bfminutes == "40"){
- startminutes = "50";
- }
- }
-
- var opfromtmcd = starthour + "" + startminutes + "" + "00";
- var inchour = 0;
- for(var i = 1; i < icnt; i++){
- startminutes = eval(startminutes) + 10;
- if(startminutes == 60){
- inchour++;
- startminutes = 0;
- }
- }
- var endhour = eval(starthour) + eval(inchour);
- if(endhour < 10){endhour = "0".concat(endhour);}
- if(startminutes==0){startminutes = "00";}
- var opendtmcd = endhour + "" + startminutes + "" + "00";
- var oproomcd = grdobj.getCellText(-1,1);
- var rtnparam = oproomcd + "▦" + opfromtmcd + "▦" + opendtmcd;
- opener.frmf_setParameter("SPMMO08800_rtn_param", rtnparam);
- opener.frmf_setParameter("SPMMO08800_rtn_useyn", "Y");
- this.close();
- }
- ]]></Script>
|