VM暫存
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

441 рядки
15KB

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