PageRenderTime 27ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/sub/work_his.php

https://gitlab.com/dev.essetel/sjnuri
PHP | 505 lines | 385 code | 86 blank | 34 comment | 40 complexity | b47f2e591e3dc56b96b3c4538a2004de MD5 | raw file
  1. <?php
  2. if (!defined('_INDEX_')) define('_INDEX_', true);
  3. // if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
  4. include_once('./_common.php');
  5. $iu_title = "근무변경신청 내역";
  6. include_once(G5_THEME_PATH . '/head.php');
  7. include_once(G5_PLUGIN_PATH . '/jquery-ui/datepicker.php'); // 달력
  8. // $sql = "SELECT * FROM app5iu_vacation_management
  9. // WHERE mb_id = '{$member['mb_id']}'
  10. // ORDER BY vm_wdate desc";
  11. //2021-11-15.yun 추가
  12. if(!$stx_y){
  13. $stx_y = date("Y");
  14. }
  15. if(!$stx_m){
  16. $stx_m = date("n");
  17. }
  18. if(!$sfl){
  19. $sfl = "mk_chdate";
  20. }
  21. $prev_month = $stx_m - 1;
  22. $next_month = $stx_m + 1;
  23. $prev_year = $next_year = $stx_y;
  24. if($stx_m == 1){
  25. $prev_month = 12;
  26. $prev_year = $stx_y - 1;
  27. }else if($stx_m == 12){
  28. $next_month = 1;
  29. $next_year = $stx_y + 1;
  30. }
  31. $preyear = $stx_y - 1;
  32. $nextyear = $stx_y + 1;
  33. //2021-11-15.yun 추가 끝
  34. if ($stx_m < 10 && $stx_m) {
  35. $stx_m = '0' . (int)$stx_m;
  36. }
  37. $sql_common = " from app5iu_work ";
  38. $sql_search = " where (1) and mb_id = '{$member['mb_id']}'";
  39. /*
  40. if ($stx_y) {
  41. $sql_search .= " and ( ";
  42. switch ($sfl) {
  43. default:
  44. $sql_search .= "substring({$sfl},1,7) like CONCAT('{$stx_y}','-','{$stx_m}','%') ";
  45. // echo $sql_search;
  46. // echo $sql_search;
  47. // break;
  48. }
  49. $sql_search .= " ) ";
  50. }*/
  51. if ($stx_y) {
  52. $sql_search .= " and ( ";
  53. //$sql_search .= "substring({$sfl},1,7) like CONCAT('{$stx_y}','-','{$stx_m}','%') ";
  54. $sql_search .= "mk_chdate like CONCAT('{$stx_y}','-','{$stx_m}','%') ";
  55. $sql_search .= " ) ";
  56. }
  57. if (!$sst) {
  58. $sst = "ve_idx";
  59. $sod = "desc";
  60. }
  61. $sql_order = " order by wk_wdate desc ";
  62. //$sql = " select count(*) as cnt {$sql_common} {$sql_search} {$sql_order} ";
  63. $row = sql_fetch($sql);
  64. $total_count = $row['cnt'];
  65. $rows = $config['cf_page_rows'];
  66. $total_page = ceil($total_count / $rows); // 전체 페이지 계산
  67. if ($page < 1) $page = 1; // 페이지가 없으면 첫 페이지 (1 페이지)
  68. $from_record = ($page - 1) * $rows; // 시작 열을 구함
  69. $sql = " select * {$sql_common} {$sql_search} {$sql_order} limit {$from_record}, {$rows} ";
  70. $result = sql_query($sql);
  71. ?>
  72. <style>
  73. .his_mid_box {
  74. padding-bottom: 5px;
  75. }
  76. </style>
  77. <!-- 초과근무내역 조회 -->
  78. <div id="vacation_his">
  79. <div class="contents_box">
  80. <div class="con_line">
  81. <!-- <div class="his_top_box his_card">
  82. <div class="his_top_inner cf">
  83. <?php
  84. $sql = "SELECT SUM(vme_time) as vme_time {$sql_common} {$sql_search}";
  85. $row_va = sql_fetch($sql);
  86. $row_va['vme_time'] = iuf_timeto($row_va['vme_time'], 'h');
  87. ?>
  88. <div class="his_top_text">
  89. <p> 유료도로 지불금</p>
  90. </div>
  91. <dv class="his_top_data">
  92. <p><?php echo $row_va['vme_time'] ?><span>시간</span></p>
  93. </dv>
  94. </div>
  95. </div> -->
  96. <!-- his_top_box -->
  97. <div class="his_mid_box his_card">
  98. <div class="his_mid_inner">
  99. <!--
  100. <p>월별휴가내역 조회</p>
  101. -->
  102. </div>
  103. <div class="his_mid_inner cf">
  104. <!-- <form method="get" id="fsearch" name="fsearch" action="" class="in_his_form cf">
  105. <input type="hidden" name="sfl" value="mk_chdate">
  106. <div class="his_select_box cf" style="width:30%">
  107. <div class="select_box" style="width:60px">
  108. <input type="text" name="stx_y" id="stx_y" value="<?php echo $stx_y ? $stx_y : date('Y') ?>">
  109. </div>
  110. <div class="select_text">
  111. <span></span>
  112. </div>
  113. </div>
  114. <div class="his_select_box cf" style="width:24%">
  115. <div class="select_box" style="width:40px">
  116. <input type="text" name="stx_m" id="stx_m" value="<?php echo $stx_m ? $stx_m : date('m') ?>">
  117. </div>
  118. <div class="select_text">
  119. <span></span>
  120. </div>
  121. </div>
  122. <div class="search_bt">
  123. <button type="submit">검색</button>
  124. </div>
  125. </form> -->
  126. <form method="get" id="fsearch" name="fsearch" class="in_his_form cf">
  127. <input type="hidden" name="sfl" value="vm_sdate">
  128. <div class="his_select_box cf" style="">
  129. <div class="search_bt">
  130. <button type=""><a href="./work_his.php?stx_y=<?php echo $prev_year;?>&stx_m=<?php echo $prev_month ;?>">이전달</a></button>
  131. </div>
  132. </div>
  133. <div class="his_select_box cf" style="">
  134. <div class="select_box" style="width:60px">
  135. <input type="text" name="stx_y" id="stx_y" value="<?php echo $stx_y ?>">
  136. </div>
  137. <div class="select_text">
  138. <span></span>
  139. </div>
  140. </div>
  141. <div class="his_select_box cf" style="">
  142. <div class="select_box" style="width:40px">
  143. <input type="text" name="stx_m" id="stx_m" value="<?php echo $stx_m ?>">
  144. </div>
  145. <div class="select_text">
  146. <span></span>
  147. </div>
  148. </div>
  149. <div class="his_select_box cf" style="">
  150. <div class="search_bt">
  151. <button type=""><a href="./work_his.php?stx_y=<?php echo $next_year;?>&stx_m=<?php echo $next_month;?>">다음달</a></button>
  152. </div>
  153. </div>
  154. </form>
  155. </div>
  156. </div>
  157. <!--his_mid_box-->
  158. <div class="his_card2">
  159. <div class="his_top_text">
  160. <p> 변경신청 내역</p>
  161. </div>
  162. <table class="table his_table">
  163. <colgroup>
  164. <col width="25%">
  165. <col width="25%">
  166. <col width="25%">
  167. </colgroup>
  168. <thead>
  169. <tr>
  170. <th>신청날짜</th>
  171. <th>변경날짜</th>
  172. <th>형태</th>
  173. <th>상테</th>
  174. </tr>
  175. </thead>
  176. <tbody>
  177. <?php
  178. for ($i = 0; $row = sql_fetch_array($result); $i++) {
  179. switch ($row['wk_state']) {
  180. case '결재중':
  181. $text_color = 'color_gray';
  182. break;
  183. case '승인':
  184. $text_color = 'color_blue';
  185. break;
  186. case '거절':
  187. $text_color = 'color_red';
  188. break;
  189. }
  190. ?>
  191. <tr class="edit_work" wk_idx="<?php echo $row['wk_idx'] ?>">
  192. <td><?php echo $row['wk_date'] ?></td>
  193. <td><?php echo $row['mk_chdate'] ?></td>
  194. <td>
  195. <?php echo $row['wk_type'] ?>
  196. </td>
  197. <td><?php echo $row['wk_state'] ?></td>
  198. </tr>
  199. <?php } ?>
  200. <?php
  201. if ($i == 0)
  202. echo "<tr><td colspan=\"4\" class=\"empty_table\">자료가 없습니다.</td></tr>";
  203. ?>
  204. </tbody>
  205. </table>
  206. </div>
  207. <div class="paging_box cf">
  208. <?php echo get_paging(G5_IS_MOBILE ? $config['cf_mobile_pages'] : $config['cf_write_pages'], $page, $total_page, '?' . $qstr . '&amp;page='); ?>
  209. </div>
  210. <div class="his_calendar">
  211. <div id="calendarForm"></div>
  212. </div>
  213. <style>
  214. .custom_calendar_table {
  215. width: 100%;
  216. }
  217. .custom_calendar_table td {
  218. text-align: center;
  219. }
  220. .custom_calendar_table thead.cal_date th {
  221. font-size: 1.5rem;
  222. }
  223. .custom_calendar_table thead.cal_date th button {
  224. font-size: 1.5rem;
  225. background: none;
  226. border: none;
  227. }
  228. .custom_calendar_table thead.cal_week th {
  229. background-color: #608dff;
  230. color: #fff;
  231. }
  232. .custom_calendar_table tbody td {
  233. cursor: pointer;
  234. }
  235. .custom_calendar_table tbody td:nth-child(1) {
  236. color: red;
  237. }
  238. .custom_calendar_table tbody td:nth-child(7) {
  239. color: #608dff;
  240. }
  241. .custom_calendar_table tbody td.select_day {
  242. background-color: #608dff;
  243. color: #fff;
  244. }
  245. .ch_day_bg {
  246. background-color: #608dff;
  247. color: white !important;
  248. }
  249. </style>
  250. </div>
  251. </div>
  252. <!--contents_box-->
  253. </div>
  254. <script>
  255. $(".edit_work").click(function() {
  256. var wk_idx = $(this).attr("wk_idx");
  257. location.href = "/sub/work.php?wk_idx=" + wk_idx;
  258. });
  259. </script>
  260. <?php
  261. if ($is_admin) {
  262. $member['mb_id'] = '1120';
  263. }
  264. if (!$stx_m) $stx_y = date('Y');
  265. if (!$stx_m) $stx_m = date('m');
  266. // $table_name = "reserve_schedule_info_{$stx_y}_{$stx_m}";
  267. // $sql = " select * from $table_name where drvseq = '{$member['mb_id']}' and breaktime = 0 group by left(starttime,10) ORDER BY starttime ";
  268. $table_name = "app5iu_work";
  269. $sql = " select * from $table_name where mb_id = '{$member['mb_id']}' and wk_date like '{$stx_y}-{$stx_m}%'; ";
  270. $result = sql_query($sql);
  271. for ($i = 0; $row = sql_fetch_array($result); $i++) {
  272. //$modi_time = date("Y-m-d H:i:s", strtotime("-3 days"));
  273. $breaktime = '';
  274. switch ($row['breaktime']) {
  275. case "0":
  276. $breaktime = '운행시간';
  277. break;
  278. case "1":
  279. $breaktime = '휴게시간';
  280. break;
  281. }
  282. ?>
  283. <!-- <input type="hidden" id="is_month" value="<?php echo substr($row['starttime'], 5, 2) ?>">
  284. <input type="hidden" id="is_days_<?php echo substr($row['starttime'], 8, 2) ?>" value="true"> -->
  285. <input type="hidden" id="is_month" value="<?php echo substr($row['mk_chdate'], 5, 2) ?>">
  286. <input type="hidden" id="is_days_<?php echo substr($row['mk_chdate'], 8, 2) ?>" value="true">
  287. <?php
  288. }
  289. ?>
  290. <script>
  291. $(function() {
  292. $(".datepicker").datepicker({
  293. changeMonth: true,
  294. changeYear: true,
  295. dateFormat: "yy-mm-dd",
  296. showButtonPanel: true,
  297. yearRange: "c-99:c+99",
  298. minDate: "+3d;",
  299. maxDate: "+365d;"
  300. });
  301. });
  302. (function() {
  303. calendarMaker($("#calendarForm"), new Date());
  304. })();
  305. var nowDate = new Date();
  306. function calendarMaker(target, date) {
  307. if (date == null || date == undefined) {
  308. date = new Date();
  309. }
  310. nowDate = date;
  311. //yun 추가
  312. let p_year = $("#stx_y").val();
  313. let p_month = $("#stx_m").val();
  314. let p_date = p_year + "-" + p_month;
  315. nowDate = new Date(p_date);
  316. if ($(target).length > 0) {
  317. var year = nowDate.getFullYear();
  318. var month = nowDate.getMonth() + 1;
  319. $(target).empty().append(assembly(year, month));
  320. } else {
  321. console.error("custom_calendar Target is empty!!!");
  322. return;
  323. }
  324. var thisMonth = new Date(nowDate.getFullYear(), nowDate.getMonth(), 1);
  325. var thisLastDay = new Date(nowDate.getFullYear(), nowDate.getMonth() + 1, 0);
  326. var getM = thisMonth.getMonth() + 1;
  327. var tag = "<tr>";
  328. var cnt = 0;
  329. //빈 공백 만들어주기
  330. for (i = 0; i < thisMonth.getDay(); i++) {
  331. tag += "<td></td>";
  332. cnt++;
  333. }
  334. //날짜 채우기
  335. for (i = 1; i <= thisLastDay.getDate(); i++) {
  336. if (i < 10) {
  337. var di = '0' + (i);
  338. } else {
  339. var di = (i);
  340. }
  341. var ch_day_bg = '';
  342. var ifdays_id = "#is_days_" + di;
  343. var ifdays = $(ifdays_id).val();
  344. var ifmonths = $("#is_month").val();
  345. if (getM == ifmonths) {
  346. if (ifdays == 'true') {
  347. var ch_day_bg = 'ch_day_bg';
  348. }
  349. }
  350. if (cnt % 7 == 0) {
  351. tag += "<tr>";
  352. }
  353. tag += "<td class='" + ch_day_bg + "'>" + i + "</td>";
  354. cnt++;
  355. if (cnt % 7 == 0) {
  356. tag += "</tr>";
  357. }
  358. }
  359. $(target).find("#custom_set_date").append(tag);
  360. calMoveEvtFn();
  361. function assembly(year, month) {
  362. var calendar_html_code =
  363. "<table class='custom_calendar_table'>" +
  364. "<colgroup>" +
  365. "<col style='width:81px'/>" +
  366. "<col style='width:81px'/>" +
  367. "<col style='width:81px'/>" +
  368. "<col style='width:81px'/>" + "<col style='width:81px'/>" +
  369. "<col style='width:81px'/>" +
  370. "<col style='width:81px'/>" +
  371. "</colgroup>" +
  372. "<thead class='cal_date'>" +
  373. "<th><button type='button' class='prev'></button></th>" +
  374. "<th colspan='5'><p><span>" + year + "</span>년 <span>" + month + "</span>월</p></th>" +
  375. "<th><button type='button' class='next'></button></th>" +
  376. "</thead>" +
  377. //"<thead class='cal_week'>" +
  378. "<thead style='background-color:#999999'>" +
  379. "<th>일</th><th>월</th><th>화</th><th>수</th><th>목</th><th>금</th><th>토</th>" +
  380. "</thead>" +
  381. "<tbody id='custom_set_date'>" +
  382. "</tbody>" +
  383. "</table>";
  384. return calendar_html_code;
  385. }
  386. function calMoveEvtFn() {
  387. //전달 클릭
  388. $(".custom_calendar_table").on("click", ".prev", function() {
  389. nowDate = new Date(nowDate.getFullYear(), nowDate.getMonth() - 1, nowDate.getDate());
  390. calendarMaker($(target), nowDate);
  391. });
  392. //다음날 클릭
  393. $(".custom_calendar_table").on("click", ".next", function() {
  394. nowDate = new Date(nowDate.getFullYear(), nowDate.getMonth() + 1, nowDate.getDate());
  395. calendarMaker($(target), nowDate);
  396. });
  397. //일자 선택 클릭
  398. // $(".custom_calendar_table").on("click", "td", function () {
  399. // $(".custom_calendar_table .select_day").removeClass("select_day");
  400. // $(this).removeClass("select_day").addClass("select_day");
  401. // });
  402. }
  403. }
  404. </script>
  405. </div>
  406. <script>
  407. $(function() {
  408. $(".datepicker").datepicker({
  409. changeMonth: true,
  410. changeYear: true,
  411. dateFormat: "yy-mm-dd",
  412. showButtonPanel: true,
  413. yearRange: "c-99:c+99",
  414. maxDate: "+365d;"
  415. });
  416. });
  417. </script>
  418. <?php
  419. include_once(G5_THEME_PATH . '/tail.php');