Browse Source

新梯合約上傳完成

gary
10994015 1 year ago
parent
commit
01482e59db
  1. 22
      wms/contract/api/getContractData.php
  2. 251
      wms/contract/api/postContractData.php
  3. 100
      wms/contract/contract-input.php
  4. 233
      wms/contract/contract-newelevator-input.php
  5. BIN
      wms/contract/images/contracts/c202311131123153508s35084OlaIEQjXAZDasK9Pd1Jxb.jpg
  6. BIN
      wms/contract/images/contracts/c202311131635478823p88234OlaIEQjXAZDasK9Pd1Jxb.jpg
  7. BIN
      wms/contract/images/contracts/c202311131636479058i90584OlaIEQjXAZDasK9Pd1Jxb.jpg
  8. BIN
      wms/contract/images/contracts/c202311131640249494m94944OlaIEQjXAZDasK9Pd1Jxb.jpg
  9. BIN
      wms/contract/images/contracts/c202311131642368502w8502202204260238d952-c57d-4306-98fc-2a0a92278382.jpg
  10. BIN
      wms/contract/images/contracts/c202311131645582756j27564OlaIEQjXAZDasK9Pd1Jxb.jpg
  11. BIN
      wms/contract/images/contracts/c202311131646497200g72004OlaIEQjXAZDasK9Pd1Jxb.jpg
  12. BIN
      wms/contract/images/contracts/c202311131646504761n47614OlaIEQjXAZDasK9Pd1Jxb.jpg
  13. BIN
      wms/contract/images/contracts/c202311131647427116p71164OlaIEQjXAZDasK9Pd1Jxb.jpg
  14. BIN
      wms/contract/images/contracts/c202311131701104805q48054OlaIEQjXAZDasK9Pd1Jxb.jpg
  15. BIN
      wms/contract/images/contracts/c202311131708462371d23714OlaIEQjXAZDasK9Pd1Jxb.jpg
  16. BIN
      wms/contract/images/contracts/c202311131711253124u31244OlaIEQjXAZDasK9Pd1Jxb.jpg
  17. BIN
      wms/contract/images/contracts/m202311131719422096t20964OlaIEQjXAZDasK9Pd1Jxb.jpg
  18. BIN
      wms/contract/images/contracts/m202311131720416631b66314OlaIEQjXAZDasK9Pd1Jxb.jpg
  19. BIN
      wms/contract/images/contracts/m202311131722329458i94584OlaIEQjXAZDasK9Pd1Jxb.jpg
  20. BIN
      wms/contract/images/contracts/m202311131726107813t78134OlaIEQjXAZDasK9Pd1Jxb.jpg
  21. BIN
      wms/contract/images/contracts/m202311131734551198z11984OlaIEQjXAZDasK9Pd1Jxb.jpg
  22. BIN
      wms/contract/images/contracts/m202311131735334428a4428202204260238d952-c57d-4306-98fc-2a0a92278382.jpg
  23. BIN
      wms/contract/images/contracts/m202311131735338216m82164OlaIEQjXAZDasK9Pd1Jxb.jpg
  24. BIN
      wms/contract/images/contracts/m202311131737372579x2579kobe.jpg
  25. 5
      wms/contract/js/alpinejs/cdn.min.js
  26. 2
      wms/contract/js/axios/axios.min.js
  27. 4
      wms/contract/js/jquery/jquery-3.1.1.min.js
  28. 9
      wms/contract/styles/font-awesome/all.min.css

22
wms/contract/api/getContractData.php

@ -1,6 +1,6 @@
<?php <?php
require_once('../conn.php'); require_once('../conn.php');
if(isset($_GET['contractno']) && $_GET['contractno']!=''){ if(isset($_GET['contractno']) && $_GET['contractno']!='' && isset($_GET['contracttype']) && $_GET['contracttype']=='b'){
try{ try{
$contractno = $_GET['contractno']; $contractno = $_GET['contractno'];
$sql_str = "SELECT con_maintance_examine_apply.*, con_maintance_examine_clear.* FROM con_maintance_examine_apply $sql_str = "SELECT con_maintance_examine_apply.*, con_maintance_examine_clear.* FROM con_maintance_examine_apply
@ -38,3 +38,23 @@ if(isset($_GET['contractno']) && $_GET['contractno']!=''){
die("ERROR!!!: ". $e->getMessage()); die("ERROR!!!: ". $e->getMessage());
} }
} }
if(isset($_GET['contractno']) && $_GET['contractno']!='' && isset($_GET['contracttype']) && $_GET['contracttype']=='m'){
try{
$contractno = $_GET['contractno'];
$sql_str = "SELECT * FROM hope_elevator_customer WHERE vol_no = :vol_no ORDER BY created_at DESC";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':vol_no', $contractno);
$stmt->execute();
$contract= $stmt->fetch(PDO::FETCH_ASSOC);
$contractResponse = json_encode($contract);
// 設定回應標頭為 JSON
header('Content-Type: application/json');
// 將 JSON 回應返回給客戶端
echo $contractResponse;
}catch (PDOException $e ){
die("ERROR!!!: ". $e->getMessage());
}
}

