VM暫存
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

847 lines
37KB

  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><?=STATION_NAME?> - 歐特儀自動化服務機</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-2.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. <!-- Navigation -->
  26. <nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0">
  27. <div class="navbar-header">
  28. <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
  29. <span class="sr-only">Toggle navigation</span>
  30. <span class="icon-bar"></span>
  31. <span class="icon-bar"></span>
  32. <span class="icon-bar"></span>
  33. </button>
  34. <a class="navbar-brand" href=""><?=STATION_NAME?>停車場</a>
  35. </div>
  36. <!-- /.navbar-top-links(左側選單) -->
  37. <div class="navbar-default sidebar" role="navigation">
  38. <div class="sidebar-nav navbar-collapse">
  39. <ul class="nav" id="side-menu">
  40. <li>
  41. <a href="#"><i class="fa fa-user fa-fw"></i>服務項目<span class="fa arrow"></span></a>
  42. <ul class="nav nav-second-level">
  43. <li>
  44. <a href="#" onclick="show_item('payment');">繳月租</a>
  45. </li>
  46. <li>
  47. <a href="#" onclick="show_item('car_lock');">會員鎖車</a>
  48. </li>
  49. </ul>
  50. <!-- /.nav-second-level -->
  51. </li>
  52. </ul>
  53. </div>
  54. <!-- /.sidebar-collapse -->
  55. </div>
  56. <!-- /.navbar-static-side -->
  57. </nav>
  58. <div id="page-wrapper"><?php /* 主要資料顯示區 */ ?>
  59. <div class="row">
  60. <div class="col-lg-12">
  61. <h1 class="page-header"><?=STATION_NAME?> - 歐特儀自動化服務機</h1><?php /* 右側小表頭 */ ?>
  62. </div>
  63. <!-- /.col-lg-12 -->
  64. </div>
  65. <!-- /.row -->
  66. <?php /* ----- 付款 ----- */ ?>
  67. <div data-items="payment" class="row">
  68. <div class="col-lg-12">
  69. <div class="panel panel-default">
  70. <div class="panel-heading"><?php /* 資料顯示區灰色小表頭 */ ?>
  71. 繳月租
  72. </div>
  73. <div class="panel-body">
  74. <div data-rows class="row">
  75. <div class="col-lg-6">
  76. <form id="payment_form" role="form" method="post">
  77. <div class="form-group">
  78. <label>車牌號碼</label>
  79. <input type="text" id="payment_lpr" class="form-control" style="text-transform:uppercase" placeholder="限英數字" autofocus required pattern="[A-Za-z0-9]*" />
  80. </div>
  81. <button type="submit" class="btn btn-default"onclick="do_payment(event);">確定</button>
  82. <button type="reset" class="btn btn-default">重填</button>
  83. </form>
  84. </div>
  85. <!-- /.col-lg-6 (nested) -->
  86. </div>
  87. </div>
  88. <!-- /.panel-body -->
  89. </div>
  90. <!-- /.panel -->
  91. </div>
  92. <!-- /.col-lg-12 -->
  93. </div>
  94. <?php /* ----- 付款(結束) ----- */ ?>
  95. <?php /* ----- 帳單明細顯示 ----- */ ?>
  96. <div data-items="price_data" class="row" style="display:none;">
  97. <div class="col-lg-12">
  98. <div class="panel panel-default">
  99. <div class="panel-heading"><?php /* 資料顯示區灰色小表頭 */ ?>
  100. 帳單明細
  101. </div>
  102. <div class="panel-body">
  103. <div data-rows class="row">
  104. <div class="col-lg-12">
  105. <div class="dataTable_wrapper">
  106. <table class="table table-striped table-bordered table-hover">
  107. <thead>
  108. <tr>
  109. <th style="text-align:center;"></th>
  110. <th style="text-align:center;">說明</th>
  111. <th style="text-align:center;">結算</th>
  112. </tr>
  113. <tr id="price_data_list" style="display:none;">
  114. <td data-tag="p_no" style="text-align:center;vertical-align: middle;"></td>
  115. <td data-tag="p_meta" style="text-align:left;vertical-align: middle;"></td>
  116. <td data-tag="p_result" style="text-align:left;vertical-align: middle;"></td>
  117. </tr>
  118. </thead>
  119. <tbody id="price_data_tbody" style="font-size:10px;"></tbody>
  120. <tr>
  121. <td style="text-align:left;vertical-align: middle;">
  122. </td>
  123. <td style="text-align:left;vertical-align: middle;">
  124. </td>
  125. <td style="text-align:left;vertical-align: middle;">
  126. </td>
  127. </tr>
  128. <tr>
  129. <td style="text-align:left;vertical-align: middle;">
  130. </td>
  131. <td style="text-align:center;vertical-align: middle;">
  132. </td>
  133. <td style="text-align:center;vertical-align: middle;">
  134. </td>
  135. </tr>
  136. <tr>
  137. <td style="text-align:left;vertical-align: middle;">
  138. </td>
  139. <td style="text-align:center;vertical-align: middle;">
  140. 時間加總
  141. </td>
  142. <td style="text-align:center;vertical-align: middle;">
  143. 費用加總
  144. </td>
  145. </tr>
  146. <tr>
  147. <td style="text-align:left;vertical-align: middle;">
  148. </td>
  149. <td style="text-align:center;vertical-align: middle;">
  150. <span id="show_amt_detail_time"></span>
  151. </td>
  152. <td style="text-align:center;vertical-align: middle;">
  153. <span id="show_amt_detail_price"></span>
  154. </td>
  155. </tr>
  156. <tr>
  157. <td style="text-align:left;vertical-align: middle;">
  158. </td>
  159. <td style="text-align:center;vertical-align: middle;">
  160. </td>
  161. <td style="text-align:center;vertical-align: middle;">
  162. <button type="button" class="btn btn-default" onclick="show_item_without_change('payment_data');">返回結帳畫面</button>
  163. </td>
  164. </tr>
  165. </table>
  166. </div>
  167. </div>
  168. <!-- /.col-lg-6 (nested) -->
  169. </div>
  170. <?php /* ----- 報表清單(結束) ----- */ ?>
  171. </div>
  172. <!-- /.panel-body -->
  173. </div>
  174. <!-- /.panel -->
  175. </div>
  176. <!-- /.col-lg-12 -->
  177. </div>
  178. <?php /* ----- 帳單明細顯示(結束) ----- */ ?>
  179. <?php /* ----- 帳單查詢結果 ----- */ ?>
  180. <!-- div data-items="rent_sync" class="row" style="display:none;"-->
  181. <div data-items="payment_data" class="row" style="display:none;">
  182. <div class="col-lg-12">
  183. <div class="panel panel-default">
  184. <div class="panel-heading"><?php /* 資料顯示區灰色小表頭 */ ?>
  185. 帳單查詢結果
  186. </div>
  187. <div class="panel-body" style="margin: 0px auto;">
  188. <div data-rows class="row">
  189. <div class="col-lg-6" style="margin: 0px auto;">
  190. <form id="payment_data" role="form" method="post">
  191. <table class="table table-striped table-bordered table-hover"">
  192. <tbody id="available_curr_tbody" style="font-size:14px;">
  193. <tr>
  194. <td style="text-align:right;vertical-align: middle;" width="20%">會員姓名</td>
  195. <td id="show_member_name" style="text-align:left;vertical-align:middle;text-transform:uppercase;"></td>
  196. </tr>
  197. <tr>
  198. <td style="text-align:right;vertical-align: middle;" width="20%">車號</td>
  199. <td id="show_payment_lpr" style="text-align:left;vertical-align:middle;text-transform:uppercase;"></td>
  200. </tr>
  201. <tr>
  202. <td style="text-align:right;vertical-align: middle;">到期日</td>
  203. <td id="show_end_date" style="text-align:left;vertical-align: middle;"></td>
  204. </tr>
  205. <tr>
  206. <td style="text-align:right;vertical-align: middle;">次期起始日</td>
  207. <td id="show_next_start" style="text-align:left;vertical-align: middle;"></td>
  208. </tr>
  209. <tr>
  210. <td style="text-align:right;vertical-align: middle;">次期到期日</td>
  211. <td id="show_next_end" style="text-align:left;vertical-align: middle;"></td>
  212. </tr>
  213. <tr>
  214. <td style="text-align:right;vertical-align: middle;">金額 (NTD)</td>
  215. <td id="show_amt" style="text-align:left;vertical-align: middle;"></td>
  216. </tr>
  217. <tr class="form-group"style="display:none;">
  218. <td style="text-align:right;vertical-align: middle;">發票載具 <br/>(手機條碼)</td>
  219. <td style="text-align:left;vertical-align: middle;">
  220. <input type="text" id="invoice_receiver" class="form-control" placeholder="如不要發票請留空白"
  221. data-validation="custom"
  222. data-validation-regexp="^$|^(?=.{7}$)([A-Za-z0-9]+)$|^(?=.{8}$)\u002F([A-Za-z0-9]+)$"
  223. data-validation-error-msg="請輸入正確載具<br/>格式: / + 7碼 <br/>(共8碼)"
  224. />
  225. </td>
  226. </tr>
  227. <tr class="form-group" style="display:none;">
  228. <td style="text-align:right;vertical-align: middle;"></td>
  229. <td style="text-align:left;vertical-align: middle; color: red;">
  230. 若發票載具留空白,發票將自動送個社福團體
  231. </td>
  232. </tr>
  233. <tr class="form-group">
  234. <td style="text-align:right;vertical-align: middle;">公司統編</td>
  235. <td style="text-align:left;vertical-align: middle;">
  236. <input type="tel" id="company_no" class="form-control" placeholder="如不打統編請留空白"
  237. data-validation="custom"
  238. data-validation-optional="true"
  239. data-validation-regexp="^(?=.{8}$)([0-9]+)$"
  240. data-validation-error-msg="請輸入正確統編<br/>例如:80682490"
  241. data-validation-error-msg-container="#company_no_error_msg"
  242. />
  243. <span id="company_no_error_msg"></span>
  244. </td>
  245. </tr>
  246. <tr class="form-group">
  247. <td style="text-align:right;vertical-align: middle;">電子信箱</td>
  248. <td style="text-align:left;vertical-align: middle;">
  249. <input type="email" id="email" class="form-control" placeholder="發票將寄信通知"
  250. data-validation="email"
  251. data-validation-optional="true"
  252. data-validation-error-msg="請輸入正確信箱<br/>例如:altob@gmail.com"
  253. data-validation-error-msg-container="#email_error_msg"
  254. />
  255. <span id="email_error_msg"></span>
  256. </td>
  257. </tr>
  258. <tr class="form-group">
  259. <td style="text-align:right;vertical-align: middle;">手機號碼</td>
  260. <td style="text-align:left;vertical-align: middle;">
  261. <input type="tel" id="mobile" class="form-control" placeholder="發票將寄簡訊通知"
  262. data-validation="custom"
  263. data-validation-optional="true"
  264. data-validation-regexp="^(?=.{10}$)09([0-9]+)$"
  265. data-validation-error-msg="請輸入正確手機號碼<br/>例如:0912345678"
  266. data-validation-error-msg-container="#mobile_error_msg"
  267. />
  268. <span id="mobile_error_msg"></span>
  269. </td>
  270. </tr>
  271. <tr>
  272. <td style="text-align:right;vertical-align: middle;">訂單编號</td>
  273. <td id="show_order_no" style="text-align:left;vertical-align: middle;"></td>
  274. </tr>
  275. <tr>
  276. <td style="text-align:right;vertical-align: middle;">有效期限</td>
  277. <td id="show_balance_time_limit_countdown" style="text-align:left;vertical-align: middle; color: red;"></td>
  278. </tr>
  279. <tr>
  280. <td style="text-align:right;vertical-align: middle;">
  281. <button type="button" class="btn btn-default" onclick="transfer_money(event);">開始付款</button>
  282. </td>
  283. <td style="text-align:left;vertical-align: middle;">
  284. <!--button type="button" class="btn btn-default" onclick="show_item('price_data');">查看明細</button-->
  285. <button type="button" class="btn btn-default" onclick="show_item('payment');">取消</button>
  286. </td>
  287. </tr>
  288. </tbody>
  289. </table>
  290. </form>
  291. </div>
  292. <!-- /.col-lg-6 (nested) -->
  293. </div>
  294. <!-- /.row (nested) -->
  295. </div>
  296. <!-- /.panel-body -->
  297. </div>
  298. <!-- /.panel -->
  299. </div>
  300. <!-- /.col-lg-12 -->
  301. </div>
  302. <?php /* ----- 帳單查詢結果(結束) ----- */ ?>
  303. <?php /* ----- 鎖車作業 ----- */ ?>
  304. <div data-items="car_lock" class="row" style="display:none;">
  305. <div class="col-lg-12">
  306. <div class="panel panel-default">
  307. <div class="panel-heading"><?php /* 資料顯示區灰色小表頭 */ ?>
  308. 會員鎖車
  309. </div>
  310. <div class="panel-body">
  311. <div data-rows class="row">
  312. <div class="col-lg-6">
  313. <div class="form-group">
  314. <form id="form_lock" method="post">
  315. <label>請鍵入車牌號碼</label>
  316. <input type="text" id="lpr_lock" class="form-control" style="text-transform:uppercase;" placeholder="限英數字" autofocus required pattern="[A-Za-z0-9]*" /><br />
  317. <label>密碼(第一次與車號相同)</label>
  318. <input type="password" id="pswd_lock" class="form-control" style="text-transform:uppercase;" autofocus required pattern="[A-Za-z0-9]*" /><br />
  319. <button type="submit" id="qcar_lock" class="btn btn-default">查詢</button>
  320. <button type="submit" id="change_pswd_lock" class="btn btn-default">更改密碼</button>
  321. <button type="reset" class="btn btn-default">清除資料</button>
  322. </form>
  323. </div>
  324. </div>
  325. <!-- /.col-lg-6 (nested) -->
  326. </div>
  327. </div>
  328. <!-- /.panel-body -->
  329. </div>
  330. <!-- /.panel -->
  331. </div>
  332. <!-- /.col-lg-12 -->
  333. </div>
  334. <?php /* ----- 鎖車(結束) ----- */ ?>
  335. <?php /* ----- 更改鎖車密碼 ----- */ ?>
  336. <div data-items="pswd_lock" class="row" style="display:none;">
  337. <div class="col-lg-12">
  338. <div class="panel panel-default">
  339. <div class="panel-heading"><?php /* 資料顯示區灰色小表頭 */ ?>
  340. 更改鎖車密碼
  341. </div>
  342. <div class="panel-body">
  343. <div data-rows class="row">
  344. <div class="col-lg-6">
  345. <div class="form-group">
  346. <form id="form_new_pswd" method="post">
  347. <label>新密碼</label>
  348. <input type="text" id="new_pswd1" class="form-control" style="text-transform:uppercase;" placeholder="限英數字" autofocus required pattern="[A-Za-z0-9]*" /><br />
  349. <label>再鍵一次密碼</label>
  350. <input type="password" id="new_pswd2" class="form-control" style="text-transform:uppercase;" placeholder="限英數字" autofocus required pattern="[A-Za-z0-9]*" /><br />
  351. <button type="submit" class="btn btn-default">儲存</button>
  352. <button type="button" class="btn btn-default">取消</button>
  353. </form>
  354. </div>
  355. </div>
  356. <!-- /.col-lg-6 (nested) -->
  357. </div>
  358. </div>
  359. <!-- /.panel-body -->
  360. </div>
  361. <!-- /.panel -->
  362. </div>
  363. <!-- /.col-lg-12 -->
  364. </div>
  365. <?php /* ----- 更改密碼(結束) ----- */ ?>
  366. <?php /* ----- 鎖車與解鎖 ----- */ ?>
  367. <div data-items="status_lock" class="row" style="display:none;">
  368. <div class="col-lg-12">
  369. <div class="panel panel-default">
  370. <div class="panel-heading"><?php /* 資料顯示區灰色小表頭 */ ?>
  371. 鎖車/解鎖
  372. </div>
  373. <div class="panel-body">
  374. <div data-rows class="row">
  375. <div class="col-lg-6">
  376. <div class="form-group">
  377. <form id="form_active_lock" method="post">
  378. <label><span id="lpr_on_off"></span>: [<span id="lock_on_off">無</span>鎖車]</label><br />
  379. <input type="button" id="lock_unlock" class="btn btn-default" value="鎖車" />
  380. <input type="button" id="lock_back" class="btn btn-default" value="結束" />
  381. </form>
  382. </div>
  383. </div>
  384. <!-- /.col-lg-6 (nested) -->
  385. </div>
  386. </div>
  387. <!-- /.panel-body -->
  388. </div>
  389. <!-- /.panel -->
  390. </div>
  391. <!-- /.col-lg-12 -->
  392. </div>
  393. <?php /* ----- 鎖車與解鎖(結束) ----- */ ?>
  394. <!-- /#page-wrapper -->
  395. </div>
  396. <!-- /#wrapper -->
  397. <!-- jQuery -->
  398. <script src="<?=BOOTSTRAPS?>bower_components/jquery/dist/jquery.min.js"></script>
  399. <!-- Bootstrap Core JavaScript -->
  400. <script src="<?=BOOTSTRAPS?>bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
  401. <!-- Metis Menu Plugin JavaScript -->
  402. <script src="<?=BOOTSTRAPS?>bower_components/metisMenu/dist/metisMenu.min.js"></script>
  403. <!-- Morris Charts JavaScript -->
  404. <script src="<?=BOOTSTRAPS?>bower_components/raphael/raphael-min.js"></script>
  405. <!--script src="<?=BOOTSTRAPS?>bower_components/morrisjs/morris.min.js"></script-->
  406. <!--script src="<?=BOOTSTRAPS?>js/morris-data.js"></script-->
  407. <!-- virtual keyboard -->
  408. <!--link href="<?=WEB_LIB?>virtual-keyboard/css/jquery-ui.min.css" rel="stylesheet">
  409. <link href="<?=WEB_LIB?>virtual-keyboard/css/keyboard.css" rel="stylesheet">
  410. <script src="<?=WEB_LIB?>virtual-keyboard/js/jquery-ui.min.js"></script>
  411. <script src="<?=WEB_LIB?>virtual-keyboard/js/jquery.keyboard.js"></script>
  412. <script src="<?=WEB_LIB?>virtual-keyboard/js/jquery.keyboard.extension-caret.js"></script-->
  413. <!-- jQuery validate -->
  414. <script src="<?=WEB_LIB?>form-validator/jquery.form-validator.min.js"></script>
  415. <!-- alertify -->
  416. <link href="<?=WEB_LIB?>css/alertify.core.css" rel="stylesheet">
  417. <link href="<?=WEB_LIB?>css/alertify.bootstrap.css" rel="stylesheet">
  418. <script src="<?=WEB_LIB?>js/alertify.min.js"></script>
  419. <!-- alertify -->
  420. <script src="<?=WEB_LIB?>js/moment.min.js"></script>
  421. <!-- md5 -->
  422. <script src="<?=WEB_LIB?>js/md5.min.js"></script>
  423. <!-- Custom Theme JavaScript -->
  424. <script src="<?=BOOTSTRAPS?>dist/js/sb-admin-2.js"></script>
  425. <div id="works" style="display:none;"></div><?php /* 作為浮動顯示區之用 */ ?>
  426. </body>
  427. </html>
  428. <script>
  429. <?php /* alertify function */ ?>
  430. function alertify_log($msg)
  431. {
  432. alertify.set({delay : 2000});
  433. alertify.log($msg);
  434. }
  435. function alertify_error($msg)
  436. {
  437. alertify.set({delay : 2000});
  438. alertify.error($msg);
  439. }
  440. function alertify_success($msg)
  441. {
  442. alertify.set({delay : 2000});
  443. alertify.success($msg);
  444. }
  445. var refreshIntervalId = 0; // timer id
  446. <?php /* 顯示指定項目 */ ?>
  447. function show_item(tags)
  448. {
  449. $("#payment_lpr").val("");<?php /* 清除車號欄位 */ ?>
  450. $("#show_member_name").val("");
  451. $("#show_payment_lpr").val("");
  452. $("#show_end_date").val("");
  453. $("#show_next_start").val("");
  454. $("#show_next_end").val("");
  455. $("#show_amt").val("");
  456. $("#invoice_receiver").val("");
  457. $("#company_no").val("");
  458. $("#email").val("");
  459. $("#mobile").val("");
  460. $("#show_order_no").val("");
  461. $("#show_amt_detail").val("");
  462. $("#show_balance_time_limit_countdown").val("");
  463. if(tags.indexOf('payment_data') < 0 && tags.indexOf('price_data') < 0){
  464. clearInterval(refreshIntervalId); // 消除倒數計時timer
  465. }
  466. $("[data-items]").hide();
  467. $("[data-items="+tags+"]").show();
  468. return false;
  469. }
  470. <?php /* 顯示指定項目, 不修改資料 */ ?>
  471. function show_item_without_change(tags)
  472. {
  473. $("[data-items]").hide();
  474. $("[data-items="+tags+"]").show();
  475. return false;
  476. }
  477. // 付款
  478. function do_payment(event)
  479. {
  480. event.preventDefault();
  481. if ($("#payment_lpr").val() == "")
  482. {
  483. alertify_error("請填寫車號");
  484. return false;
  485. }
  486. $.ajax
  487. ({
  488. url: "<?=APP_URL?>payment_lpr",
  489. type: "post",
  490. dataType:"text",
  491. data:{
  492. "payment_lpr": $("#payment_lpr").val()
  493. },
  494. success: function(result)
  495. {
  496. if (/^[\],:{}\s]*$/.test(result.replace(/\\["\\\/bfnrtu]/g, '@').
  497. replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
  498. replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
  499. //the json is ok
  500. }else{
  501. //the json is not ok
  502. alertify_error("查無資料,請鍵入正確資料 (回傳資料有誤)");
  503. return false;
  504. }
  505. var jdata = JSON.parse(result);
  506. //console.log(jdata);
  507. if(!jdata)
  508. {
  509. alertify_error("查無資料,請鍵入正確資料");
  510. return false;
  511. }
  512. if(jdata.member_no <= 0)
  513. {
  514. alertify_log("查無會員資料");
  515. return false;
  516. }
  517. if(jdata.amt <= 0)
  518. {
  519. alertify_log("目前無須繳款,謝謝");
  520. return false;
  521. }
  522. if(jdata.amt > 15000)
  523. {
  524. alertify_log("[ 代碼:001 ]<br/>請到管理室繳費, 謝謝");
  525. return false;
  526. }
  527. // variables for time units
  528. var days, hours, minutes, seconds;
  529.  
  530. // get tag element
  531. var countdown = $("#show_balance_time_limit_countdown");
  532. //var countdown_offset_ms = 60*5*1000; // 比資料庫早5分鐘timeout
  533. var duration = moment.duration({minutes: 5}); // 比資料庫早5分鐘timeout
  534. // set the date we're counting down to
  535. var target_date = moment(jdata.balance_time_limit).subtract(duration);
  536. //var target_date = new Date(jdata.balance_time_limit).getTime();
  537. //console.log(target_date.diff(moment(), 'seconds'));
  538. // update the tag with id "countdown" every 1 second
  539. refreshIntervalId = setInterval(function () {
  540.     // find the amount of "seconds" between now and target
  541. var seconds_left = target_date.diff(moment(), 'seconds');
  542. //console.log(seconds_left);
  543. //var current_date = new Date().getTime();
  544.     //var seconds_left = (target_date - current_date - countdown_offset_ms) / 1000;
  545. if(seconds_left <= 0){
  546. clearInterval(refreshIntervalId);
  547. // reload page
  548. location.reload();
  549. }
  550.  
  551.     // do some time calculations
  552.     days = parseInt(seconds_left / 86400);
  553.     seconds_left = seconds_left % 86400;
  554.      
  555.     hours = parseInt(seconds_left / 3600);
  556.     seconds_left = seconds_left % 3600;
  557.      
  558.     minutes = parseInt(seconds_left / 60);
  559.     seconds = parseInt(seconds_left % 60);
  560. if(minutes < 10){
  561. minutes = '0' + minutes;
  562. }
  563. if(seconds < 10){
  564. seconds = '0' + seconds;
  565. }
  566.     // format countdown string + set tag value
  567. countdown.text(['還剩 ', minutes, ' : ', seconds, ' 有效'].join(''));
  568. }, 1000);
  569. $("#show_payment_lpr").text(jdata.lpr);
  570. $("#show_member_name").text(jdata.member_name);
  571. $("#show_end_date").text(jdata.end_time);
  572. $("#show_next_start").text(jdata.next_start_time);
  573. $("#show_next_end").text(jdata.next_end_time);
  574. $("#show_amt").text(jdata.amt);
  575. $("#show_in_time").text(jdata.in_time);
  576. $("#show_amt").text([jdata.amt, ' 元'].join(''));
  577. $("#show_order_no").text(jdata.order_no);
  578. show_item("payment_data");
  579. // parse price detail
  580. $("#price_data_tbody").html("");
  581. }
  582. });
  583. }
  584. // 開啟轉帳畫面
  585. function transfer_money(event)
  586. {
  587. event.preventDefault();
  588. if(! $("#payment_data").isValid()) return false;
  589. if($("#email").val() == '' && $("#mobile").val() == '')
  590. {
  591. alertify_error("請至少提供一項發票通知方式<br/>1. 電子信箱 <br/>2. 或 手機號碼<br/><br/>謝謝!!");
  592. return false;
  593. }
  594. if (! confirm("開始結帳嗎 ?")) return false;
  595. // Create Base64 Object
  596. var Base64 = {_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f<e.length){n=e.charCodeAt(f++);r=e.charCodeAt(f++);i=e.charCodeAt(f++);s=n>>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(f<e.length){s=this._keyStr.indexOf(e.charAt(f++));o=this._keyStr.indexOf(e.charAt(f++));u=this._keyStr.indexOf(e.charAt(f++));a=this._keyStr.indexOf(e.charAt(f++));n=s<<2|o>>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/\r\n/g,"\n");var t="";for(var n=0;n<e.length;n++){var r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r)}else if(r>127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n<e.length){r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r);n++}else if(r>191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}}
  597. var order_no = $("#show_order_no").text() == '' ? '0' : $("#show_order_no").text();
  598. var invoice_receiver = $("#invoice_receiver").val() == '' ? '0' : $("#invoice_receiver").val();
  599. var company_no = $("#company_no").val() == '' ? '0' : $("#company_no").val();
  600. var email = $("#email").val() == '' ? '0' : Base64.encode($("#email").val()).slice(0, -1); // remove base64 '=' for URI rule
  601. var mobile = $("#mobile").val() == '' ? '0' : $("#mobile").val();
  602. webatm = window.open(
  603. ["<?=APP_URL?>transfer_money/",
  604. order_no, "/",
  605. encodeURI(invoice_receiver), "/",
  606. encodeURI(company_no), "/",
  607. email, "/",
  608. mobile, "/"
  609. ].join('')
  610. , "_self");
  611. // window.top.close(); // 關視窗
  612. // setTimeout(function(){ webatm.close(); }, 3000);
  613. }
  614. $(document).ready(function()
  615. {
  616. <?php /* validate 設定start */ ?>
  617. $.validate(
  618. {
  619. modules : 'security',
  620. }
  621. );
  622. <?php /* validate 設定end */ ?>
  623. // 定時自動更新頁面
  624. (function autoReloadPage(){
  625. var pageReloadTimeMillis = 600000; // 頁面, 自動重新載入週期 ( 10 min )
  626. var pageCheckReloadTimeMillis = 10000; // 頁面, 判斷重新載入週期 ( 10 sec )
  627. var aliveTime = moment();
  628. $(document.body).bind("mousemove keypress", function(e) {
  629. aliveTime = moment();
  630. });
  631. function refresh() {
  632. if(moment() - aliveTime >= pageReloadTimeMillis) // 如果頁面沒動作, 才更新
  633. window.location.reload(true);
  634. else
  635. setTimeout(refresh, pageCheckReloadTimeMillis);
  636. }
  637. setTimeout(refresh, pageCheckReloadTimeMillis);
  638. })();
  639. // ----- 鎖車密碼更新 -----
  640. $("#form_new_pswd").submit(function(event)
  641. {
  642. event.preventDefault();
  643. $("#new_pswd1").val($("#new_pswd1").val().toUpperCase());
  644. $("#new_pswd2").val($("#new_pswd2").val().toUpperCase());
  645. if ($("#new_pswd1").val() != $("#new_pswd2").val() || $("#new_pswd1").val() == "" || $("#new_pswd2").val() == "")
  646. {
  647. alert("密碼不符規定, 請重新輸入 !");
  648. return false;
  649. }
  650. // 查詢目前有無鎖車狀況
  651. $.ajax
  652. ({
  653. url:"<?=APP_URL?>change_pswd",
  654. dataType:"text",
  655. type:"post",
  656. data:
  657. { "lpr":$("#lpr_lock").val(),
  658. "new_pswd":$("#new_pswd1").val()
  659. },
  660. success:function(jdata)
  661. {
  662. alert("密碼更新完成 !");
  663. $("#pswd_lock").val("");
  664. show_item("car_lock");
  665. }
  666. });
  667. });
  668. // ----- 鎖車 -----
  669. $("#form_lock").submit(function(event)
  670. {
  671. event.preventDefault();
  672. submit_id = $(document.activeElement).prop('id');
  673. if ($("#lpr_lock").val() == "" || $("#pswd_lock").val() == "")
  674. {
  675. alert("請填寫車號及密碼");
  676. return false;
  677. }
  678. $("#lpr_lock").val($("#lpr_lock").val().toUpperCase());
  679. $("#pswd_lock").val($("#pswd_lock").val().toUpperCase());
  680. // 查詢目前有無鎖車狀況
  681. $.ajax
  682. ({
  683. url: "<?=APP_URL?>security_action/"+$("#lpr_lock").val()+"/"+md5($("#pswd_lock").val().toUpperCase())+"/2",
  684. dataType:"json",
  685. type:"post",
  686. data:{},
  687. success:function(jdata)
  688. {
  689. if (jdata["result_code"] == "FAIL")
  690. {
  691. alert("車號或密碼錯誤");
  692. return false;
  693. }
  694. // 更改密碼, 進入下一個畫面
  695. if (submit_id == "change_pswd_lock")
  696. {
  697. $("#new_pswd1").val("");
  698. $("#new_pswd2").val("");
  699. show_item("pswd_lock");
  700. return true;
  701. }
  702. $("#lpr_on_off").text($("#lpr_lock").val());
  703. lock_on_off = jdata["result"][0]["result"];
  704. if (lock_on_off == "ON")
  705. {
  706. $("#lock_on_off").text("已");
  707. $("#lock_unlock").val("解鎖");
  708. }
  709. else
  710. {
  711. $("#lock_on_off").text("無");
  712. $("#lock_unlock").val("鎖車");
  713. }
  714. show_item("status_lock");
  715. }
  716. });
  717. return false;
  718. });
  719. // ----- 鎖車或解鎖 -----
  720. $("#lock_unlock").click(function()
  721. {
  722. lock_str = $("#lock_unlock").val();
  723. if (!confirm("確定"+lock_str+"嗎 ?")) return false;
  724. lock_val = lock_str == "解鎖" ? "0" : "1";
  725. // 查詢目前有無鎖車狀況
  726. $.ajax
  727. ({
  728. url: "<?=APP_URL?>security_action/"+$("#lpr_lock").val()+"/"+md5($("#pswd_lock").val())+"/"+lock_val,
  729. dataType:"json",
  730. type:"post",
  731. data:{},
  732. success:function(jdata)
  733. {
  734. if (lock_val == "1")
  735. {
  736. $("#lock_on_off").text("已");
  737. $("#lock_unlock").val("解鎖");
  738. }
  739. else
  740. {
  741. $("#lock_on_off").text("無");
  742. $("#lock_unlock").val("鎖車");
  743. }
  744. show_item("status_lock");
  745. }
  746. });
  747. });
  748. // ----- 鎖車結東 -----
  749. $("#lock_back,#end_qcar").click(function()
  750. {
  751. window.location.reload(true);
  752. });
  753. });
  754. </script>