Upload.html 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668
  1. <!doctype html>
  2. <html class="fixed">
  3. <head>
  4. <!-- Basic -->
  5. <meta charset="UTF-8">
  6. <title>設計資料庫匯入工具</title>
  7. <meta name="keywords" content="HTML5 Admin Template" />
  8. <meta name="description" content="JSOFT Admin - Responsive HTML5 Template">
  9. <meta name="author" content="JSOFT.net">
  10. <script src="/DataBase/assets/vendor/jquery/jquery.js"></script>
  11. <!-- Mobile Metas -->
  12. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
  13. <!-- Web Fonts -->
  14. <link href="http://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700,800|Shadows+Into+Light"
  15. rel="stylesheet" type="text/css">
  16. <!-- jstree CSS -->
  17. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.3.4/themes/default/style.min.css">
  18. <!-- Vendor CSS -->
  19. <link rel="stylesheet" href="/DataBase/assets/vendor/bootstrap/css/bootstrap.css" />
  20. <link rel="stylesheet" href="/DataBase/assets/vendor/font-awesome/css/font-awesome.css" />
  21. <link rel="stylesheet" href="/DataBase/assets/vendor/magnific-popup/magnific-popup.css" />
  22. <link rel="stylesheet" href="/DataBase/assets/vendor/bootstrap-datepicker/css/datepicker3.css" />
  23. <link rel="stylesheet" href="/DataBase/assets/vendor/pnotify/pnotify.custom.css" />
  24. <!-- Specific Page Vendor CSS -->
  25. <link rel="stylesheet" href="/DataBase/assets/vendor/jquery-ui/css/ui-lightness/jquery-ui-1.10.4.custom.css" />
  26. <link rel="stylesheet" href="/DataBase/assets/vendor/bootstrap-multiselect/bootstrap-multiselect.css" />
  27. <link rel="stylesheet" href="/DataBase/assets/vendor/morris/morris.css" />
  28. <link rel="stylesheet" href="/DataBase/assets/vendor/bootstrap-fileupload/bootstrap-fileupload.min.css" />
  29. <!-- Theme CSS -->
  30. <link rel="stylesheet" href="/DataBase/assets/stylesheets/theme.css" />
  31. <!-- Skin CSS -->
  32. <link rel="stylesheet" href="/DataBase/assets/stylesheets/skins/default.css" />
  33. <!-- Theme Custom CSS -->
  34. <link rel="stylesheet" href="/DataBase/assets/stylesheets/theme-custom.css">
  35. <!-- Head Libs -->
  36. <script src="/DataBase/assets/vendor/modernizr/modernizr.js"></script>
  37. <!-- chart.js -->
  38. <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
  39. <!-- DataTable -->
  40. <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.25/css/jquery.dataTables.css">
  41. <script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.js">
  42. </script>
  43. <!-- Icon -->
  44. <link rel="shortcut icon" href="/DataBase/assets/images/favicon.ico" />
  45. <link href="https://js.arcgis.com/4.21/esri/themes/light/main.css" rel="stylesheet">
  46. <link href="/DataBase/CustomCSS/main.css" rel="stylesheet">
  47. <script src="/DataBase/script/js/bootstrap.js"></script>
  48. <script src="/DataBase/script/js/pdfobject.min.js"></script>
  49. <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.3.4/jstree.min.js"></script>
  50. <script src="https://js.arcgis.com/4.21/"></script>
  51. <style>
  52. body {
  53. color: #000;
  54. }
  55. .row {
  56. margin-top: -15px;
  57. }
  58. .page-header>ul {
  59. list-style: none;
  60. padding: 0;
  61. margin: 0;
  62. }
  63. .page-header>ul>li {
  64. display: inline-block;
  65. font-size: 25px;
  66. color: #FFFFFF;
  67. }
  68. .page-header>ul>li.right {
  69. float: right;
  70. padding-right: 10px;
  71. }
  72. .input-search {
  73. margin-top: 8px;
  74. }
  75. .page-header li>label {
  76. margin-top: 13px;
  77. border-bottom: 4px solid #0088cc;
  78. height: 41px;
  79. padding-left: 40px;
  80. }
  81. .sidebar-left {
  82. box-shadow: 0 0 0;
  83. }
  84. .jstree-default .jstree-icon {
  85. color: #ffe693;
  86. }
  87. .jqsfield {
  88. color: white;
  89. font: 10px arial, san serif;
  90. text-align: left;
  91. }
  92. .jstree-anchor {
  93. width: 250px;
  94. text-overflow: ellipsis;
  95. overflow: hidden;
  96. white-space: nowrap;
  97. }
  98. .jstree-anchor,
  99. .jstree-anchor:link,
  100. .jstree-anchor:visited,
  101. .jstree-anchor:hover,
  102. .jstree-anchor:active {
  103. color: #abb4be;
  104. }
  105. td,
  106. th {
  107. text-align: center;
  108. }
  109. #tablepage匯入資訊>thead>tr>th {
  110. width: 25%;
  111. }
  112. #tableform>thead>tr>th {
  113. width: 50%;
  114. }
  115. .nav-main {
  116. padding: 15px;
  117. }
  118. .node-hidden {
  119. display: none;
  120. }
  121. html.fixed .page-header {
  122. left: 0px;
  123. }
  124. html.fixed .content-body {
  125. margin-left: 0px;
  126. }
  127. .sidebar-left {
  128. width: 0px;
  129. }
  130. #viewDiv {
  131. height: 100%;
  132. width: 100%;
  133. }
  134. #zoom {
  135. margin-bottom: 5px;
  136. }
  137. #actions {
  138. padding: 5px;
  139. }
  140. .container {
  141. height: 50%;
  142. width: 100%;
  143. }
  144. #createSlideDiv {
  145. background-color: white;
  146. opacity: 0.9;
  147. color: black;
  148. padding: 6px;
  149. }
  150. #slidesDiv {
  151. background-color: white;
  152. opacity: 0.9;
  153. color: black;
  154. padding: 10px;
  155. visibility: hidden;
  156. bottom: 20px;
  157. overflow-y: auto;
  158. text-align: center;
  159. height: 260px;
  160. }
  161. #slidesDiv .slide {
  162. /* Show cursor as pointer when on a slide */
  163. cursor: pointer;
  164. margin-bottom: 6px;
  165. }
  166. #slidesDiv .slide .title {
  167. /* Center the title text */
  168. text-align: center;
  169. }
  170. /* Draw active slide with a nice border around the thumbnail */
  171. #slidesDiv .slide.active img {
  172. box-shadow: 0px 0px 12px black;
  173. border-style: solid;
  174. border-width: thin;
  175. border-color: black;
  176. }
  177. .pdfobject-container {
  178. height: 730px;
  179. }
  180. #topbar {
  181. background: #fff;
  182. padding: 10px;
  183. }
  184. /* uploadExcel */
  185. td>label {
  186. width: 8em;
  187. text-align: left;
  188. padding-right: 0.5em;
  189. /* display: inline-block; */
  190. }
  191. .excel {
  192. font-family: Arial, Helvetica, sans-serif;
  193. border-collapse: collapse;
  194. width: 100%;
  195. }
  196. .nav-tabs>li.active>a,
  197. .nav-tabs>li.active>a:focus,
  198. .nav-tabs>li.active>a:hover {
  199. border: 1px solid #000;
  200. }
  201. .excel td,
  202. .excel th {
  203. border: 1px solid #aaa;
  204. padding: 8px;
  205. }
  206. .excel tr:nth-child(even) {
  207. background-color: #f2f2f2;
  208. }
  209. .excel tr:hover {
  210. background-color: #ddd;
  211. }
  212. .excel th {
  213. padding-top: 12px;
  214. padding-bottom: 12px;
  215. text-align: center;
  216. background-color: #004B7C;
  217. color: white;
  218. }
  219. table.dataTable tbody tr td.NullClass {
  220. background-color: #ed9c28;
  221. }
  222. table.dataTable tbody tr td.ErrorClass {
  223. background-color: #d2322d;
  224. }
  225. .submit {
  226. display: inline-block;
  227. margin-left: auto;
  228. margin-right: auto;
  229. width: 20%;
  230. background-color: #004B7C;
  231. border: none;
  232. color: white;
  233. padding: 15px 32px;
  234. text-align: center;
  235. text-decoration: none;
  236. font-size: 16px;
  237. margin: 10px;
  238. }
  239. .delete {
  240. background-color: red;
  241. border: none;
  242. color: white;
  243. padding: 5px 32px;
  244. text-align: center;
  245. text-decoration: none;
  246. display: inline-block;
  247. font-size: 16px;
  248. }
  249. .center {
  250. text-align: center;
  251. }
  252. .nav-tabs.nav-justified li.active a.error.text-center,
  253. a.error.text-center:hover {
  254. border-bottom-color: transparent;
  255. border-top: 3px solid #d2322d;
  256. box-shadow: none;
  257. color: #d2322d;
  258. }
  259. a.error.text-center,
  260. i.error,
  261. td.error {
  262. color: #d2322d;
  263. }
  264. .nav-tabs.nav-justified li.active a.warning.text-center,
  265. a.warning.text-center:hover {
  266. border-bottom-color: transparent;
  267. border-top: 3px solid #ed9c28;
  268. box-shadow: none;
  269. color: #ed9c28;
  270. }
  271. a.warning.text-center,
  272. i.warning,
  273. td.warning {
  274. color: #ed9c28;
  275. }
  276. .nav-tabs.nav-justified li.active a.info.text-center,
  277. a.info.text-center:hover {
  278. border-bottom-color: transparent;
  279. border-top: 3px solid #0088cc;
  280. box-shadow: none;
  281. color: #0088cc;
  282. }
  283. a.info.text-center,
  284. i.info {
  285. color: #0088cc;
  286. }
  287. .nav-tabs.nav-justified li.active a.success.text-center,
  288. a.success.text-center:hover {
  289. border-bottom-color: transparent;
  290. border-top: 3px solid #4a934a;
  291. box-shadow: none;
  292. color: #4a934a;
  293. }
  294. a.success.text-center,
  295. i.success {
  296. color: #4a934a;
  297. }
  298. .dataTables_wrapper .dataTables_filter label {
  299. width: initial;
  300. }
  301. .dataTables_wrapper .dataTables_filter input {
  302. width: initial;
  303. }
  304. .form-group {
  305. border-bottom: 1px solid #eff2f7;
  306. padding-bottom: 15px;
  307. }
  308. </style>
  309. </head>
  310. <body>
  311. <section class="body">
  312. <!-- start: header -->
  313. <header class="header">
  314. <div class="logo-container">
  315. <div class="banner-txt">設計資料庫匯入工具</div>
  316. <div class="visible-xs toggle-sidebar-left" data-toggle-class="sidebar-left-opened" data-target="html"
  317. data-fire-event="sidebar-left-opened">
  318. <i class="fa fa-bars" aria-label="Toggle sidebar"></i>
  319. </div>
  320. </div>
  321. <!-- start: search & user box -->
  322. <div class="header-right">
  323. <span class="separator"></span>
  324. <ul class="notifications">
  325. <li>
  326. <a href="/DataBase/index.php" class="notification-icon" data-toggle="tooltip" title="設計資料庫查詢"
  327. data-placement="bottom">
  328. <i class="fa fa-database"></i>
  329. </a>
  330. <a href="/Front-Page/home.php" class="notification-icon" data-toggle="tooltip" title="綜合登入入口"
  331. data-placement="bottom">
  332. <i class="fa fa-home"></i>
  333. </a>
  334. </li>
  335. </ul>
  336. <span class="separator"></span>
  337. <div id="userbox" class="userbox">
  338. <a href="#" data-toggle="dropdown">
  339. <figure class="profile-picture"> <img src="/DataBase/assets/images/!logged-user.jpg"
  340. alt="Joseph Doe" class="img-circle"
  341. data-lock-picture="/DataBase/assets/images/!logged-user.jpg" /> </figure>
  342. <div class="profile-info" data-lock-name="John Doe" data-lock-email="johndoe@JSOFT.com"> <span
  343. class="name"><?php echo $_SESSION['name'] ?></span> <span class="role">tester</span>
  344. </div> <i class="fa custom-caret"></i>
  345. </a>
  346. <div class="dropdown-menu">
  347. <ul class="list-unstyled">
  348. <li class="divider"></li>
  349. <li> <a role="menuitem" tabindex="-1" href="/DataBase/script/php/Logout.php"><i
  350. class="fa fa-power-off"></i> Logout</a> </li>
  351. </ul>
  352. </div>
  353. </div>
  354. </div>
  355. <!-- end: search & user box -->
  356. </header>
  357. <!-- end: header -->
  358. <div class="inner-wrapper">
  359. <!-- start: sidebar -->
  360. <section role="main" class="content-body">
  361. <header class="page-header">
  362. <ul>
  363. <li>
  364. <label id="header">MAA 設計群匯入工具</label>
  365. </li>
  366. </ul>
  367. </header>
  368. <div class="row">
  369. <div class="col-md-6 col-md-offset-3">
  370. <div class="tabs tabs-primary">
  371. <ul class="nav nav-tabs nav-justified">
  372. <li class="active">
  373. <a href="#upload" data-toggle="tab" class="text-center"><i
  374. class="fa fa-upload"></i>上傳工具</a>
  375. </li>
  376. <li>
  377. <a href="#edit" data-toggle="tab" class="text-center"><i
  378. class="fa fa-edit"></i>編輯工具</a>
  379. </li>
  380. </ul>
  381. <div class="tab-content">
  382. <div id="upload" class="tab-pane active">
  383. <form method="post" enctype="multipart/form-data"
  384. action="./script/php/importTool/uploadExcel.php">
  385. <div class="form-group">
  386. <label class="col-md-3 control-label" for="projectId">計畫編號 </label>
  387. <div class="col-md-6">
  388. <input type="text" name="projectId" class="form-control" id="projectId"
  389. class="form-controll"
  390. required="required" />
  391. </div>
  392. </div>
  393. <div class="form-group">
  394. <label class="col-md-3 control-label" for="projectName">計畫名稱 </label>
  395. <div class="col-md-6">
  396. <input type="text" name="projectName" class="form-control"
  397. id="projectName" class="form-controll"
  398. required="required" />
  399. </div>
  400. </div>
  401. <div class="form-group">
  402. <label class="col-md-3 control-label" for="category">工程類別</label>
  403. <div class="col-md-6">
  404. <select class="form-control mb-md" name="category" id="category"
  405. required="required">
  406. </select>
  407. </div>
  408. </div>
  409. <div class="form-group" style="border-bottom: 0px;">
  410. <label class="col-md-3 control-label" for="excel">Excel文件</label>
  411. <div class="col-md-6">
  412. <div class="fileupload fileupload-new" data-provides="fileupload">
  413. <div class="input-append">
  414. <div class="uneditable-input">
  415. <i class="fa fa-file fileupload-exists"></i>
  416. <span class="fileupload-preview"></span>
  417. </div>
  418. <span class="btn btn-default btn-file">
  419. <span class="fileupload-exists">更換檔案</span>
  420. <span class="fileupload-new">選擇檔案</span>
  421. <input type="file" name="excel" id="excel"
  422. required="required"
  423. accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel">
  424. </span>
  425. <a href="#" class="btn btn-default fileupload-exists"
  426. data-dismiss="fileupload">移除檔案</a>
  427. <span
  428. class="help-block"><strong>注意事項:</strong>Excel檔名請用 計畫編號-計畫名稱
  429. <br>(例:180024-新北市3D智慧管線查詢及管理系統.xlsx)</span>
  430. </div>
  431. </div>
  432. </div>
  433. </div>
  434. <footer class="panel-footer">
  435. <button id="submit" class="btn btn-primary">上傳檔案</button>
  436. <button id="reset" type="reset" class="btn btn-default">清除表單</button>
  437. </footer>
  438. </form>
  439. </div>
  440. <div id="edit" class="tab-pane">
  441. <form id="formEdit" method="post" enctype="multipart/form-data"
  442. action="./script/php/importTool/updateProject.php">
  443. <div class="form-group">
  444. <label class="col-md-3 control-label" for="projectId">計畫編號</label>
  445. <div class="col-md-6">
  446. <input type="text" class="form-control" name="projectId"
  447. id="projectIdEdit" required="required">
  448. </div>
  449. </div>
  450. <div class="form-group">
  451. <label class="col-md-3 control-label" for="projectName">計畫名稱</label>
  452. <div class="col-md-6">
  453. <input type="text" class="form-control" name="projectName"
  454. id="projectNameEdit" required="required">
  455. </div>
  456. </div>
  457. <div class="form-group">
  458. <label class="col-md-3 control-label" for="category">工程類別</label>
  459. <div class="col-md-6">
  460. <select class="form-control mb-md" name="category" id="categoryEdit"
  461. required="required">
  462. </select>
  463. </div>
  464. </div>
  465. <div class="form-group" style="border-bottom: 0px;">
  466. <label class=" col-md-3 control-label">使用說明</label>
  467. <div class="col-lg-6">
  468. <p>輸入計畫編號後,再修改計畫名稱或工程類別。</p>
  469. </div>
  470. </div>
  471. <footer class="panel-footer">
  472. <button id="submitEdit" class="btn btn-primary">儲存修改</button>
  473. <button id="resetEdit" type="reset" class="btn btn-default">清除表單</button>
  474. </footer>
  475. </form>
  476. </div>
  477. </div>
  478. </div>
  479. </div>
  480. </div>
  481. </div>
  482. </section>
  483. </div>
  484. </section>
  485. </body>
  486. <script type="text/javascript">
  487. var projectTable;
  488. var projectName;
  489. $(document).ready(function () {
  490. var url_href = window.location.href;
  491. var url = new URL(url_href);
  492. var status = url.searchParams.get("status");
  493. if (status == 'success') {
  494. alert("匯入成功!");
  495. window.location.href = "./upload.html"
  496. }
  497. getCategory();
  498. $("#projectId").change(function () {
  499. const find = projectTable.find(element => element[0] == this.value);
  500. if (find != null) {
  501. projectName = find[1];
  502. category = find[2];
  503. $("#projectName").val(projectName);
  504. $("#projectName").css("cursor", "not-allowed");
  505. $('#projectName').attr('readonly', true);
  506. $('#category').val(category);
  507. $("#category").css("cursor", "not-allowed");
  508. $('#category').prop('disabled', true);
  509. } else {
  510. $("#projectName").val("");
  511. $("#projectName").css("cursor", "text");
  512. $('#projectName').attr('readonly', false);
  513. $('#category').val(1);
  514. $("#category").css("cursor", "default");
  515. $('#category').prop('disabled', false);
  516. }
  517. });
  518. $("#projectIdEdit").change(function () {
  519. const find = projectTable.find(element => element[0] == this.value);
  520. if (find != null) {
  521. projectName = find[1];
  522. category = find[2];
  523. $("#projectNameEdit").val(projectName);
  524. $("#projectNameEdit").css("color", "#000");
  525. $('#categoryEdit').val(category);
  526. $('#submitEdit').prop('disabled', false);
  527. $("#submitEdit").css("cursor", "point");
  528. } else {
  529. $("#projectNameEdit").val("查無此計畫名稱!");
  530. $("#projectNameEdit").css("color", "red");
  531. $('#categoryEdit').val(1);
  532. $('#submitEdit').prop('disabled', true);
  533. $("#submitEdit").css("cursor", "not-allowed");
  534. }
  535. });
  536. });
  537. var inputElement = document.getElementById("excel");
  538. inputElement.addEventListener("change", handleFiles, false);
  539. function handleFiles() {
  540. var fileList = this.files;
  541. $("#filename").text(fileList[0].name);
  542. }
  543. jQuery(function ($) {
  544. $('form').bind('submit', function () {
  545. $(this).find(':input').prop('disabled', false);
  546. });
  547. $('formEdit').bind('submit', function () {
  548. $(this).find(':input').prop('disabled', false);
  549. });
  550. });
  551. function getCategory() {
  552. $.ajax({
  553. url: "./script/php/importTool/getConstructionCategory.php",
  554. async: false,
  555. contentType: "application/json",
  556. dataType: "json",
  557. type: "GET",
  558. })
  559. .success(function (response) {
  560. projectTable = response["project"];
  561. for (i = 0; i < response["category"].length; i++) {
  562. $('#category').append(
  563. `<option value='${response["category"][i][0]}'>${response["category"][i][1]}</option>`);
  564. $('#categoryEdit').append(
  565. `<option value='${response["category"][i][0]}'>${response["category"][i][1]}</option>`);
  566. }
  567. })
  568. .error(function (error) {
  569. console.log(error);
  570. })
  571. .complete(function () {
  572. $('#page0').addClass('in active')
  573. });
  574. }
  575. </script>
  576. <script src="assets/vendor/bootstrap-fileupload/bootstrap-fileupload.min.js"></script>
  577. </html>