Browse Source

1215 合約書申請完成

main
10994015 1 year ago
parent
commit
2fb0526cdd
  1. 67
      wms/contract/api/postContractNewApplyData.php
  2. 55
      wms/contract/contract-new-apply.php
  3. BIN
      wms/contract/images/contracts_new_files/m202312151553121018p10181074565_507619045984793_769543820_o.jpg
  4. BIN
      wms/contract/images/contracts_new_files/m202312151553125612r56121048100_507643175982380_1454281158_o.jpg
  5. BIN
      wms/contract/images/contracts_new_files/m202312151553125933t59331004890_505211782892186_1937047065_n.jpg
  6. 32
      wms/contract/js/alpine.js
  7. 5
      wms/mkt/pricereview-index.php

67
wms/contract/api/postContractNewApplyData.php

@ -1,11 +1,16 @@
<?php <?php
use function Symfony\Component\String\s; use function Symfony\Component\String\s;
require_once("../conn.php"); require_once("../conn.php");
include_once("./upload_chk.php");
ini_set ( 'date.timezone' , 'Asia/Taipei' ); ini_set ( 'date.timezone' , 'Asia/Taipei' );
if($_SERVER['REQUEST_METHOD'] != 'POST'){
exit();
}
//暫存、送審 //暫存、送審
if(isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] == 0 || $_POST['status'] == 1) ){ if(isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] == 0 || $_POST['status'] == 1) ){
if($_POST['regulations'] < 45){
header("HTTP/1.1 500 傳送失敗!!試車時間不得低於45天"); if($_POST['regulations'] < 10){
header("HTTP/1.1 500 傳送失敗!!試車時間不得低於10天");
exit; exit;
} }
$mid = $_POST['mid']; $mid = $_POST['mid'];
@ -34,6 +39,9 @@ if(isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] == 0
$status = $_POST['status']; // 0:暫存 1:送審 2:退回 3:完成 $status = $_POST['status']; // 0:暫存 1:送審 2:退回 3:完成
$pays = json_decode($pays, true); $pays = json_decode($pays, true);
$files = !empty($_FILES['files']) ? $_FILES['files'] : null;
$submit_date = ($status == 1) ? date("Y-m-d H:i:s") : null; $submit_date = ($status == 1) ? date("Y-m-d H:i:s") : null;
$progress = 0; $progress = 0;
@ -93,7 +101,60 @@ if(isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] == 0
$stmt ->bindParam(':created_by', $created_by); $stmt ->bindParam(':created_by', $created_by);
$stmt ->execute(); $stmt ->execute();
} }
// -----處理檔案上傳 START-----
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', 'docx', 'doc', 'pdf'); //設定允許上傳檔案的類型
$path = '../images/contracts_new_files/';
if (!file_exists($path)): mkdir($path); endif;
$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_apply_files (contract_id, contract_type, file_name, file_mime, file_size, created_at, created_by) VALUES (:contract_id, :contract_type, :file_name, :file_mime, :file_size, :created_at, :created_by)";
$stmt = $conn -> prepare($sql_str);
$stmt -> bindParam(':contract_id' ,$contract_apply_id);
$stmt -> bindParam(':contract_type' ,$contract_type);
$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 . '<br/>';
$src_name = $path.$file['name'];
if( file_exists($src_name) ){
//副檔名
$extname = pathinfo($src_name, PATHINFO_EXTENSION);
//主檔名
$basename = basename($src_name, '.'.$extname);
}
}
}
// -----處理檔案上傳 END-----
header("HTTP/1.1 201 success!"); header("HTTP/1.1 201 success!");
$conn->commit(); $conn->commit();
}else{ }else{

55
wms/contract/contract-new-apply.php

@ -46,6 +46,7 @@ if(empty($contract_new_apply)){
$stmt->execute(); $stmt->execute();
$items = $stmt->fetchAll(PDO::FETCH_ASSOC); $items = $stmt->fetchAll(PDO::FETCH_ASSOC);
$total_items = 0; $total_items = 0;
print_r($items);
foreach($items as $item){ foreach($items as $item){
$total_items += $item['item_qty']; $total_items += $item['item_qty'];
} }
@ -94,6 +95,7 @@ if(empty($contract_new_apply)){
$secondPayDeadline = $contract['secondPayDeadline'] ?? 0; $secondPayDeadline = $contract['secondPayDeadline'] ?? 0;
$status = isset($contract['status']) ? $contract['status'] : -1; $status = isset($contract['status']) ? $contract['status'] : -1;
$person = $contract['person']; $person = $contract['person'];
?> ?>
<link rel="stylesheet" href="./styles/style.css"> <link rel="stylesheet" href="./styles/style.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" />
@ -167,17 +169,17 @@ $person = $contract['person'];
<tr> <tr>
<td style="vertical-align: middle">含稅給約總價</td> <td style="vertical-align: middle">含稅給約總價</td>
<td colspan="3" style="vertical-align: middle"> <td colspan="3" style="vertical-align: middle">
<input class="form-control disabled_select" type="number" x-model="data.total_price" > <input class="form-control disabled_select lock" type="number" x-model="data.total_price" >
<p class="alerttext" x-show="data.total_price==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.total_price==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td style="vertical-align: middle">含稅貸款(A)</td> <td style="vertical-align: middle">含稅貸款(A)</td>
<td style="vertical-align: middle"> <td style="vertical-align: middle">
<input class="form-control disabled_select" type="number" x-model="data.price_a" > <input class="form-control disabled_select lock" type="number" x-model="data.price_a" >
<p class="alerttext" x-show="data.price_a==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.price_a==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td style="vertical-align: middle">含稅安裝款(A)</td> <td style="vertical-align: middle">含稅安裝款(A)</td>
<td style="vertical-align: middle"> <td style="vertical-align: middle">
<input class="form-control disabled_select" type="number" x-model="data.price_b" > <input class="form-control disabled_select lock" type="number" x-model="data.price_b" >
<p class="alerttext" x-show="data.price_b==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.price_b==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
</tr> </tr>
@ -276,7 +278,7 @@ $person = $contract['person'];
<tr> <tr>
<td style="vertical-align: middle"><p x-text="idx+1"></p></td> <td style="vertical-align: middle"><p x-text="idx+1"></p></td>
<td colspan="3" style="vertical-align: middle"> <td colspan="3" style="vertical-align: middle">
<input class="form-control disabled_select" type="text" x-model="item.item_spec" > <input class="form-control disabled_select lock" type="text" x-model="item.item_spec" >
<p class="alerttext" x-show="data.tradedeadline==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.tradedeadline==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td style="vertical-align: middle"> <td style="vertical-align: middle">
@ -284,7 +286,7 @@ $person = $contract['person'];
<p class="alerttext" x-show="data.tradedeadline==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.tradedeadline==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td colspan="3" style="vertical-align: middle"> <td colspan="3" style="vertical-align: middle">
<input class="form-control disabled_select" type="number" x-model="item.item_price_ct" > <input class="form-control disabled_select lock" type="number" x-model="item.item_price_ct" >
<p class="alerttext" x-show="data.tradedeadline==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.tradedeadline==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
</tr> </tr>
@ -398,7 +400,7 @@ $person = $contract['person'];
</td> </td>
<td> <td>
<div class="ui labeled input"> <div class="ui labeled input">
<input type="number" placeholder="90" style="width:65px;padding:0 12px;" x-model="pays[<?php echo $pay['pay_kind'];?>].pay_period"> <input type="number" placeholder="90" style="width:65px;padding:0 12px;" x-model="pays[<?php echo $pay['pay_kind'];?>].condition_date">
<div class="ui label"> <div class="ui label">
</div> </div>
@ -406,7 +408,7 @@ $person = $contract['person'];
</td> </td>
<td> <td>
<div class="ui labeled input"> <div class="ui labeled input">
<input type="number" placeholder="90" style="width:65px;padding:0 12px;" x-model="pays[<?php echo $pay['pay_kind'];?>].condition_date" > <input type="number" placeholder="90" style="width:65px;padding:0 12px;" x-model="pays[<?php echo $pay['pay_kind'];?>].pay_period" >
<div class="ui label"> <div class="ui label">
</div> </div>
@ -422,11 +424,34 @@ $person = $contract['person'];
<?php endforeach; ?> <?php endforeach; ?>
</tbody> </tbody>
</table> </table>
<template x-if="pays[2].pay_period > 0">
<table class="table table-bordered query-table table-striped table-bordered display compact" style="width:99%;margin-left:.5%"> <table class="table table-bordered query-table table-striped table-bordered display compact" style="width:99%;margin-left:.5%">
<tbody style="font-weight: bolder;margin-bottom: 20px"> <tbody style="font-weight: bolder;margin-bottom: 20px">
<tr> <tr>
<td>第二期款交貨期限(日)</td> <td>第二期款交貨期限(日)</td>
<td><input type="number" class="form-control" x-model="data.secondPayDeadline" /></td> <td>
<input type="number" class="form-control" x-model="data.secondPayDeadline" />
<p class="alerttext" x-show="data.secondPayDeadline==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
</tbody>
</table>
</template>
<table class="table table-bordered query-table table-striped table-bordered display compact" style="width:99%;margin-left:.5%">
<thead style="font-weight: bolder;margin-bottom: 20px;">
<tr>
<td colspan=8>
<h4 style='text-align:center;font-weight: bolder'>附件上傳</h4>
</td>
</tr>
</thead>
<tbody>
<tr>
<td colspan="4">附件上傳</td>
<td colspan="4">
<input type="file" name="file[]" multiple draggable="true" @change="uploadFiles($event)" />
</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -536,6 +561,14 @@ $person = $contract['person'];
<script src="./js/jquery/jquery-3.1.1.min.js"></script> <script src="./js/jquery/jquery-3.1.1.min.js"></script>
<script src="semantic/dist/semantic.min.js" ></script> <script src="semantic/dist/semantic.min.js" ></script>
<script src="./js/alpine.js"></script> <script src="./js/alpine.js"></script>
<script>
window.onload = ()=>{
const lock = document.getElementsByClassName('lock');
for(let i=0;i<lock.length;i++){
lock[i].disabled = true
}
}
</script>
<?php if(empty($contract_new_apply)): ?> <?php if(empty($contract_new_apply)): ?>
<script> <script>
const contractno = '<?php echo $contract['contractno'] ?? ''; ?>'; const contractno = '<?php echo $contract['contractno'] ?? ''; ?>';
@ -555,11 +588,11 @@ $person = $contract['person'];
const mid = '<?php echo $_GET['id']; ?>'; const mid = '<?php echo $_GET['id']; ?>';
const pays = [...<?php echo json_encode($pays) ?? []; ?>]; const pays = [...<?php echo json_encode($pays) ?? []; ?>];
const secondPayDeadline = ''; const secondPayDeadline = '';
const tradeaddress = ""; const tradeaddress = '<?php echo $contract['address'] ?? ''; ?>';
const tradedeadline = 90 const tradedeadline = 90
const freedeadline = 18; const freedeadline = 18;
const regulations = 45; const regulations = 10;
const workdeadline_a = 30; const workdeadline_a = 60;
const workdeadline_b = 7; const workdeadline_b = 7;
const total_items = <?php echo $total_items ?? ''; ?>; const total_items = <?php echo $total_items ?? ''; ?>;
const isFirst = <?php echo $isFirst; ?>; const isFirst = <?php echo $isFirst; ?>;

BIN
wms/contract/images/contracts_new_files/m202312151553121018p10181074565_507619045984793_769543820_o.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

BIN
wms/contract/images/contracts_new_files/m202312151553125612r56121048100_507643175982380_1454281158_o.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

BIN
wms/contract/images/contracts_new_files/m202312151553125933t59331004890_505211782892186_1937047065_n.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

32
wms/contract/js/alpine.js

@ -1211,6 +1211,7 @@ const contractNewApply = ()=>{
review_comment:'', review_comment:'',
secondPayDeadline: secondPayDeadline, secondPayDeadline: secondPayDeadline,
total_items: total_items, total_items: total_items,
files:[],
}, },
pays:{ pays:{
1:{ 1:{
@ -1260,8 +1261,12 @@ const contractNewApply = ()=>{
return num.toLocaleString(); return num.toLocaleString();
}, },
storageFn(){ storageFn(){
if(this.data.regulations < 45){ if(this.data.regulations < 10){
alert('試車時間不能低於45天') alert('試車時間不能低於10天')
return;
}
if(this.data.workdeadline_a < 30){
alert('安裝時間不能低於30天')
return; return;
} }
this.isLoading = true this.isLoading = true
@ -1293,15 +1298,18 @@ const contractNewApply = ()=>{
form.append('pays', JSON.stringify(this.pays)); form.append('pays', JSON.stringify(this.pays));
form.append('status', 0); form.append('status', 0);
form.append('salesman_comment', this.data.salesman_comment); form.append('salesman_comment', this.data.salesman_comment);
for (var i = 0; i < this.data.files.length; i++) {
form.append('files[]', this.data.files[i]);
}
axios.post('./api/postContractNewApplyData.php', form).then(res=>{ axios.post('./api/postContractNewApplyData.php', form).then(res=>{
if(res.status === 201){ if(res.status === 201){
alert('暫存成功'); alert('暫存成功');
console.log(res.data); console.log(res.data);
window.location.reload(); // window.location.reload();
}else if(res.status === 200){ }else if(res.status === 200){
alert('更新成功'); alert('更新成功');
console.log(res.data); console.log(res.data);
window.location.reload(); // window.location.reload();
} }
this.isLoading = false this.isLoading = false
}).catch(error=>{ }).catch(error=>{
@ -1313,8 +1321,12 @@ const contractNewApply = ()=>{
if(!confirm("確定送審嗎?")){ if(!confirm("確定送審嗎?")){
return; return;
} }
if(this.data.regulations < 45){ if(this.data.regulations < 10){
alert('試車時間不能低於45天') alert('試車時間不能低於10天')
return;
}
if(this.data.workdeadline_a < 30){
alert('安裝時間不能低於30天')
return; return;
} }
this.isLoading = true this.isLoading = true
@ -1346,6 +1358,9 @@ const contractNewApply = ()=>{
form.append('pays', JSON.stringify(this.pays)); form.append('pays', JSON.stringify(this.pays));
form.append('status', 1); form.append('status', 1);
form.append('review_comment', this.data.review_comment); form.append('review_comment', this.data.review_comment);
for (var i = 0; i < this.data.files.length; i++) {
form.append('files[]', this.data.files[i]);
}
axios.post('./api/postContractNewApplyData.php', form).then(res=>{ axios.post('./api/postContractNewApplyData.php', form).then(res=>{
console.log(res.data); console.log(res.data);
if(res.status === 201){ if(res.status === 201){
@ -1407,7 +1422,10 @@ const contractNewApply = ()=>{
alert('退回失敗!可能為以下錯誤:\n' + error.response.data) alert('退回失敗!可能為以下錯誤:\n' + error.response.data)
this.isLoading = false this.isLoading = false
}) })
} },
uploadFiles(e){
this.data.files = e.target.files
},
} }
} }

5
wms/mkt/pricereview-index.php

@ -9,7 +9,7 @@ $status_arr = ["Y1" => "暫存", "YS" => "簽核中", "YY" => "結案同意", "Y
// 設置一個空陣列來放資料 // 設置一個空陣列來放資料
$data = array(); $data = array();
// sql語法存在變數中 // sql語法存在變數中
$sql_cmd = sql_myself($user_id); $sql_cmd = sql_myself($user_id, "pricereview_main .creater");
$sql = "select pricereview_main.*, contract_new_apply.status as applystatus from pricereview_main left join contract_new_apply on pricereview_main.id = contract_new_apply.mid where pricereview_main.creater = '$user_id' and pricereview_main.status like 'Y%' and pricereview_main.ekind = '新梯' order by pricereview_main.id"; $sql = "select pricereview_main.*, contract_new_apply.status as applystatus from pricereview_main left join contract_new_apply on pricereview_main.id = contract_new_apply.mid where pricereview_main.creater = '$user_id' and pricereview_main.status like 'Y%' and pricereview_main.ekind = '新梯' order by pricereview_main.id";
// M0024許伃廷,M0107許紓晴權限全開 // M0024許伃廷,M0107許紓晴權限全開
if ($user_id == "M0024" || $user_id == "M0107" || $user_id == "M0174" ) { if ($user_id == "M0024" || $user_id == "M0107" || $user_id == "M0174" ) {
@ -21,9 +21,10 @@ if ($user_id == "M0060" ) {
$sql = "select pricereview_main.*,contract_new_apply.status as applystatus from pricereview_main left join contract_new_apply on pricereview_main.id = contract_new_apply.mid where creater in (select accountid from account where (department_id like '3%' or department_id like '5%')) and pricereview_main.status like 'Y%' and pricereview_main.ekind = '新梯' order by pricereview_main.id"; $sql = "select pricereview_main.*,contract_new_apply.status as applystatus from pricereview_main left join contract_new_apply on pricereview_main.id = contract_new_apply.mid where creater in (select accountid from account where (department_id like '3%' or department_id like '5%')) and pricereview_main.status like 'Y%' and pricereview_main.ekind = '新梯' order by pricereview_main.id";
} }
if (empty($sql_cmd)) $sql = "select pricereview_main.*, contract_new_apply.status as applystatus from pricereview_main left join contract_new_apply on pricereview_main.id = contract_new_apply.mid where pricereview_main.status like 'Y%' and pricereview_main.ekind = '新梯' order by pricereview_main.id"; if (empty($sql_cmd)) $sql = "select pricereview_main.*, contract_new_apply.status as applystatus from pricereview_main left join contract_new_apply on pricereview_main.id = contract_new_apply.mid where pricereview_main.status like 'Y%' and pricereview_main.ekind = '新梯' order by pricereview_main.id";
// else $sql = "select pricereview_main.* from pricereview_main $sql_cmd and pricereview_main.status like 'Y%' and pricereview_main.ekind = '新梯' order by pricereview_main.id"; else $sql = "select pricereview_main.*, contract_new_apply.status as applystatus from pricereview_main left join contract_new_apply on contract_new_apply.mid = pricereview_main.id $sql_cmd and pricereview_main.status like 'Y%' and pricereview_main.ekind = '新梯' order by pricereview_main.id";
$data = mysqli_query($link,$sql); $data = mysqli_query($link,$sql);
$para = "function_name=pricereview&".$token_link; $para = "function_name=pricereview&".$token_link;
echo $sql;
?> ?>
<style> <style>
#table_index2 { #table_index2 {

Loading…
Cancel
Save