diff --git a/.env b/.env index 8ed0bceb..6720dc21 100644 --- a/.env +++ b/.env @@ -8,6 +8,6 @@ DB_CONNECTION=mysql DB_HOST=localhost DB_PORT=3306 -DB_DATABASE=appwms +DB_DATABASE=appwms1113 DB_USERNAME=root DB_PASSWORD= \ No newline at end of file diff --git a/wms/contract/api/deleteNewContractData.php b/wms/contract/api/deleteNewContractData.php new file mode 100644 index 00000000..d7feb1c1 --- /dev/null +++ b/wms/contract/api/deleteNewContractData.php @@ -0,0 +1,15 @@ +prepare($sql_str); + $stmt->bindParam(":contractid", $id); + $stmt->execute(); + header("HTTP/1.1 204 No Content"); + }catch(PDOException $e){ + die("ERROR!!!: ". $e->getMessage()); + } +} \ No newline at end of file diff --git a/wms/contract/api/postContractData.php b/wms/contract/api/postContractData.php index 68c47af3..69e7d859 100644 --- a/wms/contract/api/postContractData.php +++ b/wms/contract/api/postContractData.php @@ -2,6 +2,7 @@ require_once("../conn.php"); include_once("./getFacilityNo.php"); include_once("./getComboNo.php"); +include_once("./upload_chk.php"); ini_set ( 'date.timezone' , 'Asia/Taipei' ); //保養簽回 if(isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['contracttype']) && $_POST['contracttype'] == 'b') { @@ -314,173 +315,5 @@ if(isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['co } -if(isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['contracttype']) && $_POST['contracttype'] == 'm') { - try{ - $created_at = date('Y-m-d H:i:s'); - $created_by = $_POST["user_id"]; - $contractno = $_POST["contractno"]; - $customer = $_POST["customer"]; - $manager = $_POST["manager"]; - $vat = $_POST["vat"]; - $case_name = $_POST["case_name"]; - $linkman = $_POST["linkman"]; - $lm_tel = $_POST["lm_tel"]; - $address = $_POST["address"]; - $salesman = $_POST["salesman"]; - $contracttype = $_POST["contracttype"]; - $files = !empty($_FILES['files']) ? $_FILES['files'] : null; - $files_id = null; - $conn->beginTransaction(); - - $sql_str = "SELECT accountid, name FROM account WHERE accountid = :accountid ORDER BY create_at DESC"; - $stmt = $conn -> prepare($sql_str); - $stmt -> bindParam(":accountid",$salesman); - $stmt -> execute(); - $saleman = $stmt->fetch(PDO::FETCH_ASSOC); - $salesman_name = $saleman['name']; - if(!empty($files)){ - $englisharr = range('a', 'z'); - $files = $_FILES['files']; - $newfiles = []; - foreach( $files as $file ){ - $i = 0; //新陣列的索引編號 - foreach( $file as $key => $val ){ - $newfiles[$i]['name'] = $files['name'][$key]; - $newfiles[$i]['type'] = $files['type'][$key]; - $newfiles[$i]['tmp_name'] = $files['tmp_name'][$key]; - $newfiles[$i]['error'] = $files['error'][$key]; - $newfiles[$i]['size'] = $files['size'][$key]; - $i++; - } //foreach 第2層 end - } - $max_size = 4096*4096; //設定允許上傳檔案容量的最大值(1M) - $allow_ext = array('jpeg', 'jpg', 'png','JPG','JPEG','PNG','GIF'); //設定允許上傳檔案的類型 - $path = '../images/contracts/'; - if (!file_exists($path)) { mkdir($path); } - $msg_result = ''; //負責接收所有檔案檢測後的回傳訊息 - $datetime = (string)date('YmdHis'); - $files_id = 'm' . $datetime; // 保養=>b + 日期時間 - echo json_encode($newfiles); - foreach( $newfiles as $key => $file ){ - $randNum = rand(1000,9999); - $randEnglish = $englisharr[rand(0,25)]; - $file_name = 'm' . (string)date('YmdHis') . $randNum . $randEnglish . $randNum.$file['name']; - $msg = upload_chk( $file,$path, $max_size, $allow_ext, $file_name ); - if($msg==1){ - $msg = '檔案傳送成功!'; - $sql_str = "INSERT INTO contract_back_files (files_id, file_name, file_mime, file_size, created_at, created_by) VALUES (:files_id, :file_name, :file_mime, :file_size, :created_at, :created_by)"; - $stmt = $conn -> prepare($sql_str); - $stmt -> bindParam(':files_id' ,$files_id); - $stmt -> bindParam(':file_name' ,$file_name); - $stmt -> bindParam(':file_mime' ,$file['type']); - $stmt -> bindParam(':file_size' ,$file['size']); - $stmt -> bindParam(':created_at' ,$created_at); - $stmt -> bindParam(':created_by' ,$created_by); - $stmt ->execute(); - } - $msg_result .= '第' . ($key+1) . '個上傳檔案的結果:' . $msg . '
'; - $src_name = $path.$file['name']; - if( file_exists($src_name) ){ - //副檔名 - $extname = pathinfo($src_name, PATHINFO_EXTENSION); - //主檔名 - $basename = basename($src_name, '.'.$extname); - } - - } - }else{ - $files = null; - } - - - $sql_str = "INSERT INTO contract_m_signed_back (contract_no, customer, manager, vat, case_name, linkman, lm_tel, address, salesman, salesman_name, files_id, created_at, created_by) VALUES (:contract_no, :customer, :manager, :vat, :case_name, :linkman, :lm_tel, :address, :salesman, :salesman_name, :files_id, :created_at, :created_by)"; - $stmt = $conn -> prepare($sql_str); - $stmt -> bindParam(":contract_no",$contractno); - $stmt -> bindParam(":customer",$customer); - $stmt -> bindParam(":manager",$manager); - $stmt -> bindParam(":vat",$vat); - $stmt -> bindParam(":case_name",$case_name); - $stmt -> bindParam(":linkman",$linkman); - $stmt -> bindParam(":lm_tel",$lm_tel); - $stmt -> bindParam(":address",$address); - $stmt -> bindParam(":salesman",$salesman); - $stmt -> bindParam(":salesman_name",$salesman_name); - $stmt -> bindParam(":files_id",$files_id); - $stmt -> bindParam(":created_at",$created_at); - $stmt -> bindParam(":created_by",$created_by); - $stmt -> execute(); - - - $result = $conn->commit(); - if($result){ - header("HTTP/1.1 201 Created"); - } - - }catch(PDOException $e){ - $conn->rollback(); - echo $e->getMessage(); - die('Error!:'.$e->getMessage()); - } -} - - -function upload_chk( $file, $path, $max_size, $allow_ext, $file_name ){ - $source_file_name = $file['name']; //上傳檔案的原來檔案名稱 - $file_type = $file['type']; //上傳檔案的類型(副檔名) - $tmp_name = $file['tmp_name']; //上傳到暫存空間的路徑/檔名 - $file_size = $file['size']; //上傳檔案的檔案大小(容量) - $error = $file['error']; //上傳工作傳回的錯誤訊息編號 - $msg = ''; //負責記錄回傳的訊息 - - //1.判斷錯誤編號只有為0時表示沒有錯誤發生,才表示上傳成功 ================= - if( $error == 0 ){ - - //取得檔案延伸的副檔名, 以下函數可以取得檔案延伸的副檔名 - //pathinfo(上傳檔案的原來檔案名稱, PATHINFO_EXTENSION) - $ext = pathinfo($source_file_name, PATHINFO_EXTENSION); - $ext = strtolower($ext); //將延伸的副檔名轉小寫 - - //2.判斷上傳檔案的大小 ==================================== - if( $file_size > $max_size ){ - //當目前檔案容量超過容量限制時, 以下準備顯示的資訊 - if( $max_size >= 4096*4096 ){ - $max_size /= (4096*4096); - $max_size .= 'M'; - }elseif( $max_size >= 4096 ){ - $max_size /= 4096; - $max_size .= 'K'; - } - $msg ='上傳檔案過大,請選擇容量小於 '.$max_size.' 的檔案'; - - //3.判斷檔案類型 =========================================== - //in_array($ext, $allow_ext) 判斷 $ext變數的值 是否在 $allow_ext 這個陣列變數中 - }elseif( !in_array( $ext, $allow_ext ) ){ - $allow_str = ''; //準備將允許檔案類型的陣列內容, 組合成字串 - foreach( $allow_ext as $key=>$value ){ - //if的縮寫語法:條件?成立執行的工作:不成立執行的工作; - $key==0? $allow_str.= $value : $allow_str.=', '.$value; - } - $msg = '檔案類型不符合,請選擇 '.$allow_str.' 檔案'; - - //4.以上條件都沒問題的話, 則進行最後else中的工作=============== - }else{ - //搬移檔案 move_uploaded_file(要搬移的檔案, 目的地位置及目的檔案名稱), 成功傳回true(1) - $msg = @move_uploaded_file($tmp_name, $path.$file_name); - } - }else{ - //這裡表示上傳有錯誤, 匹配錯誤編號顯示對應的訊息 ====================================== - switch ($error) { - case 1: $msg = '上傳檔案超過 upload_max_filesize 容量最大值'; break; - case 2: $msg = '上傳檔案超過 post_max_size 總容量最大值'; break; - case 3: $msg = '檔案只有部份被上傳'; break; - case 4: $msg = '沒有檔案被上傳'; break; - case 6: $msg = '找不到主機端暫存檔案的目錄位置'; break; - case 7: $msg = '檔案寫入失敗'; break; - case 8: $msg = '上傳檔案被PHP程式中斷,表示主機端系統錯誤'; break; - } - } //if( $error == 0 ){ ..... end - - return $msg; //回傳$msg的結果 -} \ No newline at end of file diff --git a/wms/contract/api/postNewContractData.php b/wms/contract/api/postNewContractData.php new file mode 100644 index 00000000..dc08c30c --- /dev/null +++ b/wms/contract/api/postNewContractData.php @@ -0,0 +1,136 @@ + 0) { + header("HTTP/1.1 422 Unprocessable Entity"); + echo json_encode($fail_arr); + exit(); + } + + + $conn->beginTransaction(); + + $sql_str = "SELECT accountid, name FROM account WHERE accountid = :accountid ORDER BY create_at DESC"; + $stmt = $conn -> prepare($sql_str); + $stmt -> bindParam(":accountid",$salesman); + $stmt -> execute(); + $saleman = $stmt->fetch(PDO::FETCH_ASSOC); + $salesman_name = $saleman['name']; + if(!empty($files)){ + $englisharr = range('a', 'z'); + $files = $_FILES['files']; + $newfiles = []; + foreach( $files as $file ){ + $i = 0; //新陣列的索引編號 + foreach( $file as $key => $val ){ + $newfiles[$i]['name'] = $files['name'][$key]; + $newfiles[$i]['type'] = $files['type'][$key]; + $newfiles[$i]['tmp_name'] = $files['tmp_name'][$key]; + $newfiles[$i]['error'] = $files['error'][$key]; + $newfiles[$i]['size'] = $files['size'][$key]; + $i++; + } //foreach 第2層 end + } + $max_size = 4096*4096; //設定允許上傳檔案容量的最大值(1M) + $allow_ext = array('jpeg', 'jpg', 'png','JPG','JPEG','PNG','GIF'); //設定允許上傳檔案的類型 + $path = '../images/contracts/'; + if (!file_exists($path)) { mkdir($path); } + $msg_result = ''; //負責接收所有檔案檢測後的回傳訊息 + $datetime = (string)date('YmdHis'); + $files_id = 'm' . $datetime; // 保養=>b + 日期時間 + foreach( $newfiles as $key => $file ){ + $randNum = rand(1000,9999); + $randEnglish = $englisharr[rand(0,25)]; + $file_name = 'm' . (string)date('YmdHis') . $randNum . $randEnglish . $randNum.$file['name']; + $msg = upload_chk( $file,$path, $max_size, $allow_ext, $file_name ); + if($msg==1){ + $msg = '檔案傳送成功!'; + $sql_str = "INSERT INTO contract_back_files (files_id, file_name, file_mime, file_size, created_at, created_by) VALUES (:files_id, :file_name, :file_mime, :file_size, :created_at, :created_by)"; + $stmt = $conn -> prepare($sql_str); + $stmt -> bindParam(':files_id' ,$files_id); + $stmt -> bindParam(':file_name' ,$file_name); + $stmt -> bindParam(':file_mime' ,$file['type']); + $stmt -> bindParam(':file_size' ,$file['size']); + $stmt -> bindParam(':created_at' ,$created_at); + $stmt -> bindParam(':created_by' ,$created_by); + $stmt ->execute(); + }else{ + throw new PDOException('檔案上傳失敗:' . $msg); + } + $msg_result .= '第' . ($key+1) . '個上傳檔案的結果:' . $msg . '
'; + $src_name = $path.$file['name']; + if( file_exists($src_name) ){ + //副檔名 + $extname = pathinfo($src_name, PATHINFO_EXTENSION); + //主檔名 + $basename = basename($src_name, '.'.$extname); + } + } + }else{ + $files = null; + } + + $sql_str = "INSERT INTO contract_m_signed_back (contract_no, customer, manager, vat, case_name, linkman, lm_tel, address, salesman, salesman_name, files_id, created_at, created_by) VALUES (:contract_no, :customer, :manager, :vat, :case_name, :linkman, :lm_tel, :address, :salesman, :salesman_name, :files_id, :created_at, :created_by)"; + $stmt = $conn -> prepare($sql_str); + $stmt -> bindParam(":contract_no",$contractno); + $stmt -> bindParam(":customer",$customer); + $stmt -> bindParam(":manager",$manager); + $stmt -> bindParam(":vat",$vat); + $stmt -> bindParam(":case_name",$case_name); + $stmt -> bindParam(":linkman",$linkman); + $stmt -> bindParam(":lm_tel",$lm_tel); + $stmt -> bindParam(":address",$address); + $stmt -> bindParam(":salesman",$salesman); + $stmt -> bindParam(":salesman_name",$salesman_name); + $stmt -> bindParam(":files_id",$files_id); + $stmt -> bindParam(":created_at",$created_at); + $stmt -> bindParam(":created_by",$created_by); + $stmt -> execute(); + + + $result = $conn->commit(); + if($result){ + header("HTTP/1.1 201 Created"); + } + + }catch(PDOException $e){ + $conn->rollback(); + header("HTTP/1.1 500 Internal Server Error"); + die('Error!:'.$e->getMessage()); + } + } \ No newline at end of file diff --git a/wms/contract/api/putContractData.php b/wms/contract/api/putContractData.php new file mode 100644 index 00000000..63694e83 --- /dev/null +++ b/wms/contract/api/putContractData.php @@ -0,0 +1,132 @@ + 0) { + header("HTTP/1.1 422 Unprocessable Entity"); + echo json_encode($fail_arr); + exit(); + } + + $conn->beginTransaction(); + + $sql_str = "UPDATE contract_m_signed_back SET contract_no=:contract_no, customer=:customer, manager=:manager, vat=:vat, case_name=:case_name, linkman=:linkman, lm_tel=:lm_tel, address=:address, salesman=:salesman WHERE id = :id"; + $stmt = $conn -> prepare($sql_str); + $stmt -> bindParam(':contract_no' ,$contract_no); + $stmt -> bindParam(':customer' ,$customer); + $stmt -> bindParam(':manager' ,$manager); + $stmt -> bindParam(':vat' ,$vat); + $stmt -> bindParam(':case_name' ,$case_name); + $stmt -> bindParam(':linkman' ,$linkman); + $stmt -> bindParam(':lm_tel' ,$lm_tel); + $stmt -> bindParam(':address' ,$address); + $stmt -> bindParam(':salesman' ,$salesman); + $stmt -> bindParam(':id' ,$id); + $stmt -> execute(); + if(!empty($deletefiles)){ + $sql_str = "DELETE FROM contract_back_files WHERE id IN ($deletefiles)"; + $stmt = $conn -> prepare($sql_str); + $stmt -> execute(); + } + + if(!empty($files)){ + $englisharr = range('a', 'z'); + $files = $_FILES['files']; + $newfiles = []; + foreach( $files as $file ){ + $i = 0; //新陣列的索引編號 + foreach( $file as $key => $val ){ + $newfiles[$i]['name'] = $files['name'][$key]; + $newfiles[$i]['type'] = $files['type'][$key]; + $newfiles[$i]['tmp_name'] = $files['tmp_name'][$key]; + $newfiles[$i]['error'] = $files['error'][$key]; + $newfiles[$i]['size'] = $files['size'][$key]; + $i++; + } //foreach 第2層 end + } + $max_size = 4096*4096; //設定允許上傳檔案容量的最大值(1M) + $allow_ext = array('jpeg', 'jpg', 'png','JPG','JPEG','PNG','GIF'); //設定允許上傳檔案的類型 + $path = '../images/contracts/'; + if (!file_exists($path)) { mkdir($path); } + $msg_result = ''; //負責接收所有檔案檢測後的回傳訊息 + $datetime = (string)date('YmdHis'); + $files_id = ($files_id !== null ) ? $files_id : 'm' . $datetime; // 新梯=>m + 日期時間 + foreach( $newfiles as $key => $file ){ + $randNum = rand(1000,9999); + $randEnglish = $englisharr[rand(0,25)]; + $file_name = 'm' . (string)date('YmdHis') . $randNum . $randEnglish . $randNum.$file['name']; + $msg = upload_chk( $file,$path, $max_size, $allow_ext, $file_name ); + if($msg==1){ + $msg = '檔案傳送成功!'; + $sql_str = "INSERT INTO contract_back_files (files_id, file_name, file_mime, file_size, created_at, created_by) VALUES (:files_id, :file_name, :file_mime, :file_size, :created_at, :created_by)"; + $stmt = $conn -> prepare($sql_str); + $stmt -> bindParam(':files_id' ,$files_id); + $stmt -> bindParam(':file_name' ,$file_name); + $stmt -> bindParam(':file_mime' ,$file['type']); + $stmt -> bindParam(':file_size' ,$file['size']); + $stmt -> bindParam(':created_at' ,$created_at); + $stmt -> bindParam(':created_by' ,$created_by); + $stmt ->execute(); + }else{ + throw new PDOException('檔案上傳失敗:' . $msg); + } + $msg_result .= '第' . ($key+1) . '個上傳檔案的結果:' . $msg . '
'; + $src_name = $path.$file['name']; + if( file_exists($src_name) ){ + //副檔名 + $extname = pathinfo($src_name, PATHINFO_EXTENSION); + //主檔名 + $basename = basename($src_name, '.'.$extname); + } + } + }else{ + $files = null; + } + + $conn->commit(); + }catch(PDOException $e) { + $conn->rollback(); + header("HTTP/1.1 500 Internal Server Error"); + die('Error!:'.$e->getMessage()); + } + + + + + + + + + +} \ No newline at end of file diff --git a/wms/contract/api/upload_chk.php b/wms/contract/api/upload_chk.php new file mode 100644 index 00000000..958cb6d5 --- /dev/null +++ b/wms/contract/api/upload_chk.php @@ -0,0 +1,61 @@ + $max_size ){ + //當目前檔案容量超過容量限制時, 以下準備顯示的資訊 + if( $max_size >= 4096*4096 ){ + $max_size /= (4096*4096); + $max_size .= 'M'; + }elseif( $max_size >= 4096 ){ + $max_size /= 4096; + $max_size .= 'K'; + } + $msg ='上傳檔案過大,請選擇容量小於 '.$max_size.' 的檔案'; + + //3.判斷檔案類型 =========================================== + //in_array($ext, $allow_ext) 判斷 $ext變數的值 是否在 $allow_ext 這個陣列變數中 + }elseif( !in_array( $ext, $allow_ext ) ){ + $allow_str = ''; //準備將允許檔案類型的陣列內容, 組合成字串 + foreach( $allow_ext as $key=>$value ){ + //if的縮寫語法:條件?成立執行的工作:不成立執行的工作; + $key==0? $allow_str.= $value : $allow_str.=', '.$value; + } + $msg = '檔案類型不符合,請選擇 '.$allow_str.' 檔案'; + + //4.以上條件都沒問題的話, 則進行最後else中的工作=============== + }else{ + //搬移檔案 move_uploaded_file(要搬移的檔案, 目的地位置及目的檔案名稱), 成功傳回true(1) + $msg = @move_uploaded_file($tmp_name, $path.$file_name); + } + }else{ + //這裡表示上傳有錯誤, 匹配錯誤編號顯示對應的訊息 ====================================== + switch ($error) { + case 1: $msg = '上傳檔案超過 upload_max_filesize 容量最大值'; break; + case 2: $msg = '上傳檔案超過 post_max_size 總容量最大值'; break; + case 3: $msg = '檔案只有部份被上傳'; break; + case 4: $msg = '沒有檔案被上傳'; break; + case 6: $msg = '找不到主機端暫存檔案的目錄位置'; break; + case 7: $msg = '檔案寫入失敗'; break; + case 8: $msg = '上傳檔案被PHP程式中斷,表示主機端系統錯誤'; break; + } + } //if( $error == 0 ){ ..... end + + return $msg; //回傳$msg的結果 + } \ No newline at end of file diff --git a/wms/contract/contract-download.php b/wms/contract/contract-download.php index 9370728e..2bab2ce4 100644 --- a/wms/contract/contract-download.php +++ b/wms/contract/contract-download.php @@ -81,7 +81,7 @@ if(isset($_GET['id']) && $_GET['id']!=""){ -
+