VM暫存
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

455 lines
16KB

  1. <!DOCTYPE html>
  2. <html lang="zh-TW">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1">
  7. <meta name="description" content="">
  8. <meta name="author" content="">
  9. <title>歐特儀自動化服務機</title>
  10. <!-- Bootstrap Core CSS -->
  11. <link href="<?=BOOTSTRAPS?>bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
  12. <!-- MetisMenu CSS -->
  13. <link href="<?=BOOTSTRAPS?>bower_components/metisMenu/dist/metisMenu.min.css" rel="stylesheet">
  14. <!-- Timeline CSS -->
  15. <link href="<?=BOOTSTRAPS?>dist/css/timeline.css" rel="stylesheet">
  16. <!-- Custom CSS -->
  17. <link href="<?=BOOTSTRAPS?>dist/css/sb-admin-3.css" rel="stylesheet">
  18. <!-- Morris Charts CSS -->
  19. <link href="<?=BOOTSTRAPS?>bower_components/morrisjs/morris.css" rel="stylesheet">
  20. <!-- Custom Fonts -->
  21. <link href="<?=BOOTSTRAPS?>bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
  22. </head>
  23. <body style="font-family:Microsoft JhengHei;">
  24. <div id="wrapper">
  25. <div id="page-wrapper"><?php /* 主要資料顯示區 */ ?>
  26. <div class="row">
  27. <div class="col-lg-12">
  28. <h1 class="page-header">歐特儀自動化服務機</h1><?php /* 右側小表頭 */ ?>
  29. </div>
  30. <!-- /.col-lg-12 -->
  31. </div>
  32. <!-- /.row -->
  33. <?php /* ----- 查車作業 ----- */ ?>
  34. <div data-items="input_lpr" class="row">
  35. <div class="col-lg-12">
  36. <div class="panel panel-default">
  37. <div class="panel-heading" style="font-size:28px;"><?php /* 資料顯示區灰色小表頭 */ ?>
  38. 車位查詢
  39. </div>
  40. <div class="panel-body">
  41. <div data-rows class="row" style="font-size:28px;">
  42. <div class="col-lg-8">
  43. <form id="fuzzy_search_lpr" role="form" method="post">
  44. <div class="form-group">
  45. <input type="text" id="fuzzy_input" name="fuzzy_input" class="form-control" style="text-transform:uppercase;height:64px;font-size:32px"
  46. placeholder="請輸入車牌關鍵字 ( 3 到 7 碼 ex. 111)"
  47. autofocus required pattern="[A-Za-z0-9]*"
  48. data-validation="length"
  49. data-validation-length="3-7"
  50. data-validation-error-msg="請輸入車牌關鍵字 ( 3 到 7 碼 ex. 111)">
  51. </div>
  52. &nbsp;&nbsp;
  53. <button type="reset" class="btn btn-default" style="font-size:28px;" onclick="$('#fuzzy_search_lpr_msg').text('');">清除</button>
  54. &nbsp;&nbsp;
  55. <span id='fuzzy_search_lpr_msg' style="font-size:28px;color:red;"></span>
  56. &nbsp;&nbsp;
  57. <button type="submit" class="btn btn-large btn-success pull-right" style="font-size:28px;">搜尋車牌</button>
  58. </form>
  59. </div>
  60. </div>
  61. <br/>
  62. <div id="carin_query_list" class="col-lg-12 dataTable_wrapper" style="display:none; font-size:28px;">
  63. <table id="lpr_query_list" class="table table-striped table-bordered table-hover">
  64. <thead>
  65. <tr>
  66. <th style="text-align:center;">車號</th>
  67. <th style="text-align:center;">進場時間</th>
  68. <th style="text-align:center;">在席照片</th>
  69. <th style="text-align:center;">功能</th>
  70. </tr>
  71. </thead>
  72. <tbody id="carin_query_tbody" style="font-size:28px;"></tbody>
  73. </table>
  74. </div><?php /* ----- end of dataTable_wrapper ----- */?>
  75. </div>
  76. <!-- /.panel-body -->
  77. </div>
  78. <!-- /.panel -->
  79. </div>
  80. <!-- /.col-lg-12 -->
  81. </div>
  82. <?php /* ----- 查詢作業(結束) ----- */ ?>
  83. <?php /* ----- 查詢結果 ----- */ ?>
  84. <!-- div data-items="rent_sync" class="row" style="display:none;"-->
  85. <div data-items="output_pks" class="row" style="display:none;">
  86. <div class="col-lg-6">
  87. <div class="panel panel-default">
  88. <div class="panel-heading" style="font-size:28px;"><?php /* 資料顯示區灰色小表頭 */ ?>
  89. 查車結果
  90. </div>
  91. <div class="panel-body" style="margin: 0px auto;">
  92. <div data-rows class="row">
  93. <div class="col-lg-12" style="margin: 0px auto;">
  94. <table class="table table-striped table-bordered table-hover"">
  95. <tbody style="font-size:28px;">
  96. <tr>
  97. <td style="text-align:right;vertical-align: middle;">車號</td>
  98. <td id="show_lpr" style="text-align:left;vertical-align: middle;"></td>
  99. </tr>
  100. <tr>
  101. <td style="text-align:right;vertical-align: middle;">所在樓層</td>
  102. <td id="show_floors" style="text-align:left;vertical-align: middle; font-size:28px; color:blue;"></td>
  103. </tr>
  104. <tr>
  105. <td style="text-align:right;vertical-align: middle;">停入時間</td>
  106. <td id="show_update_time" style="text-align:left;vertical-align: middle;"></td>
  107. </tr>
  108. <tr>
  109. <td colspan="2" style="text-align:center;vertical-align: middle;">
  110. <button type="button" class="btn btn-large btn-success pull-right" style="font-size:28px;" onclick="show_item('input_lpr');">結束查詢</button>
  111. </td>
  112. </tr>
  113. </tbody>
  114. </table>
  115. </div>
  116. <!-- /.col-lg-6 (nested) -->
  117. </div>
  118. <!-- /.row (nested) -->
  119. </div>
  120. <!-- /.panel-body -->
  121. </div>
  122. <!-- /.panel -->
  123. </div>
  124. <div class="col-lg-6">
  125. <div class="panel panel-default">
  126. <div class="panel-heading" style="font-size:28px;">
  127. 在席照片
  128. </div>
  129. </div>
  130. <div class="panel-body" style="margin: 0px auto;">
  131. <div class="col-lg-12" style="margin: 0px auto;">
  132. <table class="table table-striped table-bordered table-hover"">
  133. <tbody>
  134. <tr>
  135. <td colspan="2" style="text-align:center;vertical-align: middle;">
  136. <img id="show_img" height="280" width="400" />
  137. </td>
  138. </tr>
  139. </tbody>
  140. </table>
  141. </div>
  142. </div>
  143. </div>
  144. <!-- /.col-lg-12 -->
  145. </div>
  146. <!-- /#page-wrapper -->
  147. </div>
  148. <!-- /#wrapper -->
  149. <!-- jQuery -->
  150. <script src="<?=BOOTSTRAPS?>bower_components/jquery/dist/jquery.min.js"></script>
  151. <!-- Bootstrap Core JavaScript -->
  152. <script src="<?=BOOTSTRAPS?>bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
  153. <!-- Metis Menu Plugin JavaScript -->
  154. <script src="<?=BOOTSTRAPS?>bower_components/metisMenu/dist/metisMenu.min.js"></script>
  155. <!-- Morris Charts JavaScript -->
  156. <script src="<?=BOOTSTRAPS?>bower_components/raphael/raphael-min.js"></script>
  157. <!--script src="<?=BOOTSTRAPS?>bower_components/morrisjs/morris.min.js"></script-->
  158. <!--script src="<?=BOOTSTRAPS?>js/morris-data.js"></script-->
  159. <!-- virtual keyboard -->
  160. <link href="<?=WEB_LIB?>virtual-keyboard/css/jquery-ui.min.css" rel="stylesheet">
  161. <link href="<?=WEB_LIB?>virtual-keyboard/css/keyboard.css" rel="stylesheet">
  162. <script src="<?=WEB_LIB?>virtual-keyboard/js/jquery-ui.min.js"></script>
  163. <script src="<?=WEB_LIB?>virtual-keyboard/js/jquery.keyboard.js"></script>
  164. <script src="<?=WEB_LIB?>virtual-keyboard/js/jquery.keyboard.extension-caret.js"></script>
  165. <!-- alertify -->
  166. <link href="<?=WEB_LIB?>css/alertify.core.css" rel="stylesheet">
  167. <link href="<?=WEB_LIB?>css/alertify.bootstrap.css" rel="stylesheet">
  168. <script src="<?=WEB_LIB?>js/alertify.min.js"></script>
  169. <!-- moment -->
  170. <script src="<?=WEB_LIB?>js/moment.min.js"></script>
  171. <!-- jQuery validate -->
  172. <script src="<?=WEB_LIB?>form-validator/jquery.form-validator.min.js"></script>
  173. <!-- Custom Theme JavaScript -->
  174. <script src="<?=BOOTSTRAPS?>dist/js/sb-admin-2.js"></script>
  175. <div id="works" style="display:none;"></div><?php /* 作為浮動顯示區之用 */ ?>
  176. </body>
  177. </html>
  178. <script>
  179. <?php /* alertify function */ ?>
  180. function alertify_count_down($msg, $delay)
  181. {
  182. alertify.set({delay : $delay});
  183. alertify.log($msg);
  184. }
  185. function alertify_log($msg)
  186. {
  187. alertify.set({delay : 2000});
  188. alertify.log($msg);
  189. }
  190. function alertify_error($msg)
  191. {
  192. alertify.set({delay : 2000});
  193. alertify.error($msg);
  194. }
  195. function alertify_success($msg)
  196. {
  197. alertify.set({delay : 2000});
  198. alertify.success($msg);
  199. }
  200. function alertify_msg($msg)
  201. {
  202. alertify.set({ labels: {
  203. ok : "確定"
  204. } });
  205. alertify.alert($msg, function (e){
  206. // do nothing
  207. });
  208. }
  209. function reset_query()
  210. {
  211. $("#fuzzy_input").val("");
  212. $("#carin_query_list").hide();
  213. return false;
  214. }
  215. var refreshIntervalId = 0; // timer id
  216. <?php /* 顯示指定項目 */ ?>
  217. function show_item(tags)
  218. {
  219. // 查車
  220. reset_query();
  221. // 付款
  222. $("#payment_lpr").val("");<?php /* 清除車號欄位 */ ?>
  223. $("#show_member_name").val("");
  224. $("#show_payment_lpr").val("");
  225. $("#show_end_date").val("");
  226. $("#show_next_start").val("");
  227. $("#show_next_end").val("");
  228. $("#show_amt").val("");
  229. $("#invoice_receiver").val("");
  230. $("#company_no").val("");
  231. $("#email").val("");
  232. $("#mobile").val("");
  233. $("#show_order_no").val("");
  234. $("#show_amt_detail").val("");
  235. $("#show_balance_time_limit_countdown").val("");
  236. if(tags.indexOf('payment_data') < 0 && tags.indexOf('price_data') < 0){
  237. clearInterval(refreshIntervalId); // 消除倒數計時timer
  238. }
  239. $("[data-items]").hide();
  240. $("[data-items="+tags+"]").show();
  241. return false;
  242. }
  243. <?php /* 顯示指定項目, 不修改資料 */ ?>
  244. function show_item_without_change(tags)
  245. {
  246. $("[data-items]").hide();
  247. $("[data-items="+tags+"]").show();
  248. return false;
  249. }
  250. // 查車牌
  251. function check_lpr(idx)
  252. {
  253. $.ajax
  254. ({
  255. url: "<?=APP_URL?>q_pks",
  256. dataType:"json",
  257. type:"post",
  258. data:{ "lpr" : $("#lpr_"+idx).text() },
  259. success:function(jdata)
  260. {
  261. if(!jdata)
  262. {
  263. //alertify_msg("您的愛車可能在頂樓! 謝謝");
  264. alertify_msg("找不到。。謝謝");
  265. return false;
  266. }
  267. else if (jdata["pksno"] == "0")
  268. {
  269. alertify_msg("查無資料,請鍵入正確資料");
  270. return false;
  271. }
  272. $("#show_lpr").text($("#lpr_"+idx).text());
  273. //$("#show_floors").html(jdata["group_name"]+"<br/> ( 車格: " + jdata["pksno"].charAt(0) + "-" + jdata["pksno"].substr(2) +" )");
  274. //$("#show_floors").html(jdata["group_name"]+"<br/> ( 車格: " + jdata["pksno"] +" )");
  275. $("#show_floors").html(jdata["group_name"]+"<br/> ( 車格: " + jdata["pksno"].substr(-3, 3) +" )");
  276. $("#show_update_time").text(jdata["in_time"]);
  277. $("#show_img").attr("src", "<?=SERVER_URL?>pkspic/"+jdata["pic_name"]);
  278. show_item("output_pks");
  279. // 顯示位置圖
  280. if (jdata["group_id"]){
  281. //var groupSplit = jdata["group_id"].split('-'); // ex. B3-3
  282. //var floor = groupSplit[0];
  283. var floor = jdata["floors"];
  284. var x = jdata["posx"];
  285. var y = jdata["posy"];
  286. // 畫出指定位置
  287. AltobObject.AtsMap.drawPosition(floor, x, y);
  288. // show map
  289. $("[data-items="+floor+"]").show();
  290. }
  291. }
  292. });
  293. return false;
  294. }
  295. $(document).ready(function()
  296. {
  297. <?php /* 鎖右鍵 */ ?>
  298. $(document).bind('contextmenu', function (e) {
  299. e.preventDefault();
  300. });
  301. <?php /* 車牌模糊搜尋 */ ?>
  302. $("#fuzzy_search_lpr").submit(function(event)
  303. {
  304. event.preventDefault();
  305. // 清除搜尋提示訊息
  306. $("#fuzzy_search_lpr_msg").text('');
  307. if(! $("#fuzzy_search_lpr").isValid()) return false;
  308. $.ajax
  309. ({
  310. url: "<?=APP_URL?>q_fuzzy_pks",
  311. type: "post",
  312. dataType:"json",
  313. data: $(this).serialize(),
  314. success: function(jdata)
  315. {
  316. if (!jdata)
  317. {
  318. //alert("查無此車 !");
  319. $("#fuzzy_search_lpr_msg").text('查無此車');
  320. return false;
  321. }
  322. // 清除搜尋提示訊息
  323. $("#fuzzy_search_lpr_msg").text('');
  324. var tmp_str_array = [];
  325. for(idx in jdata.result)
  326. {
  327. tmp_str_array = tmp_str_array.concat(
  328. [
  329. "<tr><td id='lpr_", idx, "' style='text-align:center;vertical-align:middle;'>", jdata.result[idx]['lpr'] ,
  330. "</td><td id='in_time_", idx, "'style='text-align:center;vertical-align:middle;'>", jdata.result[idx]['in_time'],
  331. "</td><td id='pks_pic_path_", idx, "'style='text-align:center;vertical-align:middle;'><img height='57' width='150' src='", jdata.result[idx]['pks_pic_path'], "' />",
  332. "</td><td style='text-align:center;vertical-align:middle;'><button class='btn btn-large btn-success' style='font-size:28px;' onclick='check_lpr(", idx, ");'>查詢</button>" ,
  333. "</td></tr>"
  334. ]);
  335. }
  336. $("#carin_query_tbody").html(tmp_str_array.join(''));
  337. $("#carin_query_list").show();
  338. }
  339. });
  340. });
  341. // Custom: altob-input
  342. // ********************
  343. $('#fuzzy_input').keyboard({
  344. css : {
  345. // input & preview styles
  346. input : 'ui-widget-content ui-corner-all',
  347. // keyboard container - this wraps the preview area (if `usePreview` is true) and all keys
  348. container : 'ui-widget-content ui-widget ui-corner-all ui-helper-clearfix',
  349. // default keyboard button state, these are applied to all keys, the remaining css options are toggled as needed
  350. buttonDefault : 'ui-state-default ui-corner-all',
  351. // hovered button
  352. buttonHover : 'ui-state-hover',
  353. // Action keys (e.g. Accept, Cancel, Tab, etc); this replaces the "actionClass" option
  354. buttonAction : 'ui-state-active',
  355. // used when disabling the decimal button {dec} when a decimal exists in the input area
  356. buttonDisabled : 'ui-state-disabled'
  357. },
  358. display: {
  359. 'bksp' : '\u2190',
  360. 'default' : 'ABC',
  361. 'accept' : '確 認'
  362. },
  363. layout: 'custom',
  364. customLayout: {
  365. 'default': [
  366. '1 2 3 4 5 6 7 8 9 0 {bksp}',
  367. 'Q W E R T Y U I O P',
  368. 'A S D F G H J K L',
  369. 'Z X C V B N M {accept}'
  370. ]
  371. }
  372. });
  373. // 定時自動更新頁面
  374. (function autoReloadPage(){
  375. var pageReloadTimeMillis = 60000; // 頁面, 自動重新載入週期 ( 1 min )
  376. var pageCheckReloadTimeMillis = 10000; // 頁面, 判斷重新載入週期 ( 10 sec )
  377. var pageShowReloadTimeMillis = 50000; // 頁面, 開始顯示倒數週期 ( 50 sec )
  378. var aliveTime = moment();
  379. var countdownTimeMillis = pageReloadTimeMillis;
  380. $(document.body).bind("mousemove keypress", function(e) {
  381. aliveTime = moment();
  382. countdownTimeMillis = pageReloadTimeMillis;
  383. });
  384. function refresh() {
  385. if(moment() - aliveTime >= pageReloadTimeMillis) // 如果頁面沒動作, 才更新
  386. window.location.reload(true);
  387. else{
  388. countdownTimeMillis -= pageCheckReloadTimeMillis;
  389. if(countdownTimeMillis < pageCheckReloadTimeMillis)
  390. {
  391. alertify_count_down("重新載入中..請稍候..", pageCheckReloadTimeMillis);
  392. }
  393. else if(countdownTimeMillis < pageShowReloadTimeMillis){
  394. alertify_count_down("倒數: " + (countdownTimeMillis / 1000) + " 秒, 重新載入畫面..", pageCheckReloadTimeMillis);
  395. }
  396. setTimeout(refresh, pageCheckReloadTimeMillis);
  397. }
  398. }
  399. setTimeout(refresh, pageCheckReloadTimeMillis);
  400. })();
  401. });
  402. </script>