incident.js 93 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873
  1. let locationBtn = null;
  2. let createBtn = null;
  3. let cancleBtn = null;
  4. let missBtn = null;
  5. let incdCfrmBtn = null;
  6. let incdInfoCfrmBtn = null;
  7. let refreshBtn = null;
  8. let incdEndBtn = null;
  9. let prcdIncdTable = null;
  10. let newIncdTable = null;
  11. let endIncdTable = null;
  12. let commonUri = '/api/manage/incident';
  13. let autoIncdTable = null;
  14. let prcdLinkBtn = null;
  15. let searchBtn = null;
  16. let closeBtn = null;
  17. let vmsListBtn = null;
  18. const pageMsg = '돌발';
  19. //신규 돌발 등록 관련
  20. let newIncdOccrId = null;
  21. let newRgstDt = null;
  22. let newIncdOrgnCd = null;
  23. let newOcrrLctnNm = null;
  24. let newIncdExpl = null;
  25. let newCmtrGradCd = null;
  26. let newIfmrNm = null;
  27. let newIncdCnfmMthdCd = null;
  28. let newIncdSernCd = null;
  29. let newIncdTypeCd = null;
  30. let newIncdCnfmDt = null;
  31. let newIncdTypeClsfCd = null;
  32. let newIncdTitl = null;
  33. let newIncdStrtDt = null;
  34. let newIncdEndPrarDt = null;
  35. let newIncdData = [];
  36. let autoIncdData = [];
  37. //돌발 진행상황 처리 관련
  38. let prcdIncdOccrId = null;
  39. let prcdRgstDt = null;
  40. let prcdIncdOrgnCd = null;
  41. let prcdOcrrLctnNm = null;
  42. let prcdIncdExpl = null;
  43. let prcdCmtrGradCd = null;
  44. let prcdIfmrNm = null;
  45. let prcdIncdCnfmMthdCd = null;
  46. let prcdIncdSernCd = null;
  47. let prcdIncdTypeCd = null;
  48. let prcdIncdTypeClsfCd = null;
  49. let prcdIncdTitl = null;
  50. let prcdIncdStrtDt = null;
  51. let prcdIncdEndPrarDt = null;
  52. let prcdLinkId = null;
  53. let prcdXcrdn = null;
  54. let prcdYcrdn = null;
  55. let prcdVmsDsplYn = null;
  56. let prcdStrtLctnNm = null;
  57. let prcdEndLctnNm = null;
  58. let prcdVmsIncdTypeCd = null;
  59. let prcdVmsIncdDetlTypeCd = null;
  60. let prcdIncdOcrrLane0 = null;
  61. let prcdIncdOcrrLane1 = null;
  62. let prcdIncdOcrrLane2 = null;
  63. let prcdIncdOcrrLane3 = null;
  64. let prcdIncdOcrrLane4 = null;
  65. let prcdIncdOcrrLane5 = null;
  66. let prcdIncdClsrLane0 = null;
  67. let prcdIncdClsrLane1 = null;
  68. let prcdIncdClsrLane2 = null;
  69. let prcdIncdClsrLane3 = null;
  70. let prcdIncdClsrLane4 = null;
  71. let prcdIncdClsrLane5 = null;
  72. let prcdSmltVhclUnum = null;
  73. let prcdMdltVhclUnum = null;
  74. let prcdInjrPnum = null;
  75. let prcdFtltPnum = null;
  76. let prcdDelyLngt = null;
  77. let prcdIncdLngt = null;
  78. let prcdWthrCd = null;
  79. let prcdRespLvlCd = null;
  80. let prcdTrubVhclYn = null;
  81. let prcdFaltYn = null;
  82. let prcdFrwtYn = null;
  83. let procData = [];
  84. let incdOcrrLaneArr = [];
  85. let incdClsrLaneArr = [];
  86. //돌발 종료 처리 관련
  87. let endIncdOccrId = null;
  88. let endRgstDt = null;
  89. let endIncdOrgnCd = null;
  90. let endOcrrLctnNm = null;
  91. let endIncdExpl = null;
  92. let endCmtrGradCd = null;
  93. let endIfmrNm = null;
  94. let endIncdCnfmMthdCd = null;
  95. let endIncdSernCd = null;
  96. let endIncdTypeCd = null;
  97. let endIncdTypeClsfCd = null;
  98. let endIncdTitl = null;
  99. let endIncdStrtDt = null;
  100. let endIncdEndPrarDt = null;
  101. let endLinkId = null;
  102. let endXcrdn = null;
  103. let endYcrdn = null;
  104. let endRespLvlCd = null;
  105. let endIncdEndCnfmMthdCd = null;
  106. let endIncdEndDt = null;
  107. let endRecrCont = null;
  108. let endMblzEqpmCont = null;
  109. let endMblzPnum = null;
  110. let endRecrPerd = null;
  111. let endData = [];
  112. //코드 관련
  113. let incdOrgnCdData = [];
  114. let cmtrGradCdData = [];
  115. let incdCnfmMthdCdData = [];
  116. let incdSernCdData = [];
  117. let incdTypeCdData = [];
  118. let incdTypeClsfCdData = [];
  119. let respLvlCdData = [];
  120. let wthrCdData = [];
  121. let incdEndCnfmMthdCdData = [];
  122. let trvlLmntTypeCdData = [];
  123. let vmsCdData = [];
  124. let vmsClsfCdData = [];
  125. //이력조회 관련
  126. let historyCheck = null;
  127. let historyStrtDt = null;
  128. let historyStrtTime = null;
  129. let historyEndDt = null;
  130. let historyEndTime = null;
  131. let historySearchBtn = null;
  132. //pop-up
  133. const listOption = 'width = 800, height = 900, top = 40, left = 500, resizable=yes, scrollbars=no';
  134. const vmsListOption = 'width = 600, height = 600, top = 200, left = 660, resizable=yes, scrollbars=no';
  135. const mapOption = 'width = 1700, height = 900, top = 40, left = 100, resizable=yes, scrollbars=no';
  136. const _multiSelct = false;
  137. const _linkLevel = 1;
  138. const getParam = {
  139. MultiSelect : _multiSelct,
  140. LinkLevel : _linkLevel,
  141. LinkInfo : [],
  142. };
  143. //데이트 컬럼
  144. const dateColumns = ['rgst_dt','incd_end_prar_dt', 'incd_cnfm_dt', 'incd_strt_dt', 'incd_end_dt', 'detc_dt'];
  145. incdOrgnCdData = getCodeData( incdOrgnCdData, '/ist');
  146. cmtrGradCdData = getCodeData( cmtrGradCdData, '/ltcu');
  147. incdCnfmMthdCdData = getCodeData( incdCnfmMthdCdData, '/icm');
  148. incdSernCdData = getCodeData( incdSernCdData, '/srlu');
  149. incdTypeClsfCdData = getCodeData( incdTypeClsfCdData, '/idtu');
  150. if(incdTypeClsfCdData.length > 0) incdTypeCdData = getCodeData(incdTypeCdData, '/idtu/' + incdTypeClsfCdData[0].code);
  151. respLvlCdData = getCodeData(respLvlCdData, '/rsl');
  152. wthrCdData = getCodeData(wthrCdData, '/wetu');
  153. incdEndCnfmMthdCdData = getCodeData(incdEndCnfmMthdCdData, '/icm');
  154. trvlLmntTypeCdData = getCodeData(trvlLmntTypeCdData, '/prtu');
  155. vmsClsfCdData = getCodeData( vmsClsfCdData, '/vit');
  156. //신규 돌발 등록 input
  157. const newInputArr = [
  158. //돌발 ID
  159. newIncdOccrId = {
  160. box : null,
  161. type : 'text',
  162. column : 'incd_ocrr_id',
  163. readOnly : true,
  164. width : 200,
  165. },
  166. //등록일시
  167. newRgstDt = {
  168. box : null,
  169. type : 'datetime',
  170. column : 'rgst_dt',
  171. displayFormat : 'yyyy-MM-dd HH:mm:ss',
  172. readOnly : true,
  173. width : 200,
  174. },
  175. //돌발구분코드
  176. newIncdOrgnCd = {
  177. box : null,
  178. type : 'select',
  179. column : 'incd_orgn_cd',
  180. width : 180,
  181. items : incdOrgnCdData,
  182. max : 100,
  183. },
  184. //발생위치설명
  185. newOcrrLctnNm = {
  186. box : null,
  187. type : 'text',
  188. column : 'ocrr_lctn_nm',
  189. width : 500,
  190. must : '발생위치설명',
  191. max : 100,
  192. },
  193. //돌발상황설명
  194. newIncdExpl = {
  195. box : null,
  196. type : 'text',
  197. column : 'incd_expl',
  198. width : 500,
  199. must : '돌발상황설명',
  200. max : 600,
  201. },
  202. //소통상황코드
  203. newCmtrGradCd = {
  204. box : null,
  205. type : 'select',
  206. column : 'cmtr_grad_cd',
  207. items : cmtrGradCdData,
  208. width : 300,
  209. },
  210. //제보자명
  211. newIfmrNm = {
  212. box : null,
  213. type : 'text',
  214. column : 'ifmr_nm',
  215. width : 250,
  216. max : 20,
  217. },
  218. //확인방법 코드
  219. newIncdCnfmMthdCd = {
  220. box : null,
  221. type : 'select',
  222. column : 'incd_cnfm_mthd_cd',
  223. items : incdCnfmMthdCdData,
  224. width : 250,
  225. },
  226. //심각도 코드
  227. newIncdSernCd = {
  228. box : null,
  229. column : 'incd_sern_cd',
  230. items : incdSernCdData,
  231. type : 'select',
  232. width : 250,
  233. },
  234. //돌발 세부 유형 코드
  235. newIncdTypeCd = {
  236. box : null,
  237. column : 'incd_type_cd',
  238. items : incdTypeCdData,
  239. type : 'select',
  240. width : 180,
  241. },
  242. //돌발확인시각
  243. newIncdCnfmDt = {
  244. box : null,
  245. type : 'datetime',
  246. column : 'incd_cnfm_dt',
  247. width : 170,
  248. displayFormat : 'yyyy-MM-dd HH:mm:ss',
  249. value : new Date()
  250. },
  251. //돌발 유형 코드
  252. newIncdTypeClsfCd = {
  253. box : null,
  254. column : 'incd_type_clsf_cd',
  255. items : incdTypeClsfCdData,
  256. type : 'select',
  257. width : 180,
  258. method : function(){
  259. incdTypeCdData = setDetailCd( incdTypeCdData, newIncdTypeCd, newIncdTypeClsfCd, 'idtu');
  260. }
  261. },
  262. //돌발제목
  263. newIncdTitl = {
  264. box : null,
  265. column : 'incd_titl',
  266. type : 'text',
  267. width : 500,
  268. max : 400,
  269. must : '돌발제목',
  270. },
  271. //돌발시작시각
  272. newIncdStrtDt = {
  273. box : null,
  274. type : 'datetime',
  275. column : 'incd_strt_dt',
  276. width : 170,
  277. displayFormat : 'yyyy-MM-dd HH:mm:ss',
  278. value : new Date()
  279. },
  280. //종료예정시각
  281. newIncdEndPrarDt = {
  282. box : null,
  283. type : 'datetime',
  284. column : 'incd_end_prar_dt',
  285. width : 170,
  286. displayFormat : 'yyyy-MM-dd HH:mm:ss',
  287. value : new Date(new Date().setDate(new Date().getDate()+1)),
  288. },
  289. ]
  290. //진행상황처리
  291. const prcdInputArr = [
  292. //돌발 ID
  293. prcdIncdOccrId = {
  294. box : null,
  295. type : 'text',
  296. column : 'incd_ocrr_id',
  297. readOnly : true,
  298. width : 200,
  299. },
  300. //등록일시
  301. prcdRgstDt = {
  302. box : null,
  303. type : 'datetime',
  304. column : 'rgst_dt',
  305. readOnly : true,
  306. displayFormat : 'yyyy-MM-dd HH:mm:ss',
  307. width : 200,
  308. },
  309. //돌발구분코드
  310. prcdIncdOrgnCd = {
  311. box : null,
  312. type : 'select',
  313. column : 'incd_orgn_cd',
  314. width : 180,
  315. items : incdOrgnCdData,
  316. must : '돌발구분',
  317. },
  318. //발생위치설명
  319. prcdOcrrLctnNm = {
  320. box : null,
  321. type : 'text',
  322. column : 'ocrr_lctn_nm',
  323. width : 500,
  324. must : '발생위치설명',
  325. max : 100,
  326. },
  327. //돌발상황설명
  328. prcdIncdExpl = {
  329. box : null,
  330. type : 'text',
  331. column : 'incd_expl',
  332. width : 600,
  333. must : '돌발상황설명',
  334. max : 600,
  335. },
  336. //소통상황코드
  337. prcdCmtrGradCd = {
  338. box : null,
  339. type : 'select',
  340. column : 'cmtr_grad_cd',
  341. items : cmtrGradCdData,
  342. width : 180,
  343. },
  344. //제보자명
  345. prcdIfmrNm = {
  346. box : null,
  347. type : 'text',
  348. column : 'ifmr_nm',
  349. width : 250,
  350. max : 20,
  351. },
  352. //확인방법 코드
  353. prcdIncdCnfmMthdCd = {
  354. box : null,
  355. type : 'select',
  356. column : 'incd_cnfm_mthd_cd',
  357. items : incdCnfmMthdCdData,
  358. width : 250,
  359. must : '확인방법',
  360. },
  361. //심각도 코드
  362. prcdIncdSernCd = {
  363. box : null,
  364. column : 'incd_sern_cd',
  365. items : incdSernCdData,
  366. type : 'select',
  367. width : 250,
  368. must : '심각도',
  369. },
  370. //돌발 세부 유형 코드
  371. prcdIncdTypeCd = {
  372. box : null,
  373. column : 'incd_type_cd',
  374. items : incdTypeCdData,
  375. type : 'select',
  376. width : 200,
  377. must : '돌발세부유형',
  378. },
  379. //돌발 유형 코드
  380. prcdIncdTypeClsfCd = {
  381. box : null,
  382. column : 'incd_type_clsf_cd',
  383. items : incdTypeClsfCdData,
  384. type : 'select',
  385. width : 200,
  386. must : '돌발유형',
  387. method : function(){
  388. incdTypeCdData = setDetailCd( incdTypeCdData, prcdIncdTypeCd, prcdIncdTypeClsfCd, 'idtu');
  389. }
  390. },
  391. //돌발제목
  392. prcdIncdTitl = {
  393. box : null,
  394. column : 'incd_titl',
  395. type : 'text',
  396. width : 600,
  397. must : '돌발제목',
  398. max : 400,
  399. },
  400. //돌발시작시각
  401. prcdIncdStrtDt = {
  402. box : null,
  403. type : 'datetime',
  404. column : 'incd_strt_dt',
  405. width : 170,
  406. displayFormat : 'yyyy-MM-dd',
  407. must : '돌발시작시각',
  408. },
  409. //종료예정시각
  410. prcdIncdEndPrarDt = {
  411. box : null,
  412. type : 'datetime',
  413. column : 'incd_end_prar_dt',
  414. width : 170,
  415. displayFormat : 'yyyy-MM-dd',
  416. must : '종료예정시각',
  417. },
  418. //링크ID
  419. prcdLinkId = {
  420. box : null,
  421. type : 'text',
  422. column : 'link_id',
  423. width : 280,
  424. readOnly : true,
  425. must : '발생구간(링크)',
  426. },
  427. //x좌표
  428. prcdXcrdn = {
  429. box : null,
  430. type : 'text',
  431. column : 'x_crdn',
  432. width : 170,
  433. value : '0.000000',
  434. must : '발생좌표(X)',
  435. max : 11,
  436. method : function(text){
  437. crdnChanges(text, 3);
  438. },
  439. },
  440. //y좌표
  441. prcdYcrdn = {
  442. box : null,
  443. type : 'text',
  444. column : 'y_crdn',
  445. width : 170,
  446. value : '0.000000',
  447. must : '발생좌표(Y)',
  448. max : 10,
  449. method : function(text){
  450. crdnChanges(text, 2);
  451. },
  452. },
  453. //vms 표출여부
  454. prcdVmsDsplYn = {
  455. box : null,
  456. type : 'check',
  457. value : false,
  458. column : 'vms_dspl_yn',
  459. text : 'VMS 표출',
  460. width : 170,
  461. method : function(){
  462. const checkYn = getValue(prcdVmsDsplYn.box)
  463. vmsListBtn.option('disabled', !checkYn);
  464. prcdStrtLctnNm.box.option('disabled', !checkYn);
  465. prcdEndLctnNm.box.option('disabled', !checkYn);
  466. prcdVmsIncdTypeCd.box.option('disabled', !checkYn);
  467. prcdVmsIncdDetlTypeCd.box.option('disabled', !checkYn);
  468. }
  469. },
  470. //vms 시점명
  471. prcdStrtLctnNm = {
  472. box : null,
  473. type : 'text',
  474. column : 'strt_lctn_nm',
  475. width : 120,
  476. placeholder : '시점명',
  477. max : 10,
  478. },
  479. //vms 종점명
  480. prcdEndLctnNm = {
  481. box : null,
  482. type : 'text',
  483. column : 'end_lctn_nm',
  484. width : 120,
  485. placeholder : '종점명',
  486. max : 10,
  487. },
  488. //vms 돌발유형
  489. prcdVmsIncdTypeCd = {
  490. box : null,
  491. type : 'select',
  492. items : vmsClsfCdData,
  493. column : 'vms_incd_type_cd',
  494. width : 150,
  495. method : function(){
  496. vmsCdData = setDetailCd( vmsCdData, prcdVmsIncdDetlTypeCd, prcdVmsIncdTypeCd, 'vit');
  497. }
  498. },
  499. //vms 돌발 세부유형
  500. prcdVmsIncdDetlTypeCd = {
  501. box : null,
  502. type : 'select',
  503. items : [],
  504. column : 'vms_incd_detl_type_cd',
  505. width : 150,
  506. },
  507. //발생차로 갓길
  508. prcdIncdOcrrLane0 = {
  509. box : null,
  510. type : 'check',
  511. column : 'incd_ocrr_lane_0',
  512. value : false,
  513. width : 170,
  514. text : '갓길'
  515. },
  516. //발생차로 1
  517. prcdIncdOcrrLane1 = {
  518. box : null,
  519. type : 'check',
  520. column : 'incd_ocrr_lane_1',
  521. value : false,
  522. width : 170,
  523. text : '1'
  524. },
  525. //발생차로 2
  526. prcdIncdOcrrLane2 = {
  527. box : null,
  528. type : 'check',
  529. column : 'incd_ocrr_lane_2',
  530. value : false,
  531. width : 170,
  532. text : '2'
  533. },
  534. //발생차로 3
  535. prcdIncdOcrrLane3 = {
  536. box : null,
  537. type : 'check',
  538. column : 'incd_ocrr_lane_3',
  539. value : false,
  540. width : 170,
  541. text : '3'
  542. },
  543. //발생차로 4
  544. prcdIncdOcrrLane4 = {
  545. box : null,
  546. type : 'check',
  547. column : 'incd_ocrr_lane_4',
  548. value : false,
  549. width : 4,
  550. text : '4'
  551. },
  552. //발생차로 5
  553. prcdIncdOcrrLane5 = {
  554. box : null,
  555. type : 'check',
  556. column : 'incd_ocrr_lane_5',
  557. value : false,
  558. width : 5,
  559. text : '5'
  560. },
  561. //폐쇄차로 갓길
  562. prcdIncdClsrLane0 = {
  563. box : null,
  564. type : 'check',
  565. column : 'incd_clsr_lane_0',
  566. value : false,
  567. text : '갓길'
  568. },
  569. //폐쇄차로 1
  570. prcdIncdClsrLane1 = {
  571. box : null,
  572. type : 'check',
  573. column : 'incd_clsr_lane_1',
  574. value : false,
  575. text : '1'
  576. },
  577. //폐쇄차로 2
  578. prcdIncdClsrLane2 = {
  579. box : null,
  580. type : 'check',
  581. column : 'incd_clsr_lane_2',
  582. value : false,
  583. text : '2'
  584. },
  585. //폐쇄차로 3
  586. prcdIncdClsrLane3 = {
  587. box : null,
  588. type : 'check',
  589. column : 'incd_clsr_lane_3',
  590. value : false,
  591. text : '3'
  592. },
  593. //폐쇄차로 4
  594. prcdIncdClsrLane4 = {
  595. box : null,
  596. type : 'check',
  597. column : 'incd_clsr_lane_4',
  598. value : false,
  599. text : '4'
  600. },
  601. //폐쇄차로 5
  602. prcdIncdClsrLane5 = {
  603. box : null,
  604. type : 'check',
  605. column : 'incd_clsr_lane_5',
  606. value : false,
  607. text : '5'
  608. },
  609. //소형차량대수
  610. prcdSmltVhclUnum = {
  611. box : null,
  612. type : 'number',
  613. column : 'smlt_vhcl_unum',
  614. value : '0',
  615. width : 80,
  616. },
  617. //중대형차량대수
  618. prcdMdltVhclUnum = {
  619. box : null,
  620. type : 'number',
  621. column : 'mdlt_vhcl_unum',
  622. value : '0',
  623. width : 80,
  624. },
  625. //부상자수
  626. prcdInjrPnum = {
  627. box : null,
  628. type : 'number',
  629. column : 'injr_pnum',
  630. value : '0',
  631. width : 80,
  632. },
  633. //사망자수
  634. prcdFtltPnum = {
  635. box : null,
  636. type : 'number',
  637. column : 'ftlt_pnum',
  638. value : '0',
  639. width : 80,
  640. },
  641. //지체길이
  642. prcdDelyLngt = {
  643. box : null,
  644. type : 'number',
  645. column : 'dely_lngt',
  646. value : '0',
  647. width : 90,
  648. },
  649. //발생길이
  650. prcdIncdLngt = {
  651. box : null,
  652. type : 'number',
  653. column : 'incd_lngt',
  654. value : '0',
  655. width : 90,
  656. },
  657. //기상조건 코드
  658. prcdWthrCd = {
  659. box : null,
  660. type : 'select',
  661. column : 'wthr_cd',
  662. items : wthrCdData,
  663. width : 110,
  664. },
  665. //대응수준 코드
  666. prcdRespLvlCd = {
  667. box : null,
  668. type : 'select',
  669. column : 'resp_lvl_cd',
  670. items : respLvlCdData,
  671. width : 110,
  672. },
  673. //고장차량여부
  674. prcdTrubVhclYn = {
  675. box : null,
  676. type : 'check',
  677. column : 'trub_vhcl_yn',
  678. value : false,
  679. width : 100,
  680. text : '고장차량'
  681. },
  682. //낙하물여부
  683. prcdFaltYn = {
  684. box : null,
  685. type : 'check',
  686. column : 'falt_yn',
  687. value : false,
  688. width : 100,
  689. text : '낙하물'
  690. },
  691. //화재위험물여부
  692. prcdFrwtYn = {
  693. box : null,
  694. type : 'check',
  695. column : 'frwt_yn',
  696. value : false,
  697. width : 100,
  698. text : '화재위험물'
  699. },
  700. ]
  701. //돌빌 종료 처리 input
  702. const endInputArr = [
  703. //돌발 ID
  704. endIncdOccrId = {
  705. box : null,
  706. type : 'text',
  707. column : 'incd_ocrr_id',
  708. readOnly : true,
  709. width : 200,
  710. },
  711. //등록일시
  712. endRgstDt = {
  713. box : null,
  714. type : 'datetime',
  715. column : 'rgst_dt',
  716. displayFormat : 'yyyy-MM-dd HH:mm:ss',
  717. readOnly : true,
  718. width : 200,
  719. },
  720. //돌발구분코드
  721. endIncdOrgnCd = {
  722. box : null,
  723. type : 'select',
  724. column : 'incd_orgn_cd',
  725. readOnly : true,
  726. width : 180,
  727. items : incdOrgnCdData,
  728. },
  729. //발생위치설명
  730. endOcrrLctnNm = {
  731. box : null,
  732. type : 'text',
  733. readOnly : true,
  734. column : 'ocrr_lctn_nm',
  735. width : 500,
  736. },
  737. //돌발상황설명
  738. endIncdExpl = {
  739. box : null,
  740. type : 'text',
  741. readOnly : true,
  742. column : 'incd_expl',
  743. width : 600,
  744. },
  745. //소통상황코드
  746. endCmtrGradCd = {
  747. box : null,
  748. type : 'select',
  749. column : 'cmtr_grad_cd',
  750. readOnly : true,
  751. items : cmtrGradCdData,
  752. width : 180,
  753. },
  754. //대응수준코드
  755. endRespLvlCd = {
  756. box : null,
  757. type : 'select',
  758. column : 'resp_lvl_cd',
  759. readOnly : true,
  760. items : respLvlCdData,
  761. width : 180,
  762. },
  763. //링크ID
  764. endLinkId = {
  765. box : null,
  766. type : 'text',
  767. column : 'link_id',
  768. readOnly : true,
  769. width : 280,
  770. readOnly : true,
  771. },
  772. //x좌표
  773. endXcrdn = {
  774. box : null,
  775. type : 'text',
  776. column : 'x_crdn',
  777. readOnly : true,
  778. width : 170,
  779. value : '0.000000',
  780. },
  781. //y좌표
  782. endYcrdn = {
  783. box : null,
  784. type : 'text',
  785. column : 'y_crdn',
  786. readOnly : true,
  787. width : 170,
  788. value : '0.000000',
  789. },
  790. //제보자명
  791. endIfmrNm = {
  792. box : null,
  793. type : 'text',
  794. column : 'ifmr_nm',
  795. readOnly : true,
  796. width : 250,
  797. },
  798. //확인방법 코드
  799. endIncdCnfmMthdCd = {
  800. box : null,
  801. type : 'select',
  802. column : 'incd_cnfm_mthd_cd',
  803. readOnly : true,
  804. items : incdCnfmMthdCdData,
  805. width : 250,
  806. },
  807. //심각도 코드
  808. endIncdSernCd = {
  809. box : null,
  810. column : 'incd_sern_cd',
  811. readOnly : true,
  812. items : incdSernCdData,
  813. type : 'select',
  814. width : 250,
  815. },
  816. //돌발 세부 유형 코드
  817. endIncdTypeCd = {
  818. box : null,
  819. column : 'incd_type_cd',
  820. readOnly : true,
  821. items : incdTypeCdData,
  822. type : 'select',
  823. width : 200,
  824. },
  825. //돌발 유형 코드
  826. endIncdTypeClsfCd = {
  827. box : null,
  828. column : 'incd_type_clsf_cd',
  829. readOnly : true,
  830. items : incdTypeClsfCdData,
  831. type : 'select',
  832. width : 200,
  833. method : function(){
  834. incdTypeCdData = setDetailCd( incdTypeCdData, endIncdTypeCd, endIncdTypeClsfCd, 'idtu');
  835. }
  836. },
  837. //돌발제목
  838. endIncdTitl = {
  839. box : null,
  840. column : 'incd_titl',
  841. readOnly : true,
  842. type : 'text',
  843. width : 500,
  844. },
  845. //돌발시작시각
  846. endIncdStrtDt = {
  847. box : null,
  848. type : 'datetime',
  849. column : 'incd_strt_dt',
  850. width : 170,
  851. readOnly : true,
  852. displayFormat : 'yyyy-MM-dd',
  853. },
  854. //종료예정시각
  855. endIncdEndPrarDt = {
  856. box : null,
  857. type : 'datetime',
  858. column : 'incd_end_prar_dt',
  859. width : 170,
  860. readOnly : true,
  861. displayFormat : 'yyyy-MM-dd',
  862. },
  863. //돌발 종료 확인 방법 코드
  864. endIncdEndCnfmMthdCd = {
  865. box : null,
  866. column : 'incd_end_cnfm_mthd_cd',
  867. items : incdEndCnfmMthdCdData,
  868. type : 'select',
  869. must : '돌발종료확인방법',
  870. width : 250,
  871. },
  872. //돌발종료시각
  873. endIncdEndDt = {
  874. box : null,
  875. type : 'datetime',
  876. column : 'incd_end_dt',
  877. width : 250,
  878. must : '돌발종료시각',
  879. displayFormat : 'yyyy-MM-dd HH:mm:ss',
  880. },
  881. //출동장비내용
  882. endMblzEqpmCont = {
  883. box : null,
  884. column : 'mblz_eqpm_cont',
  885. type : 'text',
  886. width : 500,
  887. },
  888. //복구 내용
  889. endRecrCont = {
  890. box : null,
  891. column : 'recr_cont',
  892. type : 'text',
  893. width : 500,
  894. },
  895. //출동 인원수
  896. endMblzPnum = {
  897. box : null,
  898. type : 'number',
  899. column : 'mblz_pnum',
  900. width : 80,
  901. value : '0'
  902. },
  903. //복구기간
  904. endRecrPerd = {
  905. box : null,
  906. type : 'number',
  907. column : 'recr_perd',
  908. width : 80,
  909. value : '0'
  910. },
  911. ]
  912. //버튼 배열
  913. const btnArr = [
  914. locationBtn = {
  915. box : null,
  916. text : '위치보기',
  917. class : 'location-btn',
  918. icon : 'globe',
  919. new : {
  920. visible : true,
  921. disabled : true,
  922. click : {visible:true, disabled:true},
  923. cancle : {visible:true, disabled:true},
  924. },
  925. prcd : {
  926. visible : true,
  927. disabled : true,
  928. },
  929. end : {
  930. visible : true,
  931. disabled : true,
  932. },
  933. },
  934. createBtn = {
  935. box : null,
  936. text : '신규등록',
  937. icon : 'plus',
  938. new : {
  939. visible : true,
  940. disabled : false,
  941. click : {visible:false, disabled:false},
  942. cancle : {visible:true, disabled:false},
  943. },
  944. prcd : {
  945. visible : false,
  946. disabled : false,
  947. },
  948. end : {
  949. visible : false,
  950. disabled : false,
  951. },
  952. class : 'create-btn',
  953. method : function(){
  954. //id 조회 필요
  955. let newId =[];
  956. getData('/api/manage/incident/new-id', newId);
  957. setValue(newIncdOccrId.box, newId[0].incd_ocrr_id)
  958. setValue(newRgstDt.box, new Date());
  959. btnArr.map((item)=>{
  960. if(item.new.click){
  961. item.box.option('disabled', item.new.click.disabled);
  962. item.box.option('visible', item.new.click.visible);
  963. }
  964. })
  965. eventOn( newInputArr );
  966. }
  967. },
  968. cancleBtn = {
  969. box : null,
  970. text : '등록취소',
  971. icon : 'undo',
  972. new : {
  973. visible : false,
  974. disabled : false,
  975. click : {visible:true, disabled:false},
  976. cancle : {visible:false, disabled:false},
  977. },
  978. prcd : {
  979. visible : false,
  980. disabled : false,
  981. },
  982. end : {
  983. visible : false,
  984. disabled : false,
  985. },
  986. class : 'cancle-btn',
  987. method : function(){
  988. eventOff(newInputArr);
  989. btnArr.map((item)=>{
  990. if(item.new.cancle){
  991. item.box.option('visible', item.new.cancle.visible);
  992. item.box.option('disabled', item.new.cancle.disabled);
  993. }
  994. })
  995. }
  996. },
  997. missBtn = {
  998. box : null,
  999. text : '오보판정',
  1000. icon : 'edit',
  1001. class : 'miss-btn',
  1002. new : {
  1003. visible : true,
  1004. disabled : true,
  1005. click : {visible:true, disabled:true},
  1006. cancle : {visible:true, disabled:true},
  1007. },
  1008. prcd : {
  1009. visible : true,
  1010. disabled : true,
  1011. click : {visible:true, disabled:false},
  1012. cancle : {visible:true, disabled:true},
  1013. },
  1014. end : {
  1015. visible : false,
  1016. disabled : true,
  1017. },
  1018. },
  1019. incdCfrmBtn = {
  1020. box : null,
  1021. text : '돌발확정',
  1022. icon : 'save',
  1023. new : {
  1024. visible : true,
  1025. disabled : true,
  1026. click : {visible:true, disabled:false},
  1027. cancle : {visible:true, disabled:true},
  1028. },
  1029. prcd : {
  1030. visible : false,
  1031. disabled : true,
  1032. },
  1033. end : {
  1034. visible : false,
  1035. disabled : true,
  1036. },
  1037. class : 'incd-cfrm-btn',
  1038. method : function(){
  1039. let updateData = {};
  1040. for(idx in newInputArr){
  1041. if(newInputArr[idx].must && nullChecker(getValue(newInputArr[idx].box)).trim() === ""){
  1042. alertWarning('입력되지 않은 정보가 있습니다. [' + newInputArr[idx].must + ']', null, newInputArr[idx].box);
  1043. return false;
  1044. }
  1045. updateData[newInputArr[idx].column] = getValue(newInputArr[idx].box);
  1046. }
  1047. updateData['incd_prgr_step_cd'] = 'ISS2';
  1048. updateData['utis_cnct_yn'] = 'N';
  1049. sendDateFormat(updateData);
  1050. let result = postInsertUpdate(commonUri + '/' + getValue(newIncdOccrId.box), updateData);
  1051. if (result > 0) {
  1052. insResultMsg('신규' + pageMsg);
  1053. refreshIncd();
  1054. eventOff(newInputArr);
  1055. }
  1056. }
  1057. },
  1058. incdInfoCfrmBtn = {
  1059. box : null,
  1060. text : '정보등록',
  1061. icon : 'save',
  1062. new : {
  1063. visible : false,
  1064. disabled : false,
  1065. },
  1066. prcd : {
  1067. visible : true,
  1068. disabled : true,
  1069. },
  1070. end : {
  1071. visible : false,
  1072. disabled : false,
  1073. },
  1074. class : 'incd-info-cfrm-btn',
  1075. method : function(){
  1076. const vmsData = [
  1077. 'cmtr_grad_cd',
  1078. 'end_lctn_nm',
  1079. 'incd_end_prar_dt',
  1080. 'incd_ocrr_id',
  1081. 'incd_prgr_step_cd',
  1082. 'incd_strt_dt',
  1083. 'link_id',
  1084. 'ocrr_lctn_nm',
  1085. 'strt_lctn_nm',
  1086. 'vms_incd_detl_type_cd',
  1087. 'vms_incd_type_cd',
  1088. 'vms_dspl_yn',
  1089. ];
  1090. let error = false;
  1091. let updateCheck = [ 'falt_yn', 'frwt_yn', 'trub_vhcl_yn', 'vms_dspl_yn' ];
  1092. let vmsUpdateData = {};
  1093. let updateData = {...getInstance(prcdIncdTable).getSelectedRowsData()[0]};
  1094. for(idx in prcdInputArr){
  1095. const input = prcdInputArr[idx];
  1096. const value = getValue(input.box);
  1097. switch (true) {
  1098. case input.must && nullChecker(value).trim() === "":
  1099. alertWarning('입력되지 않은 정보가 있습니다. [' + input.must + ']', null, input.box);
  1100. error = true;
  1101. break;
  1102. case input.type === 'check' :
  1103. if (updateCheck.includes(input.column))updateData[input.column] = getCheckData(input.box);
  1104. if (vmsData.includes(input.column))vmsUpdateData[input.column] = getCheckData(input.box);
  1105. break;
  1106. case input.type !== 'check':
  1107. updateData[input.column] = value;
  1108. if (vmsData.includes(input.column))vmsUpdateData[input.column] = value;
  1109. break;
  1110. default:
  1111. break;
  1112. }
  1113. }
  1114. if (error) return false;
  1115. updateData['incd_ocrr_lane'] = getLaneVal(incdOcrrLaneArr);
  1116. updateData['incd_clsr_lane'] = getLaneVal(incdClsrLaneArr);
  1117. vmsUpdateData['incd_clsr_lane'] = updateData['incd_clsr_lane'];
  1118. if (isNaN(updateData.link_id)){
  1119. updateData.link_id = Number(updateData.link_id.substring(updateData.link_id.indexOf('[')+1,updateData.link_id.indexOf(']')));
  1120. vmsUpdateData.link_id = updateData.link_id
  1121. };
  1122. updateData = sendDateFormat(updateData);
  1123. vmsUpdateData = sendDateFormat(vmsUpdateData);
  1124. let resultCnt = 0;
  1125. if (updateData.vms_dspl_yn){
  1126. resultCnt = postInsertUpdate(commonUri + '/vms/incd/'+ vmsUpdateData.incd_ocrr_id, vmsUpdateData);
  1127. }
  1128. resultCnt += postInsertUpdate(commonUri + '/' + updateData.incd_ocrr_id, updateData);
  1129. if (resultCnt > 0) {
  1130. insResultMsg(pageMsg + '진행상황');
  1131. refreshIncd();
  1132. eventOff(prcdInputArr);
  1133. }
  1134. }
  1135. },
  1136. refreshBtn = {
  1137. box : null,
  1138. text : '초기화',
  1139. icon : 'refresh',
  1140. new : {
  1141. visible : false,
  1142. disabled : false,
  1143. },
  1144. prcd : {
  1145. visible : true,
  1146. disabled : true,
  1147. },
  1148. end : {
  1149. visible : true,
  1150. disabled : true,
  1151. },
  1152. class : 'refresh-btn',
  1153. },
  1154. incdEndBtn = {
  1155. box : null,
  1156. text : '돌발종료',
  1157. icon : 'save',
  1158. new : {
  1159. visible : false,
  1160. disabled : false,
  1161. },
  1162. prcd : {
  1163. visible : false,
  1164. disabled : false,
  1165. },
  1166. end : {
  1167. visible : true,
  1168. disabled : true,
  1169. },
  1170. class : 'incd-end-btn',
  1171. method : function(){
  1172. let updateData = {...getInstance(endIncdTable).getSelectedRowsData()[0]};
  1173. let endColumns = [
  1174. 'incd_end_dt',
  1175. 'incd_end_cnfm_mthd_cd',
  1176. 'mblz_eqpm_cont',
  1177. 'recr_cont',
  1178. 'mblz_pnum',
  1179. 'recr_perd'
  1180. ];
  1181. for(idx in endInputArr){
  1182. const input = endInputArr[idx];
  1183. const value = getValue(input.box);
  1184. if(input.must && nullChecker(value).trim() === "") {
  1185. alertWarning('입력되지 않은 정보가 있습니다. [' + input.must + ']', null, input.box);
  1186. return false;
  1187. }
  1188. else if(endColumns.includes(input.column)){
  1189. updateData[input.column] = value;
  1190. }
  1191. }
  1192. updateData['incd_prgr_step_cd'] = 'ISS3';
  1193. if (isNaN(updateData.link_id)){
  1194. updateData.link_id = Number(updateData.link_id.substring(updateData.link_id.indexOf('[')+1, updateData.link_id.indexOf(']')));
  1195. };
  1196. updateData = sendDateFormat(updateData);
  1197. let resultCnt = 0;
  1198. resultCnt += postInsertUpdate(commonUri + '/' + updateData.incd_ocrr_id, updateData);
  1199. if (resultCnt > 0) {
  1200. insResultMsg(pageMsg + '종료 처리');
  1201. refreshIncd();
  1202. eventOff(endInputArr);
  1203. }
  1204. }
  1205. },
  1206. ]
  1207. //이력 조회 배열
  1208. const historyArr = [
  1209. historyCheck = {
  1210. class : 'history-check',
  1211. box : null,
  1212. text : '이력조회',
  1213. disabled : false,
  1214. type : 'check',
  1215. method : function(e){
  1216. historyArr.map((item)=>{
  1217. if(item.class !== 'history-check') item.box.option('disabled', !item.box.option('disabled'));
  1218. })
  1219. if(!getValue(historyCheck.box)) endIncdTable.dxDataGrid('instance').option('dataSource', procData[0]);
  1220. }
  1221. },
  1222. historyStrtDt = {
  1223. class : 'history-strt-dt',
  1224. type : 'date',
  1225. width : 120,
  1226. box : null,
  1227. displayFormat : 'yyyy-MM-dd',
  1228. value : new Date().setMonth( new Date().getMonth() - 1),
  1229. },
  1230. historyStrtTime = {
  1231. class : 'history-strt-time',
  1232. type : 'time',
  1233. displayFormat : 'HH',
  1234. width : 70,
  1235. interval : 60,
  1236. value : firstSettingTime,
  1237. box : null,
  1238. },
  1239. historyEndDt = {
  1240. class : 'history-end-dt',
  1241. type : 'date',
  1242. width : 120,
  1243. box : null,
  1244. displayFormat : 'yyyy-MM-dd',
  1245. value : new Date(),
  1246. },
  1247. historyEndTime = {
  1248. class : 'history-end-time',
  1249. box : null,
  1250. width : 70,
  1251. type : 'time',
  1252. displayFormat : 'HH',
  1253. value : new Date().getTime(),
  1254. interval : 60,
  1255. },
  1256. historySearchBtn = {
  1257. class : 'history-search-btn',
  1258. box : null,
  1259. icon : 'refresh',
  1260. type : 'button',
  1261. text : '조회',
  1262. method : function(){
  1263. if(!validationCheck(historyStrtDt.box, historyEndDt.box, historyStrtTime.box, historyEndTime.box)) return false;
  1264. let FROM_DT = getDate(getValue(historyStrtDt.box),getValue(historyStrtTime.box)).substring(0,10);
  1265. let TO_DT = getDate(getValue(historyEndDt.box),getValue(historyEndTime.box)).substring(0,10);
  1266. let searchData = {};
  1267. searchData['FROM_DT'] = FROM_DT;
  1268. searchData['TO_DT'] = TO_DT;
  1269. let historyData = [];
  1270. historyData = formatData('', historyData, searchData);
  1271. endIncdTable.dxDataGrid('instance').option('dataSource',historyData[0]);
  1272. }
  1273. },
  1274. ]
  1275. const toggleArr = [
  1276. {
  1277. box : null,
  1278. formNm : 'new',
  1279. formToggle : 'toggle-down',
  1280. tabToggle : 'toggle'
  1281. },
  1282. {
  1283. box : null,
  1284. formNm : 'prcd',
  1285. formToggle : 'toggle-down',
  1286. tabToggle : 'toggle'
  1287. },
  1288. {
  1289. box : null,
  1290. formNm : 'end',
  1291. formToggle : 'end-toggle-down',
  1292. tabToggle : 'end-toggle'
  1293. }
  1294. ]
  1295. autoIncdData = formatData( '/auto', autoIncdData );
  1296. procData = formatData( '/progress', procData );
  1297. newIncdData = formatData( '/registered', newIncdData );
  1298. $(()=>{
  1299. init();
  1300. $('body').on('click',function(){
  1301. $(".add-select-btn").addClass('dpl-none');
  1302. })
  1303. //추가 버튼 목록에서 선택
  1304. $(".add-select-btn > div:nth-child(1)").on('click',function(){
  1305. event.stopPropagation();
  1306. window.open('./incident-popup-link.html', '목록 구간', listOption);
  1307. $(".add-select-btn").addClass('dpl-none');
  1308. })
  1309. //추가 버튼 맵에서 선택
  1310. $(".add-select-btn > div:nth-child(2)").on('click',function(){
  1311. event.stopPropagation();
  1312. window.open('./incident-popup-map.html', '지도 구간', mapOption);
  1313. $(".add-select-btn").addClass('dpl-none');
  1314. })
  1315. })
  1316. function init(){
  1317. //화면 텍스트 상자 세팅
  1318. setViewInputArray( newInputArr, 'new' );
  1319. setViewInputArray( prcdInputArr, 'prcd' );
  1320. setViewInputArray( endInputArr, 'end' );
  1321. //차로 정보 Array
  1322. incdOcrrLaneArr.push(prcdIncdOcrrLane0, prcdIncdOcrrLane1, prcdIncdOcrrLane2, prcdIncdOcrrLane3, prcdIncdOcrrLane4, prcdIncdOcrrLane5);
  1323. incdClsrLaneArr.push(prcdIncdClsrLane0, prcdIncdClsrLane1, prcdIncdClsrLane2, prcdIncdClsrLane3, prcdIncdClsrLane4, prcdIncdClsrLane5);
  1324. //이력 정보 세팅
  1325. historyArr.map((item)=>{
  1326. switch (item.type) {
  1327. case 'date':
  1328. item.box = $("." + item.class).dxDateBox({
  1329. width : item.width,
  1330. stylingMode : 'outlined',
  1331. height : 25,
  1332. type : item.type,
  1333. readOnly : item.readOnly,
  1334. displayFormat : item.displayFormat,
  1335. value : item.value,
  1336. disabled : true,
  1337. }).dxDateBox('instance');
  1338. break;
  1339. case 'time':
  1340. item.box = $("." + item.class).dxDateBox({
  1341. width : item.width,
  1342. stylingMode : 'outlined',
  1343. height : 25,
  1344. type : item.type,
  1345. readOnly : item.readOnly,
  1346. displayFormat : item.displayFormat,
  1347. value : item.value,
  1348. interval : item.interval,
  1349. disabled : true,
  1350. }).dxDateBox('instance');
  1351. break;
  1352. case 'button':
  1353. item.box = $("." + item.class).dxButton({
  1354. stylingMode : 'outlined',
  1355. icon : item.icon,
  1356. height : 27,
  1357. disabled : true,
  1358. text : item.text,
  1359. onClick(){
  1360. if(item.method){
  1361. item.method();
  1362. }
  1363. }
  1364. }).dxButton('instance');
  1365. break;
  1366. case 'check':
  1367. item.box = $("." + item.class).dxCheckBox({
  1368. stylingMode : 'outlined',
  1369. text : item.text,
  1370. onValueChanged(){
  1371. if(item.method){
  1372. item.method();
  1373. }
  1374. }
  1375. }).dxCheckBox('instance');
  1376. break;
  1377. default:
  1378. break;
  1379. }
  1380. })
  1381. prcdLinkBtn = $(".prcd-link-btn").dxButton({
  1382. text : '선택',
  1383. icon : 'todo',
  1384. stylingMode : 'outlined',
  1385. disabled : true,
  1386. onClick(){
  1387. event.stopPropagation();
  1388. $('.add-select-btn').toggleClass('dpl-none');
  1389. }
  1390. }).dxButton('instance');
  1391. searchBtn = $(".search-btn").dxButton({
  1392. stylingMode : 'outlined',
  1393. text : '조회',
  1394. icon : 'refresh',
  1395. onClick(){
  1396. refreshIncd();
  1397. }
  1398. }).dxButton('instance');
  1399. closeBtn = $(".close-btn").dxButton({
  1400. stylingMode : 'outlined',
  1401. text : '닫기',
  1402. icon : 'close',
  1403. onClick(){
  1404. window.close();
  1405. }
  1406. }).dxButton('instance');
  1407. vmsListBtn = $(".vms-list-btn").dxButton({
  1408. stylingMode : 'outlined',
  1409. text : 'VMS 목록',
  1410. disabled : true,
  1411. onClick(){
  1412. window.open('./incident-popup-vms.html', '돌발구간 VMS 정보', vmsListOption);
  1413. }
  1414. }).dxButton('instance');
  1415. btnArr.map((item)=>{
  1416. item.box = $('.' + item.class).dxButton({
  1417. stylingMode : 'outlined',
  1418. text : item.text,
  1419. icon : item.icon,
  1420. visible : item.new.visible,
  1421. disabled : item.new.disabled,
  1422. onClick(){
  1423. if(item.method){
  1424. item.method();
  1425. }
  1426. }
  1427. }).dxButton('instance');
  1428. });
  1429. locationBtn.box.on('click', () => lookLocation(newIncdTable));
  1430. missBtn.box.on('click', () => missEvent(newIncdTable));
  1431. prcdIncdTable = $('<div class="prcd-incd-table b1 b2 b3 b4">').width('100%').height('100%').dxDataGrid({
  1432. dataSource : procData[0],
  1433. allowColumnReordering : true,
  1434. showColumnLines : true,
  1435. allowColumnResizing : true,
  1436. showBorders : true,
  1437. rowAlternationEnabled : true,
  1438. noDataText : '표출할 정보가 없습니다.',
  1439. columnAutoWidth : true,
  1440. selection: {
  1441. mode: 'single',
  1442. },
  1443. filterRow: {
  1444. visible: true,
  1445. applyFilter: 'auto',
  1446. },
  1447. headerFilter: {
  1448. visible: true,
  1449. },
  1450. grouping: {
  1451. autoExpandAll: true,
  1452. },
  1453. groupPanel:{
  1454. visible: true,
  1455. emptyPanelText:"그룹 지을 항목을 여기에 끌어다 놓으세요"
  1456. },
  1457. columns:[
  1458. {
  1459. dataField : "incd_ocrr_id",
  1460. caption : "ID",
  1461. alignment : "center",
  1462. sortIndex : 0,
  1463. cssClass : 'padding-5'
  1464. },
  1465. {
  1466. dataField : "rgst_dt",
  1467. caption : "등록 일시",
  1468. alignment : "center",
  1469. dataType : 'datetime',
  1470. format : 'yyyy-MM-dd HH:mm:ss',
  1471. cssClass : 'padding-5'
  1472. },
  1473. {
  1474. dataField : "incd_orgn_cd",
  1475. caption : "돌발상황 구분",
  1476. alignment : "center",
  1477. cssClass : 'padding-5',
  1478. lookup : {
  1479. dataSource : incdOrgnCdData,
  1480. displayExpr : 'desc',
  1481. valueExpr : 'code',
  1482. }
  1483. },
  1484. {
  1485. dataField : "incd_titl",
  1486. caption : "돌발상황 제목",
  1487. alignment : "center",
  1488. cssClass : 'padding-5',
  1489. },
  1490. {
  1491. dataField : "incd_type_clsf_desc",
  1492. caption : "돌발유형",
  1493. alignment : "center",
  1494. cssClass : 'padding-5',
  1495. },
  1496. {
  1497. dataField : "incd_type_desc",
  1498. caption : "돌발세부유형",
  1499. alignment : "center",
  1500. cssClass : 'padding-5',
  1501. },
  1502. {
  1503. dataField : "ocrr_lctn_nm",
  1504. caption : "발생 위치 설명",
  1505. alignment : "center",
  1506. cssClass : 'padding-5',
  1507. },
  1508. {
  1509. dataField : "incd_expl",
  1510. caption : "돌발상황 상황 설명",
  1511. alignment : "center",
  1512. cssClass : 'padding-5',
  1513. },
  1514. {
  1515. dataField : "cmtr_grad_cd",
  1516. caption : "소통 등급",
  1517. alignment : "center",
  1518. cssClass : 'padding-5',
  1519. lookup : {
  1520. dataSource : cmtrGradCdData,
  1521. displayExpr : 'desc',
  1522. valueExpr : 'code',
  1523. }
  1524. },
  1525. {
  1526. dataField : "ifmr_nm",
  1527. caption : "제보자",
  1528. alignment : "center",
  1529. cssClass : 'padding-5',
  1530. },
  1531. {
  1532. dataField : "incd_cnfm_mthd_cd",
  1533. caption : "돌발상황 확인 방법",
  1534. alignment : "center",
  1535. cssClass : 'padding-5',
  1536. lookup : {
  1537. dataSource : incdCnfmMthdCdData,
  1538. displayExpr : 'desc',
  1539. valueExpr : 'code',
  1540. }
  1541. },
  1542. {
  1543. dataField : "incd_sern_desc",
  1544. caption : "심각도",
  1545. alignment : "center",
  1546. cssClass : 'padding-5',
  1547. },
  1548. {
  1549. dataField : "incd_cnfm_dt",
  1550. caption : "돌발상황 확인일시",
  1551. alignment : "center",
  1552. dataType : 'datetime',
  1553. format : 'yyyy-MM-dd HH:mm:ss',
  1554. cssClass : 'padding-5',
  1555. },
  1556. {
  1557. dataField : "incd_strt_dt",
  1558. caption : "시작 일시",
  1559. alignment : "center",
  1560. cssClass : 'padding-5',
  1561. dataType : 'datetime',
  1562. format : 'yyyy-MM-dd HH:mm:ss'
  1563. },
  1564. {
  1565. dataField : "incd_end_prar_dt",
  1566. caption : "종료 예정 일시",
  1567. alignment : "center",
  1568. cssClass : 'padding-5',
  1569. dataType : 'datetime',
  1570. format : 'yyyy-MM-dd HH:mm:ss'
  1571. },
  1572. {
  1573. dataField : "link_id",
  1574. caption : "구간 ID",
  1575. cssClass : 'padding-5',
  1576. alignment : "center",
  1577. },
  1578. {
  1579. dataField : "x_crdn",
  1580. caption : "X 좌표",
  1581. cssClass : 'padding-5',
  1582. alignment : "center",
  1583. },
  1584. {
  1585. dataField : "y_crdn",
  1586. caption : "Y 좌표",
  1587. cssClass : 'padding-5',
  1588. alignment : "center",
  1589. },
  1590. {
  1591. dataField : "incd_ocrr_lane",
  1592. caption : "발생 차로",
  1593. cssClass : 'padding-5',
  1594. alignment : "center",
  1595. },
  1596. {
  1597. dataField : "incd_clsr_lane",
  1598. caption : "차단 차로",
  1599. cssClass : 'padding-5',
  1600. alignment : "center",
  1601. },
  1602. {
  1603. dataField : "dely_lngt",
  1604. caption : "지체 길이",
  1605. cssClass : 'padding-5',
  1606. alignment : "center",
  1607. },
  1608. {
  1609. dataField : "incd_lngt",
  1610. caption : "돌발상황 길이",
  1611. cssClass : 'padding-5',
  1612. alignment : "center",
  1613. },
  1614. {
  1615. dataField : "smlt_vhcl_unum",
  1616. caption : "소형 차량 대수",
  1617. cssClass : 'padding-5',
  1618. alignment : "center",
  1619. },
  1620. {
  1621. dataField : "mdlt_vhcl_unum",
  1622. caption : "중대형 차량 대수",
  1623. cssClass : 'padding-5',
  1624. alignment : "center",
  1625. },
  1626. {
  1627. dataField : "injr_pnum",
  1628. caption : "부상자",
  1629. alignment : "center",
  1630. cssClass : 'padding-5',
  1631. },
  1632. {
  1633. dataField : "ftlt_pnum",
  1634. caption : "사망자",
  1635. alignment : "center",
  1636. cssClass : 'padding-5',
  1637. },
  1638. {
  1639. dataField : "wthr_cd",
  1640. caption : "기상 상태",
  1641. alignment : "center",
  1642. cssClass : 'padding-5',
  1643. lookup : {
  1644. dataSource : wthrCdData,
  1645. displayExpr : 'desc',
  1646. valueExpr : 'code',
  1647. }
  1648. },
  1649. {
  1650. dataField : "resp_lvl_cd",
  1651. caption : "대응수준",
  1652. alignment : "center",
  1653. cssClass : 'padding-5',
  1654. lookup : {
  1655. dataSource : respLvlCdData,
  1656. displayExpr : 'desc',
  1657. valueExpr : 'code',
  1658. }
  1659. },
  1660. {
  1661. dataField : "utis_cnct_yn",
  1662. caption : "UTIS연계여부",
  1663. cssClass : 'padding-5',
  1664. alignment : "center",
  1665. },
  1666. {
  1667. dataField : "trub_vhcl_yn",
  1668. caption : "고장차량여부",
  1669. cssClass : 'padding-5',
  1670. alignment : "center",
  1671. },
  1672. {
  1673. dataField : "falt_yn",
  1674. caption : "낙하물여부",
  1675. cssClass : 'padding-5',
  1676. alignment : "center",
  1677. },
  1678. {
  1679. dataField : "frwt_yn",
  1680. caption : "화재위험물여부",
  1681. cssClass : 'padding-5',
  1682. alignment : "center",
  1683. },
  1684. {
  1685. dataField : "trvl_lmnt_type_cd",
  1686. caption : "통행제한유형",
  1687. cssClass : 'padding-5',
  1688. alignment : "center",
  1689. lookup : {
  1690. dataSource : trvlLmntTypeCdData,
  1691. displayExpr : 'desc',
  1692. valueExpr : 'code',
  1693. }
  1694. },
  1695. {
  1696. dataField : "vms_dspl_yn",
  1697. caption : "VMS표출여부",
  1698. cssClass : 'padding-5',
  1699. alignment : "center",
  1700. },
  1701. ],
  1702. onRowDblClick(e){
  1703. console.log(e.data);
  1704. let linkVal = "";
  1705. let linkData = [];
  1706. let cdData = [];
  1707. cdData = getCodeData(cdData,'/idtu/' + e.data.incd_type_clsf_cd);
  1708. prcdIncdTypeCd.box.option('items', cdData);
  1709. if (e.data.link_id !== null) getData('/api/database/link/' + e.data.link_id, linkData );
  1710. if (linkData.length > 0) linkVal = '[' + linkData[0].link_id + '] ' + linkData[0].from_node + ' > ' + linkData[0].to_node
  1711. prcdInputArr.map((item)=>{
  1712. if (item.type !== 'check'){
  1713. let data = e.data[item.column];
  1714. if ( linkVal !== "" && item.column === 'link_id') return item.box.option('value', linkVal);
  1715. setValue(item.box, data);
  1716. return
  1717. }
  1718. if ( e.data[item.column] === 'Y' ) return setValue(item.box, true);
  1719. if ( e.data[item.column] === 'N' ) return setValue(item.box, false);;
  1720. })
  1721. let vmsData = [];
  1722. vmsCdData = [];
  1723. getData(commonUri + '/vms/incd/' + e.data.incd_ocrr_id, vmsData);
  1724. if (vmsData.length > 0){
  1725. setValue(prcdStrtLctnNm.box, vmsData[0].strt_lctn_nm);
  1726. setValue(prcdEndLctnNm.box, vmsData[0].end_lctn_nm);
  1727. setValue(prcdVmsIncdTypeCd.box, vmsData[0].vms_incd_type_cd);
  1728. vmsCdData = setDetailCd( vmsCdData, prcdVmsIncdDetlTypeCd, prcdVmsIncdTypeCd, 'vit');
  1729. setValue(prcdVmsIncdDetlTypeCd.box, vmsData[0].vms_incd_detl_type_cd)
  1730. }
  1731. setLaneVal(e.data.incd_ocrr_lane, incdOcrrLaneArr);
  1732. setLaneVal(e.data.incd_clsr_lane, incdClsrLaneArr);
  1733. eventOn(prcdInputArr);
  1734. if (!getValue(prcdVmsDsplYn.box)){
  1735. dsblOnBtn(prcdVmsIncdDetlTypeCd.box);
  1736. dsblOnBtn(prcdVmsIncdTypeCd.box);
  1737. dsblOnBtn(prcdStrtLctnNm.box);
  1738. dsblOnBtn(prcdEndLctnNm.box);
  1739. }
  1740. }
  1741. });
  1742. newIncdTable = $('<div class="b1 b2 b3 b4">').width('100%').height('100%').dxDataGrid({
  1743. dataSource : newIncdData[0],
  1744. allowColumnReordering : true,
  1745. showColumnLines : true,
  1746. allowColumnResizing : true,
  1747. showBorders : true,
  1748. rowAlternationEnabled : true,
  1749. columnAutoWidth : true,
  1750. noDataText : '표출할 정보가 없습니다.',
  1751. selection: {
  1752. mode: 'single',
  1753. },
  1754. filterRow: {
  1755. visible: true,
  1756. applyFilter: 'auto',
  1757. },
  1758. headerFilter: {
  1759. visible: true,
  1760. },
  1761. grouping: {
  1762. autoExpandAll: true,
  1763. },
  1764. groupPanel:{
  1765. visible: true,
  1766. emptyPanelText:"그룹 지을 항목을 여기에 끌어다 놓으세요"
  1767. },
  1768. columns:[
  1769. {
  1770. dataField : "incd_ocrr_id",
  1771. caption : "ID",
  1772. alignment : "center",
  1773. cssClass : 'padding-5',
  1774. },
  1775. {
  1776. dataField : "date",
  1777. caption : "등록 일시",
  1778. alignment : "center",
  1779. cssClass : 'padding-5',
  1780. },
  1781. {
  1782. dataField : "incd_orgn_cd",
  1783. caption : "돌발상황 구분",
  1784. alignment : "center",
  1785. cssClass : 'padding-5',
  1786. lookup :{
  1787. dataSource : incdOrgnCdData,
  1788. displayExpr : 'desc',
  1789. value : 'code',
  1790. }
  1791. },
  1792. {
  1793. dataField : "ocrr_lctn_nm",
  1794. caption : "발생 위치 설명",
  1795. alignment : "center",
  1796. cssClass : 'padding-5',
  1797. },
  1798. {
  1799. dataField : "incd_expl",
  1800. caption : "돌발 상황 설명",
  1801. alignment : "center",
  1802. cssClass : 'padding-5',
  1803. },
  1804. {
  1805. dataField : "cmtr_grad_cd",
  1806. caption : "소통 등급",
  1807. alignment : "center",
  1808. cssClass : 'padding-5',
  1809. lookup :{
  1810. dataSource : cmtrGradCdData,
  1811. displayExpr : 'desc',
  1812. value : 'code',
  1813. }
  1814. },
  1815. {
  1816. dataField : "ifmr_nm",
  1817. caption : "제보자",
  1818. alignment : "center",
  1819. cssClass : 'padding-5',
  1820. },
  1821. {
  1822. dataField : "incd_cnfm_mthd_cd",
  1823. caption : "돌발상황 확인 방법",
  1824. alignment : "center",
  1825. cssClass : 'padding-5',
  1826. lookup :{
  1827. dataSource : incdCnfmMthdCdData,
  1828. displayExpr : 'desc',
  1829. value : 'code',
  1830. }
  1831. },
  1832. {
  1833. dataField : "incd_sern_cd",
  1834. caption : "심각도",
  1835. alignment : "center",
  1836. cssClass : 'padding-5',
  1837. lookup :{
  1838. dataSource : incdSernCdData,
  1839. displayExpr : 'desc',
  1840. value : 'code',
  1841. }
  1842. },
  1843. {
  1844. dataField : "incd_type_clsf_desc",
  1845. caption : "돌발상황 유형 분류",
  1846. alignment : "center",
  1847. cssClass : 'padding-5',
  1848. },
  1849. {
  1850. dataField : "incd_type_desc",
  1851. caption : "돌발상황 유형 세부 분류",
  1852. alignment : "center",
  1853. cssClass : 'padding-5',
  1854. },
  1855. {
  1856. dataField : "incd_cnfm_dt",
  1857. caption : "돌발상황 확인일시",
  1858. alignment : "center",
  1859. cssClass : 'padding-5',
  1860. dataType : 'datetime',
  1861. format : 'yyyy-MM-dd HH:mm:ss',
  1862. },
  1863. {
  1864. dataField : "incd_strt_dt",
  1865. caption : "시작 일시",
  1866. alignment : "center",
  1867. cssClass : 'padding-5',
  1868. dataType : 'datetime',
  1869. format : 'yyyy-MM-dd HH:mm:ss',
  1870. },
  1871. {
  1872. dataField : "incd_end_prar_dt",
  1873. caption : "종료 예정 일시",
  1874. alignment : "center",
  1875. cssClass : 'padding-5',
  1876. dataType : 'datetime',
  1877. format : 'yyyy-MM-dd HH:mm:ss',
  1878. },
  1879. ],
  1880. onRowClick(){
  1881. rowClickEvent('new');
  1882. }
  1883. });
  1884. autoIncdTable = $('<div class="b1 b2 b3 b4">').width('100%').height('100%').dxDataGrid({
  1885. dataSource : autoIncdData[0],
  1886. allowColumnReordering : true,
  1887. showColumnLines : true,
  1888. allowColumnResizing : true,
  1889. showBorders : true,
  1890. rowAlternationEnabled : true,
  1891. columnAutoWidth : true,
  1892. visible : false,
  1893. noDataText : '표출할 정보가 없습니다.',
  1894. selection: {
  1895. mode: 'single',
  1896. },
  1897. filterRow: {
  1898. visible: true,
  1899. applyFilter: 'auto',
  1900. },
  1901. headerFilter: {
  1902. visible: true,
  1903. },
  1904. grouping: {
  1905. autoExpandAll: true,
  1906. },
  1907. groupPanel:{
  1908. visible: true,
  1909. emptyPanelText:"그룹 지을 항목을 여기에 끌어다 놓으세요"
  1910. },
  1911. columns:[
  1912. {
  1913. dataField : "link_id",
  1914. caption : "링크 ID",
  1915. alignment : "center",
  1916. cssClass : 'padding-5',
  1917. },
  1918. {
  1919. dataField : "detc_dt",
  1920. caption : "검지 시각",
  1921. alignment : "center",
  1922. cssClass : 'padding-5',
  1923. dataType : 'datetime',
  1924. format : 'yyyy-MM-dd HH:mm:ss',
  1925. },
  1926. {
  1927. dataField : "clct_sped_avrg",
  1928. caption : "수집 평균 속도",
  1929. alignment : "center",
  1930. cssClass : 'padding-5',
  1931. },
  1932. {
  1933. dataField : "estm_sped_avrg",
  1934. caption : "예상 평균 속도",
  1935. alignment : "center",
  1936. cssClass : 'padding-5',
  1937. },
  1938. {
  1939. dataField : "road_name",
  1940. caption : "도로명",
  1941. cssClass : 'padding-5',
  1942. alignment : "center",
  1943. cellTemplate(c,e){
  1944. c.css('text-align','left');
  1945. c.text(e.displayValue);
  1946. }
  1947. },
  1948. {
  1949. dataField : "from_node",
  1950. caption : "시점명",
  1951. cssClass : 'padding-5',
  1952. alignment : "center",
  1953. cellTemplate(c,e){
  1954. c.css('text-align','left');
  1955. c.text(e.displayValue);
  1956. }
  1957. },
  1958. {
  1959. dataField : "to_node",
  1960. caption : "종점명",
  1961. cssClass : 'padding-5',
  1962. alignment : "center",
  1963. cellTemplate(c,e){
  1964. c.css('text-align','left');
  1965. c.text(e.displayValue);
  1966. }
  1967. },
  1968. ],
  1969. onRowClick(){
  1970. rowClickEvent('new');
  1971. }
  1972. });
  1973. endIncdTable = $('<div class="b1 b2 b3 b4">').width('100%').height('100%').dxDataGrid({
  1974. dataSource : procData[0],
  1975. allowColumnReordering : true,
  1976. showColumnLines : true,
  1977. allowColumnResizing : true,
  1978. showBorders : true,
  1979. rowAlternationEnabled : true,
  1980. columnAutoWidth : true,
  1981. noDataText : '표출할 정보가 없습니다.',
  1982. selection: {
  1983. mode: 'single',
  1984. },
  1985. filterRow: {
  1986. visible: true,
  1987. applyFilter: 'auto',
  1988. },
  1989. headerFilter: {
  1990. visible: true,
  1991. },
  1992. grouping: {
  1993. autoExpandAll: true,
  1994. },
  1995. groupPanel:{
  1996. visible: true,
  1997. emptyPanelText:"그룹 지을 항목을 여기에 끌어다 놓으세요"
  1998. },
  1999. columns:[
  2000. {
  2001. dataField : "incd_ocrr_id",
  2002. caption : "ID",
  2003. alignment : "center",
  2004. cssClass : 'padding-5',
  2005. },
  2006. {
  2007. dataField : "rgst_dt",
  2008. caption : "등록 일시",
  2009. alignment : "center",
  2010. cssClass : 'padding-5',
  2011. dataType : 'datetime',
  2012. format : 'yyyy-MM-dd HH:mm:ss'
  2013. },
  2014. {
  2015. dataField : "incd_orgn_desc",
  2016. caption : "돌발상황 구분",
  2017. alignment : "center",
  2018. cssClass : 'padding-5',
  2019. },
  2020. {
  2021. dataField : "incd_titl",
  2022. caption : "돌발상황 제목",
  2023. alignment : "center",
  2024. cssClass : 'padding-5',
  2025. },
  2026. {
  2027. dataField : "incd_type_clsf_desc",
  2028. caption : "돌발유형",
  2029. alignment : "center",
  2030. cssClass : 'padding-5',
  2031. },
  2032. {
  2033. dataField : "incd_type_desc",
  2034. caption : "돌발세부유형",
  2035. alignment : "center",
  2036. cssClass : 'padding-5',
  2037. },
  2038. {
  2039. dataField : "ocrr_lctn_nm",
  2040. caption : "발생 위치 설명",
  2041. alignment : "center",
  2042. cssClass : 'padding-5',
  2043. },
  2044. {
  2045. dataField : "incd_expl",
  2046. caption : "돌발상황 상황 설명",
  2047. alignment : "center",
  2048. cssClass : 'padding-5',
  2049. },
  2050. {
  2051. dataField : "cmtr_grad_cd",
  2052. caption : "소통 등급",
  2053. alignment : "center",
  2054. cssClass : 'padding-5',
  2055. lookup : {
  2056. dataSource : cmtrGradCdData,
  2057. displayExpr : 'desc',
  2058. valueExpr : 'code',
  2059. }
  2060. },
  2061. {
  2062. dataField : "ifmr_nm",
  2063. caption : "제보자",
  2064. alignment : "center",
  2065. cssClass : 'padding-5',
  2066. },
  2067. {
  2068. dataField : "incd_cnfm_mthd_cd",
  2069. caption : "돌발상황 확인 방법",
  2070. alignment : "center",
  2071. cssClass : 'padding-5',
  2072. lookup : {
  2073. dataSource : incdCnfmMthdCdData,
  2074. displayExpr : 'desc',
  2075. valueExpr : 'code',
  2076. }
  2077. },
  2078. {
  2079. dataField : "incd_sern_cd",
  2080. caption : "심각도",
  2081. alignment : "center",
  2082. cssClass : 'padding-5',
  2083. lookup : {
  2084. dataSource : incdSernCdData,
  2085. displayExpr : 'desc',
  2086. valueExpr : 'code',
  2087. }
  2088. },
  2089. {
  2090. dataField : "incd_cnfm_dt",
  2091. caption : "돌발상황 확인일시",
  2092. alignment : "center",
  2093. cssClass : 'padding-5',
  2094. dataType : 'datetime',
  2095. format : 'yyyy-MM-dd HH:mm:ss'
  2096. },
  2097. {
  2098. dataField : "incd_strt_dt",
  2099. caption : "시작 일시",
  2100. alignment : "center",
  2101. cssClass : 'padding-5',
  2102. dataType : 'datetime',
  2103. format : 'yyyy-MM-dd HH:mm:ss'
  2104. },
  2105. {
  2106. dataField : "incd_end_prar_dt",
  2107. caption : "종료 예정 일시",
  2108. alignment : "center",
  2109. cssClass : 'padding-5',
  2110. dataType : 'datetime',
  2111. format : 'yyyy-MM-dd HH:mm:ss'
  2112. },
  2113. {
  2114. dataField : "incd_end_cnfm_mthd_cd",
  2115. caption : "돌발상황 종료 확인방법",
  2116. alignment : "center",
  2117. cssClass : 'padding-5',
  2118. lookup : {
  2119. dataSource : incdEndCnfmMthdCdData,
  2120. displayExpr : 'desc',
  2121. valueExpr : 'code',
  2122. }
  2123. },
  2124. {
  2125. dataField : "incd_end_dt",
  2126. caption : "돌발상황 종료일시",
  2127. alignment : "center",
  2128. cssClass : 'padding-5',
  2129. dataType : 'datetime',
  2130. format : 'yyyy-MM-dd HH:mm:ss'
  2131. },
  2132. {
  2133. dataField : "mblz_eqpm_cont",
  2134. caption : "출동장비내용",
  2135. alignment : "center",
  2136. cssClass : 'padding-5',
  2137. },
  2138. {
  2139. dataField : "mblz_pnum",
  2140. caption : "출동인원수",
  2141. alignment : "center",
  2142. cssClass : 'padding-5',
  2143. },
  2144. {
  2145. dataField : "recr_cont",
  2146. caption : "복구내용",
  2147. alignment : "center",
  2148. cssClass : 'padding-5',
  2149. },
  2150. {
  2151. dataField : "recr_perd",
  2152. caption : "복구기간(분)",
  2153. alignment : "center",
  2154. cssClass : 'padding-5',
  2155. },
  2156. {
  2157. dataField : "link_id",
  2158. caption : "구간 ID",
  2159. alignment : "center",
  2160. cssClass : 'padding-5',
  2161. },
  2162. {
  2163. dataField : "x_crdn",
  2164. caption : "X 좌표",
  2165. alignment : "center",
  2166. cssClass : 'padding-5',
  2167. },
  2168. {
  2169. dataField : "y_crdn",
  2170. caption : "Y 좌표",
  2171. alignment : "center",
  2172. cssClass : 'padding-5',
  2173. },
  2174. {
  2175. dataField : "incd_ocrr_lane",
  2176. caption : "발생 차로",
  2177. alignment : "center",
  2178. cssClass : 'padding-5',
  2179. },
  2180. {
  2181. dataField : "incd_clsr_lane",
  2182. caption : "차단 차로",
  2183. alignment : "center",
  2184. cssClass : 'padding-5',
  2185. },
  2186. {
  2187. dataField : "dely_lngt",
  2188. caption : "지체 길이",
  2189. alignment : "center",
  2190. cssClass : 'padding-5',
  2191. },
  2192. {
  2193. dataField : "incd_lngt",
  2194. caption : "돌발상황 길이",
  2195. alignment : "center",
  2196. cssClass : 'padding-5',
  2197. },
  2198. {
  2199. dataField : "smlt_vhcl_unum",
  2200. caption : "소형 차량 대수",
  2201. alignment : "center",
  2202. cssClass : 'padding-5',
  2203. },
  2204. {
  2205. dataField : "mdlt_vhcl_unum",
  2206. caption : "중대형 차량 대수",
  2207. alignment : "center",
  2208. cssClass : 'padding-5',
  2209. },
  2210. {
  2211. dataField : "injr_pnum",
  2212. caption : "부상자",
  2213. alignment : "center",
  2214. cssClass : 'padding-5',
  2215. },
  2216. {
  2217. dataField : "ftlt_pnum",
  2218. caption : "사망자",
  2219. alignment : "center",
  2220. cssClass : 'padding-5',
  2221. },
  2222. {
  2223. dataField : "wthr_cd",
  2224. caption : "기상 상태",
  2225. alignment : "center",
  2226. cssClass : 'padding-5',
  2227. },
  2228. {
  2229. dataField : "resp_lvl_cd",
  2230. caption : "대응수준",
  2231. cssClass : 'padding-5',
  2232. alignment : "center",
  2233. lookup : {
  2234. dataSource : respLvlCdData,
  2235. displayExpr : 'desc',
  2236. valueExpr : 'code',
  2237. }
  2238. },
  2239. {
  2240. dataField : "utis_cnct_yn",
  2241. caption : "UTIS연계여부",
  2242. alignment : "center",
  2243. cssClass : 'padding-5',
  2244. },
  2245. {
  2246. dataField : "trub_vhcl_yn",
  2247. caption : "고장차량여부",
  2248. alignment : "center",
  2249. cssClass : 'padding-5',
  2250. },
  2251. {
  2252. dataField : "falt_yn",
  2253. caption : "낙하물여부",
  2254. alignment : "center",
  2255. cssClass : 'padding-5',
  2256. },
  2257. {
  2258. dataField : "frwt_yn",
  2259. caption : "화재위험물여부",
  2260. alignment : "center",
  2261. cssClass : 'padding-5',
  2262. },
  2263. {
  2264. dataField : "trvl_lmnt_type_cd",
  2265. caption : "통행제한유형",
  2266. alignment : "center",
  2267. cssClass : 'padding-5',
  2268. lookup : {
  2269. dataSource : trvlLmntTypeCdData,
  2270. displayExpr : 'desc',
  2271. valueExpr : 'code',
  2272. }
  2273. },
  2274. {
  2275. dataField : "vms_dspl_yn",
  2276. caption : "VMS표출여부",
  2277. alignment : "center",
  2278. cssClass : 'padding-5',
  2279. },
  2280. ],
  2281. onRowDblClick(e){
  2282. let cdData = [];
  2283. let linkData = [];
  2284. let linkVal = '';
  2285. cdData = getCodeData(cdData, '/idtu/' + e.data.incd_type_clsf_cd);
  2286. if (e.data.link_id !== null) getData('/api/database/link/' + e.data.link_id, linkData );
  2287. if (linkData.length > 0) linkVal = '[' + linkData[0].link_id + '] ' + linkData[0].from_node + ' > ' + linkData[0].to_node
  2288. endIncdTypeCd.box.option('items', cdData);
  2289. endInputArr.map((item)=>{
  2290. let data = e.data[item.column];
  2291. if ( linkVal !== "" && item.column === 'link_id') return item.box.option('value', linkVal);
  2292. if( data === 'Y') return setValue(item.box, true);
  2293. if( data === 'N') return setValue(item.box, false);
  2294. setValue(item.box, data);
  2295. })
  2296. endIncdEndDt.box.option('value', new Date());
  2297. eventOn(endInputArr);
  2298. },
  2299. });
  2300. const newContainer = $(`<div class='table-container'>
  2301. <div class='table-tabs b1 b2 b3'>
  2302. <div class='selected-tabs'>외부연계기관 돌발</div>
  2303. <div>자동 돌발</div>
  2304. </div>
  2305. <div class='tab-table-box'>
  2306. </div>
  2307. </div>`);
  2308. const newTbLctn = $(newContainer).children().eq(1);
  2309. const pcrdCont = $('<div style="width:100%; height : calc(100% - 30px); padding:3px;"></div>');
  2310. const EndCont = $('<div style="width:100%; height : calc(100% - 30px); padding:3px;"></div>');
  2311. toggleArr.map((item)=>{
  2312. item.box = setToggleBtn(item.formNm, item.formToggle, item.tabToggle);
  2313. })
  2314. $('.incident-tabs').dxTabPanel({
  2315. dataSource:[
  2316. {
  2317. id : 'new',
  2318. array : newInputArr,
  2319. name : '신규 돌발 등록',
  2320. title : '외부연계기관',
  2321. table : [newIncdTable, autoIncdTable],
  2322. form : $(".new-incd-form"),
  2323. lctn : newTbLctn,
  2324. container : newContainer,
  2325. sizeClass : 'new-incd-height',
  2326. click : true,
  2327. },
  2328. {
  2329. id : 'prcd',
  2330. array : prcdInputArr,
  2331. name : '돌발 진행상황 처리',
  2332. table : [prcdIncdTable],
  2333. title : '등록된',
  2334. form : $(".prcd-incd-form"),
  2335. lctn : $(pcrdCont),
  2336. container : pcrdCont,
  2337. sizeClass : 'prcd-incd-height',
  2338. click : false,
  2339. },
  2340. {
  2341. id : 'end',
  2342. array : endInputArr,
  2343. name : '돌발 종료 처리',
  2344. table : [endIncdTable],
  2345. title : '등록된',
  2346. container : EndCont,
  2347. lctn : $(EndCont),
  2348. form : $(".end-incd-form"),
  2349. sizeClass : 'end-incd-height',
  2350. click : false,
  2351. },
  2352. ],
  2353. selectIndex:0,
  2354. loop:false,
  2355. animationEnabled: true,
  2356. swipeEnabled: false,
  2357. itemTitleTemplate: function(e){
  2358. return $('<div style="height:29px; line-height:29px;">'+e.name+'</div>')
  2359. },
  2360. itemTemplate: function( e, idx, c ){
  2361. c.css({width:'100%',height: '100%'})
  2362. let div = $(`<div class="tab-serve-title b1 b2">${e.title} 돌발목록&nbsp; (목록에서 더블클릭으로 돌발정보 선택)</div>`);
  2363. e.table.map((item)=>{
  2364. e.lctn.append(item);
  2365. })
  2366. e.container.append(e.lctn);
  2367. c.append(div, e.container);
  2368. if(e.click){
  2369. tabEvent( e.container, div, 0, e.table[0], e.table[1]);
  2370. tabEvent( e.container, div, 1, e.table[1], e.table[0]);
  2371. }
  2372. },
  2373. onSelectionChanged(e){
  2374. //화면 전환 인덱스
  2375. $('.selected-index').text(e.component.option('selectedIndex') + 1);
  2376. //토글 상태 초기화
  2377. toggleInit();
  2378. //선택 화면 데이터
  2379. const selectItem = e.addedItems[0];
  2380. //전 화면 데이터
  2381. const beforeItem = e.removedItems[0];
  2382. //탭 테이블
  2383. const table = getInstance(selectItem.table[0]);
  2384. //탭에 따른 폼 변경 및 높이 세팅
  2385. beforeItem.form.css('display', 'none');
  2386. selectItem.form.css('display', 'block');
  2387. $('.incident-tabs').addClass(selectItem.sizeClass);
  2388. $('.incident-tabs').removeClass(beforeItem.sizeClass);
  2389. //첫번째 탭일때 탭 내부 탭 초기화
  2390. if( selectItem.click ){
  2391. selectItem.container.children().eq(0).children().eq(0).click();
  2392. }
  2393. //탭에 따른 버튼 보이기/감추기
  2394. btnArr.map((item)=>{
  2395. item.box.option('visible', item[selectItem.id].visible);
  2396. item.box.option('disabled', item[selectItem.id].disabled);
  2397. })
  2398. //이벤트 초기화
  2399. eventOff(selectItem.array);
  2400. setDetailCd(incdTypeCdData, newIncdTypeCd, newIncdTypeClsfCd, 'idtu' );
  2401. setBtnEvent(table, selectItem.array);
  2402. table.clearSelection();
  2403. },
  2404. }).dxTabPanel('instance');
  2405. }
  2406. function getInstance(box){
  2407. return box.dxDataGrid('instance');
  2408. }
  2409. function arrayInit(array){
  2410. array.map((item)=>{
  2411. item.box.option('value', item.value);
  2412. });
  2413. }
  2414. function eventOn(array){
  2415. array.map((item)=>{
  2416. item.box.option('disabled', false);
  2417. });
  2418. dsblOffBtn(prcdLinkBtn);
  2419. if(array === newInputArr){
  2420. btnArr.map((item)=>{
  2421. if(item.new.click){
  2422. item.box.option('visible', item.new.click.visible);
  2423. item.box.option('disabled', item.new.click.disabled);
  2424. }
  2425. })
  2426. return false;
  2427. }
  2428. btnArr.map((item)=>{
  2429. item.box.option('disabled', false);
  2430. })
  2431. }
  2432. function eventOff(array){
  2433. array.map((item)=>{
  2434. item.box.option('disabled', true);
  2435. })
  2436. arrayInit(array);
  2437. dsblOnBtn(prcdLinkBtn);
  2438. if(array === newInputArr){
  2439. btnArr.map((item)=>{
  2440. if(item.new.cancle){
  2441. item.box.option('visible', item.new.cancle.visible);
  2442. item.box.option('disabled', item.new.cancle.disabled);
  2443. }
  2444. })
  2445. return false;
  2446. }
  2447. btnArr.map((item)=>{
  2448. item.box.option('disabled', true);
  2449. })
  2450. }
  2451. function codeSorting(array){
  2452. array.sort(function(a, b) {
  2453. if(!isNaN(a.code))return Number(a.code) < Number(b.code) ? -1 : Number(a.code) > Number(b.code) ? 1 : 0;
  2454. return a.code < b.code ? -1 : a.code > b.code ? 1 : 0;
  2455. });
  2456. }
  2457. function getCodeData(array, uri){
  2458. getData( commonUri + '/code' + uri, array);
  2459. if(array.length > 0 ){
  2460. codeSorting(array[0]);
  2461. return array[0];
  2462. }
  2463. return array
  2464. }
  2465. function setViewInputArray( array, classNm ){
  2466. array.map((item)=>{
  2467. switch (item.type) {
  2468. case 'text':
  2469. item.box = $("." + classNm + "_" + item.column).dxTextBox({
  2470. width : item.width,
  2471. height : 30,
  2472. stylingMode : 'outlined',
  2473. readOnly : item.readOnly,
  2474. value : item.value,
  2475. placeholder : item.placeholder,
  2476. disabled : true,
  2477. maxLength : item.max,
  2478. onValueChanged(e){
  2479. if(item.method){
  2480. item.method(e);
  2481. }
  2482. }
  2483. }).dxTextBox('instance');
  2484. break;
  2485. case 'datetime':
  2486. item.box = $("." + classNm + "_" + item.column).dxDateBox({
  2487. width : item.width,
  2488. stylingMode : 'outlined',
  2489. height : 30,
  2490. type : item.type,
  2491. readOnly : item.readOnly,
  2492. displayFormat : item.displayFormat,
  2493. value : item.value,
  2494. disabled : true,
  2495. }).dxDateBox('instance');
  2496. break;
  2497. case 'select':
  2498. item.box = $("." + classNm + "_" + item.column).dxSelectBox({
  2499. width : item.width,
  2500. stylingMode : 'outlined',
  2501. height : 30,
  2502. readOnly : item.readOnly,
  2503. items : item.items,
  2504. displayExpr : 'desc',
  2505. valueExpr : 'code',
  2506. disabled : true,
  2507. }).dxSelectBox('instance')
  2508. if(item.items.length > 0) item.box.option('value',item.items[0].code);
  2509. if(item.method)item.box.on('itemClick',()=>{
  2510. item.method();
  2511. })
  2512. break;
  2513. case 'number':
  2514. item.box = $("." + classNm + "_" + item.column).dxNumberBox({
  2515. stylingMode : 'outlined',
  2516. showSpinButtons : true,
  2517. readOnly : item.readOnly,
  2518. width : item.width,
  2519. mode : "text",
  2520. height : 30,
  2521. disabled : true,
  2522. min : 0,
  2523. max : 99999,
  2524. }).dxNumberBox('instance');
  2525. item.box.on('valueChanged',(e)=>{
  2526. if(e.value === null) setValue(e.component,'0')
  2527. })
  2528. break;
  2529. case 'check':
  2530. item.box = $("." + classNm + "_" + item.column).dxCheckBox({
  2531. stylingMode : 'outlined',
  2532. text : item.text,
  2533. readOnly : item.readOnly,
  2534. disabled : true,
  2535. onValueChanged(){
  2536. if(item.method){
  2537. item.method();
  2538. }
  2539. }
  2540. }).dxCheckBox('instance');
  2541. break;
  2542. default:
  2543. break;
  2544. }
  2545. })
  2546. }
  2547. function setDetailCd( detailCdData, detailCdBox, cdBox, uri){
  2548. detailCdData = [];
  2549. detailCdData = getCodeData(detailCdData, '/' + uri + '/' + getValue(cdBox.box));
  2550. detailCdBox.box.option('items', detailCdData);
  2551. if(detailCdData.length > 0) setValue(detailCdBox.box, detailCdData[0].code);
  2552. return detailCdData;
  2553. }
  2554. function refreshIncd(){
  2555. autoIncdData = [];
  2556. procData = [];
  2557. newIncdData = [];
  2558. autoIncdData = formatData( '/auto', autoIncdData );
  2559. procData = formatData( '/progress', procData );
  2560. newIncdData = formatData( '/registered', newIncdData );
  2561. let newTb = getInstance(newIncdTable);
  2562. let prcdTb = getInstance(prcdIncdTable);
  2563. let endTb = getInstance(endIncdTable);
  2564. let autoTb = getInstance(autoIncdTable);
  2565. newTb.option('dataSource', newIncdData[0]);
  2566. prcdTb.option('dataSource', procData[0]);
  2567. endTb.option('dataSource', procData[0]);
  2568. autoTb.option('dataSource', autoIncdData[0]);
  2569. }
  2570. function formatData(uri, data, param){
  2571. getData(commonUri + uri, data, param);
  2572. if(data.length > 0){
  2573. data[0].map((item)=>{
  2574. for(idx in dateColumns) {
  2575. if(item[dateColumns[idx]])item[dateColumns[idx]] = new Date(getParseDateTime(item[dateColumns[idx]]));
  2576. }
  2577. })
  2578. }
  2579. return data;
  2580. };
  2581. function toggleInit(){
  2582. toggleArr.map((item)=>{
  2583. item.box.option('icon','chevrondown');
  2584. $('.' + item.formNm + '-form').removeClass('dpl-none');
  2585. $('.' + item.formNm + '-incd-form').removeClass(item.formToggle);
  2586. $('.incident-tabs').removeClass(item.tabToggle);
  2587. })
  2588. }
  2589. function setToggleBtn( frontNm, formToggle, tabToggle){
  2590. let toggleBtn = $('.' + frontNm + '-toggle-btn').dxButton({
  2591. icon : 'chevrondown',
  2592. stylingMode : 'text',
  2593. onClick(e){
  2594. let icon = e.component.option('icon') === 'chevrondown'? 'chevronup':'chevrondown';
  2595. e.component.option( 'icon', icon );
  2596. $('.' + frontNm + '-incd-form').toggleClass(formToggle);
  2597. $('.' + frontNm + '-form').toggleClass('dpl-none');
  2598. $('.incident-tabs').toggleClass(tabToggle);
  2599. }
  2600. }).dxButton('instance');
  2601. return toggleBtn
  2602. }
  2603. function tabEvent( container, div, num, showTb, hideTb){
  2604. container.children().eq(0).children().eq(num).on('click',function(){
  2605. div.html($(this).text() + '목록&nbsp; (목록에서 더블클릭으로 돌발정보 선택)');
  2606. $(this).addClass('selected-tabs');
  2607. if(num === 0){
  2608. $(this).next().removeClass('selected-tabs');
  2609. setBtnEvent(newIncdTable);
  2610. }
  2611. else{
  2612. $(this).prev().removeClass('selected-tabs');
  2613. setBtnEvent(autoIncdTable);
  2614. }
  2615. showTb.dxDataGrid('instance').clearSelection();
  2616. hideTb.dxDataGrid('instance').clearSelection();
  2617. showBtn(showTb.dxDataGrid('instance'));
  2618. hideBtn(hideTb.dxDataGrid('instance'));
  2619. })
  2620. }
  2621. function setLaneVal(laneData, laneArr){
  2622. if(laneData !== null && !isNaN(laneData)){
  2623. const lane = laneData.split('');
  2624. for(idx in lane){
  2625. const value = lane[idx] === '1' ? true : false;
  2626. laneArr[idx].box.option('value', value);
  2627. }
  2628. }
  2629. }
  2630. function lookLocation(table){
  2631. const selectData = table.getSelectedRowsData();
  2632. if(selectData.length <= 0) return alertWarning('돌발 정보를 선택해주세요');
  2633. const xCrdn = selectData[0].x_crdn;
  2634. const yCrdn = selectData[0].y_crdn;
  2635. window.opener.icndLocation(xCrdn, yCrdn);
  2636. }
  2637. function sendDateFormat(data){
  2638. for(idx in dateColumns) {
  2639. if(data[dateColumns[idx]]) data[dateColumns[idx]] = getSendDate(data[dateColumns[idx]]);
  2640. }
  2641. return data;
  2642. }
  2643. function missEvent(table, array){
  2644. data = [];
  2645. let selectedData = table.getSelectedRowsData();
  2646. if (selectedData <= 0) return notSelectMsg('돌발정보');
  2647. id = selectedData[0].incd_ocrr_id;
  2648. const result = postInsertUpdate(commonUri + '/mis-info/' + id)
  2649. if (result > 0 ) {
  2650. insResultMsg('오보 판정');
  2651. refreshIncd();
  2652. }
  2653. if(array){
  2654. eventOff(array);
  2655. }
  2656. }
  2657. function setBtnEvent(table, array){
  2658. refreshBtn.box.off('click');
  2659. refreshBtn.box.on('click', () => {
  2660. eventOff(array);
  2661. table.clearSelection();
  2662. });
  2663. locationBtn.box.off('click');
  2664. locationBtn.box.on('click', () => lookLocation(table));
  2665. missBtn.box.off('click');
  2666. missBtn.box.on('click', () => missEvent(table, array));
  2667. }
  2668. function rowClickEvent(type){
  2669. btnArr.map((item)=>{
  2670. if(item[type].visible){
  2671. dsblOffBtn(item.box);
  2672. }
  2673. });
  2674. }
  2675. function getCheckData(box){
  2676. return getValue(box)?'Y':'N';
  2677. }
  2678. function getLaneVal(array){
  2679. let value = '';
  2680. array.map((item)=>{
  2681. let result = getValue(item.box) ? '1':'0'
  2682. value += result;
  2683. })
  2684. return value;
  2685. }
  2686. function getParams(){
  2687. const id = getValue(prcdLinkId.box)
  2688. const xCrdn = getValue(prcdXcrdn.box)
  2689. const yCrdn = getValue(prcdYcrdn.box)
  2690. getParam.LinkInfo = [];
  2691. getParam.LinkInfo.push({
  2692. link_color : 1,
  2693. id : id,
  2694. coordX : xCrdn,
  2695. coordY : yCrdn,
  2696. });
  2697. return getParam;
  2698. }
  2699. function inserLinkText(popupData){
  2700. setValue(prcdLinkId.box, popupData[0].id);
  2701. setValue(prcdXcrdn.box, popupData[0].coordX);
  2702. setValue(prcdYcrdn.box, popupData[0].coordY);
  2703. }
  2704. function crdnChanges(text, num){
  2705. let value = text.value;
  2706. const textBox = text.component
  2707. if(!value || isNaN(value)) return setValue(textBox, '0.0000000');
  2708. value = value.toString();
  2709. if(value.length <= num) return setValue(textBox, value + ".0000000");
  2710. if (!value.includes(".")){
  2711. let front = value.substr(0, num);
  2712. let end = value.substr(num, value.length);
  2713. let zero = "";
  2714. if (end.length < 7) {
  2715. for (let ii = 0; ii < 7 - end.length; ii++) {
  2716. zero += "0";
  2717. }
  2718. }
  2719. if (end.length > 7) end = end.substring(0, 7);
  2720. setValue(textBox, front + "." + end + zero);
  2721. }
  2722. else{
  2723. switch (true) {
  2724. case value.substring(0, value.indexOf(".")) === "":
  2725. setValue(textBox, "0" + value);
  2726. break;
  2727. case value.substring(value.indexOf("."), value.length) === "":
  2728. setValue(textBox, value + "0000000");
  2729. break;
  2730. case value.substring(value.indexOf("."), value.length).length < 7:
  2731. let zero = "";
  2732. for (let ii = 0; ii < 7 - value.substring(value.indexOf(".") + 1, value.length).length; ii++) {
  2733. zero += "0";
  2734. }
  2735. setValue(textBox, value.substring(0, value.indexOf(".")) + value.substring(value.indexOf("."), value.length) + zero);
  2736. break;
  2737. default:
  2738. break;
  2739. }
  2740. }
  2741. }