VM暫存
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
8年前
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>