VM暫存
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

main_page.php 18KB

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