251
wms/contract/api/postContractData.php

@ -3,7 +3,8 @@ require_once("../conn.php");
include_once("./getFacilityNo.php"); include_once("./getFacilityNo.php");
include_once("./getComboNo.php"); include_once("./getComboNo.php");
ini_set ( 'date.timezone' , 'Asia/Taipei' ); ini_set ( 'date.timezone' , 'Asia/Taipei' );
if(isset($_POST["contractno"]) && $_POST["contractno"] != "") { //保養簽回
if(isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['contracttype']) && $_POST['contracttype'] == 'b') {
try{ try{
$created_at = date('Y-m-d H:i:s'); $created_at = date('Y-m-d H:i:s');
$contractno = !empty($_POST['contractno'])? $_POST['contractno'] : null; $contractno = !empty($_POST['contractno'])? $_POST['contractno'] : null;
@ -27,17 +28,6 @@ if(isset($_POST["contractno"]) && $_POST["contractno"] != "") {
$partyAemail = !empty($_POST['partyAemail']) ? $_POST['partyAemail'] : null; $partyAemail = !empty($_POST['partyAemail']) ? $_POST['partyAemail'] : null;
$user_id = !empty($_POST['user_id']) ? $_POST['user_id'] : null; $user_id = !empty($_POST['user_id']) ? $_POST['user_id'] : null;
$user_name = !empty($_POST['user_name']) ? $_POST['user_name'] : null; $user_name = !empty($_POST['user_name']) ? $_POST['user_name'] : null;
$spec = !empty($_POST['spec']) ? $_POST['spec'] : null;
$weight = !empty($_POST['weight']) ? $_POST['weight'] : null;
$numberofpassenger = !empty($_POST['numberofpassenger']) ? $_POST['numberofpassenger'] : null;
$numberofstop = !empty($_POST['numberofstop']) ? $_POST['numberofstop'] : null;
$numberoffloor = !empty($_POST['numberoffloor']) ? $_POST['numberoffloor'] : null;
$speed = !empty($_POST['speed']) ? $_POST['speed'] : null;
$takecertificatedate = !empty($_POST['takecertificatedate']) ? $_POST['takecertificatedate'] : null;
$maintainance = !empty($_POST['maintainance']) ? $_POST['maintainance'] : null;
$licensedate = !empty($_POST['licensedate']) ? $_POST['licensedate'] : null;
$latitude = !empty($_POST['latitude']) ? $_POST['latitude'] : null;
$longitude = !empty($_POST['longitude']) ? $_POST['longitude'] : null;
$num = !empty($_POST['num']) ? $_POST['num'] : null; $num = !empty($_POST['num']) ? $_POST['num'] : null;
$files = !empty($_FILES['files']) ? $_FILES['files'] : null; $files = !empty($_FILES['files']) ? $_FILES['files'] : null;
$elevators = !empty($_POST['elevators']) ? json_decode($_POST['elevators'], true) : []; $elevators = !empty($_POST['elevators']) ? json_decode($_POST['elevators'], true) : [];
@ -66,7 +56,7 @@ if(isset($_POST["contractno"]) && $_POST["contractno"] != "") {
if(count($fail_arr) > 0) { if(count($fail_arr) > 0) {
header("HTTP/1.1 422 Unprocessable Entity"); header("HTTP/1.1 422 Unprocessable Entity");
echo json_encode($fail_arr); echo json_encode($fail_arr);
exit(); exit();
} }
//create account table //create account table
@ -143,11 +133,12 @@ if(isset($_POST["contractno"]) && $_POST["contractno"] != "") {
]; ];
$facility_arr = []; $facility_arr = [];
foreach($elevators as $elevator){ foreach($elevators as $elevator){
$facility_arr[] = $elevator['spec']; $facility_arr[] = $dailyNecessities[$elevator['spec']];
} }
echo $dailyNecessities[$elevator['spec']]; echo json_encode($facility_arr);
$facilityno = $createFacilityNo->makeBFacilityNo("T", $facility_arr, (int)$num); $facilityno = $createFacilityNo->makeBFacilityNo("T", $facility_arr, (int)$num);
echo json_encode($facilityno);
echo '-------';
$sql_str = "SELECT accountid, name FROM account WHERE accountid = :accountid"; $sql_str = "SELECT accountid, name FROM account WHERE accountid = :accountid";
$stmt = $conn->prepare($sql_str); $stmt = $conn->prepare($sql_str);
$stmt->bindParam(':accountid',$mworker); $stmt->bindParam(':accountid',$mworker);
@ -155,7 +146,7 @@ if(isset($_POST["contractno"]) && $_POST["contractno"] != "") {
$worker = $stmt->fetch(PDO::FETCH_ASSOC); $worker = $stmt->fetch(PDO::FETCH_ASSOC);
$customerid = $vat; $customerid = $vat;
$define = "B"; $define = "B";
$repairtype = "A"; $repairtype = $mtype;
$repairerid = $mworker; $repairerid = $mworker;
$repairername = $worker['name']; $repairername = $worker['name'];
foreach($elevators as $idx=>$elevator){ foreach($elevators as $idx=>$elevator){
@ -175,7 +166,7 @@ if(isset($_POST["contractno"]) && $_POST["contractno"] != "") {
$stmt -> bindParam(':opentype' ,$elevator['opendoor']); $stmt -> bindParam(':opentype' ,$elevator['opendoor']);
$stmt -> bindParam(':speed' ,$elevator['speed']); $stmt -> bindParam(':speed' ,$elevator['speed']);
$stmt -> bindParam(':repairtype' ,$repairtype); $stmt -> bindParam(':repairtype' ,$repairtype);
$stmt -> bindParam(':maintainance' ,$maintainance); $stmt -> bindParam(':maintainance' ,$elevator['maintainance']);
$stmt -> bindParam(':facility_kind' ,$elevator['spec']); $stmt -> bindParam(':facility_kind' ,$elevator['spec']);
$stmt -> bindParam(':address' ,$address); $stmt -> bindParam(':address' ,$address);
$stmt -> bindParam(':repairerid' ,$repairerid); $stmt -> bindParam(':repairerid' ,$repairerid);
@ -184,7 +175,7 @@ if(isset($_POST["contractno"]) && $_POST["contractno"] != "") {
$stmt -> bindParam(':create_at' ,$create_at); $stmt -> bindParam(':create_at' ,$create_at);
$stmt -> bindParam(':area' ,$area); $stmt -> bindParam(':area' ,$area);
$stmt -> bindParam(':takecertificatedate' ,$elevator['takecertificatedate']); $stmt -> bindParam(':takecertificatedate' ,$elevator['takecertificatedate']);
$stmt -> bindParam(':licensedate' ,$elevator['licensedateeeee']); $stmt -> bindParam(':licensedate' ,$elevator['useful_date']);
$result = $stmt -> execute(); $result = $stmt -> execute();
} }
@ -250,11 +241,11 @@ if(isset($_POST["contractno"]) && $_POST["contractno"] != "") {
if (!file_exists($path)) { mkdir($path); } if (!file_exists($path)) { mkdir($path); }
$msg_result = ''; //負責接收所有檔案檢測後的回傳訊息 $msg_result = ''; //負責接收所有檔案檢測後的回傳訊息
$datetime = (string)date('YmdHis'); $datetime = (string)date('YmdHis');
$files_id = 'c' . $datetime; $files_id = 'b' . $datetime; // 保養=>b + 日期時間
foreach( $newfiles as $key => $file ){ foreach( $newfiles as $key => $file ){
$randNum = rand(1000,9999); $randNum = rand(1000,9999);
$randEnglish = $englisharr[rand(0,25)]; $randEnglish = $englisharr[rand(0,25)];
$file_name = 'c' . (string)date('YmdHis') . $randNum . $randEnglish . $randNum.$file['name']; $file_name = 'b' . (string)date('YmdHis') . $randNum . $randEnglish . $randNum.$file['name'];
$msg = upload_chk( $file,$path, $max_size, $allow_ext, $file_name ); $msg = upload_chk( $file,$path, $max_size, $allow_ext, $file_name );
if($msg==1){ if($msg==1){
$msg = '檔案傳送成功!'; $msg = '檔案傳送成功!';
@ -322,62 +313,174 @@ if(isset($_POST["contractno"]) && $_POST["contractno"] != "") {
} }
} }
function upload_chk( $file, $path, $max_size, $allow_ext, $file_name ){
$source_file_name = $file['name']; //上傳檔案的原來檔案名稱 if(isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['contracttype']) && $_POST['contracttype'] == 'm') {
$file_type = $file['type']; //上傳檔案的類型(副檔名) try{
$tmp_name = $file['tmp_name']; //上傳到暫存空間的路徑/檔名 $created_at = date('Y-m-d H:i:s');
$file_size = $file['size']; //上傳檔案的檔案大小(容量) $created_by = $_POST["user_id"];
$error = $file['error']; //上傳工作傳回的錯誤訊息編號 $contractno = $_POST["contractno"];
$msg = ''; //負責記錄回傳的訊息 $customer = $_POST["customer"];
$manager = $_POST["manager"];
//1.判斷錯誤編號只有為0時表示沒有錯誤發生,才表示上傳成功 ================= $vat = $_POST["vat"];
if( $error == 0 ){ $case_name = $_POST["case_name"];
$linkman = $_POST["linkman"];
//取得檔案延伸的副檔名, 以下函數可以取得檔案延伸的副檔名 $lm_tel = $_POST["lm_tel"];
//pathinfo(上傳檔案的原來檔案名稱, PATHINFO_EXTENSION) $address = $_POST["address"];
$ext = pathinfo($source_file_name, PATHINFO_EXTENSION); $salesman = $_POST["salesman"];
$ext = strtolower($ext); //將延伸的副檔名轉小寫 $contracttype = $_POST["contracttype"];
$files = !empty($_FILES['files']) ? $_FILES['files'] : null;
//2.判斷上傳檔案的大小 ==================================== $files_id = null;
if( $file_size > $max_size ){
//當目前檔案容量超過容量限制時, 以下準備顯示的資訊 $conn->beginTransaction();
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中的工作=============== $sql_str = "SELECT accountid, name FROM account WHERE accountid = :accountid ORDER BY create_at DESC";
}else{ $stmt = $conn -> prepare($sql_str);
//搬移檔案 move_uploaded_file(要搬移的檔案, 目的地位置及目的檔案名稱), 成功傳回true(1) $stmt -> bindParam(":accountid",$salesman);
$msg = @move_uploaded_file($tmp_name, $path.$file_name); $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
} }
}else{ $max_size = 4096*4096; //設定允許上傳檔案容量的最大值(1M)
//這裡表示上傳有錯誤, 匹配錯誤編號顯示對應的訊息 ====================================== $allow_ext = array('jpeg', 'jpg', 'png','JPG','JPEG','PNG','GIF'); //設定允許上傳檔案的類型
switch ($error) { $path = '../images/contracts/';
case 1: $msg = '上傳檔案超過 upload_max_filesize 容量最大值'; break; if (!file_exists($path)) { mkdir($path); }
case 2: $msg = '上傳檔案超過 post_max_size 總容量最大值'; break; $msg_result = ''; //負責接收所有檔案檢測後的回傳訊息
case 3: $msg = '檔案只有部份被上傳'; break; $datetime = (string)date('YmdHis');
case 4: $msg = '沒有檔案被上傳'; break; $files_id = 'm' . $datetime; // 保養=>b + 日期時間
case 6: $msg = '找不到主機端暫存檔案的目錄位置'; break; echo json_encode($newfiles);
case 7: $msg = '檔案寫入失敗'; break; foreach( $newfiles as $key => $file ){
case 8: $msg = '上傳檔案被PHP程式中斷,表示主機端系統錯誤'; break; $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 . '<br/>';
$src_name = $path.$file['name'];
if( file_exists($src_name) ){
//副檔名
$extname = pathinfo($src_name, PATHINFO_EXTENSION);
//主檔名
$basename = basename($src_name, '.'.$extname);
}
} }
} //if( $error == 0 ){ ..... end }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();
return $msg; //回傳$msg的結果
$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的結果
}

100
wms/contract/contract-input.php

@ -17,9 +17,8 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
?> ?>
<link rel="stylesheet" href="./styles/style.css"> <link rel="stylesheet" href="./styles/style.css">
<link rel="stylesheet" href="semantic/dist/semantic.min.css"> <link rel="stylesheet" href="semantic/dist/semantic.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA==" crossorigin="anonymous" referrerpolicy="no-referrer" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA==" crossorigin="anonymous" referrerpolicy="no-referrer" /><script defer src="./js/alpinejs/cdn.min.js"></script>
<script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></script> <script src="./js/axios/axios.min.js" integrity="sha512-aoTNnqZcT8B4AmeCFmiSnDlc4Nj/KPaZyB5G7JnOnUEkdNpCZs1LCankiYi01sLTyWy+m2P+W4XM+BuQ3Q4/Dg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/1.5.0/axios.min.js" integrity="sha512-aoTNnqZcT8B4AmeCFmiSnDlc4Nj/KPaZyB5G7JnOnUEkdNpCZs1LCankiYi01sLTyWy+m2P+W4XM+BuQ3Q4/Dg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<div class="contract-input-component" x-data="{ <div class="contract-input-component" x-data="{
init(){ init(){
@ -68,7 +67,6 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
if(this.data.num <= 0) return alert('請填寫電梯數量!') if(this.data.num <= 0) return alert('請填寫電梯數量!')
if(!this.data.disabled){ if(!this.data.disabled){
this.createElevator(); this.createElevator();
} }
this.step = 3 this.step = 3
} }
@ -79,6 +77,7 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
if(this.data.contractno == '') return alert('請輸入合約號'); if(this.data.contractno == '') return alert('請輸入合約號');
this.isLoading = true this.isLoading = true
this.getContractDate(); this.getContractDate();
}else if(this.step == 2){ }else if(this.step == 2){
this.step = 3 this.step = 3
} }
@ -94,16 +93,16 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
floors:'', //樓層 floors:'', //樓層
latitude:'', //緯度 latitude:'', //緯度
longitude:'', //經度 longitude:'', //經度
brand:'', //廠牌 elevator_brand:'', //廠牌
opendoor:'', //開門方式 opendoor:'', //開門方式
maintainance:'', //保養別 maintainance:'', //保養別
takecertificatedate:'', //竣檢日 takecertificatedate:'', //竣檢日
licensedate:'', //許可證有效日期 useful_date:'', //許可證有效日期
}) })
} }
}, },
getContractDate(){ getContractDate(){
axios.get('./api/getContractData.php?contractno=' + this.data.contractno).then(res=>{ axios.get('./api/getContractData.php?contracttype=b&contractno=' + this.data.contractno).then(res=>{
if(!res.data){ if(!res.data){
this.step = 2 this.step = 2
this.isLoading = false this.isLoading = false
@ -119,13 +118,6 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
this.data.customer = res.data.customer this.data.customer = res.data.customer
this.data.partyA = res.data.customer this.data.partyA = res.data.customer
this.data.partyAaddress = res.data.address this.data.partyAaddress = res.data.address
this.data.spec = res.data.spec
this.data.weight = res.data.weight
this.data.numberofpassenger = res.data.persons
this.data.numberofstop = res.data.stop
this.data.numberoffloor = res.data.floors
this.data.speed = res.data.speed
this.data.takecertificatedate = res.data.contract_begin_date
this.data.num = res.data.num this.data.num = res.data.num
this.data.disabled = (res.data.num > 0) ? true : false; this.data.disabled = (res.data.num > 0) ? true : false;
this.data.elevators = res.data.elevators this.data.elevators = res.data.elevators
@ -161,17 +153,21 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
this.data.customer = '' this.data.customer = ''
this.data.partyA = '' this.data.partyA = ''
this.data.partyAaddress = '' this.data.partyAaddress = ''
this.data.spec = ''
this.data.weight = ''
this.data.numberofpassenger = ''
this.data.numberofstop = ''
this.data.numberoffloor = ''
this.data.speed = ''
this.data.takecertificatedate = ''
this.step = 1 this.step = 1
this.data.num = '' this.data.num = ''
this.data.disabled = false this.data.disabled = false
this.data.elevators = [] this.data.elevators = []
this.data.files = []
this.data.vat = ''
this.data.mtype = ''
this.data.phone = ''
this.data.email = ''
this.data.mworker = ''
this.data.mcycle = ''
this.data.area = ''
this.data.zip = ''
this.data.partyAphone = ''
this.data.partyAemail = ''
return; return;
} }
}else if(this.step == 3){ }else if(this.step == 3){
@ -202,15 +198,42 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
form.append('user_id', '<?php echo $user_id; ?>'); form.append('user_id', '<?php echo $user_id; ?>');
form.append('user_name', '<?php echo $user_name; ?>'); form.append('user_name', '<?php echo $user_name; ?>');
form.append('num', this.data.num); form.append('num', this.data.num);
console.log(this.data.elevators);
form.append('elevators', JSON.stringify(this.data.elevators)); form.append('elevators', JSON.stringify(this.data.elevators));
form.append('contracttype', 'b');
// 如果有附件檔案,可以逐一加入 // 如果有附件檔案,可以逐一加入
for (var i = 0; i < this.data.files.length; i++) { for (var i = 0; i < this.data.files.length; i++) {
form.append('files[]', this.data.files[i]); form.append('files[]', this.data.files[i]);
} }
axios.post('./api/postContractData.php', form).then(res=>{ axios.post('./api/postContractData.php', form).then(res=>{
console.log(res); console.log(res.status);
if(res.status === 200){
alert('儲存成功');
this.step = 1
this.data.total_price = ''
this.data.salesman = ''
this.data.contract_begin_date = ''
this.data.contract_end_date = ''
this.data.address = ''
this.data.customer = ''
this.data.partyA = ''
this.data.partyAaddress = ''
this.step = 1
this.data.num = ''
this.data.disabled = false
this.data.elevators = []
this.data.files = []
this.data.vat = ''
this.data.mtype = ''
this.data.phone = ''
this.data.email = ''
this.data.mworker = ''
this.data.mcycle = ''
this.data.area = ''
this.data.zip = ''
this.data.partyAphone = ''
this.data.partyAemail = ''
}
this.isLoading = false this.isLoading = false
}).catch(error=>{ }).catch(error=>{
let code = error.response.status; let code = error.response.status;
@ -314,7 +337,7 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
</td> </td>
<td style="vertical-align: middle">維修型態</td> <td style="vertical-align: middle">維修型態</td>
<td style="vertical-align: middle"> <td style="vertical-align: middle">
<select class="ui search dropdown" name="repairtype" x-model="data.mtype"> <select class="ui search dropdown" name="" x-model="data.mtype">
<option value="" >選擇維修型態</option> <option value="" >選擇維修型態</option>
<option value="A">定期保養</option> <option value="A">定期保養</option>
</select> </select>
@ -331,7 +354,7 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
</td> </td>
<td style="vertical-align: middle">Email</td> <td style="vertical-align: middle">Email</td>
<td style="vertical-align: middle"> <td style="vertical-align: middle">
<input class="form-control disabled_select" type="text" name="email" x-model="data.email" > <input class="form-control disabled_select" type="email" name="email" x-model="data.email" >
<p class="alerttext" x-show="data.email==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.email==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td style="vertical-align: middle">保養員</td> <td style="vertical-align: middle">保養員</td>
@ -372,7 +395,7 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
</td> </td>
<td style="vertical-align: middle">業務聯繫人Email</td> <td style="vertical-align: middle">業務聯繫人Email</td>
<td> <td>
<input class="form-control disabled_select" type="text" name="contracttel" x-model="data.partyAemail" > <input class="form-control disabled_select" type="email" name="contracttel" x-model="data.partyAemail" >
<p class="alerttext" x-show="data.partyAemail==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.partyAemail==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
</tr> </tr>
@ -445,12 +468,12 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
<td style="vertical-align: middle">樓停</td> <td style="vertical-align: middle">樓停</td>
<td> <td>
<input type="number" class="form-control" x-model="data.elevators[idx].stop" /> <input type="number" class="form-control" x-model="data.elevators[idx].stop" />
<p class="alerttext" x-show="data.elevators[idx].stop==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.elevators[idx].stop=='' || !data.elevators[idx].stop"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td style="vertical-align: middle">樓層</td> <td style="vertical-align: middle">樓層</td>
<td> <td>
<input type="text" x-model="data.elevators[idx].floors" /> <input type="text" x-model="data.elevators[idx].floors" />
<p class="alerttext" x-show="data.elevators[idx].floors==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.elevators[idx].floors=='' || !data.elevators[idx].floors"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td style="vertical-align: middle">緯度</td> <td style="vertical-align: middle">緯度</td>
<td> <td>
@ -467,14 +490,14 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
<tr> <tr>
<td style="vertical-align: middle">廠牌</td> <td style="vertical-align: middle">廠牌</td>
<td> <td>
<input type="text" x-model="data.elevators[idx].brand" class="form-control" /> <input type="text" x-model="data.elevators[idx].elevator_brand" class="form-control" />
<p class="alerttext" x-show="data.elevators[idx].brand==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.elevators[idx].elevator_brand==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td style="vertical-align: middle"> <td style="vertical-align: middle">
開門方式 開門方式
</td> </td>
<td style="vertical-align: middle"> <td style="vertical-align: middle">
<select class="ui search dropdown" name="repairtype" x-model="data.elevators[idx].opendoor"> <select class="ui search dropdown" name="" x-model="data.elevators[idx].opendoor">
<option value="">選擇開門方式</option> <option value="">選擇開門方式</option>
<option value="2PCO">2PCO</option> <option value="2PCO">2PCO</option>
<option value="2S">2S</option> <option value="2S">2S</option>
@ -486,7 +509,7 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
<option value="6PCO">6PCO</option> <option value="6PCO">6PCO</option>
<option value="CO">CO</option> <option value="CO">CO</option>
</select> </select>
<p class="alerttext" x-show="data.elevators[idx].opendoor==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.elevators[idx].opendoor=='' || !data.elevators[idx].opendoor "><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td style="vertical-align: middle">保養別</td> <td style="vertical-align: middle">保養別</td>
<td> <td>
@ -496,20 +519,20 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
<option value="B">半包</option> <option value="B">半包</option>
<option value="C">清包</option> <option value="C">清包</option>
</select> </select>
<p class="alerttext" x-show="data.elevators[idx].maintainance==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.elevators[idx].maintainance=='' || !data.elevators[idx].maintainance"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td style="vertical-align: middle">竣檢日</td> <td style="vertical-align: middle">竣檢日</td>
<td> <td>
<input class="form-control disabled_select" type="date" x-model="data.elevators[idx].takecertificatedate"> <input class="form-control disabled_select" type="date" x-model="data.elevators[idx].takecertificatedate">
<p class="alerttext" x-show="data.elevators[idx].takecertificatedate==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.elevators[idx].takecertificatedate=='' || !data.elevators[idx].takecertificatedate"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
</tr> </tr>
<tr> <tr>
<td style="vertical-align: middle">許可證有效時間</td> <td style="vertical-align: middle">許可證有效時間</td>
<td> <td>
<input class="form-control disabled_select" type="date" x-model="data.elevators[idx].licensedate"> <input class="form-control disabled_select" type="date" x-model="data.elevators[idx].useful_date">
<p class="alerttext" x-show="data.elevators[idx].licensedate==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.elevators[idx].useful_date=='' || !data.elevators[idx].useful_date"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
</tr> </tr>
<tr><td></td> <tr><td></td>
@ -555,10 +578,7 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
</div> </div>
<script <script
src="https://code.jquery.com/jquery-3.1.1.min.js" src="./js/jquery/jquery-3.1.1.min.js"
integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="
crossorigin="anonymous"></script> crossorigin="anonymous"></script>
<script src="semantic/dist/semantic.min.js" ></script> <script src="semantic/dist/semantic.min.js" ></script>
<script>
</script>

233
wms/contract/contract-newelevator-input.php

@ -0,0 +1,233 @@
<?php
include("../header.php");
require_once("./conn.php");
?>
<link rel="stylesheet" href="./styles/style.css">
<link rel="stylesheet" href="semantic/dist/semantic.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA==" crossorigin="anonymous" referrerpolicy="no-referrer" /><script defer src="./js/alpinejs/cdn.min.js"></script>
<script defer src="./js/alpinejs/cdn.min.js"></script>
<script src="./js/axios/axios.min.js" integrity="sha512-aoTNnqZcT8B4AmeCFmiSnDlc4Nj/KPaZyB5G7JnOnUEkdNpCZs1LCankiYi01sLTyWy+m2P+W4XM+BuQ3Q4/Dg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<div class="contract-input-component" x-data="{
init(){
},
data:{
contractno:'D23080110',
customer:'',
manager:'',
vat:'',
case_name:'',
linkman:'',
lm_tel:'',
address:'',
salesman:'',
files:[],
},
step:1,
isLoading:false,
nextStepFn(){
this.isLoading = true
if(this.step == 1){
axios.get('./api/getContractData.php?contracttype=m&contractno=' + this.data.contractno).then(res=>{
if(res.data){
console.log(res.data);
this.data.customer = res.data.customer
this.data.manager = res.data.manager
this.data.vat = res.data.uscc
this.data.case_name = res.data.case_name
this.data.linkman = res.data.linkman
this.data.lm_tel = res.data.lm_tel
this.data.address = res.data.address
this.data.salesman = res.data.salesman
this.isLoading = false
this.step = 2
}
}).catch(err=>{
console.error(err)
this.isLoading = false
})
}
},
nextStepKeyupFn(){
if(e.keyCode !== 13) return
if(this.step == 1){
this.step = 2
}
},
preStepFn(){
if(this.step == 2){
this.step = 1
}
},
save(){
this.isLoading = true
const form = new FormData();
form.append('contractno', this.data.contractno);
form.append('customer', this.data.customer);
form.append('manager', this.data.manager);
form.append('vat', this.data.vat);
form.append('case_name', this.data.case_name);
form.append('linkman', this.data.linkman);
form.append('lm_tel', this.data.lm_tel);
form.append('address', this.data.address);
form.append('salesman', this.data.salesman);
form.append('contracttype', 'm');
form.append('user_id', '<?php echo $user_id; ?>');
for (var i = 0; i < this.data.files.length; i++) {
form.append('files[]', this.data.files[i]);
}
axios.post('./api/postContractData.php', form).then(res=>{
console.log(res.data);
if(res.status === 201){
alert('儲存成功')
}
this.isLoading = false
}).catch(error=>{
let code = error.response.status;
if(code == 422){
this.fail_arr = error.response.data
this.errorFn();
}
this.isLoading = false
})
},
errorFn(){
let msg = ''
for(let i = 0; i < this.fail_arr.length; i++){
msg += this.fail_arr[i] + '、'
}
alert(msg)
},
uploadFiles(e){
this.data.files = e.target.files
},
}">
<div class="form" method="post" id="form" enctype="multipart/form-data" >
<input type="hidden" name='form_name' value="main_form" />
<div>
<table class="table table-bordered query-table table-striped table-bordered display compact" style="width:99%;margin-left:.5%">
<thead>
<tr>
<td colspan="9">
<h3 style='text-align:center'>合約入力(新梯)</h3>
</td>
</tr>
</thead>
<template x-if="step==1">
<tbody style="font-weight: bolder;margin-bottom: 20px" x-show="step==1">
<tr>
<td style="vertical-align: middle">合約號</td>
<td>
<input class="form-control" @keyup="nextStepKeyupFn($event)" type="text" name="contractno" x-model="data.contractno" >
</td>
<td style="vertical-align: middle">
<label for="customize">
<input type="checkbox" x-model="customize" id="customize" />自定義欄位
</label>
</td>
</tr>
</tbody>
</template>
<template x-if="step==2">
<tbody style="font-weight: bolder;margin-bottom: 20px" x-show="step==2">
<tr>
<td colspan="7" style='vertical-align: middle;border-right:0px;'>
<h4>業務確認項</h4>
</td>
<td class="text-right" style='border-left:0px;'>
<button type="button" id="btn_close" class="btn btn-default" onclick="window.history.back();">返回</button>
<button type="button" id="btn_close" class="btn btn-default" onclick="window.close();">關閉分頁</button>
</td>
</tr>
<tr>
<td style="vertical-align: middle">客戶名稱</td>
<td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.customer" >
<p class="alerttext" x-show="data.customer==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">負責人</td>
<td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.manager" >
<p class="alerttext" x-show="data.manager==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">統一編號/身分證</td>
<td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.vat" >
<p class="alerttext" x-show="data.vat==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">營業員工號</td>
<td style="vertical-align: middle">
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.salesman" >
<p class="alerttext" x-show="data.case_name==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
<tr>
<td style="vertical-align: middle">聯繫人</td>
<td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.linkman" >
<p class="alerttext" x-show="data.linkman==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">聯繫人電話</td>
<td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.lm_tel" >
<p class="alerttext" x-show="data.lm_tel==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">案件名稱</td>
<td colspan=3>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.case_name" >
<p class="alerttext" x-show="data.salesman==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
<tr>
<td style="vertical-align: middle">地址</td>
<td colspan=3>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.address" >
<p class="alerttext" x-show="data.address==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">附件上傳</td>
<td colspan=3>
<input type="file" name="file[]" multiple draggable="true" @change="uploadFiles($event)" />
<p class="alerttext" x-show="data.lm_tel==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
</tbody>
</template>
</table>
<button x-show="step==2" @click="save()" :disabled="isLoading" type="button" class="btn btn-primary btn-lg pull-right savebtn">
<template x-if="!isLoading">
<span>存檔</span>
</template>
<template x-if="isLoading">
<div class="loader"></div>
</template>
</button>
<button x-show="step<=1" @click="nextStepFn()" type="button" class="btn btn-primary btn-lg pull-right savebtn" :disabled="isLoading">
<template x-if="!isLoading">
<span>下一步</span>
</template>
<template x-if="isLoading">
<div class="loader"></div>
</template>
</button>
<button x-show="step>1" @click="preStepFn()" :disabled="isLoading" type="button" class="btn btn-primary btn-lg pull-right savebtn">
<template x-if="!isLoading">
<span>上一步</span>
</template>
<template x-if="isLoading">
<div class="loader"></div>
</template>
</button>
</div>
</div>
</div>
<script
src="./js/jquery/jquery-3.1.1.min.js"
integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="
crossorigin="anonymous"></script>
<script src="semantic/dist/semantic.min.js" ></script>

BIN
wms/contract/images/contracts/c202311131123153508s35084OlaIEQjXAZDasK9Pd1Jxb.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
wms/contract/images/contracts/c202311131635478823p88234OlaIEQjXAZDasK9Pd1Jxb.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
wms/contract/images/contracts/c202311131636479058i90584OlaIEQjXAZDasK9Pd1Jxb.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
wms/contract/images/contracts/c202311131640249494m94944OlaIEQjXAZDasK9Pd1Jxb.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
wms/contract/images/contracts/c202311131642368502w8502202204260238d952-c57d-4306-98fc-2a0a92278382.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
wms/contract/images/contracts/c202311131645582756j27564OlaIEQjXAZDasK9Pd1Jxb.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
wms/contract/images/contracts/c202311131646497200g72004OlaIEQjXAZDasK9Pd1Jxb.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
wms/contract/images/contracts/c202311131646504761n47614OlaIEQjXAZDasK9Pd1Jxb.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
wms/contract/images/contracts/c202311131647427116p71164OlaIEQjXAZDasK9Pd1Jxb.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
wms/contract/images/contracts/c202311131701104805q48054OlaIEQjXAZDasK9Pd1Jxb.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
wms/contract/images/contracts/c202311131708462371d23714OlaIEQjXAZDasK9Pd1Jxb.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
wms/contract/images/contracts/c202311131711253124u31244OlaIEQjXAZDasK9Pd1Jxb.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
wms/contract/images/contracts/m202311131719422096t20964OlaIEQjXAZDasK9Pd1Jxb.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
wms/contract/images/contracts/m202311131720416631b66314OlaIEQjXAZDasK9Pd1Jxb.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
wms/contract/images/contracts/m202311131722329458i94584OlaIEQjXAZDasK9Pd1Jxb.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
wms/contract/images/contracts/m202311131726107813t78134OlaIEQjXAZDasK9Pd1Jxb.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
wms/contract/images/contracts/m202311131734551198z11984OlaIEQjXAZDasK9Pd1Jxb.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
wms/contract/images/contracts/m202311131735334428a4428202204260238d952-c57d-4306-98fc-2a0a92278382.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
wms/contract/images/contracts/m202311131735338216m82164OlaIEQjXAZDasK9Pd1Jxb.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
wms/contract/images/contracts/m202311131737372579x2579kobe.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

5
wms/contract/js/alpinejs/cdn.min.js

File diff suppressed because one or more lines are too long

2
wms/contract/js/axios/axios.min.js

File diff suppressed because one or more lines are too long

4
wms/contract/js/jquery/jquery-3.1.1.min.js

File diff suppressed because one or more lines are too long

9
wms/contract/styles/font-awesome/all.min.css

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save