Browse Source

Merge branch 'cheng'

main
Cheng 1 year ago
parent
commit
61d905e470
  1. 217
      mkt/contractapply-index.php
  2. 2
      wms/cont/MICalculator.php
  3. 58
      wms/cont/apply_form.php
  4. 10
      wms/cont/apply_form1.php
  5. 42
      wms/cont/conn.php
  6. 11
      wms/cont/query_form.php
  7. 272
      wms/cont/sign_list.php
  8. 16
      wms/cont/t.php
  9. 567
      wms/contract-repair/contract-download.php
  10. 662
      wms/contract-repair/contract_maintance.php
  11. 763
      wms/contract-repair/js/alpine.js
  12. 649
      wms/contract-repair/prviewPdf.php
  13. 283
      wms/contract/api/postContractNewApplyData.php
  14. 519
      wms/contract/contract-download.php
  15. 79
      wms/crm/crmm01-index.php
  16. 30
      wms/crm/crmm02-index.php
  17. 16
      wms/crm/crmm06-edit.php
  18. 1495
      wms/mkt/pricereview-check.php
  19. 591
      wms/mkt/pricereview-index.php
  20. 2
      wms/mkt/pricereview_renovate-index.php
  21. 20
      wms/mkt/pricereview_repair-create.php
  22. 194
      wms/mkt/specsurvey-index.php
  23. 194
      wms/mkt/specsurvey_renovate-index.php

217
mkt/contractapply-index.php

@ -7,129 +7,132 @@ require_once "database.php";
$data = array();
// sql語法存在變數中
$sql = "select * from contractapply_main order by id";
$data = mysqli_query($link,$sql);
$data = mysqli_query($link, $sql);
$apply_type_arr = ["A" => "制式新合約", "B" => "非制式新合約"];
$status_arr = ["I" => "申請中", "P" => "在途中", "Y" => "已完成", "X" => "作廢"];
?>
<p>
<a href="contractapply-create.php" class="btn btn-info btn-sm">
<span class="glyphicon glyphicon-plus"></span>
</a>
<a href="contractapply-create.php" class="btn btn-info btn-sm">
<span class="glyphicon glyphicon-plus"></span>
</a>
</p>
<?php
if($data):
if ($data) :
?>
<style>
table {
table-layout:fixed;
width: 100%;
}
<style>
table {
table-layout: fixed;
width: 100%;
}
td {
word-wrap:break-word;
}
td {
word-wrap: break-word;
}
img {
width:125px;
}
img {
width: 125px;
}
.width_style_1 {
width:125px;
}
.width_style_1 {
width: 125px;
}
table{
width:100%;
}
#table_index_filter{
float:right;
}
#table_index_paginate{
float:right;
}
label {
display: inline-flex;
margin-bottom: .5rem;
margin-top: .5rem;
table {
width: 100%;
}
}
</style>
<div style="overflow-x:auto;">
<table id="table_index" class="table table-striped table-bordered" style="width:100%">
<thead>
<tr>
<th>項次</th>
<th>申請號</th>
<th>卷號</th>
<th>營業員</th>
<th>合約書號</th>
<th>申請日期</th>
<th>立約人</th>
<th>申請類別</th>
<th>合約狀態</th>
<th>合約狀態時間</th>
<th>案件名稱</th>
<th>含稅貨款</th>
<th>含稅按裝款</th>
<th>含稅給約總價</th>
<th>二次款</th>
<!--<th>交貨期限</th>
#table_index_filter {
float: right;
}
#table_index_paginate {
float: right;
}
label {
display: inline-flex;
margin-bottom: .5rem;
margin-top: .5rem;
}
</style>
<div style="overflow-x:auto;">
<table id="table_index" class="table table-striped table-bordered" style="width:100%">
<thead>
<tr>
<th>項次</th>
<th>申請號</th>
<th>卷號</th>
<th>營業員</th>
<th>合約書號</th>
<th>申請日期</th>
<th>立約人</th>
<th>申請類別</th>
<th>合約狀態</th>
<th>合約狀態時間</th>
<th>案件名稱</th>
<th>含稅貨款</th>
<th>含稅按裝款</th>
<th>含稅給約總價</th>
<th>二次款</th>
<!--<th>交貨期限</th>
<th>完工期限</th>-->
<th>建檔人</th>
<th>建檔時間</th>
</tr>
</thead>
<tbody>
<?php foreach($data as $data) :
switch ($data["status"]) {
case "I":
$status_dt = $data["status_1_dt"];
break;
case "P":
$status_dt = $data["status_2_dt"];
break;
case "Y":
$status_dt = $data["status_3_dt"];
break;
case "X":
$status_dt = $data["status_4_dt"];
break;
}
?>
<tr>
<td><?php echo $data['id']; ?></td>
<td><?php echo $data['apply_no1'].$data['apply_no2']; ?></td>
<td><?php echo $data['contractno']; ?></td>
<td><?php echo $data['person']; ?></td>
<td><?php echo $data['apply_number']; ?></td>
<td><?php echo $data['apply_date']; ?></td>
<td><?php echo $data['promiser']; ?></td>
<td><?php echo $apply_type_arr[$data['apply_type']]; ?></td>
<td>
<?php echo $status_arr[$data['status']]; ?>
<p>
<a href="contractapply-edit.php?id=<?php echo $data['id']; ?>" class="btn btn-info btn-sm">
<span class="glyphicon glyphicon-pencil"></span>
</a>
</p>
</td>
<td><?php echo $status_dt; ?></td>
<td><?php echo $data['case_name']; ?></td>
<td><?php echo number_format($data['pay']); ?></td>
<td><?php echo number_format($data['pay_install']); ?></td>
<td><?php echo number_format($data['pay_total']); ?></td>
<td><?php echo $data['pay_second']; ?></td>
<!--<td><?php echo $data['delivery_date']; ?></td>
<th>建檔人</th>
<th>建檔時間</th>
</tr>
</thead>
<tbody>
<?php foreach ($data as $data) :
switch ($data["status"]) {
case "I":
$status_dt = $data["status_1_dt"];
break;
case "P":
$status_dt = $data["status_2_dt"];
break;
case "Y":
$status_dt = $data["status_3_dt"];
break;
case "X":
$status_dt = $data["status_4_dt"];
break;
}
?>
<tr>
<td><?php echo $data['id']; ?></td>
<td><?php echo $data['apply_no1'] . $data['apply_no2']; ?></td>
<td><?php echo $data['contractno']; ?></td>
<td><?php echo $data['person']; ?></td>
<td><?php echo $data['apply_number']; ?></td>
<td><?php echo $data['apply_date']; ?></td>
<td><?php echo $data['promiser']; ?></td>
<td><?php echo $apply_type_arr[$data['apply_type']]; ?></td>
<td>
<?php echo $status_arr[$data['status']]; ?>
<p>
<a href="contractapply-edit.php?id=<?php echo $data['id']; ?>" class="btn btn-info btn-sm">
<span class="glyphicon glyphicon-pencil"></span>
</a>
</p>
</td>
<td><?php echo $status_dt; ?></td>
<td><?php echo $data['case_name']; ?></td>
<td><?php echo number_format($data['pay']); ?></td>
<td><?php echo number_format($data['pay_install']); ?></td>
<td><?php echo number_format($data['pay_total']); ?></td>
<td><?php echo $data['pay_second']; ?></td>
<!--<td><?php echo $data['delivery_date']; ?></td>
<td><?php echo $data['completion_date']; ?></td>-->
<td><?php echo $data['creater']; ?></td>
<td><?php echo $data['create_dt']; ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<td><?php echo $data['creater']; ?></td>
<td><?php echo $data['create_dt']; ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php
else:
else :
echo "<h2>There is no record!</h2>";
endif;

2
wms/cont/MICalculator.php

@ -284,6 +284,8 @@ class MICalculator
and maintain_kind='" . $item['maintain_kind'] . "'
and is_m1_bundle='" . $item['is_m1_bundle'] . "'
";
// echo $sql_get_price;
list($row) = DB::result($sql_get_price);
if (empty($row)) return self::error();
#1基礎價格

58
wms/cont/apply_form.php

@ -2,6 +2,8 @@
require_once '../header_nomenu.php';
require_once './FormHelper.php';
require_once './wf_common.php';
// require_once('./conn.php');
$vol_no = empty($_GET['vol_no']) ? "" : $_GET['vol_no'];
@ -25,19 +27,27 @@ $flow_id = 'con01';
$form_id = "";
#價審單狀態
$apply_st = "";
list($apply_key, $form_key) = DB::fields("SELECT apply_key, form_key from con_maintance_examine_apply where vol_no='$vol_no' order by apply_key desc limit 0, 1");
list($apply_key, $form_key, $salesman) = DB::fields("SELECT apply_key, form_key,salesman FROM con_maintance_examine_apply WHERE vol_no='$vol_no' ORDER BY apply_key desc limit 0, 1");
// echo '<pre>';
// print_r($apply_key);
// echo '</pre>';
// exit;
// if ($salesman != $user_id) {
// echo '<script>alert("您並不是該單營業員,無法訪問。");history.go(-1);</script>';
// exit;
// }
if (empty($apply_key)) $apply_st = 1; // 準備新增
else {
//list($flow_code)=DB::fields("select flow_code from flow where form_key = '$form_key' and system_id = '$system_id' and flow_id = '$flow_id'");
list($current_assigner) = DB::fields("select current_assigner from subflow where form_key = '$form_key' order by seq desc limit 0, 1");
list($current_assigner) = DB::fields("SELECT current_assigner FROM subflow WHERE form_key = '$form_key' ORDER BY seq desc limit 0, 1");
if ($current_assigner == $user_id) $apply_st = 2; // 修改中,還未提交
else $apply_st = 9; // 已到下一關,無法䖺改
}
if ($apply_st > 2) {
echo "<script>alert('卷號" . $vol_no . "已生成價審單,請勿重複生成!');history.go(-1);</script>";
exit;
}
// if ($apply_st > 2) {
// echo "<script>alert('卷號" . $vol_no . "已生成價審單,請勿重複生成!');history.go(-1);</script>";
// exit;
// }
if ($apply_st == 1) {
$wf = new WorkFlow($system_id, $flow_id, $form_id);
@ -250,6 +260,12 @@ if ($result['department_id'] == 'M0137' || $result['department_id'] == 'M0086' |
}
?>
<style>
button.disabled {
cursor: not-allowed;
background: #555;
}
</style>
<link rel="stylesheet" type="text/css" href="<?php echo base_url('css/jquery.cleditor.css'); ?>" />
<link rel="stylesheet" type="text/css" href="<?php echo base_url('bootstrap4/css/bootstrap.min.css'); ?>" />
<link rel="stylesheet" type="text/css" href="<?php echo base_url('css/layui.css'); ?>" />
@ -421,7 +437,7 @@ if ($result['department_id'] == 'M0137' || $result['department_id'] == 'M0086' |
is_m1_bundle
}
setStandPrice(param1, element);
//console.info(param1);
// console.log(param1);
});
@ -484,16 +500,33 @@ if ($result['department_id'] == 'M0137' || $result['department_id'] == 'M0086' |
dataType: 'json',
//success: function(data) {},
success: function(data) {
// console.info(data);
console.log(data.price);
if (data.status == 'ok') {
$(obj).val(data.price);
} else {
$(obj).val(data.message);
}
if (data.message == '無此項目,請聯係業務部創建標準成本') {
console.log('1');
// $("button[name^=btn_save]").attr('disabled', true);
// $("button[name^=btn_save]").css('cursor', 'not-allowed')
$("#submit").css('background-color', '#666')
document.querySelector('#submit').classList.add('disabled')
document.querySelector('#submit').disabled = true
}
if (data.price) {
document.querySelector('#submit').classList.remove('disabled')
document.querySelector('#submit').disabled = false
$("#submit").css('background-color', '#007bff')
// $("button[name^=btn_save]").attr('disabled', false);
// $("button[name^=btn_save]").css('cursor', 'default')
// $("button[name^=btn_save]").css('background-color', '#666')
}
}
});
}
addNewBrand = function() {
var new_brand = $("#new_brand").val();
@ -519,6 +552,13 @@ if ($result['department_id'] == 'M0137' || $result['department_id'] == 'M0086' |
}
}
$("input[name^='stand_price']").bind('input propertychang', function() {
if ($("input[name^='stand_price']").val() == '') {
console.log('無值');
$("button[name^=btn_save]").attr('disabled', true);
}
});
</script>
@ -701,7 +741,7 @@ if ($result['department_id'] == 'M0137' || $result['department_id'] == 'M0086' |
</div>
<div class="col-3 form_field_title ">
<button type="submit" name="btn_save" class="btn btn-warning btn-sm" value="save" style='float:left;margin-right:4px;'>保存</button>&nbsp;
<button type="submit" name="btn_save" class="btn btn-primary btn-sm" value="tosign" style='float:left'>提交</button>
<button type="submit" name="btn_save" class="btn btn-primary btn-sm" value="tosign" style='float:left' id="submit">提交</button>
</div>
</div>

10
wms/cont/apply_form1.php

@ -27,13 +27,13 @@ $form_id = "";
$apply_st = "";
list($apply_key, $form_key, $salesman) = DB::fields("SELECT apply_key, form_key,salesman FROM con_maintance_examine_apply WHERE vol_no='$vol_no' ORDER BY apply_key desc limit 0, 1");
// echo '<pre>';
// print_r($apply_key);
// print_r($salesman);
// echo '</pre>';
// exit;
// if ($salesman != $user_id) {
// echo '<script>alert("您並不是該單營業員,無法訪問。");history.go(-1);</script>';
// exit;
// }
if ($salesman != $user_id) {
echo '<script>alert("您並不是該單營業員,無法訪問。");history.go(-1);</script>';
exit;
}
if (empty($apply_key)) $apply_st = 1; // 準備新增
else {
//list($flow_code)=DB::fields("select flow_code from flow where form_key = '$form_key' and system_id = '$system_id' and flow_id = '$flow_id'");

42
wms/cont/conn.php

@ -0,0 +1,42 @@
<?php
$envFile = __DIR__ . '/.env'; // .env 文件的路径
if (file_exists($envFile)) {
$lines = file($envFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
if ($lines !== false) {
foreach ($lines as $line) {
list($key, $value) = explode('=', $line, 2);
$key = trim($key);
$value = trim($value);
// 设置环境变量
putenv("$key=$value");
}
}
}
$db_hostname = getenv('DB_HOST'); //資料庫主機名稱
$db_username = getenv('DB_USERNAME'); //登入資料庫的管理者的帳號
$db_password = getenv('DB_PASSWORD'); //登入密碼
$db_name = getenv('DB_DATABASE'); //使用的資料庫
$db_charset = 'utf8'; //設定字元編碼
//建立PDO的指定工作
$dsn = "mysql:host=$db_hostname;dbname=$db_name;charset=$db_charset";
try {
//使用PDO連接到MySQL資料庫,建立PDO物件
$conn = new PDO($dsn, $db_username, $db_password);
//當錯誤發生時會將錯誤資訊放到一個類物件裡(PDOException)
//PDO異常處理,PDO::ATTR_ERRMODE,有以下三種值的設定
//PDO::ERRMODE_SILENT: 預設模式,不主動報錯,需要以$conn->errorInfo()的形式獲取錯誤資訊
//PDO::ERRMODE_WARNING: 引發 E_WARNING 錯誤,主動報錯
//PDO::ERRMODE_EXCEPTION: 主動抛出 exceptions 異常,需要以try{}cath(){}輸出錯誤資訊。
//設定主動以警告的形式報錯
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//如果連接錯誤,將抛出一個PDOException異常對象
} catch (PDOException $e) {
//如果連結資料庫失敗則顯示錯誤訊並停止本頁的工作
die("ERROR!!!: " . $e->getMessage());
}
//$conn = null; //關閉資料庫的連線

11
wms/cont/query_form.php

@ -114,9 +114,9 @@ $con_maintance_examine_clear_columm = [
'sold_price' => ['label' => "契約成交價C(元/月)", "value" => "", "tag" => 'number', 'attr' => ['required', 'colspan' => 2, 'name' => 'sold_price[]', 'class' => 'form-control form-control-sm']],
'mi_cost' => ['label' => "標準成本D(元/月)", "value" => "", "tag" => 'number', 'attr' => ['readonly=true','disabled', 'colspan' => 2, 'name' => 'mi_cost[]', 'class' => 'form-control form-control-sm']],
'discount' => ['label' => "折扣率E(%)", "value" => "", "tag" => 'number', 'attr' => ['readonly=true','disabled', 'colspan' => 2, 'name' => 'mi_cost_rate[]', 'class' => 'form-control form-control-sm']],
'gross_profit' => ['label' => "毛利率F(%)", "value" => "", "tag" => 'number', 'attr' => ['readonly=true','disabled', 'colspan' => 2, 'name' => 'gross_profit[]', 'class' => 'form-control form-control-sm']],
'mi_cost' => ['label' => "標準成本D(元/月)", "value" => "", "tag" => 'number', 'attr' => ['readonly=true', 'disabled', 'colspan' => 2, 'name' => 'mi_cost[]', 'class' => 'form-control form-control-sm']],
'discount' => ['label' => "折扣率E(%)", "value" => "", "tag" => 'number', 'attr' => ['readonly=true', 'disabled', 'colspan' => 2, 'name' => 'mi_cost_rate[]', 'class' => 'form-control form-control-sm']],
'gross_profit' => ['label' => "毛利率F(%)", "value" => "", "tag" => 'number', 'attr' => ['readonly=true', 'disabled', 'colspan' => 2, 'name' => 'gross_profit[]', 'class' => 'form-control form-control-sm']],
];
$con_maintance_examine_clear = DB::result("SELECT register_code,
@ -267,6 +267,7 @@ function base_url($url)
$i = 0;
echo " <div class='row '>";
foreach ($editableColumn as $key => $val) {
// print_r($val['label']);
$j = (($i++) % 4);
$fieldVal = empty($data) ? "" : $data[$key];
$fieldVal = empty($data) ? "" : $data[$key];
@ -275,8 +276,8 @@ function base_url($url)
FormHelper::select("$key", $val['options'], $fieldVal, $val['attr']) :
FormHelper::tag("label", $val['attr'], $fieldVal);
//"<input type='" . $val['tag'] . "' class=' form-control form-control-sm " . $val['class'] . "'
// value='" . $fieldVal . "' name='$key' id='$key' placeholder='請輸入'>";
// "<input type='" . $val['tag'] . "' class=' form-control form-control-sm " . $val['class'] . "'
// value='" . $fieldVal . "' name='$key' id='$key' placeholder='請輸入'>";
if ($i != 1 && $j == 0) {
echo "
</div>

272
wms/cont/sign_list.php

@ -3,30 +3,34 @@ require_once "../header.php";
// 載入db.php來連結資料庫
$table = 'con_maintance_examine_apply';
$para = "function_name=pricereview&" . $token_link;
$status_arr = ["Y1" => "暫存", "YS" => "簽核中", "YY" => "結案同意", "YN" => "結案不同意"];
#可編輯的列
$editableColumn = [
'apply_key' => [
'label' => "評審單號", "value" => "", "tag" => 'text',
'attr' => [
'readonly=true ',
'class' => 'form-control form-control-sm'
]
],
'vol_no' => ['label' => "卷號", "value" => "", "tag" => 'text', 'attr' => ['readonly=true ', 'class' => 'form-control form-control-sm']],
'address' => ['label' => "現場地址", "value" => "", "tag" => 'text', 'attr' => ['required', 'class' => 'form-control form-control-sm']],
'case_name' => ['label' => "現場名稱", "value" => "", "tag" => 'text', 'attr' => ['required', 'class' => 'form-control form-control-sm']],
'brand' => ['label' => "電梯品牌", "value" => "", "tag" => 'select', 'attr' => ['required', 'class' => 'form-control form-control-sm']],
'num' => ['label' => "電梯臺數", "value" => "", "tag" => 'number', 'attr' => ['required', 'class' => 'form-control form-control-sm']],
'salesman' => ['label' => "營業員", "value" => "", "tag" => 'text', 'attr' => ['required', 'class' => 'form-control form-control-sm']],
'maintain_kind' => ['label' => "保養方式", "value" => "", "tag" => 'select', 'attr' => ['class' => 'form-control form-control-sm']],
'contract_begin_date' => ['label' => "契約期限開始", "value" => "", "tag" => 'date', 'attr' => ['required', 'class' => 'date form-control form-control-sm']],
'contract_end_date' => ['label' => "契約期限結束", "value" => "", "tag" => 'date', 'attr' => ['required', 'class' => 'date form-control form-control-sm']],
'contract_kind' => ['label' => "契約性質", "value" => "", "tag" => 'select', 'attr' => ['class' => 'form-control form-control-sm']],
'platform_company' => ['label' => "加盟公司名稱", "value" => "", "tag" => 'text', 'attr' => ['class' => 'form-control form-control-sm']],
'platforom_company_tel' => ['label' => "加盟公司電話", "value" => "", "tag" => 'text', 'attr' => ['class' => 'form-control form-control-sm']],
//'payment_kind' => ['label' => "付款方式", "value" => "", "tag" => 'select', 'attr' => ['required', 'class' => 'form-control form-control-sm'], 'options' => $payment_kind_opt],
];
// $editableColumn = [
// 'apply_key' => [
// 'label' => "評審單號", "value" => "", "tag" => 'text',
// 'attr' => [
// 'readonly=true ',
// 'class' => 'form-control form-control-sm'
// ]
// ],
// 'vol_no' => ['label' => "卷號", "value" => "", "tag" => 'text', 'attr' => ['readonly=true ', 'class' => 'form-control form-control-sm']],
// 'address' => ['label' => "現場地址", "value" => "", "tag" => 'text', 'attr' => ['required', 'class' => 'form-control form-control-sm']],
// 'case_name' => ['label' => "現場名稱", "value" => "", "tag" => 'text', 'attr' => ['required', 'class' => 'form-control form-control-sm']],
// 'brand' => ['label' => "電梯品牌", "value" => "", "tag" => 'select', 'attr' => ['required', 'class' => 'form-control form-control-sm']],
// 'num' => ['label' => "電梯臺數", "value" => "", "tag" => 'number', 'attr' => ['required', 'class' => 'form-control form-control-sm']],
// 'salesman' => ['label' => "營業員", "value" => "", "tag" => 'text', 'attr' => ['required', 'class' => 'form-control form-control-sm']],
// 'maintain_kind' => ['label' => "保養方式", "value" => "", "tag" => 'select', 'attr' => ['class' => 'form-control form-control-sm']],
// 'contract_begin_date' => ['label' => "契約期限開始", "value" => "", "tag" => 'date', 'attr' => ['required', 'class' => 'date form-control form-control-sm']],
// 'contract_end_date' => ['label' => "契約期限結束", "value" => "", "tag" => 'date', 'attr' => ['required', 'class' => 'date form-control form-control-sm']],
// 'contract_kind' => ['label' => "契約性質", "value" => "", "tag" => 'select', 'attr' => ['class' => 'form-control form-control-sm']],
// 'platform_company' => ['label' => "加盟公司名稱", "value" => "", "tag" => 'text', 'attr' => ['class' => 'form-control form-control-sm']],
// 'platforom_company_tel' => ['label' => "加盟公司電話", "value" => "", "tag" => 'text', 'attr' => ['class' => 'form-control form-control-sm']],
// //'payment_kind' => ['label' => "付款方式", "value" => "", "tag" => 'select', 'attr' => ['required', 'class' => 'form-control form-control-sm'], 'options' => $payment_kind_opt],
// ];
// 設置一個空陣列來放資料
$data = array();
@ -41,7 +45,7 @@ $res = mysqli_query($link, $sql);
$row = mysqli_fetch_row($res);
$user_department_id = $row[0];
mysqli_free_result($res);
if (in_array($user_department_id, $depart_arr) || $user_id == "M0008" || $user_id == "M0012" || $user_id == "M0006" || $user_id =="M0189") $where = "";
if (in_array($user_department_id, $depart_arr) || $user_id == "M0008" || $user_id == "M0012" || $user_id == "M0006" || $user_id == "M0189" || $user_id == "TEST01" || $user_id == "TEST02" || $user_id == "TEST03" || $user_id == "M0225") $where = "";
// 電梯廠牌
$elevator_brand_arr = [];
@ -59,6 +63,7 @@ $sql = "SELECT
case_name,
brand ,
num ,
salesman as salesman_id,
f_return_name(salesman) salesman,
f_return_content('maintain_kind',maintain_kind ) maintain_kind,
date_format(contract_begin_date,'%Y/%m/%d') contract_begin_date,
@ -67,14 +72,13 @@ f_return_content('contract_kind',contract_kind ) contract_kind,
platform_company,
platforom_company_tel,
form_key,
status,
f_return_content('payment_kind',payment_kind ) payment_kind FROM $table
where 1=1 $where ORDER BY vol_no";
// echo $sql;
$data = mysqli_query($link, $sql);
// echo '<pre>';
// print_r($data);
// echo '</pre>';
?>
<?php
@ -90,59 +94,175 @@ if ($data) :
}
?>
<link rel="stylesheet" href="common.css">
<!-- <link rel="stylesheet" href="common.css"> -->
<style>
#table_index2 {
table-layout: fixed;
width: 100%;
}
<div style="overflow-x:auto;">
<form method='get' action='#'>
<table class='table query-table table-striped table-bordered display compact' style='width:98%;text-align:center;margin:0 auto'>
<thead>
<tr>
<td colspan="8">
<h3 style='text-align:center'>(契約)價審單查詢</h3>
</td>
</tr>
#table_index2_filter {
float: right;
}
</thead>
</table>
<table id="table_index" class="table table-striped table-bordered" style="width:98%">
<thead>
<?php
echo "<tr>";
foreach ($editableColumn as $key => $val) {
echo "<th>" . $val['label'] . "</th>";
}
echo "<th>是否結案</th>";
// echo "<th>刪除</th>";
echo "</tr>";
?>
</thead>
<tbody>
<?php foreach ($data as $row) : ?>
<tr>
<?php
foreach ($editableColumn as $key => $val) {
if ($key == 'apply_key') {
echo "<td> <a href='query_form.php?apply_key=$row[$key]&token=" . $_GET['token'] . "'>" . $row[$key] . "</td>";
} elseif ($key == 'brand') {
echo "<td>" . (!empty($row[$key]) ? $elevator_brand_arr[$row[$key]] : "") . "</td>";
} else {
echo "<td>" . $row[$key] . "</td>";
}
}
//list($signer)=DB::fields(");
//echo " select f_return_name(current_assigner) signer from subflow where form_key='". $row['form_key'] ."'"; ". (is_array($row['form_key'])?'': $row['form_key']) ."
list($signer) = mysqli_fetch_array(mysqli_query($link, "select max(f_return_name(current_assigner) ) signer from subflow where form_key='" . $row['form_key'] . "'"));
#table_index2_paginate {
float: right;
}
echo "<td>" . (empty($signer) ? "結案" : "N") . "</td>";
div.dataTables_scrollHead table.dataTable {
margin-bottom: 0 !important;
border-bottom-width: 0;
}
?>
div.dataTables_scrollBody table.dataTable {
border-top-width: 0;
}
</tr>
<?php endforeach; ?>
</tbody>
</table>
/*
.col-sm-12 {
width: auto;
}
*/
img {
width: 125px;
}
.width_style_1 {
width: 125px;
}
label {
display: inline-flex;
margin-bottom: .5rem;
margin-top: .5rem;
}
div a:hover {
text-decoration: none;
}
.btn-sm {
font-size: 14px;
margin: 2px 0;
line-height: 90%;
}
.glyphicon-ok,
.glyphicon-ban-circle {
font-size: 130%;
}
.btn-secondary {
color: #fff;
background-color: #6c757d;
border-color: #6c757d;
}
.btn-secondary:hover {
color: #fff;
background-color: #5a6268;
border-color: #545b62;
}
.applybtn {
color: #fff;
background-color: #1484c4;
display: block;
border-radius: 4px;
padding: 4px 2px;
font-size: 13px;
}
.applybtn:hover {
background-color: #1494f9;
color: #fff;
}
</style>
<script>
$(function() {
$('#table_index2').DataTable({
"scrollX": true,
"pageLength": 50
});
/*
var api = $('#table_index').dataTable().api();
//var order = api.order();
//console.log(order);
api
.order([0, "desc"])
.draw();
*/
});
</script>
<link rel="stylesheet" href="../crm/common.css">
<div style="overflow-x:auto; white-space:nowrap;">
<table id="table_index2" class="table table-striped table-bordered" style="width:100%">
<thead>
<tr>
<th>評審單號</th>
<th>卷號</th>
<th>現場地址</th>
<th>現場名稱</th>
<th>電梯品牌</th>
<th>電梯台數</th>
<th>營業員</th>
<th>保養方式</th>
<th>契約期限開始</th>
<th>契約期限結束</th>
<th>契約性質</th>
<th>加盟公司名稱</th>
<th>加盟公司電話</th>
<!-- <th>加盟公司電話</th> -->
<th>是否結案</th>
<th>合約下載</th>
</tr>
</thead>
<tbody>
<?php foreach ($data as $row) :
$oneself = ($row['salesman'] == $user_id) ? 1 : 0;
?>
<tr>
<td><?php echo $row['apply_key'] ?></td>
<td><?php echo $row['vol_no'] ?></td>
<td><?php echo $row['address'] ?></td>
<td><?php echo $row['case_name'] ?></td>
<td><?php echo $row['brand'] ?></td>
<td><?php echo $row['num'] ?></td>
<td><?php echo $row['salesman'] ?></td>
<td><?php echo $row['maintain_kindd'] ?></td>
<td><?php echo $row['contract_begin_date'] ?></td>
<td><?php echo $row['contract_end_date'] ?></td>
<td><?php echo $row['contract_kind'] ?></td>
<td><?php echo $row['platform_company'] ?></td>
<td><?php echo $row['platforom_company_tel'] ?></td>
<?php list($signer) = mysqli_fetch_array(mysqli_query($link, "select max(f_return_name(current_assigner) ) signer from subflow where form_key='" . $row['form_key'] . "'")); ?>
<td><?php echo empty($signer) ? '結案' : 'N' ?></td>
<td>
<a class="applybtn" href="../contract-repair/contract_maintance.php?apply_key=<?php echo $row['apply_key'] . '&' . $para; ?>">
<?php if (($row['status'] == 'YY' && $oneself)) {
echo '申請';
} else {
echo '檢視';
} ?>
</a>
<?php if ($row['status'] == 'YY' && ($user_id == "M0060" || $user_id == "M0107" || $user_id == "M0174" || $user_id == 'M0225') && $row['applystatus'] == 1) : ?>
<a class="applybtn" href="../contract-repaire/contract_maintance.php?id=<?php echo $row['id'] . '&' . $para; ?>">待簽核</a><br>
<?php endif; ?>
<?php if ($row['status'] != 'Y1') : ?>
<span style="font-size:13px;font-weight:600">--</span>
<?php endif; ?>
<?php if (($row['status'] === 'YY' && $row['applystatus'] == 3 && ($user_id == "M0107" || $user_id == "M0060")) || $user_id == "M0174" || $user_id == 'M0225') : ?>
<a class="applybtn" href="../contract-repair/contract-download.php?apply_key=<?php echo $row['apply_key'] . '&' . $para ?>">下載</a>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php

16
wms/cont/t.php

@ -4,7 +4,7 @@ ini_set('dispaly_errors', "On");
require_once './MSCalculator.php';
/* //客梯
//客梯
$param = [
'elevator_type' => 'A',
@ -18,8 +18,8 @@ $param = [
'maintain_period' => 1, //默认为1月1次, 2是为2月一次
'is_m1_bundle' => 'N',
];
*/
/* //货梯
//货梯
$param = [
'elevator_type' => 'B',
@ -33,9 +33,9 @@ $param = [
'maintain_period' => 1, //默认为1月1次, 2是为2月一次
'is_m1_bundle' => 'N',
];
*/
/*//病床梯
//病床梯
$param = [
'elevator_type' => 'C',
@ -48,9 +48,9 @@ $param = [
'maintain_kind' => 2,
'maintain_period' => 1, //默认为1月1次, 2是为2月一次
'is_m1_bundle' => 'N',
];*/
];
/*//无机房
//无机房
$param = [
'elevator_type' => 'D',
'floors' => 3,
@ -64,7 +64,7 @@ $param = [
'is_m1_bundle' => 'N',
];
*/
//家用梯
$param = [
'elevator_type' => 'E',

567
wms/contract-repair/contract-download.php

@ -0,0 +1,567 @@
<?php
include "../header.php";
require_once('./conn.php');
//買賣1、2、3,安裝5、6 (4跟7很少有)
if (!empty($_GET['apply_key'])) {
try {
$apply_key = $_GET['apply_key'];
// $sql_str = "SELECT pricereview_main.*, pricereview_pay.*, pricereview_item.note, pricereview_item.item_qty, account.name as accountname, account.id as accountid
// FROM pricereview_main
// JOIN pricereview_pay ON pricereview_main.id = pricereview_pay.mid
// JOIN pricereview_item ON pricereview_main.id = pricereview_item.mid
// JOIN account ON pricereview_main.person = account.accountid
// WHERE pricereview_main.id = :id AND pricereview_item.item_group = 'A' ORDER BY pay_kind ASC";
// 價審資料
$sql = "SELECT * FROM con_maintance_examine_apply AS a LEFT JOIN hope_contract_customer AS b ON a.vol_no = b.vol_no WHERE a.apply_key = :apply_key";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':apply_key', $apply_key);
$stmt->execute();
$contract_maintance = $stmt->fetchALL(PDO::FETCH_ASSOC);
echo '<pre>';
print_r($contract_maintance);
echo '</pre>';
// echo $contract_maintance;
// $stmt = $conn->prepare($sql_str);
// $stmt->bindParam(':id',$id);
// $stmt->execute();
// $contracts = $stmt->fetchAll(PDO::FETCH_ASSOC);
// $sql_str = "SELECT contract_new_apply.*,
// contract_new_apply_pays.pay_kind, contract_new_apply_pays.pay_scale, contract_new_apply_pays.pay_amount, contract_new_apply_pays.pay_period, contract_new_apply_pays.condition_date
// FROM contract_new_apply
// JOIN contract_new_apply_pays ON contract_new_apply.id = contract_new_apply_pays.contract_apply_id
// WHERE contract_new_apply.mid = :id";
// $stmt = $conn->prepare($sql_str);
// $stmt->bindParam(':id', $id);
// $stmt->execute();
// $contracts = $stmt->fetchAll(PDO::FETCH_ASSOC);
// $contract = $contracts[0];
// $contract_apply_id = $contract['id'];
// if (($contract['status'] !== "YY" && $user_id != 'M0107') && $user_id != 'M0174' || $user_id != 'M0225') {
// echo '<script type="text/javascript">
// alert("非法訪問。");
// window.history.back();
// </script>';
// exit;
// }
// 抓有望客戶的資料
$sql_str = "SELECT * FROM hope_contract_customer WHERE vol_no = :vol_no";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':vol_no', $contract_maintance['vol_no']);
$stmt->execute();
$customer = $stmt->fetchAll(PDO::FETCH_ASSOC);
// if (count($customer) <= 0) {
// echo "<script>
// alert('資料不齊或合約書已生成過。');
// window.history.back();
// </script>";
// exit;
// }
$buyArr = [];
$buyNo2Pay = false;
$buy_total_price = 0;
$installArr = [];
$install_total_price = 0;
// $noteArr = explode(",", $contracts[0]['note']);
$noteArr = array(1, 1, 1, 1, 1);
$qty = $contract_maintance[0]['num'];
// echo $qty;
// foreach ($contract_maintance as $idx => $amount) {
// $isset = false;
// if ($amount['payment_kind'] == 5 || $amount['payment_kind'] == 6) {
// if ($amount['pay_scale'] >= 0) {
// $install_total_price = $install_total_price + $amount['pay_amount'];
// $installArr[] = ['installment' => $amount['pay_kind'], 'scale' => $amount['pay_scale'], 'amount' => $amount['pay_amount'], 'pay_period' => $amount['pay_period']];
// }
// }
// if ($amount['pay_kind'] == 1 || $amount['pay_kind'] == 2 || $amount['pay_kind'] == 3) {
// if ($amount['pay_scale'] > 0) {
// $buy_total_price = $buy_total_price + $amount['pay_amount'];
// foreach ($buyArr as $buy) {
// if ($buy['installment'] == $amount['pay_kind']) {
// $isset = true;
// }
// }
// if (!$isset) { {
// $buyArr[] = ['installment' => $amount['pay_kind'], 'scale' => $amount['pay_scale'], 'amount' => $amount['pay_amount'], 'pay_period' => $amount['pay_period']];
// }
// if ($amount['pay_kind'] == 2) {
// $buyNo2Pay = true;
// }
// }
// }
// }
// }
$sql_str = "SELECT file_name FROM contract_apply_files WHERE contract_id = :contract_id AND deleted_at IS NULL";
$sql_str = "SELECT contract_apply_files.*, contract_new_apply.id as apply_id FROM contract_apply_files LEFT JOIN contract_new_apply ON contract_apply_files.contract_id = contract_new_apply.id WHERE contract_new_apply.mid = :mid AND contract_apply_files.deleted_at IS NULL";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':mid', $id);
$stmt->execute();
$files = $stmt->fetchAll(PDO::FETCH_ASSOC);
$files_count = count($files);
} catch (PDOException $e) {
die("ERROR!!!: " . $e->getMessage());
}
}
?>
<link rel="stylesheet" href="./styles/style.css">
<script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></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>
<script src="https://cdnjs.cloudflare.com/ajax/libs/dompurify/2.3.3/purify.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.3.3/html2canvas.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
<main x-data="contractDownload">
<div class="sidebar">
<ul>
<button :class="isbuyShow ? 'active' : ''" @click="isbuyShow = true">電梯買賣合約書</button>
<button :class="!isbuyShow ?'active' : ''" @click="isbuyShow = false">電梯安裝合約書</button>
<a href="..wms/cont/sign_list.php?function_name=pricereview&<?php echo $token_link; ?>">回列表</a>
</ul>
</div>
<div class="inputDiv" x-show="isbuyShow && isBuyInputIng">
<!-- <label for="">
<p>交貨期限(日)</p>
<input type="number" x-model="buyfill1" @keyup="sendBuyInputKeyupFn($event)" />
</label> -->
<?php if ($buyNo2Pay) { ?>
<!-- <label for="">
<p>第二期款交貨期限(日)</p>
<input type="number" x-model="buyfill2">
</label> -->
<?php } ?>
<!-- <label for="">
<p>附件數</p>
<select x-model="buyAffix">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</label> -->
<label for="">
<button @click="sendBuyInputFn()">生成買賣合約書</button>
</label>
</div>
<div class="contract-material-component" x-show="isbuyShow && !isBuyInputIng">
<div class="btn-list">
<label for="standardBuyBtn">
<p>制式合約</p>
<input type="checkbox" class="scorll" x-model="toggleBuyStandard">
<!-- <input type="radio" checked id="standardBuyBtn" name="standardBuyBtn" @change="toggleBuyStandard = true" /> -->
</label>
<!-- <label for="noStandardBuyBtn">
<input type="radio" id="noStandardBuyBtn" name="standardBuyBtn" @change="toggleBuyStandard = false" />
非制式合約
</label> -->
</div>
<button @click="isBuyInputIng = true" class="rebtn">重新輸入</button>
<button @click="exportFn(1)" class="prviewbtn">預覽</button>
<div class="contract" id="noStandardBuyContract" x-show="!toggleBuyStandard">
<table class="my-2 contract" x-ref="contract1" id="contract1">
<tr>
<td class="center">
<h2 style="text-align:center">電梯買賣合約書</h2>
</td>
</tr>
<tr>
<td colspan="1">
立契約人 甲方:<article x-html="onstandardViewData.partyAcontractno.plaintext"></article>
</td>
<td>
<div style="margin-left: 100px">
乙方:<article x-html="onstandardViewData.partyAcontractno.plaintext"></article>
</div>
</td>
</tr>
<tr>
<td>
<div style="margin-left: 100px">
<p x-html="onstandardViewData.partyA.plaintext">一二營造有限公司 </p>
</div>
<div style="margin-left: auto;margin-right:200px">(即買方,以下簡稱為甲方)</div>
</td>
</tr>
<tr>
<td>立合約書人</td>
</tr>
<tr>
<td>
<div style="margin-left: 100px">
<p>永佳捷科技股份有限公司 </p>
</div>
<div style="margin-left: auto;margin-right:200px">(即賣方,以下簡稱為乙方)</div>
</td>
</tr>
<tr :class="buyonstandardViewData.illustrate.editshow ? 'mouseover' : '' " x-on:mouseover="mouseover('illustrate', false)" x-on:mouseout="mouseout('illustrate')">
<td>
<span x-html='buydata.illustrate.plaintext'></span>
<div class="buttons" x-show="buyonstandardViewData.illustrate.editshow" x-cloak>
<button class="edit" @click="modelshowEditFn('更新合約書內容', 'illustrate', false, false)"><i class="glyphicon glyphicon-pencil"></i></button>
<button class="delete"><i class="glyphicon glyphicon-trash"></i></button>
</div>
</td>
</tr>
<template x-for="(item, idx) in buyonstandardViewData.list.plaintext" :key="item.id">
<tr :class="buyonstandardViewData.list.plaintext[idx].editshow ? 'mouseover' : '' " @mouseover="mouseoverlist(idx, false)" @mouseout="mouseoutlist(idx)">
<td class="list">
<div class="buttons" x-show="buyonstandardViewData.list.plaintext[idx].editshow" x-cloak>
<button class="edit" @click="modelshowEditFn('update contract list', idx, true, false)"><i class="glyphicon glyphicon-pencil"></i></button>
<button class="add" @click="modelshowAddUpFn(idx, false)"><i class="glyphicon glyphicon-arrow-up"></i></button>
<button class="add" @click="modelshowAddDownFn(idx, false)"><i class="glyphicon glyphicon-arrow-down"></i></button>
<button class="delete" @click="deleteEditor(idx, false)"><i class="glyphicon glyphicon-trash"></i></button>
</div>
<span x-text="'第' + chineseNumbers(idx+1) + '條'"></span>
<article x-html="buyonstandardViewData.list.plaintext[idx].text"></article>
</td>
</tr>
</template>
</table>
</div>
<div class="contract" id="standardBuyContract" x-show="toggleBuyStandard">
<table class="my-2 contract" id="contract0">
<tr>
<td class="center">
<h2 style="text-align:center">電梯買賣合約書</h2>
</td>
</tr>
<tr>
<td colspan="1">
合約書編號:<article x-html="data.partyAcontractno.plaintext"></article>
</td>
</tr>
<tr>
<td>
<div style="margin-left: 100px">
<p x-html="data.partyA.plaintext"> </p>
</div>
<div style="margin-left: auto;margin-right:200px">(即買方,以下簡稱為甲方)</div>
</td>
</tr>
<tr>
<td>立合約書人</td>
</tr>
<tr>
<td>
<div style="margin-left: 100px">
<p>永佳捷科技股份有限公司 </p>
</div>
<div style="margin-left: auto;margin-right:200px">(即賣方,以下簡稱為乙方)</div>
</td>
</tr>
<tr :class="buystandardData.illustrate.editshow ? 'mouseover' : '' ">
<td>
<span x-html='buystandardData.illustrate.plaintext'></span>
</td>
</tr>
<template x-for="(item, idx) in buystandardData.list.plaintext" :key="item.id">
<tr :class="buystandardData.list.plaintext[idx].editshow ? 'mouseover' : '' ">
<td class="list">
<span x-text="'第' + chineseNumbers(idx+1) + '條'"></span>
<article x-html="buystandardData.list.plaintext[idx].text"></article>
</td>
</tr>
</template>
</table>
</div>
</div>
<div class="contract-model" x-show="modelshow" x-cloak>
<div class="contract-back"></div>
<div class="contract-content">
<div class="model-header"><span x-text='modelText'></span><i @click='modelcloseFn()' class="glyphicon glyphicon-remove"></i></div>
<div class="content">
<textarea name="content" id="editor" x-ref="editor"></textarea>
<input type="submit" value="update" @click='updateEditor()' />
</div>
</div>
</div>
<div class="inputDiv" x-show="!isbuyShow && isInstallInputIng">
<!-- <label for="">
<p>安裝試車期限(日)</p>
<input type="number" x-model="installfill1" @keyup="sendInstallInputKeyupFn($event)" />
</label>
<label for="">
<p>免費保養月數(月)</p>
<input type="number" x-model="installfill2" @keyup="sendInstallInputKeyupFn($event)" />
</label> -->
<!-- <label for="">
<p>附件數</p>
<select x-model="installAffix" @keyup="sendInstallInputKeyupFn($event)">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</label> -->
<label for="">
<button @click="sendInstallInputFn()">生成安裝合約書</button>
</label>
</div>
<div class="contract-install-component" x-show="!isbuyShow && !isInstallInputIng" x-cloak>
<div class="btn-list">
<label for="standardBtn">
<p>制式合約</p>
<input type="checkbox" class="scorll" x-model="toggleBuyStandard">
<!-- <input type="radio" checked id="standardBtn" name="standardBtn" @change="toggleInstallStandard = true" /> -->
</label>
<!-- <label for="noStandardBtn">
<input type="radio" id="noStandardBtn" name="standardBtn" @change="toggleInstallStandard = false" />
非制式合約
</label> -->
</div>
<button @click="isInstallInputIng = true" class="rebtn">重新輸入</button>
<button @click="exportFn(2)" class="prviewbtn">預覽</button>
<div class="contract" id="noStandardContract" x-show="!toggleInstallStandard">
<table class="my-2 contract" x-ref="contract1" id="contract1">
<tr>
<td class="center">
<h2 style="text-align:center">電梯安裝合約書</h2>
</td>
</tr>
<tr>
<td colspan="1">
合約書編號:<article x-html="onstandardViewData.partyAcontractno.plaintext"></article>
</td>
</tr>
<tr>
<td>
<div style="margin-left: 100px">
<p x-html="onstandardViewData.partyA.plaintext">一二營造有限公司 </p>
</div>
<div style="margin-left: auto;margin-right:200px">(即買方,以下簡稱為甲方)</div>
</td>
</tr>
<tr>
<td>立合約書人</td>
</tr>
<tr>
<td>
<div style="margin-left: 100px">
<p>永佳捷科技股份有限公司 </p>
</div>
<div style="margin-left: auto;margin-right:200px">(即賣方,以下簡稱為乙方)</div>
</td>
</tr>
<tr :class="onstandardViewData.illustrate.editshow ? 'mouseover' : '' " x-on:mouseover="mouseover('illustrate')" x-on:mouseout="mouseout('illustrate')">
<td>
<span x-html='onstandardViewData.illustrate.plaintext'></span>
<div class="buttons" x-show="onstandardViewData.illustrate.editshow" x-cloak>
<button class="edit" @click="modelshowEditFn('更新合約書內容', 'illustrate', false, true)"><i class="glyphicon glyphicon-pencil"></i></button>
<button class="delete"><i class="glyphicon glyphicon-trash"></i></button>
</div>
</td>
</tr>
<template x-for="(item, idx) in onstandardViewData.list.plaintext" :key="item.text">
<tr :class="onstandardViewData.list.plaintext[idx].editshow ? 'mouseover' : '' " @mouseover="mouseoverlist(idx)" @mouseout="mouseoutlist(idx)">
<td class="list">
<div class="buttons" x-show="onstandardViewData.list.plaintext[idx].editshow" x-cloak>
<button class="edit" @click="modelshowEditFn('update contract list', idx, true, true)"><i class="glyphicon glyphicon-pencil"></i></button>
<button class="add" @click="modelshowAddUpFn(idx)"><i class="glyphicon glyphicon-arrow-up"></i></button>
<button class="add" @click="modelshowAddDownFn(idx)"><i class="glyphicon glyphicon-arrow-down"></i></button>
<button class="delete" @click="deleteEditor(idx)"><i class="glyphicon glyphicon-trash"></i></button>
</div>
<span x-text="'第' + chineseNumbers(idx+1) + '條'"></span>
<article x-html="onstandardViewData.list.plaintext[idx].text"></article>
</td>
</tr>
</template>
</table>
</div>
<div class="contract" id="standardContract" x-show="toggleInstallStandard">
<table class="my-2 contract" id="contract0">
<tr>
<td class="center">
<h2 style="text-align:center">電梯安裝合約書</h2>
</td>
</tr>
<tr>
<td colspan="1">
合約書編號:<article x-html="data.partyAcontractno.plaintext"></article>
</td>
</tr>
<tr>
<td>
<div style="margin-left: 100px">
<p x-html="data.partyA.plaintext">一二營造有限公司 </p>
</div>
<div style="margin-left: auto;margin-right:200px">(即買方,以下簡稱為甲方)</div>
</td>
</tr>
<tr>
<td>立合約書人</td>
</tr>
<tr>
<td>
<div style="margin-left: 100px">
<p>永佳捷科技股份有限公司 </p>
</div>
<div style="margin-left: auto;margin-right:200px">(即賣方,以下簡稱為乙方)</div>
</td>
</tr>
<tr :class="standardData.illustrate.editshow ? 'mouseover' : '' ">
<td>
<span x-html='standardData.illustrate.plaintext'></span>
</td>
</tr>
<template x-for="(item, idx) in standardData.list.plaintext">
<tr :class="standardData.list.plaintext[idx].editshow ? 'mouseover' : '' ">
<td class="list">
<span x-text="'第' + chineseNumbers(idx+1) + '條'"></span>
<article x-html="standardData.list.plaintext[idx].text"></article>
</td>
</tr>
</template>
</table>
</div>
<form action="prviewPdf.php?id=<?php echo $id; ?>&<?php echo $token_link; ?>" id="form" method="post" x-ref="form" style="display:none">
<input type="hidden" name="contract_apply_id" id="contract_apply_id" value="<?php echo $contract_apply_id; ?>" />
<input type="hidden" name="list" id="prview-list" />
<input type="hidden" name="prviewType" id="prview-type" />
<input type="hidden" name="standardList" id="standard-prview-list" />
<input type="hidden" name="illustrate" id="illustrate" />
<input type="hidden" name="standardIllustrate" id="standard-illustrate" />
<input type="hidden" name="partyA" id="partyA" />
<input type="hidden" name="partyAcontractno" id="partyAcontractno" />
<input type="hidden" name="buystandard" x-model="toggleBuyStandard" />
<input type="hidden" name="installstandard" x-model="toggleInstallStandard" />
<input type="hidden" name="total_price" x-model="total_price" id="total_price" />
<input type="hidden" name="person" id="person" value="<?php echo $contract['accountname']; ?>" />
<input type="hidden" name="personid" id="personid" value="<?php echo $contract['accountid']; ?>" />
<input type="hidden" name="delivery_term" id="delivery_term" x-model="buyfill1" />
<input type="hidden" name="install_period" id="install_period" x-model="installfill1" />
<input type="hidden" name="free_maintainance" id="free_maintainance" x-model="installfill2" />
</form>
</div>
</main>
<!-- <script src="../ckeditor4/ckeditor.js"></script> -->
<script>
const partyAcompany = <?php echo json_encode($contract_maintance['customer']); ?>;
const partyAcontractno = <?php echo json_encode($contract_maintance['apply_key']); ?>;
const partyAaddress = <?php echo json_encode($contcontract_maintanceract['address']); ?>;
const totalPrice = 0;
const totalInstallPrice = <?php echo $install_total_price; ?>;
const totalBuyPrice = <?php echo $buy_total_price; ?>;
// const secondPayDeadline = <?php echo $contract['secondPayDeadline']; ?>;
// const buyfill1 = <?php echo $contract['tradedeadline']; ?>;
// const installfill1 = "<?php echo $contract_maintance['test_time']; ?>";
// const installfill2 = "<?php echo $contract_maintance['freedeadline']; ?>";
// const buyArr = [...<?php echo json_encode($buyArr); ?>];
// const installArr = [...<?php echo json_encode($installArr); ?>];
let install_pay_text = '付款方式:<br> ';
let buy_pay_text = ''
const chineseArr = ['零', '一', '二', '三', '四', '五', '六', '七']
const bigChineseArr = ['零', '壹', '貳', '參', '肆', '伍', '陸', '柒', '捌', '玖', '拾'];
const num = <?php echo $qty; ?>;
const people = <?php echo $noteArr[1]; ?>;
const floor = <?php echo $noteArr[2]; ?>;
const speed = <?php echo $noteArr[3]; ?>;
const buyAffix = ' <?php echo $files_count; ?>';
// console.log(buyAffix);
// console.log(installArr);
buyArr.forEach((item, idx) => {
if (item.scale > 0) {
if (item.installment == 1) {
buy_pay_text = `${buy_pay_text}第${chineseArr[idx+1]}期款:合約簽定時,甲方應付合約定金新台幣&nbsp;${numberToChinese(item.amount)}&nbsp;元整(&nbsp;${numberWithCommas(item.amount)}&nbsp;)(含5%加值型營業稅)(${item.pay_period}天期票)。<br>`
} else if (item.installment == 2) {
buy_pay_text = `${buy_pay_text}第${chineseArr[idx+1]}期款:合約簽訂後&nbsp;____&nbsp;天付第二期款新台幣&nbsp;${numberToChinese(item.amount)}&nbsp;元整(&nbsp;${numberWithCommas(item.amount)}&nbsp;)(含5%加值型營業稅)(${item.pay_period}天期票)。<br>`
} else if (item.installment == 3) {
buy_pay_text = `${buy_pay_text}第${chineseArr[idx+1]}期款:產品貨到工地時應付新台幣&nbsp;${numberToChinese(item.amount)}&nbsp;元整(&nbsp;${numberWithCommas(item.amount)}&nbsp;)(&nbsp;含5%加值型營業稅)(${item.pay_period}天期票)。<br>`
}
}
});;
buy_pay_text += '以上期款若以票據支付時,發票人需為本合約甲方,票面金額同於各期應付款項,票期於各期付款日三十日內,票據須屬有效並得兌現。<br>乙方收款帳戶名稱:永佳捷科技股份有限公司;收款銀行:兆豐國際商業銀行(桃興分行);帳戶號碼:207-09-08688-2。'
buy_pay_text = buy_pay_text.replace(/\n/g, "").replace(/\s+/g, '').trim();
installArr.forEach((item, idx) => {
if (item.scale > 0) {
if (item.installment == 5) {
install_pay_text = `${install_pay_text}第${chineseArr[idx+1]}期款:甲方應於安裝及試車完成後給付安裝費用&nbsp;${numberToChinese(item.amount)}&nbsp;元整(&nbsp;${numberWithCommas(item.amount)}&nbsp;)(含5%加值型營業稅)(${item.pay_period}天期票)。<br>`
} else if (item.installment == 6) {
install_pay_text = `${install_pay_text}第二期款:甲方應於交車後給付&nbsp;${numberToChinese(item.amount)}&nbsp;元整(&nbsp;${numberWithCommas(item.amount)}&nbsp;)(含5%加值型營業稅)(${item.pay_period}天期票)。<br>`
}
}
})
install_pay_text += '以上期款若以票據支付時,發票人需為本合約甲方,票面金額同於各期應付款項,票期於各期付款日三十日內,票據須屬有效並得兌現。<br> 乙方收款帳戶名稱:永佳捷科技股份有限公司;收款銀行:兆豐國際商業銀行(桃興分行);帳戶號碼:207-09-08688-2。'
install_pay_text = install_pay_text.replace(/\n/g, "").replace(/\s+/g, '').trim();
function numberWithCommas(x) {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
function numberToChinese(n) {
if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n)) return "Invalid number.";
let unit = "仟佰拾億仟佰拾萬仟佰拾元角分";
let str = "";
n += "00";
let pos = n.indexOf('.');
if (pos >= 0) {
n = n.substring(0, pos) + n.substr(pos + 1, 2);
}
unit = unit.substr(unit.length - n.length);
for (let i = 0; i < n.length; i++) {
str += '零壹貳參肆伍陸柒捌玖'.charAt(n.charAt(i)) + unit.charAt(i);
}
str = ('_' + str + '_');
return str.replace(/零(仟|佰|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(萬|億|元)/g, "$1").replace(/(億)萬|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "").replace("元", "").replace(/^\s+|\s+$/g, '');
}
function numberToSmallChinese(num) {
const chineseNumbers = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
const chineseUnits = ['', '十', '百', '千'];
const numStr = num.toString();
const numLength = numStr.length;
let chineseStr = '';
for (let i = 0; i < numLength; i++) {
const digit = parseInt(numStr.charAt(i));
const unitPos = numLength - i - 1;
if (digit !== 0) {
chineseStr += chineseNumbers[digit] + chineseUnits[unitPos];
} else {
// 处理连续的零,只添加一个零到结果中
if (i < numLength - 1 && parseInt(numStr.charAt(i + 1)) !== 0) {
chineseStr += chineseNumbers[digit];
}
}
}
return chineseStr;
}
</script>
<script src="./js/alpine.js"></script>
<script>
const axiosClient = axios.create({
baseURL: './',
});
axiosClient.interceptors.request.use((config) => {
config.headers.Authorization = 'Bearer <?php echo $token ?>'
return config;
}, (error) => {
return Promise.reject(error);
});
axiosClient.interceptors.response.use((response) => {
return response;
}, (error) => {
if (error.response.status === 401) {
console.error(error);
}
throw error;
});
</script>
<script>
</script>

662
wms/contract-repair/contract_maintance.php

@ -0,0 +1,662 @@
<?php
include_once("../header.php");
require_once("./conn.php");
// if (!(isset($_GET['id']) && !empty($_GET['id']))) {
// $para = "function_name=pricereview&" . $token_link;
// echo "<script>alert('非法訪問!!!');</script>";
// echo "<script>window.history.go(-1);</script>";
// exit;
// }
$id = $_GET["id"];
$sql_str = "SELECT contract_new_apply.*, account.name as review_person_name
FROM contract_new_apply
LEFT JOIN account ON contract_new_apply.review_person_id = account.accountid
WHERE contract_new_apply.mid = :mid";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':mid', $id);
$stmt->execute();
$contract_new_apply = $stmt->fetch(PDO::FETCH_ASSOC);
$contract = $contract_new_apply;
$isFirst = empty($contract_new_apply) ? 1 : 0;
if (empty($contract_new_apply)) {
$sql_str = "SELECT pricereview_main.contractno, pricereview_main.ekind, pricereview_main.person, pricereview_main.company, pricereview_main.case_name, pricereview_main.address, pricereview_main.price_lowest, pricereview_main.price_total, pricereview_main.price_rate, pricereview_main.status as priceview_status, pricereview_main.id as mainid, account.name as accountname
FROM pricereview_main
JOIN account ON pricereview_main.person = account.accountid
WHERE pricereview_main.id = :id";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':id', $id);
$stmt->execute();
$contract = $stmt->fetch(PDO::FETCH_ASSOC);
// print_r($contract);
$accounttype = "M";
$sql_str = "SELECT * FROM account WHERE accounttype = :accounttype";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':accounttype', $accounttype);
$stmt->execute();
$persons = $stmt->fetchAll(PDO::FETCH_ASSOC);
$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', $contract['contractno']);
$stmt->execute();
$customer = $stmt->fetch(PDO::FETCH_ASSOC);
$mid = $contract['mainid'];
$sql_str = "SELECT * FROM pricereview_item WHERE mid = :mid AND item_group = 'A'";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':mid', $mid);
$stmt->execute();
$items = $stmt->fetchAll(PDO::FETCH_ASSOC);
$total_items = 0;
foreach ($items as $item) {
$total_items += $item['item_qty'];
}
$sql_str = "SELECT * FROM pricereview_pay WHERE mid = :mid ORDER BY pay_kind ASC";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':mid', $mid);
$stmt->execute();
$pays = $stmt->fetchAll(PDO::FETCH_ASSOC);
$price_a = 0;
$price_b = 0;
foreach ($pays as $pay) {
if ($pay['pay_kind'] <= 4) {
$price_a = $price_a + $pay['pay_amount'];
} else {
$price_b = $price_b + $pay['pay_amount'];
}
}
} else {
$mid = $contract['mid'];
$contract_new_apply_id = $contract_new_apply['id'];
$sql_str = "SELECT * FROM contract_new_apply_pays WHERE mid = :mid ORDER BY pay_kind ASC";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':mid', $mid);
$stmt->execute();
$pays = $stmt->fetchAll(PDO::FETCH_ASSOC);
$sql_str = "SELECT * FROM pricereview_item WHERE mid = :mid AND item_group = 'A'";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':mid', $mid);
$stmt->execute();
$items = $stmt->fetchAll(PDO::FETCH_ASSOC);
$price_a = 0;
$price_b = 0;
foreach ($pays as $pay) {
if ($pay['pay_kind'] <= 4) {
$price_a = $price_a + $pay['pay_amount'];
} else {
$price_b = $price_b + $pay['pay_amount'];
}
}
$sql_str = "SELECT file_name FROM contract_apply_files WHERE contract_id = :contract_id AND deleted_at IS NULL";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':contract_id', $id);
$stmt->execute();
$files = $stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($files);
}
$secondPayDeadline = $contract['secondPayDeadline'] ?? 0;
$status = isset($contract['status']) ? $contract['status'] : -1;
$person = $contract['person'];
?>
<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="semantic/dist/semantic.min.css">
<script defer src="./js/alpinejs/cdn.min.js"></script>
<script src="./js/axios/axios.min.js"></script>
<div class="contract-new-apply-component" x-data="contractNewApply">
<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="8">
<h3 style='text-align:center'>合約書申請(新梯)</h3>
</td>
</tr>
</thead>
<tbody style="font-weight: bolder;margin-bottom: 20px" x-show="step==1">
<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>
<div class="fixed" x-text="data.vol_no"></div>
<!-- <input class="form-control disabled_select" type="text" x-model="data.vol_no" > -->
<!-- <p class="alerttext" x-show="data.vol_no==''"><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" 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>
<input class="form-control disabled_select" type="date" x-model="data.apply_date">
<p class="alerttext" x-show="data.apply_date==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">申請類別</td>
<td style="vertical-align: middle">
<select class="" id="apply_type" x-model="data.apply_type">
<option value="A">制式新合約</option>
</select>
<p class="alerttext" x-show="data.apply_type==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
<tr>
<td style="vertical-align: middle">案件名稱</td>
<td style="vertical-align: middle" colspan="3">
<input class="form-control disabled_select" type="text" x-model="data.case_name">
<p class="alerttext" x-show="data.case_name==''"><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" x-model="data.company">
<p class="alerttext" x-show="data.company==''"><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" x-model="data.manager">
<p class="alerttext" x-show="data.manager==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
<tr>
<td style="vertical-align: middle">含稅給約總價</td>
<td colspan="3" style="vertical-align: middle">
<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>
</td>
<td style="vertical-align: middle">含稅貸款(A)</td>
<td style="vertical-align: middle">
<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>
</td>
<td style="vertical-align: middle">含稅安裝款(A)</td>
<td style="vertical-align: middle">
<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>
</td>
</tr>
<tr>
<td style="vertical-align: middle">聯絡地址</td>
<td style="vertical-align: middle" colspan=3>
<input class="form-control disabled_select" type="text" 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 style="vertical-align: middle" colspan=3>
<div class="ui labeled input">
<div class="ui label">
貨抵工地
</div>
<input type="text" placeholder="30" style="width:45px;padding:0 12px;" x-model="data.workdeadline_a">
<div class="ui label">
天內安裝完成,甲方應於貨底工地前
</div>
<input type="text" placeholder="7" style="width:45px;padding:0 12px;" x-model="data.workdeadline_b">
<div class="ui label">
天完成並整理完善。
</div>
</div>
<!-- <input class="form-control disabled_select" type="text" x-model="data.deadline" > -->
<p class="alerttext" x-show="data.deadline==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
<tr>
<td style="vertical-align: middle">附則</td>
<td style="vertical-align: middle" colspan=3>
<div class="ui labeled input">
<div class="ui label">
乙方應於
</div>
<input type="text" placeholder="10" style="width:45px;padding:0 12px;" x-model="data.regulations">
<div class="ui label">
天內試車完成
</div>
</div>
<p class="alerttext" x-show="data.regulations==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">免保期限</td>
<td style="vertical-align: middle" colspan=3>
<div class="ui labeled input">
<input type="text" placeholder="18" style="width:45px;padding:0 12px;" x-model="data.freedeadline">
<div class="ui label">
個月
</div>
</div>
<p class="alerttext" x-show="data.freedeadline==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
<tr>
<td style="vertical-align: middle">交貨地點</td>
<td style="vertical-align: middle" colspan=3>
<input class="form-control disabled_select" type="text" x-model="data.tradeaddress">
<p class="alerttext" x-show="data.tradeaddress==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">交貨期限</td>
<td style="vertical-align: middle" colspan=3>
<div class="ui labeled input">
<div class="ui label">
圖色確認第
</div>
<input type="text" placeholder="90" style="width:45px;padding:0 12px;" x-model="data.tradedeadline">
<div class="ui label">
天出貨
</div>
</div>
<p class="alerttext" x-show="data.tradedeadline==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
</tbody>
</table>
<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="1">
<p style='text-align:center'>項次</p>
</td>
<td colspan="3">
<p style='text-align:center'>規格</p>
</td>
<td colspan="1">
<p style='text-align:center'>數量</p>
</td>
<td colspan="3">
<p style='text-align:center'>金額</p>
</td>
</tr>
</thead>
<tbody style="font-weight: bolder;margin-bottom: 20px">
<template x-for="(item, idx) in data.items">
<tr>
<td style="vertical-align: middle">
<p x-text="idx+1"></p>
</td>
<td colspan="3" style="vertical-align: middle">
<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>
</td>
<td style="vertical-align: middle">
<span x-text="item.item_qty + '台'" style="padding:0 20px"></span>
<p class="alerttext" x-show="data.tradedeadline==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td colspan="3" style="vertical-align: middle">
<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>
</td>
</tr>
</template>
<tr>
<td colspan=4></td>
<td>電梯總數</td>
<td colspan='3'> <span x-text="data.total_items + '台'" style="padding:0 20px"></span></td>
</tr>
</tbody>
</table>
<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>
<p style='text-align:center'>合約類別</p>
</td>
<td>
<p style='text-align:center'>款別</p>
</td>
<td>
<p style='text-align:center'>條件名稱</p>
</td>
<td>
<p style='text-align:center'>收款條件日期區分</p>
</td>
<td>
<p style='text-align:center'>條件日期</p>
</td>
<td>
<p style='text-align:center'>票期</p>
</td>
<td>
<p style='text-align:center'>付款比率</p>
</td>
<td>
<p style='text-align:center'>金額</p>
</td>
</tr>
</thead>
<tbody style="font-weight: bolder;margin-bottom: 20px">
<?php
$day = 0;
$styles = [
1 => "訂金",
2 => "二次款",
3 => "貨到款",
4 => "",
5 => "安裝款",
6 => "尾款",
7 => "",
];
$paydate = [
1 => "合約日",
2 => "合約日",
3 => "出貨日",
4 => "",
5 => "竣檢日",
6 => "交車日",
7 => ""
];
?>
<?php foreach ($pays as $pay) :
if ($pay['pay_scale'] == 0) continue;
?>
<tr>
<td>
<p style='text-align:center'><?php echo ($pay['pay_kind'] <= 4) ? "銷售" : "按裝"; ?></p>
</td>
<td>
<p style='text-align:center'><?php echo $styles[$pay['pay_kind']]; ?></p>
</td>
<td>
<?php if ($pay['pay_kind'] == 1) { ?>
<template x-if="pays[1] > 0">
<p style='text-align:center'>簽約後<span x-text="pays[1]"></span>天付訂金</p>
</template>
<template x-if="pays[1] <= 0">
<p style='text-align:center'>簽約後付訂金</p>
</template>
<?php } elseif ($pay['pay_kind'] == 2) { ?>
<template x-if="pays[2] > 0">
<p style='text-align:center'>簽約後<span x-text="pays[2]"></span>天付二次款</p>
</template>
<template x-if="pays[2] <= 0">
<p style='text-align:center'>簽約後付二次款</p>
</template>
<?php } elseif ($pay['pay_kind'] == 3) { ?>
<p style='text-align:center'>貨抵工地付貨到款</p>
<?php } elseif ($pay['pay_kind'] == 5) { ?>
<template x-if="pays[5] > 0">
<p style='text-align:center'>安裝完成後<span x-text="pays[5]"></span>天收款</p>
</template>
<template x-if="pays[5] <= 0">
<p style='text-align:center'>安裝完成後收款</p>
</template>
<?php } elseif ($pay['pay_kind'] == 6) { ?>
<template x-if="pays[6] > 0">
<p style='text-align:center'>交車後<span x-text="pays[6]"></span>天付尾款</p>
</template>
<template x-if="pays[6] <= 0">
<p style='text-align:center'>交車後付尾款</p>
</template>
<?php } else { ?>
<p style='text-align:center'>-</p>
<?php } ?>
</td>
<td>
<p style='text-align:center'><?php echo $paydate[$pay['pay_kind']]; ?></p>
</td>
<td>
<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">
<div class="ui label">
</div>
</div>
</td>
<td>
<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">
<div class="ui label">
</div>
</div>
</td>
<td>
<p style='text-align:center' x-text="pays[<?php echo $pay['pay_kind']; ?>].scale + '%'"><?php echo $pay['pay_scale'] ?>%</p>
</td>
<td>
<p style='text-align:center' x-text="localnumber(data.total_price * pays[<?php echo $pay['pay_kind']; ?>].scale/100)"></p>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</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%">
<tbody style="font-weight: bolder;margin-bottom: 20px">
<tr>
<td>第二期款交貨期限(日)</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">
<?php if ($status < 1) : ?>
<input type="file" name="file[]" multiple draggable="true" @change="uploadFiles($event)" />
<?php endif; ?>
<?php foreach ($files as $file) : ?>
<a href="./images/contracts_new_files/<?php echo $file['file_name']; ?>" download><?php echo $file['file_name']; ?></a> <?php if ($status < 1) : ?><span style="margin-left:10px;cursor:pointer;color:#f019">X</span><?php endif; ?><br />
<?php endforeach; ?>
</td>
</tr>
</tbody>
</table>
<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>審核</td>
<td>審核人</td>
<td>結果</td>
<td colspan=2>意見</td>
<td>時間</td>
<td colspan=2><?php if ($user_id === "M0174" && $status == 1) : ?>審核意見<?php endif; ?></td>
</tr>
<tr>
<td>營業員</td>
<td><span x-text="data.salesmanname + '(' + data.salesman + ')'"></span></td>
<td>
<?php if ($status >= 1) : ?><span class="successtext">已送審</span><?php endif; ?>
<?php if ($status == 0) : ?><span class="readtext">暫存</span><?php endif; ?>
<?php if ($status == -1) : ?><span class="">未提交</span><?php endif; ?>
</td>
<td colspan=2>---</td>
<td><?php echo ($contract['submit_date']) ?? "---"; ?> </td>
<td colspan=2 rowspan="2">
<?php if ($user_id === "M0174" && $status == 1) : ?>
<textarea class="form-control opinion" x-model="data.review_comment"></textarea>
<?php endif; ?>
</td>
</tr>
<tr>
<td>業務承辦人</td>
<td><span><?php echo (isset($contract['review_person_name']) || empty($contract['review_person_name'])) ? "---" : $contract['review_person_name'] . "(" . $contract['review_person_id'] . ")"; ?></span></td>
<td>
<?php if ($status == 3) : ?><span class="successtext">結案同意</span><?php endif; ?>
<?php if ($status == 2) : ?><span class="failtext">結案不同意</span><?php endif; ?>
<?php if ($status < 2) : ?><span>---</span><?php endif; ?>
</td>
<td colspan=2><?php echo $contract['review_comment'] ?? "---"; ?></td>
<td><?php echo $contract['review_date'] ?? "---"; ?></td>
</tr>
<!-- <tr>
<td colspan="2" style="font-weight:bold">業務部承辦人</td>
<td colspan="2">
<template x-if="false">
<span class="failtext">已退件</span>
</template>
<?php if ($status == 1) : ?>
<span class="readtext">審核中...</span>
<?php endif; ?>
<template x-if="false">
<span class="successtext">已通過</span>
</template>
</td>
<td colspan="2" style="font-weight:bold">營業員</td>
<td colspan="2"><span x-text="data.salesmanname + '(' + data.salesman + ')'"></span></td>
</tr> -->
</tbody>
</table>
<button @click="window.history.go(-1)" type="button" class="btn btn-primary btn-lg pull-right savebtn">回前頁</button>
<?php if (($isFirst == 1 && ($person == $user_id || $user_id == "M0174")) || ($isFirst == 0 && $status == 0 && ($person == $user_id || $user_id == "M0174"))) : ?>
<button x-show="true" x-on:click="submit()" :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="true" x-on:click="storageFn()" :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>
<?php endif; ?>
<?php if ($status == 1 && ($user_id == "M0107" || $user_id == "M0060" || $user_id == "M0174")) : ?>
<button x-show="true" x-on:click="agree()" :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="true" x-on:click="disagree()" :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>
<?php endif; ?>
</div>
</div>
</div>
<script src="./js/jquery/jquery-3.1.1.min.js"></script>
<script src="semantic/dist/semantic.min.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)) : ?>
<script>
const contractno = '<?php echo $contract['contractno'] ?? ''; ?>';
const salesman = '<?php echo $contract['person'] ?? ''; ?>';
const salesmanname = '<?php echo $contract['accountname'] ?? ''; ?>';
const apply_date = '<?php echo date('Y-m-d') ?>';
const case_name = '<?php echo $contract['case_name'] ?? ''; ?>';
const company = '<?php echo $contract['company'] ?? ''; ?>';
const manager = '<?php echo $customer['manager'] ?? ''; ?>';
const vat = '<?php echo $customer['uscc'] ?? ''; ?>';
const price_total = <?php echo $contract['price_total'] ?? ''; ?>;
const address = '<?php echo $contract['address'] ?? ''; ?>';
const price_a = <?php echo $price_a ?? ''; ?>;
const price_b = <?php echo $price_b ?? ''; ?>;
const items = [...<?php echo json_encode($items) ?? []; ?>];
const user_id = '<?php echo $user_id ?>';
const mid = '<?php echo $_GET['id']; ?>';
const pays = [...<?php echo json_encode($pays) ?? []; ?>];
const secondPayDeadline = '';
const tradeaddress = '<?php echo $contract['address'] ?? ''; ?>';
const tradedeadline = 90
const freedeadline = 18;
const regulations = 10;
const workdeadline_a = 60;
const workdeadline_b = 7;
const total_items = <?php echo $total_items ?? ''; ?>;
const isFirst = <?php echo $isFirst; ?>;
</script>
<?php else : ?>
<script>
const contractno = '<?php echo $contract['contractno'] ?? ''; ?>';
const salesman = '<?php echo $contract['person'] ?? ''; ?>';
const salesmanname = '<?php echo $contract['personname'] ?? ''; ?>';
const apply_date = '<?php echo date('Y-m-d') ?>';
const case_name = '<?php echo $contract['case_name'] ?? ''; ?>';
const company = '<?php echo $contract['customer'] ?? ''; ?>';
const manager = '<?php echo $contract['manager'] ?? ''; ?>';
const vat = '<?php echo $contract['vat'] ?? ''; ?>';
const price_total = <?php echo $contract['total_price'] ?? ''; ?>;
const address = '<?php echo $contract['contact_address'] ?? ''; ?>';
const price_a = <?php echo $contract['buy_fee'] ?? ''; ?>;
const price_b = <?php echo $contract['install_fee'] ?? ''; ?>;
const items = [...<?php echo json_encode($items) ?? []; ?>];
const user_id = '<?php echo $user_id ?? ''; ?>';
const mid = '<?php echo $_GET['id']; ?>';
const pays = [...<?php echo json_encode($pays) ?? []; ?>];
const isFirst = <?php echo $isFirst; ?>;
const tradeaddress = '<?php echo $contract['trade_address'] ?? ''; ?>';
const tradedeadline = '<?php echo $contract['tradedeadline'] ?? ''; ?>';
const freedeadline = '<?php echo $contract['freedeadline'] ?? ''; ?>';
const regulations = '<?php echo $contract['test_time'] ?? ''; ?>';
const workdeadline_a = '<?php echo $contract['workdeadline_a'] ?? ''; ?>';
const workdeadline_b = '<?php echo $contract['workdeadline_b'] ?? ''; ?>';
const secondPayDeadline = <?php echo $secondPayDeadline ?? ''; ?>;
const total_items = <?php echo $contract['total_items'] ?? ''; ?>;
const contract_new_apply_id = <?php echo $contract_new_apply_id; ?>;
</script>
<?php endif; ?>
<?php if ($status > 0 || ($person != $user_id && $user_id != "M0174")) : ?>
<script>
window.onload = () => {
const input = document.querySelectorAll('input');
const alerttext = document.querySelectorAll('p.alerttext');
const select = document.querySelectorAll('select');
for (let i = 0; i < input.length; i++) {
input[i].disabled = true
}
for (let i = 0; i < select.length; i++) {
select[i].disabled = true
}
for (let i = 0; i < alerttext.length; i++) {
alerttext[i].style.display = "none"
}
}
</script>
<?php endif; ?>

763
wms/contract-repair/js/alpine.js

@ -1,29 +1,16 @@
const contractDownload = () => {
return {
init() {
this.standardData = this.deepClone(this.data);
this.onstandardViewData = this.deepClone(this.data);
this.buystandardData = this.deepClone(this.buydata);
this.standarDate = this.deepClone(this.data);
this.onstandarViewData = this.deepClone(this.data);
this.buystandarData = this.deepClone(this.buydata);
this.buyonstandardViewData = this.deepClone(this.buydata);
// CKEDITOR.replace('editor',{
// extraplugins:'filebrowser',
// height:80,
// width:'100%',
// filebrowserUploadMethod:'form',
// filebrowserUploadUrl:'./ckeditor_upload.php'
// });
},
installfill1: '',
installfill2: '',
installAffix: 1,
buyfill1: '',
buyfill2: '',
buyAffix: 1,
css: `table { background-color: #fff; border: none; margin-top: 30px; font-family: '標楷體'; width: 600px; } table tr:nth-child(even), table tr:nth-child(odd) { background-color: #fff; } table tr { font-size: 12pt; width: 100%; } table tr h2 { font-size: 18pt; } table tr td { width: 100%; height: 100%; line-height: 2; display: flex; } table tr td.center { display: flex; justify-content: center; align-items: center; } table tr td.list { width: 100%; height: 100%; white-space: nowrap; display: flex; } table tr td.list span { width: 60px; min-height: 100%; display: block; } table tr td.list > p { display: block; text-align: justify; } table tr td.list div { max-width: calc(100% - 60px); white-space: normal; } table tr td.list div.text-justify { display: flex; width: 100%; justify-content: space-between; } table tr.date td > div { width: 100%; text-align: right; } table tr.date td > div.text-justify { display: flex; justify-content: space-between; } table td, table th { padding: 8px; }`,
css: `table { background - color: #fff; border: none; margin - top: 30px; font - family: '標楷體'; width: 600px; } table tr: nth - child(even), table tr: nth - child(odd) { background - color: #fff; } table tr { font - size: 12pt; width: 100 %; } table tr h2 { font - size: 18pt; } table tr td { width: 100 %; height: 100 %; line - height: 2; display: flex; } table tr td.center { display: flex; justify - content: center; align - items: center; } table tr td.list { width: 100 %; height: 100 %; white - space: nowrap; display: flex; } table tr td.list span { width: 60px; min - height: 100 %; display: block; } table tr td.list > p { display: block; text - align: justify; } table tr td.list div { max - width: calc(100 % - 60px); white - space: normal; } table tr td.list div.text - justify { display: flex; width: 100 %; justify - content: space - between; } table tr.date td > div { width: 100 %; text - align: right; } table tr.date td > div.text - justify { display: flex; justify - content: space - between; } table td, table th { padding: 8px; }`,
data: {
illustrate: {
editshow: false,
plaintext: '茲因甲方向乙方訂購電梯,並委由乙方安裝系爭電梯,經雙方同意共同訂立本合約書,其條款如下:'
plaintext: '茲因甲乙雙方就電梯設備保養.檢修事宜,同意訂定本契約,議定條款如后,並相互遵守條款約定。',
},
partyA: {
editshow: false,
@ -38,612 +25,80 @@ const contractDownload = () => {
{
editshow: false,
origin: true,
text: `安裝產品名稱、數量及單價:<br>1、&nbsp;${people}&nbsp;人座 &nbsp;${floor}&nbsp;停站速度每分鐘&nbsp;${speed}&nbsp;公尺 交流變頻變壓電腦智能控制升降機&nbsp;${num}&nbsp;部。單價:新台幣&nbsp;${numberToChinese(totalInstallPrice)}&nbsp;元整(&nbsp;${numberWithCommas(totalInstallPrice)}&nbsp;)(含5%加值型營業稅)。`,
type: 'title',
text: ``,
deleted: false,
id: 0,
input_id: null,
input_id: null
},
{
editshow: false,
origin: true,
text: '安裝產品規格:如附表一。',
text: `規格`,
type: 'title',
deleted: false,
id: 1,
input_id: null,
},
{
editshow: false,
origin: true,
text: '安裝地點:' + partyAaddress + '。',
type: 'title',
deleted: false,
id: 2,
input_id: null,
},
{
editshow: false,
origin: true,
text: `安裝報酬:安裝勞務報酬為新台幣(以下皆同)&nbsp;${numberToChinese(totalPrice)}&nbsp;元整(${numberWithCommas(totalPrice)}&nbsp;)(含5%加值型營業稅)。`,
type: 'title',
deleted: false,
id: 3,
input_id: null,
},
{
editshow: false,
origin: true,
text: install_pay_text,
type: 'title',
deleted: false,
id: 4,
input_id: 'fill1',
},
{
editshow: false,
origin: true,
text: '安裝試車事項:<br>一、甲方應於實際出貨日期前七日,清理升降設備之建築物升降道,及完成底坑防水之處理,上述事項完成後,甲方即以書面或電話通知乙方進場安裝,乙方應於貨抵工地後每台__日內安裝完成。<br>二、甲方接到乙方電梯安裝完成通知之日起,倘因甲方因素致無法於__日內交車時,甲方應付清總價款全部餘額。<br>三、如因非關乙方因素致乙方無法進場施作時,於該因素或障礙排除前,甲方應對已進場之材料或設備負保管責任及整修費用。',
type: 'title',
deleted: false,
id: 5,
input_id: null,
},
{
editshow: false,
origin: true,
text: '交車事項:<br>一、乙方完成產品安裝後,甲方應儘速理交車事宜,不得無故或藉故拖延。如經乙方通知,甲方遲未辦理交車事宜,則於乙方催告後,即視同交車完成。<br>二、乙方試車完成後,甲方應配合提供建物使用執照及其他竣工檢查所需文件,以利乙方代甲方辦理昇降設備竣工檢查。<br>三、甲方於昇降設備竣工檢查合格及取得使用許可證後,交車事項即為完成。',
type: 'title',
deleted: false,
id: 6,
input_id: null,
},
{
editshow: false,
origin: true,
text: '因故延期:<br>如因天災、地變及其他不可抗力之因素,或甲方未將電梯昇降路及機械室之建築工程等配合事項未於貨抵工地前七日整理完善,或甲方未將符合規格之電源於安裝前送電至機械室,或房屋建築及其他應配合相關事項未完成,致影響乙方如期安裝產品時,乙方安裝日期應依受影響日數向後延展,如因可歸責於甲方事由者亦同。',
type: 'title',
deleted: false,
id: 7,
input_id: null,
},
{
editshow: false,
origin: true,
text: '工程變更:<br>甲方對本工程之規格有變更設計及增減工程數量時,應於合約訂立日後壹個月內預先以書面通知乙方且需經雙方同意,如因工程變更而致乙方成本增加時,則甲方應吸收所有增加之成本並追認給付給乙方,否則乙方依原合約之貨品規格、數量交貨,甲方亦應依原合約之貨品規格、數量給付款項。',
type: 'title',
deleted: false,
id: 8,
input_id: null,
},
{
editshow: false,
origin: true,
text: '工地清理及除外事項:<br>一、本工程於貨到現場前,其工地廢料雜物及臨時設備,應由甲方清除整理,同時提供乙方放置貨品之處所。<br>二、有關建築工事回填澆灌後之清潔,應由甲方負責清理。<br>三、升降設備除外工程表所列之各項工程不包括於乙方本合約施作範圍,應由甲方負責處理。',
type: 'title',
deleted: false,
id: 9,
input_id: null,
},
{
editshow: false,
origin: true,
text: '電梯保養:<br>一、乙方完工交車後,期後__個月內應負責免費定期保養,及履行免費保固,於免費保養期間屆至後,雙方再協商嗣後保養事宜。<br>二、如因可歸責乙方因素致安裝產品有所瑕疵時,乙方應負責修復或修繕,惟非因乙方因素致有修復產品需要時,乙方仍負責修復或修繕,惟得向甲方酌收基本材料與人工費用。<br>三、另依法令規定,非經竣工檢查合格後取得使用許可證之電梯,依法不得使用。',
type: 'title',
deleted: false,
id: 10,
input_id: null,
},
{
editshow: false,
origin: true,
text: '特約條款:<br>一、本設備器材在款項未付清前,其所有權仍歸屬乙方所有,價款付清後所有權始轉移給甲方。<br>二、如因甲方因素或建物設計上之疏忽,致影響驗收時,甲方不得以此做為逾期或拒付款之藉口。<br>三、本合約所有日數約定,均以工作天計算。',
type: 'title',
deleted: false,
id: 11,
input_id: null,
},
{
editshow: false,
origin: true,
text: '終止合約權:<br>一、甲乙雙方之任一方若有違反合約之事實或發生清算或破產等信用貶落情形,致工程無法進行時,經催告而未改善者,他方得終止本合約,違約方必須賠償對方之損失。<br>二、乙方逾期交貨或甲方逾期未交付工地受領產品逾壹個月以上經他方催告仍不改善,他方得終止本合約,並請求損害賠償。',
type: 'title',
deleted: false,
id: 12,
input_id: null,
},
{
editshow: false,
origin: true,
text: '合意管轄:<br>因本合約而涉訟,甲、乙方雙方同意以桃園地方法院為第一審管轄法院。催告仍不改善,他方得終止本合約,並請求損害賠償。',
type: 'title',
deleted: false,
id: 13,
input_id: null,
},
{
editshow: false,
origin: true,
text: '附則:<br>本合約經甲、乙雙方簽章後立即生效,甲、乙雙方各存執正副本各壹份為憑,印花雙方各自貼付。',
type: 'title',
deleted: false,
id: 14,
input_id: null,
input_id: null
},
{
editshow: false,
origin: true,
text: '合約附件:<br>本合約附件為本合約之一部份,與本合約具同等效力,甲乙雙方均應遵守之。',
type: 'title',
deleted: false,
id: 15,
input_id: null,
},
editshow: false
}
]
}
},
buydata: {
illustrate: {
editshow: false,
plaintext: '茲因甲方向乙方訂購電梯,經雙方同意共同訂立本合約書,其條款如下:'
},
partyA: {
editshow: false,
plaintext: partyAcompany,
},
partyAcontractno: {
editshow: false,
plaintext: partyAcontractno,
},
list: {
plaintext: [
{
editshow: false,
origin: true,
text: `產品名稱、數量及單價:<br>1、&nbsp;${people}&nbsp;人座&nbsp;${floor}&nbsp;停站速度每分鐘&nbsp;${speed}&nbsp;公尺 交流變頻變壓電腦智能控制升降機&nbsp;${bigChineseArr[num]}&nbsp;部。單價:新台幣&nbsp;${numberToChinese(totalBuyPrice)}&nbsp;元整(&nbsp;${numberWithCommas(totalBuyPrice)}&nbsp;)(含5%加值型營業稅)。`,
type: 'title',
deleted: false,
id: 0,
input_id: null,
},
{
editshow: false,
origin: true,
text: '產品規格:如附表一。',
type: 'title',
deleted: false,
id: 1,
input_id: null,
},
{
editshow: false,
origin: true,
text: '交貨及安裝地點:' + partyAaddress + '。',
type: 'title',
deleted: false,
id: 2,
input_id: null,
},
{
editshow: false,
origin: true,
text: `產品總價:產品價金為新台幣&nbsp;${numberToChinese(totalBuyPrice)}&nbsp;元整(&nbsp;${numberWithCommas(totalBuyPrice)}&nbsp;)(含5%加值型營業稅)。`,
type: 'title',
deleted: false,
id: 3,
input_id: null,
},
{
editshow: false,
origin: true,
text: buy_pay_text,
type: 'title',
deleted: false,
id: 4,
input_id: 'buyfill1',
},
{
editshow: false,
origin: true,
text: '交貨期限及甲方配合事項:<br>乙方應於接獲甲方圖色確認第180日(應於合約簽訂日起兩年內),將本工程所需之全部設備、器材 運抵工地,甲方應提供適當的場所供乙方貯放設備、器材。',
type: 'title',
deleted: false,
id: 5,
input_id: null,
},
{
editshow: false,
origin: true,
text: '施工規範依據:<br>甲方或其指定工程師,於本契約簽訂後二星期內,提供組立電梯之大樓建築有關圖面,以供乙方製作電梯配置圖,乙方製妥電梯配置圖後請甲方簽認,甲方於接獲乙方提請審核之電梯配置圖後,一星期內簽認並送還乙方,乙方應於接獲甲方簽認之電梯配置圖後,安排電梯組件之生產並按預定時間內製造完成。',
type: 'title',
deleted: false,
id: 6,
input_id: null,
},
{
editshow: false,
origin: true,
text: '因故延期:<br>一、如因天災、地變及其他不可抗力之因素,致影響乙方如期交付產品時,本合約第六條之交貨日期應依受影響日數向後延展,如因可歸責於甲方事由者亦同。<br />二、如因可歸責甲方事由致工期展延逾第六條日期時,如因物價波動致成本增加,乙方得請求物價調漲之補償,或終止合約。',
type: 'title',
deleted: false,
id: 7,
input_id: null,
},
{
editshow: false,
origin: true,
text: '工程變更:<br>甲方對本工程之規格有變更設計及增減工程數量時,應於合約訂立日後壹個月內預先以書面通知乙方且需經雙方同意,如因工程變更而致乙方成本增加時,則甲方應吸收所有增加之成本並追認給付給乙方,否則乙方依原合約之貨品規格、數量交貨,甲方亦應依原合約之貨品規格、數量給付款項。',
type: 'title',
deleted: false,
id: 8,
input_id: null,
},
{
editshow: false,
origin: true,
text: '工地清理及除外事項:<br>一、本工程於貨到現場前,其工地廢料雜物及臨時設備,應由甲方清除整理,同時提供乙方放置貨品之處所。<br />二、有關建築工事回填澆灌後之清潔,應由甲方負責清理。',
type: 'title',
deleted: false,
id: 9,
input_id: null,
},
{
editshow: false,
origin: true,
text: '合約時效:<br>本合約及其附件自簽訂之日起,至保固期滿之日止為有效期間。',
type: 'title',
deleted: false,
id: 10,
input_id: null,
},
{
editshow: false,
origin: true,
text: '特約條款:<br>一、本設備器材在款項未付清前,其所有權仍歸屬乙方所有,價款付清後所有權始轉移給甲方。<br />二、如因甲方因素或建物設計上之疏忽,致影響驗收時,甲方不得以此做為逾期或拒付款之藉口。<br />三、本合約所有日數約定,均以工作天計算。',
type: 'title',
deleted: false,
id: 11,
input_id: null,
},
{
editshow: false,
origin: true,
text: '終止合約權:<br>一、甲乙雙方之任一方若有違反合約之事實或發生清算或破產等信用貶落情形,致工程無法進行時,經催告而未改善者,他方得終止本合約,違約方必須賠償對方之損失。<br />二、乙方逾期交貨或甲方逾期未交付工地受領產品逾壹個月以上經他方催告仍不改善,他方得終止本合約,並請求損害賠償。',
type: 'title',
deleted: false,
id: 12,
input_id: null,
},
{
editshow: false,
origin: true,
text: '合意管轄:<br>因本合約而涉訟,甲、乙方雙方同意以桃園地方法院為第一審管轄法院。',
type: 'title',
deleted: false,
id: 13,
input_id: null,
},
{
editshow: false,
origin: true,
text: '附則:<br>本合約經甲、乙雙方簽章後立即生效,甲、乙雙方各存執正本各壹份為憑。',
type: 'title',
deleted: false,
id: 14,
input_id: null,
},
{
editshow: false,
origin: true,
text: '合約附件:<br>本合約附件為本合約之一部份,與本合約具同等效力,甲乙雙方均應遵守之,本合約附件計有:',
type: 'title',
deleted: false,
id: 15,
input_id: null,
},
]
}
},
fill: [],
standardData: {},
onstandardViewData: {},
deepClone: function (obj) {
let clone = Array.isArray(obj) ? [] : {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
if (typeof obj[key] === 'object' && obj[key] !== null) {
clone[key] = this.deepClone(obj[key]);
if (clone[key].text != undefined) {
// clone[key].text = clone[key].text.replace(/<input\s.* /, '___')
}
} else {
clone[key] = obj[key]
}
}
}
return clone;
},
modelshow: false,
modelText: '',
modelContent: '',
objName: '',
isList: false,
actionType: 'i', //i=> insert , u=> update
index: 0,
isInstall: true,
chineseNumbers(number) {
const units = ['', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十'];
if (number <= 10) {
return units[number];
} else if (number < 20) {
return '十' + units[number - 10];
} else if (number < 30) {
return '二十' + units[number - 20];
} else if (number < 40) {
return '三十' + units[number - 30];
} else if (number < 50) {
return '四十' + units[number - 40];
} else {
return '五十';
}
},
mouseover(obj, isInstall = true) {
if (isInstall) {
if (!this.onstandardViewData[obj].editshow) {
this.onstandardViewData[obj].editshow = true
}
} else {
if (!this.buyonstandardViewData[obj].editshow) {
this.buyonstandardViewData[obj].editshow = true
}
}
},
mouseoverlist(idx, inInstall = true) {
if (inInstall) {
if (!this.onstandardViewData.list.plaintext[idx].editshow) {
this.onstandardViewData.list.plaintext[idx].editshow = true
}
} else {
if (!this.buyonstandardViewData.list.plaintext[idx].editshow) {
this.buyonstandardViewData.list.plaintext[idx].editshow = true
}
}
},
mouseoutlist(idx) {
if (this.onstandardViewData.list.plaintext[idx].editshow) {
this.onstandardViewData.list.plaintext[idx].editshow = false
}
if (this.buyonstandardViewData.list.plaintext[idx].editshow) {
this.buyonstandardViewData.list.plaintext[idx].editshow = false
}
},
mouseout(obj) {
if (this.onstandardViewData[obj].editshow) {
this.onstandardViewData[obj].editshow = false
}
if (this.buyonstandardViewData[obj].editshow) {
this.buyonstandardViewData[obj].editshow = false
}
},
modelshowEditFn(text, obj, isList = false, isInstall = true) {
if (this.modelshow) {
return;
}
this.isInstall = isInstall
this.actionType = 'u'
this.modelshow = true
this.modelText = text
this.objName = obj
this.isList = isList
this.actionType = 'u'
if (isInstall) {
if (isList) {
this.$refs.editor.value = this.onstandardViewData.list.plaintext[obj].text
// CKEDITOR.instances.editor.setData(this.onstandardViewData.list.plaintext[obj].text);
return
}
if (!isList) {
this.$refs.editor.value = this.onstandardViewData[obj].plaintext
// CKEDITOR.instances.editor.setData(this.onstandardViewData[obj].plaintext);
return
}
} else {
if (isList) {
this.$refs.editor.value = this.buyonstandardViewData.list.plaintext[obj].text
// CKEDITOR.instances.editor.setData(this.buyonstandardViewData.list.plaintext[obj].text);
return
}
if (!isList) {
this.$refs.editor.value = this.buyonstandardViewData[obj].plaintext
// CKEDITOR.instances.editor.setData(this.buyonstandardViewData[obj].plaintext);
return
}
}
},
modelcloseFn() {
if (this.modelshow) {
this.modelshow = false
this.modelText = ''
this.modelContent = ''
this.isList = false
this.$refs.editor.value = ''
// CKEDITOR.instances.editor.setData('')
}
},
modelshowAddUpFn(idx, isInstall = true) {
this.isInstall = isInstall
this.index = idx
this.actionType = 'i'
this.modelshow = true
this.modelText = '新增一條例'
},
modelshowAddDownFn(idx, isInstall = true) {
this.isInstall = isInstall
this.index = idx + 1
this.actionType = 'i'
this.modelshow = true
this.modelText = '新增一條例'
},
updateEditor() {
let max = 0;
if (this.isInstall) {
this.onstandardViewData.list.plaintext.forEach(item => {
if (item.id > max) {
max = item.id
};
})
} else {
this.buyonstandardViewData.list.plaintext.forEach(item => {
if (item.id > max) {
max = item.id
};
})
}
max = max + 1
if (this.actionType == 'i') {
let newObj = {
editshow: false,
origin: false,
text: this.removeTrailingNewline(this.$refs.editor.value),
// text:this.removeTrailingNewline(this.convertHtmlToPlainText(this.$refs.editor.value)),
// text:this.removeTrailingNewline(this.convertHtmlToPlainText(CKEDITOR.instances.editor.getData())),
type: 'title',
deleted: false,
id: max,
}
if (this.isInstall) {
this.data.list.plaintext.splice(this.index, 0, newObj)
this.onstandardViewData.list.plaintext.splice(this.index, 0, newObj)
} else {
this.buydata.list.plaintext.splice(this.index, 0, newObj)
this.buyonstandardViewData.list.plaintext.splice(this.index, 0, newObj)
}
this.modelcloseFn()
return
}
if (this.actionType == 'u') {
if (this.isInstall) {
if (this.isList) {
// this.data.list.plaintext[this.objName].text = this.convertHtmlToPlainText(CKEDITOR.instances.editor.getData())
this.data.list.plaintext[this.objName].text = this.convertHtmlToPlainText(this.$refs.editor.value)
// this.onstandardViewData.list.plaintext[this.objName].text = this.convertHtmlToPlainText(CKEDITOR.instances.editor.getData())
// this.onstandardViewData.list.plaintext[this.objName].text = this.convertHtmlToPlainText(this.$refs.editor.value)
this.onstandardViewData.list.plaintext[this.objName].text = this.$refs.editor.value
} else {
// this.data[this.objName].plaintext = this.convertHtmlToPlainText(CKEDITOR.instances.editor.getData())
this.data[this.objName].plaintext = this.convertHtmlToPlainText(this.$refs.editor.value)
// this.onstandardViewData[this.objName].plaintext = this.convertHtmlToPlainText(CKEDITOR.instances.editor.getData())
// this.onstandardViewData[this.objName].plaintext = this.convertHtmlToPlainText(this.$refs.editor.value)
this.onstandardViewData[this.objName].plaintext = this.$refs.editor.value
}
} else {
if (this.isList) {
this.buydata.list.plaintext[this.objName].text = this.convertHtmlToPlainText(this.$refs.editor.value)
this.buyonstandardViewData.list.plaintext[this.objName].text = this.$refs.editor.value
} else {
this.buydata[this.objName].plaintext = this.convertHtmlToPlainText(this.$refs.editor.value)
this.buyonstandardViewData[this.objName].plaintext = this.$refs.editor.value
}
}
}
this.modelcloseFn()
return
},
deleteEditor(idx, isInstall = true) {
if (isInstall) {
if (confirm('確定要刪除嗎?')) {
let id = this.onstandardViewData.list.plaintext[idx].id
this.data.list.plaintext.forEach(item => {
if (item.id == id) {
item.deleted = 1;
}
})
this.onstandardViewData.list.plaintext.splice(idx, 1)
}
} else {
if (confirm('確定要刪除嗎?')) {
let id = this.buyonstandardViewData.list.plaintext[idx].id
// this.buydata.list.plaintext[idx].deleted = 1
this.buydata.list.plaintext.forEach(item => {
if (item.id == id) {
if (!item.deleted) {
item.deleted = 1;
}
}
})
this.buyonstandardViewData.list.plaintext.splice(idx, 1)
}
}
},
removeTrailingNewline(str) {
return str.replace(/\n+$/, '');
},
convertHtmlToPlainText(htmlString) {
// 創建一個新的DOMParser對象
var parser = new DOMParser();
// 使用parseFromString方法解析傳入的HTML字符串
var doc = parser.parseFromString(htmlString, 'text/html');
// 返回解析後的純文本內容
return doc.body.textContent || '';
},
exportFn(type) {
const form = this.$refs.form
const form = this.$refs.form;
const prviewType = this.$refs.form.querySelector('#prview-type');
const list = this.$refs.form.querySelector('#prview-list');
const list = this.$refs.form.querySelector('#privew-list');
const standardList = this.$refs.form.querySelector('#standard-prview-list');
const illustrate = this.$refs.form.querySelector('#illustrate');
const illustrate = this.$refs.form.querySelector('illustrate');
const standardIllustrate = this.$refs.form.querySelector('#standard-illustrate');
const partyA = this.$refs.form.querySelector('#partyA');
const partyAcontractno = this.$refs.form.querySelector('#partyAcontractno');
const total_price = this.$refs.form.querySelector('#total_price');
prviewType.value = type
prviewType.value = type;
if (type === 1) {
const standardJsonText = this.buystandardData.list.plaintext.map((item, idx) => {
let text = ''
text = item.text.replace(/\s+/g, "")
this.buydata.list.plaintext[idx].text = this.buydata.list.plaintext[idx].text.replace(/\s+/g, "")
const standarJsonText = this.buystandarDate.list.plaintext.map((item, idx) => {
let text = '';
text = item.text.replace(/\s+/g, "");
this.buydata.list.plaintext[idx].text = this.buydata.list.plaintext[idx].text.replace(/\s+/g, "");
return {
text: text,
id: item.id
}
});
const jsonText = this.buydata.list.plaintext.map(item => {
let text = ''
text = item.text
let text = '';
text = item.text;
return {
text: text,
origin: item.origin ? 1 : 0,
deleted: item.deleted ? 1 : 0,
id: item.id,
updated: item.updated ? 1 : 0,
updated: item.updated ? 1 : 0
}
});
list.value = JSON.stringify(jsonText)
standardList.value = JSON.stringify(standardJsonText)
illustrate.value = this.buydata.illustrate.plaintext
standardIllustrate.value = this.buystandardData.illustrate.plaintext
partyA.value = this.buydata.partyA.plaintext
partyAcontractno.value = this.buydata.partyAcontractno.plaintext
total_price.value = totalBuyPrice
list.value = JSON.stringify(jsonText);
standardList.value = JSON.stringify(standarJsonText);
illustrate.value = this.buydata.illustrate.plaintext;
standardIllustrate.value = this.buyonstandardViewData.illustrate.plaintext;
partyA.value = this.buydata.partyA.plaintext;
partyAcontractno.value = this.buydata.partyAcontractno.plaintext;
total_price.value = totalBuyPrice;
form.submit();
return;
}
if (type === 2) {
// list.value = JSON.stringify(this.data.list.plaintext)
const standardJsonText = this.standardData.list.plaintext.map((item, idx) => {
let text = ''
text = item.text.replace(/\s+/g, "")
const standardJsonText = this.standarData.list.plaintext.map((item, idx) => {
let text = '';
text = item.text.replace(/\s+/g, "");
if (this.data.list.plaintext[idx] !== undefined) {
this.data.list.plaintext[idx].text = this.data.list.plaintext[idx].text.replace(/\s+/g, "")
this.data.list.plaintext[idx].text = this.data.list.plaintext[idx].text.replace(/\s+/g, "");
}
return {
text: text,
@ -651,151 +106,31 @@ const contractDownload = () => {
}
})
const jsonText = this.data.list.plaintext.map(item => {
let text = ''
item.text
text = item.text
let text = '';
item.text;
text = item.text;
return {
text: text,
origin: item.origin ? 1 : 0,
deleted: item.deleted ? 1 : 0,
id: item.id,
updated: item.updated ? 1 : 0,
updated: item.updated ? 1 : 0
}
})
list.value = JSON.stringify(jsonText)
standardList.value = JSON.stringify(standardJsonText)
illustrate.value = this.data.illustrate.plaintext
standardIllustrate.value = this.standardData.illustrate.plaintext
partyA.value = this.data.partyA.plaintext
partyAcontractno.value = this.data.partyAcontractno.plaintext
total_price.value = totalInstallPrice
list.value = JSON.stringify(jsonText);
standardList.value = JSON.stringify(standarJsonText);
illustrate.value = this.data.illustrate.plaintext;
standardIllustrate.value = this.standardData.illustrate.plaintext;
partyA.value = this.data.partyA.plaintext;
partyAcontractno.value = this.data.partyAcontractno.plaintext;
total_price.value = totalInstallPrice;
form.submit();
return;
}
},
toggleBuyStandard: true,
toggleInstallStandard: true,
isbuyShow: true,
sendInstallInputFn() {
if (this.installfill1 == '') {
alert('請輸入安裝試車期限');
return;
}
if (this.installfill2 == '') {
alert('請輸入免費保養月數');
return;
}
if (this.installfill1 < 45) {
alert('安裝試車期限不得低於45日');
return;
}
if (this.installfill1 < 1) {
alert('免費保養月數不得低於1個月');
return;
}
this.isInstallInputIng = false
this.data.list.plaintext[1].text = '安裝產品規格:如附表' + this.affixArr[Number(this.installAffix)] + '。'
this.standardData.list.plaintext[1].text = '安裝產品規格:如附表' + this.affixArr[Number(this.installAffix)] + '。'
this.onstandardViewData.list.plaintext[1].text = '安裝產品規格:如附表' + this.affixArr[Number(this.installAffix)] + '。'
this.data.list.plaintext[5].text = '安裝試車事項:<br>一、甲方應於實際出貨日期前七日,清理升降設備之建築物升降道,及完成底坑防水之處理,上述事項完成後,甲方即以書面或電話通知乙方進場安裝,乙方應於貨抵工地後每台&nbsp;' + this.installfill1 + '&nbsp;日內安裝完成。<br>二、甲方接到乙方電梯安裝完成通知之日起,倘因甲方因素致無法於四十五日內交車時,甲方應付清總價款全部餘額。<br>三、如因非關乙方因素致乙方無法進場施作時,於該因素或障礙排除前,甲方應對已進場之材料或設備負保管責任及整修費用。'
this.standardData.list.plaintext[5].text = '安裝試車事項:<br>一、甲方應於實際出貨日期前七日,清理升降設備之建築物升降道,及完成底坑防水之處理,上述事項完成後,甲方即以書面或電話通知乙方進場安裝,乙方應於貨抵工地後每台&nbsp;' + this.installfill1 + '&nbsp;日內安裝完成。<br>二、甲方接到乙方電梯安裝完成通知之日起,倘因甲方因素致無法於四十五日內交車時,甲方應付清總價款全部餘額。<br>三、如因非關乙方因素致乙方無法進場施作時,於該因素或障礙排除前,甲方應對已進場之材料或設備負保管責任及整修費用。'
this.onstandardViewData.list.plaintext[5].text = '安裝試車事項:<br>一、甲方應於實際出貨日期前七日,清理升降設備之建築物升降道,及完成底坑防水之處理,上述事項完成後,甲方即以書面或電話通知乙方進場安裝,乙方應於貨抵工地後每台&nbsp;' + this.installfill1 + '&nbsp;日內安裝完成。<br>二、甲方接到乙方電梯安裝完成通知之日起,倘因甲方因素致無法於四十五日內交車時,甲方應付清總價款全部餘額。<br>三、如因非關乙方因素致乙方無法進場施作時,於該因素或障礙排除前,甲方應對已進場之材料或設備負保管責任及整修費用。'
this.data.list.plaintext[10].text = '電梯保養:<br>一、乙方完工交車後,期後&nbsp;' + this.installfill2 + '&nbsp;個月內應負責免費定期保養,及履行免費保固,於免費保養期間屆至後,雙方再協商嗣後保養事宜。<br>二、如因可歸責乙方因素致安裝產品有所瑕疵時,乙方應負責修復或修繕,惟非因乙方因素致有修復產品需要時,乙方仍負責修復或修繕,惟得向甲方酌收基本材料與人工費用。<br>三、另依法令規定,非經竣工檢查合格後取得使用許可證之電梯,依法不得使用。'
this.standardData.list.plaintext[10].text = '電梯保養:<br>一、乙方完工交車後,期後&nbsp;' + this.installfill2 + '&nbsp;個月內應負責免費定期保養,及履行免費保固,於免費保養期間屆至後,雙方再協商嗣後保養事宜。<br>二、如因可歸責乙方因素致安裝產品有所瑕疵時,乙方應負責修復或修繕,惟非因乙方因素致有修復產品需要時,乙方仍負責修復或修繕,惟得向甲方酌收基本材料與人工費用。<br>三、另依法令規定,非經竣工檢查合格後取得使用許可證之電梯,依法不得使用。'
this.onstandardViewData.list.plaintext[10].text = '電梯保養:<br>一、乙方完工交車後,期後&nbsp;' + this.installfill2 + '&nbsp;個月內應負責免費定期保養,及履行免費保固,於免費保養期間屆至後,雙方再協商嗣後保養事宜。<br>二、如因可歸責乙方因素致安裝產品有所瑕疵時,乙方應負責修復或修繕,惟非因乙方因素致有修復產品需要時,乙方仍負責修復或修繕,惟得向甲方酌收基本材料與人工費用。<br>三、另依法令規定,非經竣工檢查合格後取得使用許可證之電梯,依法不得使用。'
},
sendInstallInputKeyupFn(e) {
if (e.keyCode !== 13) return
if (this.installfill1 == '') {
alert('請輸入安裝試車期限');
return;
}
if (this.installfill2 == '') {
alert('請輸入免費保養月數');
return;
}
if (this.installfill1 < 45) {
alert('安裝試車期限不得低於45日');
return;
}
if (this.installfill1 < 1) {
alert('免費保養月數不得低於1個月');
return;
}
this.isInstallInputIng = false
this.data.list.plaintext[1].text = '安裝產品規格:如附表' + this.affixArr[Number(this.installAffix)] + '。'
this.standardData.list.plaintext[1].text = '安裝產品規格:如附表' + this.affixArr[Number(this.installAffix)] + '。'
this.onstandardViewData.list.plaintext[1].text = '安裝產品規格:如附表' + this.affixArr[Number(this.installAffix)] + '。'
this.data.list.plaintext[5].text = '安裝試車事項:<br>一、甲方應於實際出貨日期前七日,清理升降設備之建築物升降道,及完成底坑防水之處理,上述事項完成後,甲方即以書面或電話通知乙方進場安裝,乙方應於貨抵工地後每台&nbsp;' + this.installfill1 + '&nbsp;日內安裝完成。<br>二、甲方接到乙方電梯安裝完成通知之日起,倘因甲方因素致無法於四十五日內交車時,甲方應付清總價款全部餘額。<br>三、如因非關乙方因素致乙方無法進場施作時,於該因素或障礙排除前,甲方應對已進場之材料或設備負保管責任及整修費用。'
this.standardData.list.plaintext[5].text = '安裝試車事項:<br>一、甲方應於實際出貨日期前七日,清理升降設備之建築物升降道,及完成底坑防水之處理,上述事項完成後,甲方即以書面或電話通知乙方進場安裝,乙方應於貨抵工地後每台&nbsp;' + this.installfill1 + '&nbsp;日內安裝完成。<br>二、甲方接到乙方電梯安裝完成通知之日起,倘因甲方因素致無法於四十五日內交車時,甲方應付清總價款全部餘額。<br>三、如因非關乙方因素致乙方無法進場施作時,於該因素或障礙排除前,甲方應對已進場之材料或設備負保管責任及整修費用。'
this.onstandardViewData.list.plaintext[5].text = '安裝試車事項:<br>一、甲方應於實際出貨日期前七日,清理升降設備之建築物升降道,及完成底坑防水之處理,上述事項完成後,甲方即以書面或電話通知乙方進場安裝,乙方應於貨抵工地後每台&nbsp;' + this.installfill1 + '&nbsp;日內安裝完成。<br>二、甲方接到乙方電梯安裝完成通知之日起,倘因甲方因素致無法於四十五日內交車時,甲方應付清總價款全部餘額。<br>三、如因非關乙方因素致乙方無法進場施作時,於該因素或障礙排除前,甲方應對已進場之材料或設備負保管責任及整修費用。'
this.data.list.plaintext[10].text = '電梯保養:<br>一、乙方完工交車後,期後&nbsp;' + this.installfill2 + '&nbsp;個月內應負責免費定期保養,及履行免費保固,於免費保養期間屆至後,雙方再協商嗣後保養事宜。<br>二、如因可歸責乙方因素致安裝產品有所瑕疵時,乙方應負責修復或修繕,惟非因乙方因素致有修復產品需要時,乙方仍負責修復或修繕,惟得向甲方酌收基本材料與人工費用。<br>三、另依法令規定,非經竣工檢查合格後取得使用許可證之電梯,依法不得使用。'
this.standardData.list.plaintext[10].text = '電梯保養:<br>一、乙方完工交車後,期後&nbsp;' + this.installfill2 + '&nbsp;個月內應負責免費定期保養,及履行免費保固,於免費保養期間屆至後,雙方再協商嗣後保養事宜。<br>二、如因可歸責乙方因素致安裝產品有所瑕疵時,乙方應負責修復或修繕,惟非因乙方因素致有修復產品需要時,乙方仍負責修復或修繕,惟得向甲方酌收基本材料與人工費用。<br>三、另依法令規定,非經竣工檢查合格後取得使用許可證之電梯,依法不得使用。'
this.onstandardViewData.list.plaintext[10].text = '電梯保養:<br>一、乙方完工交車後,期後&nbsp;' + this.installfill2 + '&nbsp;個月內應負責免費定期保養,及履行免費保固,於免費保養期間屆至後,雙方再協商嗣後保養事宜。<br>二、如因可歸責乙方因素致安裝產品有所瑕疵時,乙方應負責修復或修繕,惟非因乙方因素致有修復產品需要時,乙方仍負責修復或修繕,惟得向甲方酌收基本材料與人工費用。<br>三、另依法令規定,非經竣工檢查合格後取得使用許可證之電梯,依法不得使用。'
},
sendBuyInputFn() {
if (this.buyfill1 == '') {
alert('請輸入交貨期限');
return;
}
if (this.buyfill1 < 1) {
alert('交貨期限不得低於1日');
return;
}
if (buyArr[1].installment == 2) {
this.buydata.list.plaintext[4].text = this.buydata.list.plaintext[4].text.replace('____', this.buyfill2);
this.buystandardData.list.plaintext[4].text = this.buydata.list.plaintext[4].text.replace('____', this.buyfill2);
this.buyonstandardViewData.list.plaintext[4].text = this.buydata.list.plaintext[4].text.replace('____', this.buyfill2);
}
this.isBuyInputIng = false
this.buydata.list.plaintext[1].text = '產品規格:如附表' + this.affixArr[Number(this.buyAffix)] + '。'
this.buystandardData.list.plaintext[1].text = '產品規格:如附表' + this.affixArr[Number(this.buyAffix)] + '。'
this.buyonstandardViewData.list.plaintext[1].text = '產品規格:如附表' + this.affixArr[Number(this.buyAffix)] + '。'
this.buydata.list.plaintext[5].text = '交貨期限及甲方配合事項:<br>乙方應於接獲甲方圖色確認第&nbsp;' + this.buyfill1 + '&nbsp;日(應於合約簽訂日起兩年內),將本工程所需之全部設備、器材 運抵工地,甲方應提供適當的場所供乙方貯放設備、器材。'
this.buystandardData.list.plaintext[5].text = '交貨期限及甲方配合事項:<br>乙方應於接獲甲方圖色確認第&nbsp;' + this.buyfill1 + '&nbsp;日(應於合約簽訂日起兩年內),將本工程所需之全部設備、器材 運抵工地,甲方應提供適當的場所供乙方貯放設備、器材。'
this.buyonstandardViewData.list.plaintext[5].text = '交貨期限及甲方配合事項:<br>乙方應於接獲甲方圖色確認第&nbsp;' + this.buyfill1 + '&nbsp;日(應於合約簽訂日起兩年內),將本工程所需之全部設備、器材 運抵工地,甲方應提供適當的場所供乙方貯放設備、器材。'
let buyAffixHtml = ''
for (let i = 0; i < Number(this.buyAffix); i++) {
buyAffixHtml += `<br>${numberToSmallChinese(i + 1)}、附表${numberToSmallChinese(i + 1)}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;共&nbsp;1&nbsp;張`
}
this.buydata.list.plaintext[15].text = this.buydata.list.plaintext[15].text + buyAffixHtml
this.buystandardData.list.plaintext[15].text = this.buystandardData.list.plaintext[15].text + buyAffixHtml
this.buyonstandardViewData.list.plaintext[15].text = this.buyonstandardViewData.list.plaintext[15].text + buyAffixHtml
},
sendBuyInputKeyupFn(e) {
if (e.keyCode !== 13) return
if (this.buyfill1 == '') {
alert('請輸入交貨期限');
return;
}
if (this.buyfill1 < 1) {
alert('交貨期限不得低於1日');
return;
}
if (buyArr[1].installment == 2) {
this.buydata.list.plaintext[4].text = this.buydata.list.plaintext[4].text.replace('____', this.buyfill2);
this.buystandardData.list.plaintext[4].text = this.buydata.list.plaintext[4].text.replace('____', this.buyfill2);
this.buyonstandardViewData.list.plaintext[4].text = this.buydata.list.plaintext[4].text.replace('____', this.buyfill2);
}
this.isBuyInputIng = false
this.buydata.list.plaintext[1].text = '產品規格:如附表' + this.affixArr[Number(this.buyAffix)] + '。'
this.buystandardData.list.plaintext[1].text = '產品規格:如附表' + this.affixArr[Number(this.buyAffix)] + '。'
this.buyonstandardViewData.list.plaintext[1].text = '產品規格:如附表' + this.affixArr[Number(this.buyAffix)] + '。'
this.buydata.list.plaintext[5].text = '交貨期限及甲方配合事項:<br>乙方應於接獲甲方圖色確認第&nbsp;' + this.buyfill1 + '&nbsp;日(應於合約簽訂日起兩年內),將本工程所需之全部設備、器材 運抵工地,甲方應提供適當的場所供乙方貯放設備、器材。'
this.buystandardData.list.plaintext[5].text = '交貨期限及甲方配合事項:<br>乙方應於接獲甲方圖色確認第&nbsp;' + this.buyfill1 + '&nbsp;日(應於合約簽訂日起兩年內),將本工程所需之全部設備、器材 運抵工地,甲方應提供適當的場所供乙方貯放設備、器材。'
this.buyonstandardViewData.list.plaintext[5].text = '交貨期限及甲方配合事項:<br>乙方應於接獲甲方圖色確認第&nbsp;' + this.buyfill1 + '&nbsp;日(應於合約簽訂日起兩年內),將本工程所需之全部設備、器材 運抵工地,甲方應提供適當的場所供乙方貯放設備、器材。'
let buyAffixHtml = ''
for (let i = 0; i < Number(this.buyAffix); i++) {
buyAffixHtml += `<br>${numberToSmallChinese(i + 1)}、附表${numberToSmallChinese(i + 1)}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;共&nbsp;1&nbsp;張`
}
this.buydata.list.plaintext[15].text = this.buydata.list.plaintext[15].text + buyAffixHtml
this.buystandardData.list.plaintext[15].text = this.buystandardData.list.plaintext[15].text + buyAffixHtml
this.buyonstandardViewData.list.plaintext[15].text = this.buyonstandardViewData.list.plaintext[15].text + buyAffixHtml
},
affixArr: ['', '一', '一、二', '一、二、三', '一、二、三、四', '一、二、三、四、五'],
isBuyInputIng: true,
isInstallInputIng: true,
}
}
};

649
wms/contract-repair/prviewPdf.php

@ -0,0 +1,649 @@
<?php
include "../header.php";
require_once('./conn.php');
if ($_POST['list']) {
$contract_id = $_POST['contract_apply_id'];
if ($_POST['prviewType'] == 1) {
$isStand = ($_POST['buystandard'] == "true") ? 1 : 0;
} else {
$isStand = $_POST['installstandard'] == "true" ? 1 : 0;
}
$type = $_POST['prviewType'] == '1' ? "電梯買賣合約書" : "電梯安裝合約書";
$list = json_decode($_POST['list']);
$standardList = json_decode($_POST['standardList']);
$illustrate = $_POST['illustrate'];
$updatedIllustrate = false;
$standardIllustrate = $_POST['standardIllustrate'];
$partyA = $_POST['partyA'];
$partyAcontractno = $_POST['partyAcontractno'];
$total_price = $_POST['total_price'];
$person = $_POST['person'];
$personid = $_POST['personid'];
$delivery_term = $_POST['delivery_term'];
$install_period = $_POST['install_period'];
$free_maintainance = $_POST['free_maintainance'];
// $originArr = array_filter(json_decode(json_encode($list), true), fn($item)=> $item['origin'] == 1);
$standardArr = json_decode(json_encode($standardList), true);
$nostandardArr = json_decode(json_encode($list), true);
$newlist = array_values(array_filter($list, fn ($item) => $item->deleted == 0));
foreach ($nostandardArr as $idx => &$item) {
if ($item['origin'] === 1) {
if (strip_tags($item['text']) != strip_tags($standardArr[$item['id']]['text'])) {
$item['updated'] = 1;
} else {
$item['updated'] = 0;
}
}
}
unset($item);
if (strip_tags($illustrate) != strip_tags($standardIllustrate)) {
$updatedIllustrate = true;
}
$sql_str = "SELECT * FROM hope_elevator_customer WHERE vol_no = :vol_no";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':vol_no', $partyAcontractno);
$stmt->execute();
$customer = $stmt->fetch(PDO::FETCH_ASSOC);
if (count($customer) <= 0) {
echo "<script>
alert('資料不齊或合約書已生成過。');
window.history.back();
</script>";
}
$sql_str = "SELECT file_name FROM contract_apply_files WHERE contract_id = :contract_id AND deleted_at IS NULL";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':contract_id', $contract_id);
$stmt->execute();
$files = $stmt->fetchAll(PDO::FETCH_ASSOC);
function numberToChinese($num)
{
$chineseNumbers = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十'];
$units = ['', '十', '百', '千', '万'];
if ($num <= 10) {
return $chineseNumbers[$num];
} elseif ($num < 20) {
return $units[1] . $chineseNumbers[$num % 10];
} elseif ($num < 100) {
return $chineseNumbers[intval($num / 10)] . $units[1] . ($num % 10 > 0 ? $chineseNumbers[$num % 10] : '');
} else {
// 處理大於 99 的数字
$result = '';
$strNum = strval($num);
$length = strlen($strNum);
for ($i = 0; $i < $length; $i++) {
$currentDigit = intval($strNum[$i]);
if ($currentDigit > 0) {
$result .= $chineseNumbers[$currentDigit] . $units[$length - $i - 1];
} else {
$result .= $chineseNumbers[$currentDigit];
}
}
return $result;
}
}
function removeTrailingBr($string)
{
//刪除字串尾巴的<br><br />
return preg_replace('/(<br\s*\/?>)+$/', '', $string);
}
?>
<script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></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>
<script src="https://cdnjs.cloudflare.com/ajax/libs/dompurify/2.3.3/purify.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.3.3/html2canvas.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js" integrity="sha512-E8QSvWZ0eCLGk4km3hxSsNmGWbLtSCSUcewDQPQWZF6pEU8GlT8a5fF32wOl1i8ftdMhssTrF/OhyGWwonTcXA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<style>
.container {
background-color: transparent !important;
width: 100% !important;
}
.prview,
.footer {
width: 800px;
border: 1px #ccc solid;
padding: 20px;
font-family: '標楷體';
}
.prview.none {
display: none;
}
.prview h2 {
font-size: 18pt;
text-align: center;
}
.prview p {
font-size: 12pt;
margin: 0;
padding: 0;
}
td tr table th {
border: none !important;
background-color: #fff !important;
}
tr:nth-child(even) {
background-color: #fff !important;
}
.colorDiv {
display: flex;
margin: 10px 0;
}
.colorDiv .block {
width: 18px;
height: 18px;
}
.colorDiv span {
font-size: 15px;
margin: 0 5px 0 2px;
font-weight: 600;
}
.colorDiv .block.gray {
background-color: #DDDDDD;
}
.colorDiv .block.green {
background-color: #00B900;
}
.colorDiv .block.red {
background-color: #D11919;
}
#btn,
.pre {
background-color: #0D559D;
color: #fff;
outline: none;
border: none;
border: 1px #ccc solid;
width: 100px;
height: 32px;
font-weight: 600;
border-radius: 6px;
margin-right: 5px;
}
.pre {
background-color: #40C474;
}
</style>
<div class="container" x-data="{
css:'',
random:'',
init(){
const characters = '012345678901234567890123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
const charactersLength = characters.length;
let randomString = '';
const length = 15;
for (let i = 0; i < length; i++) {
const randomIndex = Math.floor(Math.random() * charactersLength);
randomString += characters.charAt(randomIndex);
}
this.random = randomString;
console.log(files);
},
exportFn(){
const now = new Date();
// 獲取年、月、日、小時、分鐘、秒
const year = now.getFullYear();
const month = now.getMonth() + 1; // 月份是從0開始的,所以要加1
const day = now.getDate();
const hours = now.getHours();
const minutes = now.getMinutes();
const seconds = now.getSeconds();
// 格式化日期和時間
const formattedDate = `${year}${month}${day}${hours}${minutes}${seconds}`;
let token = formattedDate + '<?php echo $partyAcontractno; ?><?php echo $partyA; ?>永佳捷<?php echo $total_price; ?>'
let newtoken = formattedDate + '-' + CryptoJS.MD5(CryptoJS.SHA256(CryptoJS.SHA256(CryptoJS.MD5(token).toString()).toString() + this.random).toString()).toString()
console.log(newtoken);
let html = this.$refs.prview.innerHTML
let footer = this.$refs.footer.innerHTML
let affix1 = this.$refs.affix1.innerHTML
// html = this.$refs.footer.innerHTML
// axios.post('./export-pdf.php', {'html':html}).then(res=>{
// console.log(res);
// })
const form = new FormData();
form.append('html', html);
form.append('footer', footer);
form.append('affix1', affix1);
form.append('css',this.css);
form.append('user_name', '<?php echo $user_name; ?>');
form.append('contract_no', '<?php echo $partyAcontractno; ?>');
form.append('party_a', '<?php echo $partyA; ?>');
form.append('total_price', '<?php echo $total_price; ?>');
form.append('person', '<?php echo $person; ?>');
form.append('token', newtoken);
form.append('formattedDate', formattedDate);
axiosClient({
method:'post',
responseType:'blob',
url:'./export-pdf.php',
data:form
}).then(response=>{
const url = window.URL.createObjectURL(new Blob([response.data]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', formattedDate + '.pdf'); // 指定下载的文件名
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
this.store(newtoken, formattedDate)
for(let i=0;i<files.length;i++){
let filename = document.createElement('a');
filename.href = './images/contracts_new_files/' + files[i].file_name;
filename.setAttribute('download', filename.href); // 指定下载的文件名
document.body.appendChild(filename);
filename.click();
document.body.removeChild(filename);
}
})
},
store(newtoken, formattedDate){
const form = new FormData();
form.append('contract_id', '<?php echo $partyAcontractno; ?>')
form.append('uscc', '<?php echo $customer['uscc']; ?>')
form.append('ekind', '新梯')
form.append('new_elevator', '<?php $_POST['prviewType'] == '1' ? "買賣" : "安裝"; ?>')
form.append('party_a', '<?php echo $partyA; ?>')
form.append('total_price', <?php echo (int)$total_price; ?>)
form.append('accound_id', '<?php echo $personid; ?>')
form.append('times', 1)
form.append('random', this.random)
form.append('hash', newtoken)
form.append('url', formattedDate+'.pdf' );
form.append('created_by', '<?php echo $user_id; ?>')
form.append('delivery_term', '<?php echo $delivery_term; ?>')
form.append('install_period', '<?php echo $install_period; ?>')
form.append('free_maintainance', '<?php echo $free_maintainance; ?>')
axiosClient({
method:'post',
url:'./store-contract.php',
data:form
}).then(res=>{
console.log(res);
})
},
}">
<button @click="history.go(-1)" class="pre">回前頁</button>
<button id="btn" @click="exportFn()">點我下載</button>
<?php if ($isStand == 0) { ?>
<div class="colorDiv">
<div class="block gray"></div>
<span>修改的條列</span>
<div class="block green"></div>
<span>新增的條列</span>
<div class="block red"></div>
<span>刪除的條列</span>
</div>
<?php } ?>
<div class="prview" id="prview" x-ref="prview" style="font-family:'標楷體'" x-show="false">
<h2 style="text-align:center;font-size:18pt;"><?php echo $type; ?></h2>
<p style="font-size: 12pt;">合約書編號:<?php echo $_POST['partyAcontractno'] ?></p>
<table>
<tr>
<td style="width:100px"></td>
<td style="width:200px"><?php echo $_POST['partyA'] ?></td>
<td>(即買方,以下簡稱為甲方)</td>
</tr>
</table>
<p style="font-size: 12pt;">立合約書人</p>
<table>
<tr>
<td style="width:100px"></td>
<td style="width:200px">永佳捷科技股份有限公司</td>
<td>(即賣方,以下簡稱為乙方)</td>
</tr>
</table>
<p style="font-size: 12pt;width:440px"><?php echo $illustrate; ?></p>
<table style="width:100%">
<?php foreach ($newlist as $idx => $item) {
?>
<tr style="display:block;">
<td style="width:60px;"><?php echo numberToChinese($idx + 1); ?></td>
<td style="width:445px;"><?php echo nl2br(removeTrailingBr(json_decode(json_encode($item), true)['text'])); ?></td>
</tr>
<?php } ?>
</table>
</div>
<section style="display:flex;justify-content:center;">
<div class="prview" style="font-family:'標楷體';background-color:#fff;">
<h2 style="text-align:center;font-size:18pt;"><?php echo $type; ?></h2>
<p style="font-size: 12pt;">合約書編號:<?php echo $_POST['partyAcontractno'] ?></p>
<table style="border:none">
<tr style="border:none;">
<td style="border:none;width:100px;"></td>
<td style="border:none;width:200px"><?php echo $_POST['partyA'] ?></td>
<td style="border:none">(即買方,以下簡稱為甲方)</td>
</tr>
</table>
<p style="font-size: 12pt;">立合約書人</p>
<table style="border:none">
<tr style="border:none;">
<td style="border:none;width:100px"></td>
<td style="border:none;width:200px">永佳捷科技股份有限公司</td>
<td style="border:none">(即賣方,以下簡稱為乙方)</td>
</tr>
</table>
<p style="font-size: 12pt;width:800px"><?php echo $standardIllustrate; ?></p>
<table style="width:100%;border:none">
<?php foreach ($standardList as $idx => $item) {
?>
<tr style="margin-bottom:10px;display:block;border:none">
<td style="width:100px;border:none"><?php echo numberToChinese($idx + 1); ?></td>
<td style="border:none"><?php echo nl2br(json_decode(json_encode($item), true)['text']); ?></td>
</tr>
<?php } ?>
</table>
</div>
<?php if ($isStand == 0) { ?>
<div class="prview nostandard" style="font-family:'標楷體'" x-ref="nostandard">
<h2 style="text-align:center;font-size:18pt;"><?php echo $type; ?></h2>
<p style="font-size: 12pt;">合約書編號:<?php echo $_POST['partyAcontractno'] ?></p>
<table style="border:none">
<tr style="border:none;">
<td style="border:none;width:100px;"></td>
<td style="border:none;width:200px"><?php echo $_POST['partyA'] ?></td>
<td style="border:none">(即買方,以下簡稱為甲方)</td>
</tr>
</table>
<p style="font-size: 12pt;">立合約書人</p>
<table style="border:none">
<tr style="border:none;">
<td style="border:none;width:100px"></td>
<td style="border:none;width:200px">永佳捷科技股份有限公司</td>
<td style="border:none">(即賣方,以下簡稱為乙方)</td>
</tr>
</table>
<p style="font-size: 12pt;width:800px;<?php if ($updatedIllustrate) {
echo 'background-color:#ddd';
} ?>"><?php echo $illustrate; ?></p>
<table style="width:100%;border:none">
<?php foreach ($nostandardArr as $idx => $item) {
?>
<tr style="margin-bottom:10px;display:block;border:none">
<td style="width:100px;border:none"><?php echo numberToChinese($idx + 1); ?></td>
<?php if ($item['updated'] == 1) { ?>
<td style="border:none;background-color:#ddd;"><?php echo nl2br(json_decode(json_encode($item), true)['text']); ?></td>
<?php } elseif ($item['deleted'] == 1) { ?>
<td style="border:none;background-color:#D11919;text-decoration:line-through"><?php echo nl2br(json_decode(json_encode($item), true)['text']); ?></td>
<?php } elseif ($item['id'] > 15) { ?>
<td style="border:none;background-color:#00B900;"><?php echo nl2br(json_decode(json_encode($item), true)['text']); ?></td>
<?php } else { ?>
<td style="border:none"><?php echo nl2br(removeTrailingBr(json_decode(json_encode($item), true)['text'])); ?></td>
<?php } ?>
</tr>
<?php } ?>
</table>
</div>
<?php } ?>
</section>
<div class="footer" x-ref="footer" x-show="false">
<br />
<p> 立合約書人:</p>
<table>
<tr style="line-height:2">
<td style="width:100px;border:none">
<table>
<tr>
<td style="width:30px;border:none"></td>
<td style="width:30px;border:none;text-align:right"></td>
<td style="width:10px;border:none;text-align:right">:</td>
</tr>
</table>
</td>
<td style="border:none">&nbsp;<?php echo $_POST['partyA']; ?></td>
</tr>
<tr style="line-height:2">
<td style="width:100px;border:none">
<table>
<tr>
<td style="width:20px;border:none;"></td>
<td style="width:20px;border:none;text-align:center"></td>
<td style="width:20px;border:none;text-align:right"></td>
<td style="width:10px;border:none;text-align:right">:</td>
</tr>
</table>
<td style="border:none">&nbsp;<?php echo $customer['manager']; ?></td>
</tr>
<tr style="line-height:2">
<td style="width:100px;border:none">
<table>
<tr>
<td style="width:15px;border:none;"></td>
<td style="width:15px;border:none;text-align:center"></td>
<td style="width:15px;border:none;text-align:center"></td>
<td style="width:15px;border:none;text-align:right"></td>
<td style="width:10px;border:none;text-align:right">:</td>
</tr>
</table>
<td style="border:none">&nbsp;<?php echo $customer['uscc']; ?></td>
</tr>
<tr style="line-height:2">
<td style="width:100px;border:none">
<table>
<tr>
<td style="width:30px;border:none;"></td>
<td style="width:30px;border:none;text-align:right"></td>
<td style="width:10px;border:none;text-align:right">:</td>
</tr>
</table>
<td style="border:none">&nbsp;<?php echo $customer['address']; ?></td>
</tr>
</table>
<p style="line-height:0.1">&nbsp;</p>
<table>
<tr style="line-height:2">
<td style="width:100px;border:none">
<table>
<tr>
<td style="width:30px;border:none"></td>
<td style="width:30px;border:none;text-align:right"></td>
<td style="width:10px;border:none;text-align:right">:</td>
</tr>
</table>
</td>
<td style="border:none">&nbsp;永佳捷科技股份有限公司</td>
</tr>
<tr style="line-height:2">
<td style="width:100px;border:none">
<table>
<tr>
<td style="width:20px;border:none;"></td>
<td style="width:20px;border:none;text-align:center"></td>
<td style="width:20px;border:none;text-align:right"></td>
<td style="width:10px;border:none;text-align:right">:</td>
</tr>
</table>
</td>
<td style="border:none">&nbsp;蔡定憲</td>
</tr>
<tr style="line-height:2">
<td style="width:100px;border:none">
<table>
<tr>
<td style="width:15px;border:none;"></td>
<td style="width:15px;border:none;text-align:center"></td>
<td style="width:15px;border:none;text-align:center"></td>
<td style="width:15px;border:none;text-align:right"></td>
<td style="width:10px;border:none;text-align:right">:</td>
</tr>
</table>
</td>
<td style="border:none">&nbsp;90493119</td>
</tr>
<tr style="line-height:2">
<td style="width:100px;border:none">
<table>
<tr>
<td style="width:30px;border:none;"></td>
<td style="width:30px;border:none;text-align:right"></td>
<td style="width:10px;border:none;text-align:right">:</td>
</tr>
</table>
</td>
<td style="border:none">&nbsp;臺北市中山區敬業一路128巷39號3樓之1</td>
</tr>
</table>
<p>&nbsp;</p>
<!-- <table>
<tr>
<td style="width:200px;border:none;text-align:justify">中華民國</td>
<td style="width:100px;border:none;text-align:right"></td>
<td style="width:100px;border:none;text-align:right"></td>
<td style="width:100px;border:none;text-align:right"></td>
</tr>
</table> -->
</div>
<div class="affix1" x-ref="affix1" x-show="false">
<h1 style="text-align:center">升降設備除外工程表</h1>
<table>
<tr>
<td style="width:40px">一、</td>
<td>機械室之建造,含預留出入口、通風照明、自動閉鎖裝置,及天花板上之保養用吊鉤。</td>
</tr>
<tr>
<td style="width:40px">二、</td>
<td style="width:460px">通往機械室之樓梯及加護欄杆工程。</td>
</tr>
<tr>
<td style="width:40px">三、</td>
<td style="width:460px">機械室基礎台需用防濕之瀝青鐵筋混凝土及地板防塵工事。</td>
</tr>
<tr>
<td style="width:40px">四、</td>
<td style="width:460px">機械室及升降路中間之橫樑或工字樑之安裝工程。</td>
</tr>
<tr>
<td style="width:40px">五、</td>
<td style="width:460px">自屋外至機械室之動力及照明用配線電源開關插座,及接地線等電路工程。</td>
</tr>
<tr>
<td style="width:40px">六、</td>
<td style="width:460px">升降路及機械室以外監視盤、電鈴、電話之配管與配線工程。</td>
</tr>
<tr>
<td style="width:40px">七、</td>
<td style="width:460px">升降路之建造及底部之防水工程及緩衝器水泥台工程。</td>
</tr>
<tr>
<td style="width:40px">八、</td>
<td style="width:460px">機坑照明保養用之開關及插座,鐵爬梯。</td>
</tr>
<tr>
<td style="width:40px">九、</td>
<td style="width:460px">各樓按鈕開關之留洞工程及安裝後之固定與週邊裝飾工程。</td>
</tr>
<tr>
<td style="width:40px">十、</td>
<td style="width:460px">升降路內甲方不得裝設有任何與升降設備無關之配線、電線配管、水管、風管等設備。</td>
</tr>
<tr>
<td style="width:40px">十一、</td>
<td style="width:460px">安裝所需水泥、砂石、水電與供試車用動力電源。</td>
</tr>
<tr>
<td style="width:40px">十二、</td>
<td style="width:460px">升降路及機房之建造,電源設備之容量及位置等,需符合國家標準(CNS-2866)及建築法規等規定。</td>
</tr>
<tr>
<td style="width:40px">十三、</td>
<td style="width:460px">機械運抵工地後供給儲存倉庫。</td>
</tr>
<tr>
<td colspan="2">備註:CNS-2866國家標準建築物電梯有關之法規: </td>
</tr>
<tr>
<td style="width:25px">1.</td>
<td style="width:475px">機械室內應設有照明及通風設備,以利管理檢查,照明應在100LUX(米一燭光)以上,通風設備應能使室內溫度保持在攝氏40度以下。</td>
</tr>
<tr>
<td style="width:25px">2.</td>
<td style="width:475px">機械室之出入口應加鎖,其裝置應良好。 </td>
</tr>
<tr>
<td style="width:25px">3.</td>
<td style="width:475px">由機械室至走廊,樓梯間應便於通行,樓梯應加裝扶手,其與水平面之傾斜角度,應不超過60度。 </td>
</tr>
<tr>
<td style="width:25px">4.</td>
<td style="width:475px">機械室出入門之構造,應有下述裝置: <br>
A:能自動關閉者。 <br>
B:有彈簧鎖或其類似裝置,以便室內不用鎖匙,而能開門。 <br>
C:除屋頂開口部份以外,機械式牆壁,應能耐火。(二小時防火時效)
</td>
</tr>
<tr>
<td style="width:25px">5.</td>
<td style="width:475px">升降路內不得設置與升降機無關之配管及配線。 </td>
</tr>
<tr>
<td style="width:25px">6.</td>
<td style="width:475px">任一升降路下部之任何部份,供人使用或類似使用時配重側比照車廂,同樣必須裝設緊急安全裝置。</td>
</tr>
<tr>
<td style="width:25px">7.</td>
<td style="width:475px">若有火警受信總機時,甲方需提供"火警受信總機"檢出信號及通往升降道內之配管配線(0.75MM² × 3) </td>
</tr>
</table>
</div>
</div>
<script>
const files = <?php echo json_encode($files); ?>;
const axiosClient = axios.create({
baseURL: ``,
});
axiosClient.interceptors.request.use((config) => {
config.headers.Authorization = `Bearer ${123}`
return config;
}, (error) => {
return Promise.reject(error);
});
axiosClient.interceptors.response.use((response) => {
return response;
}, (error) => {
if (error.response.status === 401) {}
throw error;
});
const btn = document.getElementById('btn')
console.log(<?php echo $contract_id; ?>);
</script>
<?php
} else {
echo "<script>alert('非法訪問!');window.history.back();</script>";
}
?>

283
wms/contract/api/postContractNewApplyData.php

@ -1,14 +1,16 @@
<?php
use function Symfony\Component\String\s;
require_once("../conn.php");
include_once("./upload_chk.php");
ini_set ( 'date.timezone' , 'Asia/Taipei' );
if($_SERVER['REQUEST_METHOD'] != 'POST'){
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($_POST['regulations'] < 10){
if (isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] == 0 || $_POST['status'] == 1)) {
if ($_POST['regulations'] < 10) {
header("HTTP/1.1 500 傳送失敗!!試車時間不得低於10天");
exit;
}
@ -51,63 +53,63 @@ if(isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] == 0
$updated_by = $_POST['user_id'];
$isFirst = $_POST['isFirst'];
$conn->beginTransaction();
try{
if($isFirst == 1){
try {
if ($isFirst == 1) {
$sql_str = "INSERT INTO contract_new_apply (mid, contractno, sales_man, apply_date, apply_type, case_name, customer, manager, vat, total_price, total_items, buy_fee, install_fee, contact_address, workdeadline_a, workdeadline_b, test_time, freedeadline, trade_address, tradedeadline, secondPayDeadline, progress, status, person, personname, submit_date, created_at, created_by) VALUES (:mid, :contractno, :sales_man, :apply_date, :apply_type, :case_name, :customer, :manager, :vat, :total_price, :total_items, :buy_fee, :install_fee, :contact_address, :workdeadline_a, :workdeadline_b, :test_time, :freedeadline, :trade_address, :tradedeadline, :secondPayDeadline, :progress, :status, :person, :personname, :submit_date, :created_at, :created_by)";
$stmt = $conn -> prepare($sql_str);
$stmt ->bindParam(':mid', $mid);
$stmt ->bindParam(':contractno', $vol_no);
$stmt ->bindParam(':sales_man', $salesman);
$stmt ->bindParam(':apply_date', $apply_date);
$stmt ->bindParam(':apply_type', $apply_type);
$stmt ->bindParam(':case_name', $case_name);
$stmt ->bindParam(':customer', $customer);
$stmt ->bindParam(':manager', $manager);
$stmt ->bindParam(':vat', $vat);
$stmt ->bindParam(':total_price', $total_price);
$stmt ->bindParam(':total_items', $total_items);
$stmt ->bindParam(':buy_fee', $buy_fee);
$stmt ->bindParam(':install_fee', $install_fee);
$stmt ->bindParam(':contact_address', $contact_address);
$stmt ->bindParam(':workdeadline_a', $workdeadline_a);
$stmt ->bindParam(':workdeadline_b', $workdeadline_b);
$stmt ->bindParam(':test_time', $test_time);
$stmt ->bindParam(':freedeadline', $freedeadline);
$stmt ->bindParam(':trade_address', $trade_address);
$stmt ->bindParam(':tradedeadline', $tradedeadline);
$stmt ->bindParam(':secondPayDeadline', $secondPayDeadline);
$stmt ->bindParam(':progress', $progress);
$stmt ->bindParam(':status', $status);
$stmt ->bindParam(':person', $salesman);
$stmt ->bindParam(':personname', $salesmanname);
$stmt ->bindParam(':submit_date', $submit_date);
$stmt ->bindParam(':created_at', $created_at);
$stmt ->bindParam(':created_by', $created_by);
$stmt ->execute();
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':mid', $mid);
$stmt->bindParam(':contractno', $vol_no);
$stmt->bindParam(':sales_man', $salesman);
$stmt->bindParam(':apply_date', $apply_date);
$stmt->bindParam(':apply_type', $apply_type);
$stmt->bindParam(':case_name', $case_name);
$stmt->bindParam(':customer', $customer);
$stmt->bindParam(':manager', $manager);
$stmt->bindParam(':vat', $vat);
$stmt->bindParam(':total_price', $total_price);
$stmt->bindParam(':total_items', $total_items);
$stmt->bindParam(':buy_fee', $buy_fee);
$stmt->bindParam(':install_fee', $install_fee);
$stmt->bindParam(':contact_address', $contact_address);
$stmt->bindParam(':workdeadline_a', $workdeadline_a);
$stmt->bindParam(':workdeadline_b', $workdeadline_b);
$stmt->bindParam(':test_time', $test_time);
$stmt->bindParam(':freedeadline', $freedeadline);
$stmt->bindParam(':trade_address', $trade_address);
$stmt->bindParam(':tradedeadline', $tradedeadline);
$stmt->bindParam(':secondPayDeadline', $secondPayDeadline);
$stmt->bindParam(':progress', $progress);
$stmt->bindParam(':status', $status);
$stmt->bindParam(':person', $salesman);
$stmt->bindParam(':personname', $salesmanname);
$stmt->bindParam(':submit_date', $submit_date);
$stmt->bindParam(':created_at', $created_at);
$stmt->bindParam(':created_by', $created_by);
$stmt->execute();
$contract_apply_id = $conn->lastInsertId();
foreach($pays as $idx=>$pay){
foreach ($pays as $idx => $pay) {
$kind = $idx;
$sql_str = "INSERT INTO contract_new_apply_pays (contract_apply_id, mid, pay_kind, pay_scale, pay_amount, pay_period, condition_date, created_at, created_by) VALUES (:contract_apply_id, :mid, :pay_kind, :pay_scale, :pay_amount, :pay_period, :condition_date, :created_at, :created_by)";
$stmt = $conn -> prepare($sql_str);
$stmt ->bindParam(':contract_apply_id', $contract_apply_id);
$stmt ->bindParam(':mid', $mid);
$stmt ->bindParam(':pay_kind', $kind);
$stmt ->bindParam(':pay_scale', $pay['scale']);
$stmt ->bindParam(':pay_amount', $pay['amount']);
$stmt ->bindParam(':pay_period', $pay['pay_period']);
$stmt ->bindParam(':condition_date', $pay['condition_date']);
$stmt ->bindParam(':created_at', $created_at);
$stmt ->bindParam(':created_by', $created_by);
$stmt ->execute();
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':contract_apply_id', $contract_apply_id);
$stmt->bindParam(':mid', $mid);
$stmt->bindParam(':pay_kind', $kind);
$stmt->bindParam(':pay_scale', $pay['scale']);
$stmt->bindParam(':pay_amount', $pay['amount']);
$stmt->bindParam(':pay_period', $pay['pay_period']);
$stmt->bindParam(':condition_date', $pay['condition_date']);
$stmt->bindParam(':created_at', $created_at);
$stmt->bindParam(':created_by', $created_by);
$stmt->execute();
}
// -----處理檔案上傳 START-----
if(!empty($files)){
// -----處理檔案上傳 START-----
if (!empty($files)) {
$englisharr = range('a', 'z');
$files = $_FILES['files'];
$newfiles = [];
foreach( $files as $file ){
foreach ($files as $file) {
$i = 0; //新陣列的索引編號
foreach( $file as $key => $val ){
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];
@ -116,90 +118,91 @@ if(isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] == 0
$i++;
} //foreach 第2層 end
}
$max_size = 4096*4096; //設定允許上傳檔案容量的最大值(1M)
$allow_ext = array('jpeg', 'jpg', 'png','JPG','JPEG','PNG','GIF', 'docx', 'doc', 'pdf'); //設定允許上傳檔案的類型
$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;
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){
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{
$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) ){
$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);
$basename = basename($src_name, '.' . $extname);
}
}
}
// -----處理檔案上傳 END-----
header("HTTP/1.1 201 success!");
$conn->commit();
}else{
} else {
$sql_str = "UPDATE contract_new_apply SET status = :status, apply_date=:apply_date, apply_type=:apply_type, case_name=:case_name, customer=:customer, manager=:manager, vat=:vat, total_price=:total_price, total_items=:total_items, buy_fee=:buy_fee, install_fee=:install_fee, contact_address=:contact_address, trade_address=:trade_address, workdeadline_a=:workdeadline_a, workdeadline_b=:workdeadline_b, test_time=:test_time, freedeadline=:freedeadline, trade_address=:trade_address, trade_address=:trade_address, tradedeadline=:tradedeadline, secondPayDeadline=:secondPayDeadline, progress=:progress, person=:person, personname=:personname, submit_date=:submit_date, updated_at=:updated_at, updated_by=:updated_by WHERE mid = :mid";
$stmt = $conn -> prepare($sql_str);
$stmt ->bindParam(':mid', $mid);
$stmt ->bindParam(':status', $status);
$stmt ->bindParam(':apply_date', $apply_date);
$stmt ->bindParam(':apply_type', $apply_type);
$stmt ->bindParam(':case_name', $case_name);
$stmt ->bindParam(':customer', $customer);
$stmt ->bindParam(':manager', $manager);
$stmt ->bindParam(':vat', $vat);
$stmt ->bindParam(':total_price', $total_price);
$stmt ->bindParam(':total_items', $total_items);
$stmt ->bindParam(':buy_fee', $buy_fee);
$stmt ->bindParam(':install_fee', $install_fee);
$stmt ->bindParam(':contact_address', $contact_address);
$stmt ->bindParam(':workdeadline_a', $workdeadline_a);
$stmt ->bindParam(':workdeadline_b', $workdeadline_b);
$stmt ->bindParam(':test_time', $test_time);
$stmt ->bindParam(':freedeadline', $freedeadline);
$stmt ->bindParam(':trade_address', $trade_address);
$stmt ->bindParam(':tradedeadline', $tradedeadline);
$stmt ->bindParam(':secondPayDeadline', $secondPayDeadline);
$stmt ->bindParam(':progress', $progress);
$stmt ->bindParam(':person', $salesman);
$stmt ->bindParam(':personname', $salesmanname);
$stmt ->bindParam(':submit_date', $submit_date);
$stmt ->bindParam(':updated_at', $updated_at);
$stmt ->bindParam(':updated_by', $updated_by);
$stmt ->execute();
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':mid', $mid);
$stmt->bindParam(':status', $status);
$stmt->bindParam(':apply_date', $apply_date);
$stmt->bindParam(':apply_type', $apply_type);
$stmt->bindParam(':case_name', $case_name);
$stmt->bindParam(':customer', $customer);
$stmt->bindParam(':manager', $manager);
$stmt->bindParam(':vat', $vat);
$stmt->bindParam(':total_price', $total_price);
$stmt->bindParam(':total_items', $total_items);
$stmt->bindParam(':buy_fee', $buy_fee);
$stmt->bindParam(':install_fee', $install_fee);
$stmt->bindParam(':contact_address', $contact_address);
$stmt->bindParam(':workdeadline_a', $workdeadline_a);
$stmt->bindParam(':workdeadline_b', $workdeadline_b);
$stmt->bindParam(':test_time', $test_time);
$stmt->bindParam(':freedeadline', $freedeadline);
$stmt->bindParam(':trade_address', $trade_address);
$stmt->bindParam(':tradedeadline', $tradedeadline);
$stmt->bindParam(':secondPayDeadline', $secondPayDeadline);
$stmt->bindParam(':progress', $progress);
$stmt->bindParam(':person', $salesman);
$stmt->bindParam(':personname', $salesmanname);
$stmt->bindParam(':submit_date', $submit_date);
$stmt->bindParam(':updated_at', $updated_at);
$stmt->bindParam(':updated_by', $updated_by);
$stmt->execute();
foreach($pays as $idx=>$pay){
foreach ($pays as $idx => $pay) {
$kind = $idx;
$sql_str = "UPDATE contract_new_apply_pays SET pay_scale = :pay_scale, pay_amount = :pay_amount, pay_period = :pay_period, condition_date = :condition_date, updated_at = :updated_at, updated_by = :updated_by WHERE mid = :mid AND pay_kind = :pay_kind";
$stmt = $conn -> prepare($sql_str);
$stmt ->bindParam(':mid', $mid);
$stmt ->bindParam(':pay_kind', $kind);
$stmt ->bindParam(':pay_scale', $pay['scale']);
$stmt ->bindParam(':pay_amount', $pay['amount']);
$stmt ->bindParam(':pay_period', $pay['pay_period']);
$stmt ->bindParam(':condition_date', $pay['condition_date']);
$stmt ->bindParam(':updated_at', $updated_at);
$stmt ->bindParam(':updated_by', $updated_by);
$stmt ->execute();
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':mid', $mid);
$stmt->bindParam(':pay_kind', $kind);
$stmt->bindParam(':pay_scale', $pay['scale']);
$stmt->bindParam(':pay_amount', $pay['amount']);
$stmt->bindParam(':pay_period', $pay['pay_period']);
$stmt->bindParam(':condition_date', $pay['condition_date']);
$stmt->bindParam(':updated_at', $updated_at);
$stmt->bindParam(':updated_by', $updated_by);
$stmt->execute();
}
$deleted_at = date("Y-m-d H:i:s");
$removefiles = json_decode($_POST['removefiles'], true);
@ -220,17 +223,15 @@ if(isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] == 0
header("HTTP/1.1 201 success!");
$conn->commit();
}
}catch(PDOException $e){
} catch (PDOException $e) {
$conn->rollback();
header("HTTP/1.1 500 failed!");
echo $e->getMessage();
die('Error!:'.$e->getMessage());
die('Error!:' . $e->getMessage());
}
}
//結案同意
if(isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] == 3) ){
if (isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] == 3)) {
$status = $_POST['status'];
$vol_no = $_POST['vol_no'];
$contract_new_apply_id = $_POST['contract_new_apply_id'];
@ -239,27 +240,27 @@ if(isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] == 3
$user_id = $_POST['review_person_id'];
$review_date = date('Y-m-d H:i:s');
$conn->beginTransaction();
try{
try {
$sql_str = "UPDATE contract_new_apply SET status = :status, progress = :progress, review_comment=:review_comment, review_person_id=:review_person_id, review_date=:review_date WHERE id = :contract_new_apply_id";
$stmt = $conn -> prepare($sql_str);
$stmt ->bindParam(':status', $status);
$stmt ->bindParam(':progress', $progress);
$stmt ->bindParam(':contract_new_apply_id', $contract_new_apply_id);
$stmt ->bindParam(':review_comment', $review_comment);
$stmt ->bindParam(':review_person_id', $user_id);
$stmt ->bindParam(':review_date', $review_date);
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':status', $status);
$stmt->bindParam(':progress', $progress);
$stmt->bindParam(':contract_new_apply_id', $contract_new_apply_id);
$stmt->bindParam(':review_comment', $review_comment);
$stmt->bindParam(':review_person_id', $user_id);
$stmt->bindParam(':review_date', $review_date);
$stmt->execute();
header("HTTP/1.1 200 success!");
$conn->commit();
}catch(PDOException $e){
} catch (PDOException $e) {
$conn->rollback();
header("HTTP/1.1 500 failed!");
echo $e->getMessage();
die('Error!:'.$e->getMessage());
die('Error!:' . $e->getMessage());
}
}
//結案不同意(退回)
if(isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] == 2) ){
if (isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] == 2)) {
$status = $_POST['status'];
$vol_no = $_POST['vol_no'];
$contract_new_apply_id = $_POST['contract_new_apply_id'];
@ -269,22 +270,22 @@ if(isset($_POST['vol_no']) && !empty($_POST['vol_no']) && ($_POST['status'] == 2
echo $user_id;
$review_date = date('Y-m-d H:i:s');
$conn->beginTransaction();
try{
try {
$sql_str = "UPDATE contract_new_apply SET status = :status, progress = :progress, review_comment=:review_comment, review_person_id=:review_person_id, review_date=:review_date WHERE id = :contract_new_apply_id";
$stmt = $conn -> prepare($sql_str);
$stmt ->bindParam(':status', $status);
$stmt ->bindParam(':progress', $progress);
$stmt ->bindParam(':contract_new_apply_id', $contract_new_apply_id);
$stmt ->bindParam(':review_comment', $review_comment);
$stmt ->bindParam(':review_person_id', $user_id);
$stmt ->bindParam(':review_date', $review_date);
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':status', $status);
$stmt->bindParam(':progress', $progress);
$stmt->bindParam(':contract_new_apply_id', $contract_new_apply_id);
$stmt->bindParam(':review_comment', $review_comment);
$stmt->bindParam(':review_person_id', $user_id);
$stmt->bindParam(':review_date', $review_date);
$stmt->execute();
header("HTTP/1.1 200 success!");
$conn->commit();
}catch(PDOException $e){
} catch (PDOException $e) {
$conn->rollback();
header("HTTP/1.1 500 failed!");
echo $e->getMessage();
die('Error!:'.$e->getMessage());
die('Error!:' . $e->getMessage());
}
}

519
wms/contract/contract-download.php

@ -2,8 +2,8 @@
include "../header.php";
require_once('./conn.php');
//買賣1、2、3,安裝5、6 (4跟7很少有)
if(isset($_GET['id']) && $_GET['id']!=""){
try{
if (isset($_GET['id']) && $_GET['id'] != "") {
try {
$id = $_GET['id'];
$sql_str = "SELECT pricereview_main.*, pricereview_pay.*, pricereview_item.note, pricereview_item.item_qty, account.name as accountname, account.id as accountid
FROM pricereview_main
@ -26,7 +26,7 @@ if(isset($_GET['id']) && $_GET['id']!=""){
$contracts = $stmt->fetchAll(PDO::FETCH_ASSOC);
$contract = $contracts[0];
$contract_apply_id = $contract['id'];
if(($contract['status'] !== "YY" && $user_id != 'M0107') && $user_id != 'M0174'){
if (($contract['status'] !== "YY" && $user_id != 'M0107') && $user_id != 'M0174' && $user_id != 'M0225') {
echo '<script type="text/javascript">
alert("非法訪問。");
window.history.back();
@ -38,46 +38,45 @@ if(isset($_GET['id']) && $_GET['id']!=""){
$stmt->bindParam(':vol_no', $contract['contractno']);
$stmt->execute();
$customer = $stmt->fetchAll(PDO::FETCH_ASSOC);
if(count($customer) <= 0 ){
echo "<script>
alert('資料不齊或合約書已生成過。');
window.history.back();
</script>";
exit;
}
// if (count($customer) <= 0) {
// echo "<script>
// alert('資料不齊或合約書已生成過。');
// window.history.back();
// </script>";
// exit;
// }
$buyArr = [];
$buyNo2Pay = false;
$buy_total_price = 0;
$installArr = [];
$install_total_price = 0;
// $noteArr = explode(",", $contracts[0]['note']);
$noteArr = array(1,1,1,1,1);
$noteArr = array(1, 1, 1, 1, 1);
$qty = $contracts[0]['total_items'];
foreach($contracts as $idx=>$amount){
foreach ($contracts as $idx => $amount) {
$isset = false;
if($amount['pay_kind']==5 || $amount['pay_kind']==6){
if($amount['pay_scale'] >= 0){
if ($amount['pay_kind'] == 5 || $amount['pay_kind'] == 6) {
if ($amount['pay_scale'] >= 0) {
$install_total_price = $install_total_price + $amount['pay_amount'];
$installArr[] = ['installment'=> $amount['pay_kind'], 'scale'=> $amount['pay_scale'], 'amount'=> $amount['pay_amount'], 'pay_period'=>$amount['pay_period']];
$installArr[] = ['installment' => $amount['pay_kind'], 'scale' => $amount['pay_scale'], 'amount' => $amount['pay_amount'], 'pay_period' => $amount['pay_period']];
}
}
if($amount['pay_kind']==1 || $amount['pay_kind']==2 || $amount['pay_kind']==3){
if($amount['pay_scale'] > 0){
if ($amount['pay_kind'] == 1 || $amount['pay_kind'] == 2 || $amount['pay_kind'] == 3) {
if ($amount['pay_scale'] > 0) {
$buy_total_price = $buy_total_price + $amount['pay_amount'];
foreach($buyArr as $buy){
if($buy['installment'] == $amount['pay_kind']){
foreach ($buyArr as $buy) {
if ($buy['installment'] == $amount['pay_kind']) {
$isset = true;
}
}
if(!$isset){{
$buyArr[] = ['installment'=>$amount['pay_kind'], 'scale'=>$amount['pay_scale'], 'amount'=>$amount['pay_amount'], 'pay_period'=>$amount['pay_period']];
}
if($amount['pay_kind'] == 2){
$buyNo2Pay = true;
if (!$isset) { {
$buyArr[] = ['installment' => $amount['pay_kind'], 'scale' => $amount['pay_scale'], 'amount' => $amount['pay_amount'], 'pay_period' => $amount['pay_period']];
}
if ($amount['pay_kind'] == 2) {
$buyNo2Pay = true;
}
}
}
}
}
}
$sql_str = "SELECT file_name FROM contract_apply_files WHERE contract_id = :contract_id AND deleted_at IS NULL";
@ -87,9 +86,8 @@ if(isset($_GET['id']) && $_GET['id']!=""){
$stmt->execute();
$files = $stmt->fetchAll(PDO::FETCH_ASSOC);
$files_count = count($files);
}
catch (PDOException $e ){
die("ERROR!!!: ". $e->getMessage());
} catch (PDOException $e) {
die("ERROR!!!: " . $e->getMessage());
}
}
?>
@ -100,25 +98,25 @@ if(isset($_GET['id']) && $_GET['id']!=""){
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.3.3/html2canvas.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
<main x-data="contractDownload">
<div class="sidebar">
<ul>
<button :class="isbuyShow ? 'active' : ''" @click="isbuyShow = true">電梯買賣合約書</button>
<button :class="!isbuyShow ?'active' : ''" @click="isbuyShow = false">電梯安裝合約書</button>
<a href="../mkt/pricereview-index.php?function_name=pricereview&<?php echo $token_link; ?>">回列表</a>
</ul>
</div>
<div class="inputDiv" x-show="isbuyShow && isBuyInputIng">
<!-- <label for="">
<div class="sidebar">
<ul>
<button :class="isbuyShow ? 'active' : ''" @click="isbuyShow = true">電梯買賣合約書</button>
<button :class="!isbuyShow ?'active' : ''" @click="isbuyShow = false">電梯安裝合約書</button>
<a href="../mkt/pricereview-index.php?function_name=pricereview&<?php echo $token_link; ?>">回列表</a>
</ul>
</div>
<div class="inputDiv" x-show="isbuyShow && isBuyInputIng">
<!-- <label for="">
<p>交貨期限(日)</p>
<input type="number" x-model="buyfill1" @keyup="sendBuyInputKeyupFn($event)" />
</label> -->
<?php if($buyNo2Pay){ ?>
<!-- <label for="">
<?php if ($buyNo2Pay) { ?>
<!-- <label for="">
<p>第二期款交貨期限(日)</p>
<input type="number" x-model="buyfill2">
</label> -->
<?php } ?>
<!-- <label for="">
<?php } ?>
<!-- <label for="">
<p>附件數</p>
<select x-model="buyAffix">
<option value="1">1</option>
@ -128,44 +126,56 @@ if(isset($_GET['id']) && $_GET['id']!=""){
<option value="5">5</option>
</select>
</label> -->
<label for="">
<button @click="sendBuyInputFn()">生成買賣合約書</button>
</label>
</div>
<div class="contract-material-component" x-show="isbuyShow && !isBuyInputIng">
<div class="btn-list">
<label for="standardBuyBtn">
<p>制式合約</p>
<input type="checkbox" class="scorll" x-model="toggleBuyStandard">
<!-- <input type="radio" checked id="standardBuyBtn" name="standardBuyBtn" @change="toggleBuyStandard = true" /> -->
<label for="">
<button @click="sendBuyInputFn()">生成買賣合約書</button>
</label>
<!-- <label for="noStandardBuyBtn">
</div>
<div class="contract-material-component" x-show="isbuyShow && !isBuyInputIng">
<div class="btn-list">
<label for="standardBuyBtn">
<p>制式合約</p>
<input type="checkbox" class="scorll" x-model="toggleBuyStandard">
<!-- <input type="radio" checked id="standardBuyBtn" name="standardBuyBtn" @change="toggleBuyStandard = true" /> -->
</label>
<!-- <label for="noStandardBuyBtn">
<input type="radio" id="noStandardBuyBtn" name="standardBuyBtn" @change="toggleBuyStandard = false" />
非制式合約
</label> -->
</div>
<!-- <button @click="isBuyInputIng = true" class="rebtn">重新輸入</button> -->
<button @click="exportFn(1)" class="prviewbtn">預覽</button>
<div class="contract" id="noStandardBuyContract" x-show="!toggleBuyStandard">
<table class="my-2 contract" x-ref="contract1" id="contract1">
<tr >
<td class="center"><h2 style="text-align:center">電梯買賣合約書</h2></td>
</tr>
<tr >
<td colspan="1">
合約書編號:<article x-html="onstandardViewData.partyAcontractno.plaintext"></article>
</td>
</tr>
<tr>
<td><div style="margin-left: 100px"><p x-html="onstandardViewData.partyA.plaintext">一二營造有限公司 </p></div><div style="margin-left: auto;margin-right:200px">(即買方,以下簡稱為甲方)</div></td>
</tr>
<tr>
<td >立合約書人</td>
</tr>
<tr>
<td ><div style="margin-left: 100px"><p>永佳捷科技股份有限公司 </p></div><div style="margin-left: auto;margin-right:200px">(即賣方,以下簡稱為乙方)</div></td>
</tr>
<tr :class="buyonstandardViewData.illustrate.editshow ? 'mouseover' : '' " x-on:mouseover="mouseover('illustrate', false)" x-on:mouseout="mouseout('illustrate')">
</div>
<!-- <button @click="isBuyInputIng = true" class="rebtn">重新輸入</button> -->
<button @click="exportFn(1)" class="prviewbtn">預覽</button>
<div class="contract" id="noStandardBuyContract" x-show="!toggleBuyStandard">
<table class="my-2 contract" x-ref="contract1" id="contract1">
<tr>
<td class="center">
<h2 style="text-align:center">電梯買賣合約書</h2>
</td>
</tr>
<tr>
<td colspan="1">
合約書編號:<article x-html="onstandardViewData.partyAcontractno.plaintext"></article>
</td>
</tr>
<tr>
<td>
<div style="margin-left: 100px">
<p x-html="onstandardViewData.partyA.plaintext">一二營造有限公司 </p>
</div>
<div style="margin-left: auto;margin-right:200px">(即買方,以下簡稱為甲方)</div>
</td>
</tr>
<tr>
<td>立合約書人</td>
</tr>
<tr>
<td>
<div style="margin-left: 100px">
<p>永佳捷科技股份有限公司 </p>
</div>
<div style="margin-left: auto;margin-right:200px">(即賣方,以下簡稱為乙方)</div>
</td>
</tr>
<tr :class="buyonstandardViewData.illustrate.editshow ? 'mouseover' : '' " x-on:mouseover="mouseover('illustrate', false)" x-on:mouseout="mouseout('illustrate')">
<td>
<span x-html='buydata.illustrate.plaintext'></span>
<div class="buttons" x-show="buyonstandardViewData.illustrate.editshow" x-cloak>
@ -174,8 +184,8 @@ if(isset($_GET['id']) && $_GET['id']!=""){
</div>
</td>
</tr>
<template x-for="(item, idx) in buyonstandardViewData.list.plaintext" :key="item.id">
<tr :class="buyonstandardViewData.list.plaintext[idx].editshow ? 'mouseover' : '' " @mouseover="mouseoverlist(idx, false)" @mouseout="mouseoutlist(idx)">
<template x-for="(item, idx) in buyonstandardViewData.list.plaintext" :key="item.id">
<tr :class="buyonstandardViewData.list.plaintext[idx].editshow ? 'mouseover' : '' " @mouseover="mouseoverlist(idx, false)" @mouseout="mouseoutlist(idx)">
<td class="list">
<div class="buttons" x-show="buyonstandardViewData.list.plaintext[idx].editshow" x-cloak>
<button class="edit" @click="modelshowEditFn('update contract list', idx, true, false)"><i class="glyphicon glyphicon-pencil"></i></button>
@ -183,59 +193,72 @@ if(isset($_GET['id']) && $_GET['id']!=""){
<button class="add" @click="modelshowAddDownFn(idx, false)"><i class="glyphicon glyphicon-arrow-down"></i></button>
<button class="delete" @click="deleteEditor(idx, false)"><i class="glyphicon glyphicon-trash"></i></button>
</div>
<span x-text="'第' + chineseNumbers(idx+1) + '條'"></span><article x-html="buyonstandardViewData.list.plaintext[idx].text"></article>
<span x-text="'第' + chineseNumbers(idx+1) + '條'"></span>
<article x-html="buyonstandardViewData.list.plaintext[idx].text"></article>
</td>
</tr>
</template>
</table>
</div>
<div class="contract" id="standardBuyContract" x-show="toggleBuyStandard">
<table class="my-2 contract" id="contract0">
<tr >
<td class="center"><h2 style="text-align:center">電梯買賣合約書</h2></td>
</tr>
<tr >
<td colspan="1">
合約書編號:<article x-html="data.partyAcontractno.plaintext"></article>
</td>
</tr>
<tr>
<td><div style="margin-left: 100px"><p x-html="data.partyA.plaintext"> </p></div><div style="margin-left: auto;margin-right:200px">(即買方,以下簡稱為甲方)</div></td>
</tr>
<tr>
<td >立合約書人</td>
</tr>
<tr>
<td ><div style="margin-left: 100px"><p>永佳捷科技股份有限公司 </p></div><div style="margin-left: auto;margin-right:200px">(即賣方,以下簡稱為乙方)</div></td>
</tr>
<tr :class="buystandardData.illustrate.editshow ? 'mouseover' : '' ">
</template>
</table>
</div>
<div class="contract" id="standardBuyContract" x-show="toggleBuyStandard">
<table class="my-2 contract" id="contract0">
<tr>
<td class="center">
<h2 style="text-align:center">電梯買賣合約書</h2>
</td>
</tr>
<tr>
<td colspan="1">
合約書編號:<article x-html="data.partyAcontractno.plaintext"></article>
</td>
</tr>
<tr>
<td>
<span x-html='buystandardData.illustrate.plaintext'></span>
<div style="margin-left: 100px">
<p x-html="data.partyA.plaintext"> </p>
</div>
<div style="margin-left: auto;margin-right:200px">(即買方,以下簡稱為甲方)</div>
</td>
</tr>
<template x-for="(item, idx) in buystandardData.list.plaintext" :key="item.id">
<tr :class="buystandardData.list.plaintext[idx].editshow ? 'mouseover' : '' " >
<td class="list">
<span x-text="'第' + chineseNumbers(idx+1) + '條'"></span>
<article x-html="buystandardData.list.plaintext[idx].text"></article>
<tr>
<td>立合約書人</td>
</tr>
<tr>
<td>
<div style="margin-left: 100px">
<p>永佳捷科技股份有限公司 </p>
</div>
<div style="margin-left: auto;margin-right:200px">(即賣方,以下簡稱為乙方)</div>
</td>
</tr>
<tr :class="buystandardData.illustrate.editshow ? 'mouseover' : '' ">
<td>
<span x-html='buystandardData.illustrate.plaintext'></span>
</td>
</tr>
</template>
</table>
<template x-for="(item, idx) in buystandardData.list.plaintext" :key="item.id">
<tr :class="buystandardData.list.plaintext[idx].editshow ? 'mouseover' : '' ">
<td class="list">
<span x-text="'第' + chineseNumbers(idx+1) + '條'"></span>
<article x-html="buystandardData.list.plaintext[idx].text"></article>
</td>
</tr>
</template>
</table>
</div>
</div>
</div>
<div class="contract-model" x-show="modelshow" x-cloak>
<div class="contract-model" x-show="modelshow" x-cloak>
<div class="contract-back"></div>
<div class="contract-content">
<div class="model-header"><span x-text='modelText'></span><i @click='modelcloseFn()' class="glyphicon glyphicon-remove"></i></div>
<div class="content">
<textarea name="content" id="editor" x-ref="editor" ></textarea>
<textarea name="content" id="editor" x-ref="editor"></textarea>
<input type="submit" value="update" @click='updateEditor()' />
</div>
</div>
</div>
<div class="inputDiv" x-show="!isbuyShow && isInstallInputIng">
<!-- <label for="">
</div>
<div class="inputDiv" x-show="!isbuyShow && isInstallInputIng">
<!-- <label for="">
<p>安裝試車期限(日)</p>
<input type="number" x-model="installfill1" @keyup="sendInstallInputKeyupFn($event)" />
</label>
@ -243,7 +266,7 @@ if(isset($_GET['id']) && $_GET['id']!=""){
<p>免費保養月數(月)</p>
<input type="number" x-model="installfill2" @keyup="sendInstallInputKeyupFn($event)" />
</label> -->
<!-- <label for="">
<!-- <label for="">
<p>附件數</p>
<select x-model="installAffix" @keyup="sendInstallInputKeyupFn($event)">
<option value="1">1</option>
@ -253,47 +276,59 @@ if(isset($_GET['id']) && $_GET['id']!=""){
<option value="5">5</option>
</select>
</label> -->
<label for="">
<button @click="sendInstallInputFn()">生成安裝合約書</button>
</label>
</div>
<div class="contract-install-component" x-show="!isbuyShow && !isInstallInputIng" x-cloak >
<div class="btn-list">
<label for="standardBtn">
<p>制式合約</p>
<input type="checkbox" class="scorll" x-model="toggleBuyStandard">
<!-- <input type="radio" checked id="standardBtn" name="standardBtn" @change="toggleInstallStandard = true" /> -->
<label for="">
<button @click="sendInstallInputFn()">生成安裝合約書</button>
</label>
<!-- <label for="noStandardBtn">
</div>
<div class="contract-install-component" x-show="!isbuyShow && !isInstallInputIng" x-cloak>
<div class="btn-list">
<label for="standardBtn">
<p>制式合約</p>
<input type="checkbox" class="scorll" x-model="toggleBuyStandard">
<!-- <input type="radio" checked id="standardBtn" name="standardBtn" @change="toggleInstallStandard = true" /> -->
</label>
<!-- <label for="noStandardBtn">
<input type="radio" id="noStandardBtn" name="standardBtn" @change="toggleInstallStandard = false" />
非制式合約
</label> -->
</div>
<!-- <button @click="isInstallInputIng = true" class="rebtn">重新輸入</button> -->
<button @click="exportFn(2)" class="prviewbtn">預覽</button>
</div>
<!-- <button @click="isInstallInputIng = true" class="rebtn">重新輸入</button> -->
<button @click="exportFn(2)" class="prviewbtn">預覽</button>
<div class="contract" id="noStandardContract" x-show="!toggleInstallStandard">
<table class="my-2 contract" x-ref="contract1" id="contract1">
<tr >
<td class="center"><h2 style="text-align:center">電梯安裝合約書</h2></td>
</tr>
<tr >
<td colspan="1">
合約書編號:<article x-html="onstandardViewData.partyAcontractno.plaintext"></article>
</td>
</tr>
<tr>
<td><div style="margin-left: 100px"><p x-html="onstandardViewData.partyA.plaintext">一二營造有限公司 </p></div><div style="margin-left: auto;margin-right:200px">(即買方,以下簡稱為甲方)</div></td>
</tr>
<tr>
<td >立合約書人</td>
</tr>
<tr>
<td ><div style="margin-left: 100px"><p>永佳捷科技股份有限公司 </p></div><div style="margin-left: auto;margin-right:200px">(即賣方,以下簡稱為乙方)</div></td>
</tr>
<tr :class="onstandardViewData.illustrate.editshow ? 'mouseover' : '' " x-on:mouseover="mouseover('illustrate')" x-on:mouseout="mouseout('illustrate')">
<div class="contract" id="noStandardContract" x-show="!toggleInstallStandard">
<table class="my-2 contract" x-ref="contract1" id="contract1">
<tr>
<td class="center">
<h2 style="text-align:center">電梯安裝合約書</h2>
</td>
</tr>
<tr>
<td colspan="1">
合約書編號:<article x-html="onstandardViewData.partyAcontractno.plaintext"></article>
</td>
</tr>
<tr>
<td>
<div style="margin-left: 100px">
<p x-html="onstandardViewData.partyA.plaintext">一二營造有限公司 </p>
</div>
<div style="margin-left: auto;margin-right:200px">(即買方,以下簡稱為甲方)</div>
</td>
</tr>
<tr>
<td>立合約書人</td>
</tr>
<tr>
<td>
<div style="margin-left: 100px">
<p>永佳捷科技股份有限公司 </p>
</div>
<div style="margin-left: auto;margin-right:200px">(即賣方,以下簡稱為乙方)</div>
</td>
</tr>
<tr :class="onstandardViewData.illustrate.editshow ? 'mouseover' : '' " x-on:mouseover="mouseover('illustrate')" x-on:mouseout="mouseout('illustrate')">
<td>
<span x-html='onstandardViewData.illustrate.plaintext'></span>
<div class="buttons" x-show="onstandardViewData.illustrate.editshow" x-cloak>
@ -302,8 +337,8 @@ if(isset($_GET['id']) && $_GET['id']!=""){
</div>
</td>
</tr>
<template x-for="(item, idx) in onstandardViewData.list.plaintext" :key="item.text">
<tr :class="onstandardViewData.list.plaintext[idx].editshow ? 'mouseover' : '' " @mouseover="mouseoverlist(idx)" @mouseout="mouseoutlist(idx)">
<template x-for="(item, idx) in onstandardViewData.list.plaintext" :key="item.text">
<tr :class="onstandardViewData.list.plaintext[idx].editshow ? 'mouseover' : '' " @mouseover="mouseoverlist(idx)" @mouseout="mouseoutlist(idx)">
<td class="list">
<div class="buttons" x-show="onstandardViewData.list.plaintext[idx].editshow" x-cloak>
<button class="edit" @click="modelshowEditFn('update contract list', idx, true, true)"><i class="glyphicon glyphicon-pencil"></i></button>
@ -311,68 +346,81 @@ if(isset($_GET['id']) && $_GET['id']!=""){
<button class="add" @click="modelshowAddDownFn(idx)"><i class="glyphicon glyphicon-arrow-down"></i></button>
<button class="delete" @click="deleteEditor(idx)"><i class="glyphicon glyphicon-trash"></i></button>
</div>
<span x-text="'第' + chineseNumbers(idx+1) + '條'"></span><article x-html="onstandardViewData.list.plaintext[idx].text"></article>
<span x-text="'第' + chineseNumbers(idx+1) + '條'"></span>
<article x-html="onstandardViewData.list.plaintext[idx].text"></article>
</td>
</tr>
</template>
</table>
</div>
</template>
</table>
</div>
<div class="contract" id="standardContract" x-show="toggleInstallStandard">
<table class="my-2 contract" id="contract0">
<tr >
<td class="center"><h2 style="text-align:center">電梯安裝合約書</h2></td>
</tr>
<tr >
<td colspan="1">
合約書編號:<article x-html="data.partyAcontractno.plaintext"></article>
</td>
</tr>
<tr>
<td><div style="margin-left: 100px"><p x-html="data.partyA.plaintext">一二營造有限公司 </p></div><div style="margin-left: auto;margin-right:200px">(即買方,以下簡稱為甲方)</div></td>
</tr>
<tr>
<td >立合約書人</td>
</tr>
<tr>
<td ><div style="margin-left: 100px"><p>永佳捷科技股份有限公司 </p></div><div style="margin-left: auto;margin-right:200px">(即賣方,以下簡稱為乙方)</div></td>
</tr>
<tr :class="standardData.illustrate.editshow ? 'mouseover' : '' ">
<div class="contract" id="standardContract" x-show="toggleInstallStandard">
<table class="my-2 contract" id="contract0">
<tr>
<td class="center">
<h2 style="text-align:center">電梯安裝合約書</h2>
</td>
</tr>
<tr>
<td colspan="1">
合約書編號:<article x-html="data.partyAcontractno.plaintext"></article>
</td>
</tr>
<tr>
<td>
<span x-html='standardData.illustrate.plaintext'></span>
<div style="margin-left: 100px">
<p x-html="data.partyA.plaintext">一二營造有限公司 </p>
</div>
<div style="margin-left: auto;margin-right:200px">(即買方,以下簡稱為甲方)</div>
</td>
</tr>
<tr>
<td>立合約書人</td>
</tr>
<tr>
<td>
<div style="margin-left: 100px">
<p>永佳捷科技股份有限公司 </p>
</div>
<div style="margin-left: auto;margin-right:200px">(即賣方,以下簡稱為乙方)</div>
</td>
</tr>
<template x-for="(item, idx) in standardData.list.plaintext">
<tr :class="standardData.list.plaintext[idx].editshow ? 'mouseover' : '' " >
<td class="list">
<span x-text="'第' + chineseNumbers(idx+1) + '條'"></span>
<article x-html="standardData.list.plaintext[idx].text"></article>
<tr :class="standardData.illustrate.editshow ? 'mouseover' : '' ">
<td>
<span x-html='standardData.illustrate.plaintext'></span>
</td>
</tr>
</template>
</table>
</div>
<template x-for="(item, idx) in standardData.list.plaintext">
<tr :class="standardData.list.plaintext[idx].editshow ? 'mouseover' : '' ">
<td class="list">
<span x-text="'第' + chineseNumbers(idx+1) + '條'"></span>
<article x-html="standardData.list.plaintext[idx].text"></article>
</td>
</tr>
</template>
</table>
</div>
<form action="prviewPdf.php?id=<?php echo $id; ?>&<?php echo $token_link; ?>" id="form" method="post" x-ref="form" style="display:none">
<input type="hidden" name="contract_apply_id" id="contract_apply_id" value="<?php echo $contract_apply_id; ?>" />
<input type="hidden" name="list" id="prview-list" />
<input type="hidden" name="prviewType" id="prview-type" />
<input type="hidden" name="standardList" id="standard-prview-list" />
<input type="hidden" name="illustrate" id="illustrate" />
<input type="hidden" name="standardIllustrate" id="standard-illustrate" />
<input type="hidden" name="partyA" id="partyA" />
<input type="hidden" name="partyAcontractno" id="partyAcontractno" />
<input type="hidden" name="buystandard" x-model="toggleBuyStandard" />
<input type="hidden" name="installstandard" x-model="toggleInstallStandard" />
<input type="hidden" name="total_price" x-model="total_price" id="total_price" />
<input type="hidden" name="person" id="person" value="<?php echo $contract['accountname']; ?>" />
<input type="hidden" name="personid" id="personid" value="<?php echo $contract['accountid']; ?>" />
<input type="hidden" name="delivery_term" id="delivery_term" x-model="buyfill1" />
<input type="hidden" name="install_period" id="install_period" x-model="installfill1" />
<input type="hidden" name="free_maintainance" id="free_maintainance" x-model="installfill2" />
</form>
<form action="prviewPdf.php?id=<?php echo $id; ?>&<?php echo $token_link; ?>" id="form" method="post" x-ref="form" style="display:none">
<input type="hidden" name="contract_apply_id" id="contract_apply_id" value="<?php echo $contract_apply_id; ?>" />
<input type="hidden" name="list" id="prview-list" />
<input type="hidden" name="prviewType" id="prview-type" />
<input type="hidden" name="standardList" id="standard-prview-list" />
<input type="hidden" name="illustrate" id="illustrate" />
<input type="hidden" name="standardIllustrate" id="standard-illustrate" />
<input type="hidden" name="partyA" id="partyA" />
<input type="hidden" name="partyAcontractno" id="partyAcontractno" />
<input type="hidden" name="buystandard" x-model="toggleBuyStandard" />
<input type="hidden" name="installstandard" x-model="toggleInstallStandard" />
<input type="hidden" name="total_price" x-model="total_price" id="total_price" />
<input type="hidden" name="person" id="person" value="<?php echo $contract['accountname']; ?>" />
<input type="hidden" name="personid" id="personid" value="<?php echo $contract['accountid']; ?>" />
<input type="hidden" name="delivery_term" id="delivery_term" x-model="buyfill1" />
<input type="hidden" name="install_period" id="install_period" x-model="installfill1" />
<input type="hidden" name="free_maintainance" id="free_maintainance" x-model="installfill2" />
</form>
</div>
</div>
</main>
<!-- <script src="../ckeditor4/ckeditor.js"></script> -->
<script>
@ -389,43 +437,45 @@ if(isset($_GET['id']) && $_GET['id']!=""){
const buyArr = [...<?php echo json_encode($buyArr); ?>];
const installArr = [...<?php echo json_encode($installArr); ?>];
let install_pay_text = '付款方式:<br> ';
let buy_pay_text = ''
const chineseArr = ['零','一','二','三','四','五','六','七']
const bigChineseArr = ['零','壹','貳','參','肆','伍','陸','柒','捌','玖','拾'];
let buy_pay_text = ''
const chineseArr = ['零', '一', '二', '三', '四', '五', '六', '七']
const bigChineseArr = ['零', '壹', '貳', '參', '肆', '伍', '陸', '柒', '捌', '玖', '拾'];
const num = <?php echo $qty; ?>;
const people = <?php echo $noteArr[1]; ?>;
const floor = <?php echo $noteArr[2]; ?>;
const speed = <?php echo $noteArr[3]; ?>;
const buyAffix =' <?php echo $files_count; ?>';
const buyAffix = ' <?php echo $files_count; ?>';
console.log(buyAffix);
console.log(installArr);
buyArr.forEach((item, idx) => {
if(item.scale > 0){
if(item.installment == 1){
buy_pay_text = `${buy_pay_text}第${chineseArr[idx+1]}期款:合約簽定時,甲方應付合約定金新台幣&nbsp;${numberToChinese(item.amount)}&nbsp;元整(&nbsp;${numberWithCommas(item.amount)}&nbsp;)(含5%加值型營業稅)(${item.pay_period}天期票)。<br>`
}else if(item.installment == 2){
buy_pay_text = `${buy_pay_text}第${chineseArr[idx+1]}期款:合約簽訂後&nbsp;____&nbsp;天付第二期款新台幣&nbsp;${numberToChinese(item.amount)}&nbsp;元整(&nbsp;${numberWithCommas(item.amount)}&nbsp;)(含5%加值型營業稅)(${item.pay_period}天期票)。<br>`
}else if(item.installment == 3){
buy_pay_text = `${buy_pay_text}第${chineseArr[idx+1]}期款:產品貨到工地時應付新台幣&nbsp;${numberToChinese(item.amount)}&nbsp;元整(&nbsp;${numberWithCommas(item.amount)}&nbsp;)(&nbsp;含5%加值型營業稅)(${item.pay_period}天期票)。<br>`
if (item.scale > 0) {
if (item.installment == 1) {
buy_pay_text = `${buy_pay_text}第${chineseArr[idx+1]}期款:合約簽定時,甲方應付合約定金新台幣&nbsp;${numberToChinese(item.amount)}&nbsp;元整(&nbsp;${numberWithCommas(item.amount)}&nbsp;)(含5%加值型營業稅)(${item.pay_period}天期票)。<br>`
} else if (item.installment == 2) {
buy_pay_text = `${buy_pay_text}第${chineseArr[idx+1]}期款:合約簽訂後&nbsp;____&nbsp;天付第二期款新台幣&nbsp;${numberToChinese(item.amount)}&nbsp;元整(&nbsp;${numberWithCommas(item.amount)}&nbsp;)(含5%加值型營業稅)(${item.pay_period}天期票)。<br>`
} else if (item.installment == 3) {
buy_pay_text = `${buy_pay_text}第${chineseArr[idx+1]}期款:產品貨到工地時應付新台幣&nbsp;${numberToChinese(item.amount)}&nbsp;元整(&nbsp;${numberWithCommas(item.amount)}&nbsp;)(&nbsp;含5%加值型營業稅)(${item.pay_period}天期票)。<br>`
}
}
});;
buy_pay_text += '以上期款若以票據支付時,發票人需為本合約甲方,票面金額同於各期應付款項,票期於各期付款日三十日內,票據須屬有效並得兌現。<br>乙方收款帳戶名稱:永佳捷科技股份有限公司;收款銀行:兆豐國際商業銀行(桃興分行);帳戶號碼:207-09-08688-2。'
buy_pay_text = buy_pay_text.replace(/\n/g, "").replace(/\s+/g, '').trim();
installArr.forEach((item,idx)=>{
if(item.scale > 0){
if(item.installment == 5){
installArr.forEach((item, idx) => {
if (item.scale > 0) {
if (item.installment == 5) {
install_pay_text = `${install_pay_text}第${chineseArr[idx+1]}期款:甲方應於安裝及試車完成後給付安裝費用&nbsp;${numberToChinese(item.amount)}&nbsp;元整(&nbsp;${numberWithCommas(item.amount)}&nbsp;)(含5%加值型營業稅)(${item.pay_period}天期票)。<br>`
}else if(item.installment == 6){
} else if (item.installment == 6) {
install_pay_text = `${install_pay_text}第二期款:甲方應於交車後給付&nbsp;${numberToChinese(item.amount)}&nbsp;元整(&nbsp;${numberWithCommas(item.amount)}&nbsp;)(含5%加值型營業稅)(${item.pay_period}天期票)。<br>`
}
}
})
install_pay_text += '以上期款若以票據支付時,發票人需為本合約甲方,票面金額同於各期應付款項,票期於各期付款日三十日內,票據須屬有效並得兌現。<br> 乙方收款帳戶名稱:永佳捷科技股份有限公司;收款銀行:兆豐國際商業銀行(桃興分行);帳戶號碼:207-09-08688-2。'
install_pay_text = install_pay_text.replace(/\n/g, "").replace(/\s+/g, '').trim();
function numberWithCommas(x) {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
function numberToChinese(n) {
if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n)) return "Invalid number.";
let unit = "仟佰拾億仟佰拾萬仟佰拾元角分";
@ -442,6 +492,7 @@ if(isset($_GET['id']) && $_GET['id']!=""){
str = ('_' + str + '_');
return str.replace(/零(仟|佰|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(萬|億|元)/g, "$1").replace(/(億)萬|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "").replace("元", "").replace(/^\s+|\s+$/g, '');
}
function numberToSmallChinese(num) {
const chineseNumbers = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
const chineseUnits = ['', '十', '百', '千'];
@ -455,38 +506,36 @@ if(isset($_GET['id']) && $_GET['id']!=""){
const unitPos = numLength - i - 1;
if (digit !== 0) {
chineseStr += chineseNumbers[digit] + chineseUnits[unitPos];
chineseStr += chineseNumbers[digit] + chineseUnits[unitPos];
} else {
// 处理连续的零,只添加一个零到结果中
if (i < numLength - 1 && parseInt(numStr.charAt(i + 1)) !== 0) {
chineseStr += chineseNumbers[digit];
}
// 处理连续的零,只添加一个零到结果中
if (i < numLength - 1 && parseInt(numStr.charAt(i + 1)) !== 0) {
chineseStr += chineseNumbers[digit];
}
}
}
return chineseStr;
}
</script>
<script src="./js/alpine.js"></script>
<script>
const axiosClient = axios.create({
baseURL : './',
baseURL: './',
});
axiosClient.interceptors.request.use( (config)=> {
config.headers.Authorization = 'Bearer <?php echo $token?>'
axiosClient.interceptors.request.use((config) => {
config.headers.Authorization = 'Bearer <?php echo $token ?>'
return config;
}, (error)=> {
}, (error) => {
return Promise.reject(error);
});
axiosClient.interceptors.response.use( (response)=> {
axiosClient.interceptors.response.use((response) => {
return response;
}, (error)=>{
if(error.response.status === 401){
}, (error) => {
if (error.response.status === 401) {
console.error(error);
}
throw error;

79
wms/crm/crmm01-index.php

@ -41,8 +41,8 @@ $where .= " and salesman_name like '$salesman'";
$sql_cmd = sql_myself($user_id, "salesman");
// max,許紓晴,林慧珊,鄭伊岑
if (in_array($user_department_id, $depart_arr) || $user_id == "M0060" || $user_id == "M0107" || $user_id == "M0193" || $user_id == "M0149" || $user_id =="M0189") $sql_cmd = "";
if (!empty($sql_cmd)) $where .= " and ".str_replace("where", "", $sql_cmd);
if (in_array($user_department_id, $depart_arr) || $user_id == "M0060" || $user_id == "M0107" || $user_id == "M0193" || $user_id == "M0149" || $user_id == "M0189" || $user_id == "TEST01" || $user_id == "TEST02" || $user_id == "TEST03" || $user_id == "TEST04") $sql_cmd = "";
if (!empty($sql_cmd)) $where .= " and " . str_replace("where", "", $sql_cmd);
/*
$checkAll = ['p0044', 'M0007'];
if (!in_array($user_id, $checkAll)) {
@ -69,38 +69,45 @@ linkman,lm_tel,f_return_name(salesman) salesman,num ,date_format(pre_order_date,
$data = mysqli_query($link, $sql);
?>
<style>
#table_index2 {
table-layout:fixed;
width: 100%;
}
#table_index2_filter{
float:right;
}
#table_index2_paginate{
float:right;
}
div.dataTables_scrollHead table.dataTable {
margin-bottom: 0 !important;
border-bottom-width: 0;
}
div.dataTables_scrollBody table.dataTable {
border-top-width: 0;
}
/*
#table_index2 {
table-layout: fixed;
width: 100%;
}
#table_index2_filter {
float: right;
}
#table_index2_paginate {
float: right;
}
div.dataTables_scrollHead table.dataTable {
margin-bottom: 0 !important;
border-bottom-width: 0;
}
div.dataTables_scrollBody table.dataTable {
border-top-width: 0;
}
/*
.col-sm-12 {
width: auto;
}
*/
</style>
<script>
$(function () {
$('#table_index2').DataTable({
"scrollX": true,
"pageLength": 10,
order: [[13, 'desc']]
$(function() {
$('#table_index2').DataTable({
"scrollX": true,
"pageLength": 10,
order: [
[13, 'desc']
]
});
document.querySelector("#table_index2_filter > label > input").placeholder = "快速搜尋";
});
document.querySelector("#table_index2_filter > label > input").placeholder = "快速搜尋";
});
</script>
<?php
@ -131,20 +138,20 @@ if ($data) :
<tbody>
<tr>
<th style='width:50px'>卷號</th>
<td><input type="text" class='form-control' name='vol_no' value='<?=(!empty($value))?$value:"";?>' ></td>
<td><input type="text" class='form-control' name='vol_no' value='<?= (!empty($value)) ? $value : ""; ?>'></td>
<th>營業員</th>
<td><input type="text" class='form-control' name='salesman' value='<?=$salesman=='%'?'':$salesman ?>' ></td>
<td><input type="text" class='form-control' name='salesman' value='<?= $salesman == '%' ? '' : $salesman ?>'></td>
<th>下單地區</th>
<td><input type="text" class='form-control' name='address' value='<?=$address=='%'?'':$address ?>' ></td>
<td><input type="text" class='form-control' name='address' value='<?= $address == '%' ? '' : $address ?>'></td>
<th>聯係人姓名</th>
<td><input type="text" class='form-control' name='linkman' value='<?=$lm_name=='%'?'':$lm_name?>' ></td>
<td><input type="text" class='form-control' name='linkman' value='<?= $lm_name == '%' ? '' : $lm_name ?>'></td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan="8" style='text-align:center'>
<input type='hidden' name='token' value='<?= $token ?>'/>
<input type='hidden' name='token' value='<?= $token ?>' />
<button type="submit" style='text-align:center; margin:0 auto' class="btn btn-info btn-sm">查詢</button>
<a href="crmm03-edit.php?token=<?= $token ?>" class="btn btn-info btn-sm">新增</a>
</td>
@ -181,7 +188,7 @@ if ($data) :
<td>
<?php
$status = $pricereview_url = $fname = "";
$db_query = "select status from pricereview_main where contractno = '".$row['vol_no']."' order by id desc limit 1";
$db_query = "select status from pricereview_main where contractno = '" . $row['vol_no'] . "' order by id desc limit 1";
$res_p = mysqli_query($link, $db_query);
if ($row_p = mysqli_fetch_row($res_p)) $status = $row_p[0];
mysqli_free_result($res_p);
@ -202,9 +209,9 @@ if ($data) :
<?php
if (!empty($pricereview_url)) {
?>
<a href="<?= $pricereview_url ?>?vol_no=<?php echo $row['vol_no']; ?>&function_name=<?php echo $fname; ?>&<?php echo $token_link; ?>" class="btn btn-info btn-sm" style="margin-top:3px;">
填價審單
</a>
<a href="<?= $pricereview_url ?>?vol_no=<?php echo $row['vol_no']; ?>&function_name=<?php echo $fname; ?>&<?php echo $token_link; ?>" class="btn btn-info btn-sm" style="margin-top:3px;">
填價審單
</a>
<?php
}
?>

30
wms/crm/crmm02-index.php

@ -42,10 +42,10 @@ $where .= " and salesman like '$salesman'";
$lm_name = empty($_GET['linkman']) ? "%" : $_GET['linkman'];
$where .= " and linkman like '$lm_name'";
$sql_cmd = sql_myself($user_id, "salesman");
if (in_array($user_department_id, $depart_arr) || $user_id == "M0060" || $user_id == "M0149" || $user_id =="M0189") $sql_cmd = ""; // M0060:Max,鄭伊岑
if (in_array($user_department_id, $depart_arr) || $user_id == "M0060" || $user_id == "M0149" || $user_id == "M0189" || $user_id == "TEST01" || $user_id == "TEST02" || $user_id == "TEST03" || $user_id == "TEST04") $sql_cmd = ""; // M0060:Max,鄭伊岑
if (!empty($sql_cmd)) $where .= " and " . str_replace("where", "", $sql_cmd);
$sql = "SELECT vol_no,customer,manager,f_return_content('customer_source',source ) source,
$sql = "SELECT vol_no,customer,manager,salesman,f_return_content('customer_source',source ) source,
linkman,lm_tel,f_return_name(salesman) salesman,num ,date_format(pre_order_date,'%Y/%m/%d') pre_order_date,
f_return_content('hope_customer_status',status ) status, date_format(next_visit_date,'%Y/%m/%d') next_visit_date ,brand ,
date_format(quote_date,'%Y/%m/%d') quote_date, created_at FROM $table where 1=1 $where ORDER BY vol_no";
@ -55,6 +55,17 @@ $data = mysqli_query($link, $sql);
// echo '<pre>';
// print_r($sql);
// echo '</pre>';
// echo '<pre>';
// print_r($data);
// echo '</pre>';
// $sql = "SELECT * FROM hope_contract_customer WHERE 1=1 $where";
// $result = mysqli_query($link, $sql);
// echo '<pre>';
// print_r($result);
// echo '</pre>';
// echo $data['salesman'];
?>
<style>
#table_index2 {
@ -142,10 +153,14 @@ if ($data) :
?>
</thead>
<tbody>
<?php foreach ($data as $row) : ?>
<?php foreach ($data as $row) : ?>
<tr>
<?php
foreach ($editableColumn as $key => $val) {
// echo '<pre>';
// print_r($row['salesman']);
// echo '</pre>';
echo "<td>" . (!empty($row[$key]) ? $row[$key] : '') . "</td>";
}
?>
@ -154,10 +169,11 @@ if ($data) :
<a href="crmm05-edit.php?function_name=customer&<?= $token_link ?>&vol_no=<?php echo $row['vol_no']; ?>" class="btn btn-info btn-sm">
<span class="glyphicon glyphicon-pencil"></span>
</a>
<a href="../cont/apply_form.php?<?= $token_link ?>&vol_no=<?php echo $row['vol_no']; ?>" class="btn btn-info btn-sm">
轉價審
</a>
<?php if ($user_name === $row['salesman'] || $user_id = 'M0225') : ?>
<a href="../cont/apply_form.php?<?= $token_link ?>&vol_no=<?php echo $row['vol_no']; ?>" class="btn btn-info btn-sm">
轉價審
</a>
<?php endif ?>
</p>
</td>
</tr>

16
wms/crm/crmm06-edit.php

@ -1,6 +1,7 @@
<?php
error_reporting(E_ALL);
ini_set("display_errors", "On");
require_once '../header_nomenu.php';
require_once './FormHelper.php';
require_once './wf_common.php';
@ -39,17 +40,17 @@ $vol_no = get_sequnece_no('qy_vol_no', date('ym'));
$table_hope_contract_customer = 'hope_contract_customer';
$hope_contract_customer_column = [
'vol_no' => ['label' => "卷號(B)", "tag" => 'text', 'attr' => ['required','readonly', "value" => "$vol_no", 'class' => 'form-control form-control-sm']],
'vol_no' => ['label' => "卷號(B)", "tag" => 'text', 'attr' => ['required', 'readonly', "value" => "$vol_no", 'class' => 'form-control form-control-sm']],
//'form_key' => ['label' => "錶單號","tag" => 'text', 'attr'=>['class' => 'form-control form-control-sm' ]],
'customer' => ['label' => "客戶名稱", "tag" => 'text', 'attr' => ['required', 'class' => 'form-control form-control-sm']],
'manager' => ['label' => "負責人", "tag" => 'text', 'attr' => ['class' => 'form-control form-control-sm']],
'source' => ['label' => "客戶來源", "tag" => 'select', 'attr' => ['required', 'class' => 'form-control form-control-sm'], 'options' => $customer_source_opt],
//'linkman' => ['label' => "聯係人", "tag" => 'text', 'attr' => ['required', 'class' => 'form-control form-control-sm']],
'lm_tel' => ['label' => "手機", "tag" => 'text', 'attr' => ['class' => 'form-control form-control-sm']],
'salesman' => ['label' => "營業員", "tag" => 'select', 'attr' => ['required', 'class' => 'form-control form-control-sm'], 'options' => $salesman_opt],
'num' => ['label' => "数量", "tag" => 'number', 'attr' => ['min=1','class' => 'form-control form-control-sm']],
'salesman' => ['label' => "營業員", "tag" => 'select', 'attr' => ["value" => "$user_id", 'class' => 'form-control form-control-sm'], 'options' => $salesman_opt],
'num' => ['label' => "数量", "tag" => 'number', 'attr' => ['min=1', 'class' => 'form-control form-control-sm']],
'address' => ['label' => "地址", "tag" => 'text', 'attr' => ['required', 'class' => ' form-control form-control-sm']],
// 'case_name' => ['label' => "现场名称", "tag" => 'text', 'attr' => ['required', 'class' => ' form-control form-control-sm']],
// 'case_name' => ['label' => "现场名称", "tag" => 'text', 'attr' => ['required', 'class' => ' form-control form-control-sm']],
'floors' => ['label' => '樓層', 'tag' => 'text', 'attr' => ['class' => 'form-control form-control-sm']],
'persons' => ['label' => '人乘', 'tag' => 'text', 'attr' => ['class' => 'form-control form-control-sm']],
'speed' => ['label' => '速度', 'tag' => 'text', 'attr' => ['class' => 'form-control form-control-sm']],
@ -62,7 +63,9 @@ $hope_contract_customer_column = [
// 'is_renovation' => ['label' => "是否汰改", "tag" => 'select', 'attr' => ['required','class' => ' form-control form-control-sm'], 'options' => $is_renovation_opt],
];
$data = [
'salesman' => $user_id
];
$where = " and vol_no='$vol_no'";
@ -176,7 +179,8 @@ function get_sequnece_no($seq_name = '', $p_yyyymm = '')
echo " <div class='row '>";
foreach ($hope_contract_customer_column as $key => $val) {
$j = (($i++) % 4);
$fieldVal = empty($hope_contract_customer) ? "" : $hope_contract_customer[0][$key];
$fieldVal = (empty($data) or !array_key_exists($key, $data)) ? "" : $data[$key];
// $fieldVal = empty($hope_contract_customer) ? "" : $hope_contract_customer[0][$key];
$_input = $val['tag'] == 'select' ?
FormHelper::select("$key", $val['options'], $fieldVal, $val['attr'])

1495
wms/mkt/pricereview-check.php

File diff suppressed because it is too large

591
wms/mkt/pricereview-index.php

@ -12,93 +12,106 @@ $data = array();
$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";
// M0024許伃廷,M0107許紓晴權限全開
if ($user_id == "M0024" || $user_id == "M0107" || $user_id == "M0174" || $user_id == "M0189" ) {
if ($user_id == "M0024" || $user_id == "M0107" || $user_id == "M0174" || $user_id == "M0189" || $user_id == "TEST01" || $user_id == "TEST02" || $user_id == "TEST03" || $user_id == "TEST04") {
$sql_cmd = "where create_at >= '2023-01-01 00:00:00'";
$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 create_at >= '2023-01-01 00:00:00' and pricereview_main.status like 'Y%' and pricereview_main.ekind = '新梯' order by pricereview_main.id";
}
if ($user_id == "M0060" ) {
if ($user_id == "M0060") {
$sql_cmd = "where creater in (select accountid from account where (department_id like '3%' or department_id like '5%'))";
$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";
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);
$para = "function_name=pricereview&".$token_link;
$data = mysqli_query($link, $sql);
// echo $sql;
$para = "function_name=pricereview&" . $token_link;
?>
<style>
#table_index2 {
table-layout:fixed;
width: 100%;
}
#table_index2_filter{
float:right;
}
#table_index2_paginate{
float:right;
}
div.dataTables_scrollHead table.dataTable {
margin-bottom: 0 !important;
border-bottom-width: 0;
}
div.dataTables_scrollBody table.dataTable {
border-top-width: 0;
}
/*
#table_index2 {
table-layout: fixed;
width: 100%;
}
#table_index2_filter {
float: right;
}
#table_index2_paginate {
float: right;
}
div.dataTables_scrollHead table.dataTable {
margin-bottom: 0 !important;
border-bottom-width: 0;
}
div.dataTables_scrollBody table.dataTable {
border-top-width: 0;
}
/*
.col-sm-12 {
width: auto;
}
*/
img {
width:125px;
}
img {
width: 125px;
}
.width_style_1 {
width:125px;
}
.width_style_1 {
width: 125px;
}
label {
display: inline-flex;
margin-bottom: .5rem;
margin-top: .5rem;
label {
display: inline-flex;
margin-bottom: .5rem;
margin-top: .5rem;
}
div a:hover {
text-decoration:none;
}
.btn-sm {
font-size:14px;
margin: 2px 0;
line-height: 90%;
}
.glyphicon-ok, .glyphicon-ban-circle {
font-size:130%;
}
.btn-secondary {
color: #fff;
background-color: #6c757d;
border-color: #6c757d;
}
.btn-secondary:hover {
color: #fff;
background-color: #5a6268;
border-color: #545b62;
}
}
div a:hover {
text-decoration: none;
}
.btn-sm {
font-size: 14px;
margin: 2px 0;
line-height: 90%;
}
.glyphicon-ok,
.glyphicon-ban-circle {
font-size: 130%;
}
.btn-secondary {
color: #fff;
background-color: #6c757d;
border-color: #6c757d;
}
.btn-secondary:hover {
color: #fff;
background-color: #5a6268;
border-color: #545b62;
}
</style>
<script>
$(function () {
$('#table_index2').DataTable({
"scrollX": true,
"pageLength": 50
$(function() {
$('#table_index2').DataTable({
"scrollX": true,
"pageLength": 50
});
/*
var api = $('#table_index').dataTable().api();
//var order = api.order();
//console.log(order);
api
.order([0, "desc"])
.draw();
*/
});
/*
var api = $('#table_index').dataTable().api();
//var order = api.order();
//console.log(order);
api
.order([0, "desc"])
.draw();
*/
});
</script>
<!--改由有望客戶入口
<p>
@ -108,7 +121,7 @@ $(function () {
</p>
-->
<?php
if ($data):
if ($data) :
/*
if($_SERVER["REQUEST_METHOD"] == "POST"){
if(empty($_POST["name"]) && empty($_POST["email"]) && empty($_POST["website"])){
@ -119,52 +132,53 @@ if ($data):
}
*/
?>
<link rel="stylesheet" href="common.css">
<div style="overflow-x:auto; white-space:nowrap;">
<table id="table_index2" class="table table-striped table-bordered" style="width:100%">
<thead>
<tr>
<th>項次</th>
<th>卷號</th>
<th>營業員</th>
<th>客戶名稱</th>
<th>案件名稱</th>
<th>牌價總額</th>
<th>售價總額</th>
<th>價率</th>
<th>預定成交日</th>
<th>預定交期</th>
<th>建檔人</th>
<th>建檔時間</th>
<th>功能</th>
<th>區經理</th>
<th>業務承辦人</th>
<th>業務部協理</th>
<th>總經理</th>
<th>狀態</th>
<th>合約書申請</th>
<!--<th>修改</th>-->
</tr>
</thead>
<tbody>
<?php
foreach($data as $data) :
$sign1 = $sign2 = $sign3 = $sign4 = "";
$oneself = ($data["creater"]==$user_id) ? 1 : 0; // 是否為營業員本人
// 簽核狀況
$db_query = "select sign1, sign2, sign3, sign4 from pricereview_sign where mid = '".$data["id"]."'";
$res_s = mysqli_query($link ,$db_query);
if ($row_s = mysqli_fetch_row($res_s)) {
list($sign1, $sign2, $sign3, $sign4) = $row_s;
// 下一位簽核人員:$sign_nt, 目前簽核進度:$sign_st
$ss_arr = sign_status([$sign1, $sign2, $sign3, $sign4]);
//print_r($ss_arr);
/*
<link rel="stylesheet" href="common.css">
<div style="overflow-x:auto; white-space:nowrap;">
<table id="table_index2" class="table table-striped table-bordered" style="width:100%">
<thead>
<tr>
<th>項次</th>
<th>卷號</th>
<th>營業員</th>
<th>客戶名稱</th>
<th>案件名稱</th>
<th>牌價總額</th>
<th>售價總額</th>
<th>價率</th>
<th>預定成交日</th>
<th>預定交期</th>
<th>建檔人</th>
<th>建檔時間</th>
<th>功能</th>
<th>區經理</th>
<th>業務承辦人</th>
<th>業務部協理</th>
<th>總經理</th>
<th>狀態</th>
<th>合約書申請</th>
<!--<th>修改</th>-->
</tr>
</thead>
<tbody>
<?php
foreach ($data as $data) :
$sign1 = $sign2 = $sign3 = $sign4 = "";
$oneself = ($data["creater"] == $user_id) ? 1 : 0; // 是否為營業員本人
// 簽核狀況
$db_query = "select sign1, sign2, sign3, sign4 from pricereview_sign where mid = '" . $data["id"] . "'";
$res_s = mysqli_query($link, $db_query);
if ($row_s = mysqli_fetch_row($res_s)) {
list($sign1, $sign2, $sign3, $sign4) = $row_s;
// 下一位簽核人員:$sign_nt, 目前簽核進度:$sign_st
$ss_arr = sign_status([$sign1, $sign2, $sign3, $sign4]);
/*
$sign1_nos = 0;
$sign_nt_arr = [];
$sign1_arr = explode("<##>", $sign1);
@ -204,64 +218,65 @@ if ($data):
$sign_nt = "";
}
*/
}
mysqli_free_result($res_s);
?>
<tr>
<td><?php echo $data['id']; ?></td>
<td><?php echo $data['contractno']; ?></td>
<td><?php echo $data['person']; ?></td>
<td><?php echo $data['company']; ?></td>
<td><?php echo $data['case_name']; ?></td>
<td><?php echo number_format($data['price_lowest']); ?></td>
<td><?php echo number_format($data['price_total']); ?></td>
<td><?php echo $data['price_rate']; ?>%</td>
<td><?php echo $data['predeal_date']; ?></td>
<td><?php echo $data['facilitok_date']; ?></td>
<td><?php echo $accountname_arr[$data['creater']]; ?></td>
<td><?php echo $data['create_at']; ?></td>
<td>
<?php
//if ($oneself && !($data["status"] == "YY" || $data["status"] == "YN")) { // 自己可以進行規調
if ($oneself) {
if ($data["status"] == "Y1") {
?>
<a href="pricereview-edit.php?id=<?php echo $data['id']; ?>&<?php echo $token_link; ?>" class="btn btn-primary btn-sm">修改</a>
<a href="pricereview-delete.php?id=<?php echo $data['id']; ?>&<?php echo $token_link; ?>" class="btn btn-secondary btn-sm" onClick="return confirm('Are you sure you want to delete?')">刪除</a>
<?php
} elseif ($data["status"] == "YS") {
?>
<a href="specsurvey-create.php?mid=<?=$data['id'];?>&function_name=specsurvey&token=<?=$token;?>" class="btn btn-danger btn-sm">填規調</a>
<?php
}
}
mysqli_free_result($res_s);
?>
<a href="pricereview-check.php?id=<?php echo $data['id']."&".$para; ?>" class="btn btn-warning btn-sm">檢視</a>
<?php
if ($user_id=="M0023") {
?>
<a href="specsurvey-create.php?mid=<?=$data['id'];?>&function_name=specsurvey&token=<?=$token;?>" class="btn btn-danger btn-sm">填規調</a>
<?php
}
?>
</td>
<td>
<?php
$str = $uperson = $ustatus = $udtte = "";
if (!empty($sign1)) list($uperson, $ustatus, $udtte) = explode(",", $sign1);
if ($ustatus) {
if ($ustatus == "Y") $str = "<span class=\"glyphicon glyphicon-ok\" title=\"同意\"></span>";
elseif ($ustatus == "N") $str = "<span class=\"glyphicon glyphicon-ban-circle\" title=\"不同意\"></span>";
$str .= "<br>".$accountname_arr[$uperson]."<br>".$udtte;
} else {
if ($ss_arr["sign_st"]==1 && in_array($user_id, $ss_arr["sign_nt"]) && $data["status"]=="YS") {
$str = "<span class=\"glyphicon glyphicon-user\"></span>";
$str = "待簽核";
$str = "<a href=\"pricereview-check.php?st=1&id=".$data["id"]."&".$para."\" class=\"btn btn-primary btn-sm\">".$str."</a>";
} else $str = "--";
}
echo $str;
/*
<tr>
<td><?php echo $data['id']; ?></td>
<td><?php echo $data['contractno']; ?></td>
<td><?php echo $data['person']; ?></td>
<td><?php echo $data['company']; ?></td>
<td><?php echo $data['case_name']; ?></td>
<td><?php echo number_format($data['price_lowest']); ?></td>
<td><?php echo number_format($data['price_total']); ?></td>
<td><?php echo $data['price_rate']; ?>%</td>
<td><?php echo $data['predeal_date']; ?></td>
<td><?php echo $data['facilitok_date']; ?></td>
<td><?php echo $accountname_arr[$data['creater']]; ?></td>
<td><?php echo $data['create_at']; ?></td>
<td>
<?php
//if ($oneself && !($data["status"] == "YY" || $data["status"] == "YN")) { // 自己可以進行規調
if ($oneself) {
if ($data["status"] == "Y1") {
?>
<a href="pricereview-edit.php?id=<?php echo $data['id']; ?>&<?php echo $token_link; ?>" class="btn btn-primary btn-sm">修改</a>
<a href="pricereview-delete.php?id=<?php echo $data['id']; ?>&<?php echo $token_link; ?>" class="btn btn-secondary btn-sm" onClick="return confirm('Are you sure you want to delete?')">刪除</a>
<?php
} elseif ($data["status"] == "YS") {
?>
<a href="specsurvey-create.php?mid=<?= $data['id']; ?>&function_name=specsurvey&token=<?= $token; ?>" class="btn btn-danger btn-sm">填規調</a>
<?php
}
}
?>
<a href="pricereview-check.php?id=<?php echo $data['id'] . "&" . $para; ?>" class="btn btn-warning btn-sm">檢視</a>
<?php
if ($user_id == "M0023") {
?>
<a href="specsurvey-create.php?mid=<?= $data['id']; ?>&function_name=specsurvey&token=<?= $token; ?>" class="btn btn-danger btn-sm">填規調</a>
<?php
}
?>
</td>
<td>
<?php
$str = $uperson = $ustatus = $udtte = "";
if (!empty($sign1)) list($uperson, $ustatus, $udtte) = explode(",", $sign1);
// echo $sign1;
if ($ustatus) {
if ($ustatus == "Y") $str = "<span class=\"glyphicon glyphicon-ok\" title=\"同意\"></span>";
elseif ($ustatus == "N") $str = "<span class=\"glyphicon glyphicon-ban-circle\" title=\"不同意\"></span>";
$str .= "<br>" . $accountname_arr[$uperson] . "<br>" . $udtte;
} else {
if ($ss_arr["sign_st"] == 1 && in_array($user_id, $ss_arr["sign_nt"]) && $data["status"] == "YS" || $user_id = 'TEST04') {
$str = "<span class=\"glyphicon glyphicon-user\"></span>";
$str = "待簽核";
$str = "<a href=\"pricereview-check.php?st=1&id=" . $data["id"] . "&" . $para . "\" class=\"btn btn-primary btn-sm\">" . $str . "</a>";
} else $str = "--";
}
echo $str;
/*
if ($sign_st==1 && $sign_nt==$user_id) {
$str = "<span class=\"glyphicon glyphicon-user\"></span>";
$str = "<a href=\"pricereview-check.php?st=1&id=".$data["id"]."&".$para."\" class=\"btn btn-info btn-sm\">".$str."</a>";
@ -273,7 +288,7 @@ if ($user_id=="M0023") {
} else $str = "--";
*/
/*
/*
if ($data["checker_1_result"] == "Y") {
$str = "<span class=\"glyphicon glyphicon-ok\" title=\"通過\"></span>";
} elseif ($data["checker_1_result"] == "N") {
@ -291,35 +306,35 @@ if ($user_id=="M0023") {
}
else $str = "--";
}*/
//echo $str;
?>
</td>
<td>
<?php
$str = $uperson = $ustatus = $udtte = "";
if (!empty($sign2)) {
$sign2_arr = explode("<##>", $sign2);
foreach ($sign2_arr as $v) {
list($uperson, $ustatus, $udtte) = explode(",", $v);
if ($ustatus == "Y" || $ustatus == "N") {
break;
}
}
}
if ($ustatus) {
if ($ustatus == "Y") $str = "<span class=\"glyphicon glyphicon-ok\" title=\"同意\"></span>";
elseif ($ustatus == "N") $str = "<span class=\"glyphicon glyphicon-ban-circle\" title=\"不同意\"></span>";
$str .= "<br>".$accountname_arr[$uperson]."<br>".$udtte;
} else {
if (($data["status"] == "YS") && ($ss_arr["sign_st"] == 2) && (in_array($user_id, $ss_arr["sign_nt"]))) {
$str = "<span class=\"glyphicon glyphicon-user\"></span>";
$str = "待簽核";
$str = "<a href=\"pricereview-check.php?st=2&id=".$data["id"]."&".$para."\" class=\"btn btn-primary btn-sm\">".$str."</a>";
} else $str = "--";
}
echo $str;
//echo $str;
?>
</td>
<td>
<?php
$str = $uperson = $ustatus = $udtte = "";
if (!empty($sign2)) {
$sign2_arr = explode("<##>", $sign2);
foreach ($sign2_arr as $v) {
list($uperson, $ustatus, $udtte) = explode(",", $v);
if ($ustatus == "Y" || $ustatus == "N") {
break;
}
}
}
if ($ustatus) {
if ($ustatus == "Y") $str = "<span class=\"glyphicon glyphicon-ok\" title=\"同意\"></span>";
elseif ($ustatus == "N") $str = "<span class=\"glyphicon glyphicon-ban-circle\" title=\"不同意\"></span>";
$str .= "<br>" . $accountname_arr[$uperson] . "<br>" . $udtte;
} else {
if (($data["status"] == "YS") && ($ss_arr["sign_st"] == 2) && (in_array($user_id, $ss_arr["sign_nt"]))) {
$str = "<span class=\"glyphicon glyphicon-user\"></span>";
$str = "待簽核";
$str = "<a href=\"pricereview-check.php?st=2&id=" . $data["id"] . "&" . $para . "\" class=\"btn btn-primary btn-sm\">" . $str . "</a>";
} else $str = "--";
}
echo $str;
/*
/*
if ($sign_st==2 && $sign_nt==$user_id) {
$str = "<span class=\"glyphicon glyphicon-user\"></span>";
$str = "<a href=\"pricereview-check.php?st=2&id=".$data["id"]."&".$para."\" class=\"btn btn-info btn-sm\">".$str."</a>";
@ -331,7 +346,7 @@ if ($user_id=="M0023") {
} else $str = "--";
*/
/*
/*
if ($data["checker_2_result"] == "Y") {
$str = "<span class=\"glyphicon glyphicon-ok\" title=\"通過\"></span>";
} elseif ($data["checker_2_result"] == "N") {
@ -350,26 +365,26 @@ if ($user_id=="M0023") {
else $str = "--";
}
*/
//echo $str;
?>
</td>
<td>
<?php
$str = $uperson = $ustatus = $udtte = "";
if (!empty($sign3)) list($uperson, $ustatus, $udtte) = explode(",", $sign3);
if ($ustatus) {
if ($ustatus == "Y" || $ustatus == "YY") $str = "<span class=\"glyphicon glyphicon-ok\" title=\"同意\"></span>";
elseif ($ustatus == "N") $str = "<span class=\"glyphicon glyphicon-ban-circle\" title=\"不同意\"></span>";
$str .= "<br>".$accountname_arr[$uperson]."<br>".$udtte;
} else {
if (($data["status"] == "YS") && ($ss_arr["sign_st"] == 3) && (in_array($user_id, $ss_arr["sign_nt"]))) {
$str = "<span class=\"glyphicon glyphicon-user\"></span>";
$str = "待簽核";
$str = "<a href=\"pricereview-check.php?st=3&id=".$data["id"]."&".$para."\" class=\"btn btn-primary btn-sm\">".$str."</a>";
} else $str = "--";
}
echo $str;
/*
//echo $str;
?>
</td>
<td>
<?php
$str = $uperson = $ustatus = $udtte = "";
if (!empty($sign3)) list($uperson, $ustatus, $udtte) = explode(",", $sign3);
if ($ustatus) {
if ($ustatus == "Y" || $ustatus == "YY") $str = "<span class=\"glyphicon glyphicon-ok\" title=\"同意\"></span>";
elseif ($ustatus == "N") $str = "<span class=\"glyphicon glyphicon-ban-circle\" title=\"不同意\"></span>";
$str .= "<br>" . $accountname_arr[$uperson] . "<br>" . $udtte;
} else {
if (($data["status"] == "YS") && ($ss_arr["sign_st"] == 3) && (in_array($user_id, $ss_arr["sign_nt"]))) {
$str = "<span class=\"glyphicon glyphicon-user\"></span>";
$str = "待簽核";
$str = "<a href=\"pricereview-check.php?st=3&id=" . $data["id"] . "&" . $para . "\" class=\"btn btn-primary btn-sm\">" . $str . "</a>";
} else $str = "--";
}
echo $str;
/*
$str = "";
if ($sign_st==3 && $sign_nt==$user_id) {
$str = "<span class=\"glyphicon glyphicon-user\"></span>";
@ -377,7 +392,7 @@ if ($user_id=="M0023") {
} else $str = "--";
*/
/*
/*
if ($data["checker_3_result"] == "Y") {
$str = "<span class=\"glyphicon glyphicon-ok\" title=\"通過\"></span>";
} elseif ($data["checker_3_result"] == "N") {
@ -396,79 +411,81 @@ if ($user_id=="M0023") {
else $str = "--";
}
*/
//echo $str;
?>
</td>
<td>
<?php
$str = $uperson = $ustatus = $udtte = "";
if (!empty($sign4)) list($uperson, $ustatus, $udtte) = explode(",", $sign4);
if ($ustatus) {
if ($ustatus == "Y") $str = "<span class=\"glyphicon glyphicon-ok\" title=\"同意\"></span>";
elseif ($ustatus == "N") $str = "<span class=\"glyphicon glyphicon-ban-circle\" title=\"不同意\"></span>";
$str .= "<br>".$accountname_arr[$uperson]."<br>".$udtte;
} else {
if (($data["status"] == "YS") && ($ss_arr["sign_st"] == 4) && (in_array($user_id, $ss_arr["sign_nt"]))) {
$str = "<span class=\"glyphicon glyphicon-user\"></span>";
$str = "待簽核";
$str = "<a href=\"pricereview-check.php?st=4&id=".$data["id"]."&".$para."\" class=\"btn btn-primary btn-sm\">".$str."</a>";
} else $str = "--";
}
echo $str;
?>
</td>
<td><?php echo $status_arr[$data["status"]]; ?></td>
<!--<td>
//echo $str;
?>
</td>
<td>
<?php
$str = $uperson = $ustatus = $udtte = "";
if (!empty($sign4)) list($uperson, $ustatus, $udtte) = explode(",", $sign4);
if ($ustatus) {
if ($ustatus == "Y") $str = "<span class=\"glyphicon glyphicon-ok\" title=\"同意\"></span>";
elseif ($ustatus == "N") $str = "<span class=\"glyphicon glyphicon-ban-circle\" title=\"不同意\"></span>";
$str .= "<br>" . $accountname_arr[$uperson] . "<br>" . $udtte;
} else {
if (($data["status"] == "YS") && ($ss_arr["sign_st"] == 4) && (in_array($user_id, $ss_arr["sign_nt"]))) {
$str = "<span class=\"glyphicon glyphicon-user\"></span>";
$str = "待簽核";
$str = "<a href=\"pricereview-check.php?st=4&id=" . $data["id"] . "&" . $para . "\" class=\"btn btn-primary btn-sm\">" . $str . "</a>";
} else $str = "--";
}
echo $str;
?>
</td>
<td><?php echo $status_arr[$data["status"]]; ?></td>
<!--<td>
<p>
<a href="pricereview-edit.php?id=<?php echo $data['id']."&".$para; ?>" class="btn btn-info btn-sm">
<a href="pricereview-edit.php?id=<?php echo $data['id'] . "&" . $para; ?>" class="btn btn-info btn-sm">
<span class="glyphicon glyphicon-pencil"></span>
</a>
</p>
</td>-->
<style>
.applybtn{
color:#fff;
background-color: #1484c4;
display: block;
border-radius: 4px;
padding: 4px 2px;
font-size: 13px;
<style>
.applybtn {
color: #fff;
background-color: #1484c4;
display: block;
border-radius: 4px;
padding: 4px 2px;
font-size: 13px;
}
.applybtn:hover{
background-color: #1494f9;
color:#fff;
}
</style>
<td>
<?php if(($data['status'] == 'YY' && $oneself) || $user_id == "M0174"): ?>
<a class="applybtn" href="../contract/contract-new-apply.php?id=<?php echo $data['id'] . '&' . $para; ?>">
<?php if($data['applystatus'] <1){
echo "申請";
}else{
echo "檢視";
} ?>
</a><br>
<?php endif; ?>
<?php if($data['status'] == 'YY' && ($user_id == "M0060" || $user_id == "M0107" || $user_id == "M0174") && $data['applystatus'] == 1): ?>
<a class="applybtn" href="../contract/contract-new-apply.php?id=<?php echo $data['id'] . '&' . $para; ?>">待簽核</a><br>
<?php endif; ?>
<?php if($data['status'] != 'YY' ): ?>
<span style="font-size:13px;font-weight:600">--</span>
<?php endif; ?>
<!-- 工號M0107、M0174有所有權限 -->
<?php if(($data['status'] === 'YY' && $data['applystatus'] == 3 && ($user_id == "M0107" || $user_id == "M0060")) || $user_id == "M0174"): ?>
<a class="applybtn" href="../contract/contract-download.php?id=<?php echo $data['id'] . '&' . $para?>">下載</a>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
}
.applybtn:hover {
background-color: #1494f9;
color: #fff;
}
</style>
<td>
<?php if (($data['status'] == 'YY' && $oneself) || $user_id == "M0174" || $user_id == 'M0225') : ?>
<a class="applybtn" href="../contract/contract-new-apply.php?id=<?php echo $data['id'] . '&' . $para; ?>">
<?php if ($data['applystatus'] < 1) {
echo "申請";
} else {
echo "檢視";
} ?>
</a><br>
<?php endif; ?>
<?php if ($data['status'] == 'YY' && ($user_id == "M0060" || $user_id == "M0107" || $user_id == "M0174" || $user_id == 'M0225') && $data['applystatus'] == 1) : ?>
<a class="applybtn" href="../contract/contract-new-apply.php?id=<?php echo $data['id'] . '&' . $para; ?>">待簽核</a><br>
<?php endif; ?>
<?php if ($data['status'] != 'YY') : ?>
<span style="font-size:13px;font-weight:600">--</span>
<?php endif; ?>
<!-- 工號M0107、M0174有所有權限 -->
<?php if (($data['status'] === 'YY' && $data['applystatus'] == 3 && ($user_id == "M0107" || $user_id == "M0060")) || $user_id == "M0174" || $user_id == 'M0225') : ?>
<a class="applybtn" href="../contract/contract-download.php?id=<?php echo $data['id'] . '&' . $para ?>">下載</a>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php
else:
else :
echo "<h2>There is no record!</h2>";
endif;

2
wms/mkt/pricereview_renovate-index.php

@ -11,7 +11,7 @@ $data = array();
// sql語法存在變數中
$sql_cmd = sql_myself($user_id);
// M0024許伃廷,M0107許紓晴,M0012李盈瑩權限全開
if ($user_id == "M0024" || $user_id == "M0107" || $user_id == "M0012" || $user_id == "M0060" || $user_id == "M0189") {
if ($user_id == "M0024" || $user_id == "M0107" || $user_id == "M0012" || $user_id == "M0060" || $user_id == "M0189" || $user_id == "TEST01" || $user_id == "TEST02" || $user_id == "TEST03" || $user_id == "TEST04") {
$sql_cmd = "where create_at >= '2023-01-01 00:00:00'";
}
if ($user_id == "M0008") {

20
wms/mkt/pricereview_repair-create.php

@ -271,13 +271,13 @@ $assign_status = '<option value="FH">指派</option>'
$('#tb1 tr:last').prev().prev().prev().find('td a[name=item_href]').html('點選');
});
// 點擊服務費會出現 or 消失 input 框
$('#btnadd-sc').click(function() {
$('#service_charge_tr').toggle();
// 若消失清空 input 的值
$('#service_charge').val('');
// 並且重新計算總價(total)
dataFormat();
});
// $('#btnadd-sc').click(function() {
// $('#service_charge_tr').toggle();
// // 若消失清空 input 的值
// $('#service_charge').val('');
// // 並且重新計算總價(total)
// dataFormat();
// });
$('#tb1').on('click', 'a[name=btndel]', function() {
if ($('tr[name=main_templ]').length > 1) {
$(this).closest('tr').remove();
@ -471,7 +471,7 @@ if($_SERVER["REQUEST_METHOD"] == "POST"){
<thead>
<tr>
<th colspan="5"><a href="javascript:void(0);" id="btnadd" class="btn btn-primary btn-sm">新增備品</a> <span class="star">*</span></th>
<th colspan="5"><a href="javascript:void(0);" id="btnadd-sc" class="btn btn-primary btn-sm">服務費</a></th>
<!-- <th colspan="5"><a href="javascript:void(0);" id="btnadd-sc" class="btn btn-primary btn-sm">服務費</a></th> -->
</tr>
<tr>
<th nowrap>名稱</th>
@ -505,12 +505,12 @@ if($_SERVER["REQUEST_METHOD"] == "POST"){
<a href="javascript:void(0);" name="btndel" class="btn btn-danger btn-sm">X</a>
</td>
</tr>
<tr id='service_charge_tr' style="display: none;">
<tr id='service_charge_tr'>
<td colspan="3">
<h5>服務費</h5>
</td>
<td>
<input type="text" name="service_charge" id="service_charge" class="dollar-right" size="8" ">
<input type="text" name="service_charge" id="service_charge" value="0" class="dollar-right" size="8" ">
</td>
<td colspan=" 2">
</td>

194
wms/mkt/specsurvey-index.php

@ -5,7 +5,7 @@ include "../header.php";
$data = array();
// sql語法存在變數中
$sql_cmd = sql_myself($user_id, "s.creater");
if ($user_id == "M0060" || $user_id == "M0189") $sql_cmd = "";
if ($user_id == "M0060" || $user_id == "M0189" || $user_id == "TEST01" || $user_id == "TEST02" || $user_id == "TEST03" || $user_id == "TEST04") $sql_cmd = "";
$sql2 = (empty($sql_cmd)) ? "where" : "and";
$sql2 .= " s.mid = p.id and p.ekind = '新梯' ";
$sql2 .= "and (s.mid, s.pr_item_id, s.sub_item_id, s.version) in (select s.mid, s.pr_item_id, s.sub_item_id, max(s.version) from specsurvey_main s, pricereview_main p where s.mid = p.id group by s.mid, s.pr_item_id, s.sub_item_id)";
@ -24,7 +24,7 @@ $class_arr = [1 => "新梯", 2 => "舊改M1", 3 => "舊改M2", 4 => "舊改M3",
</p>
-->
<?php
if ($data):
if ($data) :
/*
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if(empty($_POST["name"]) && empty($_POST["email"]) && empty($_POST["website"])){
@ -35,112 +35,120 @@ if ($data):
}
*/
?>
<style>
table {
table-layout:fixed;
width: 100%;
}
td {
word-wrap:break-word;
}
img {
width:125px;
}
.width_style_1 {
width:125px;
}
table{
width:100%;
}
#table_index_filter{
float:right;
}
#table_index_paginate{
float:right;
}
label {
display: inline-flex;
margin-bottom: .5rem;
margin-top: .5rem;
}
.btn-sm {
font-size:14px;
margin: 2px 0;
line-height: 90%;
}
</style>
<script>
$(function () {
var api = $('#table_index').dataTable().api();
api
.order([0, "desc"])
.draw();
});
</script>
<div style="overflow-x:auto;">
<table id="table_index" class="table table-striped table-bordered" style="width:100%">
<thead>
<tr>
<th>項次</th>
<th>日期版號</th>
<th>卷號</th>
<th>客戶名稱</th>
<th>預定交期</th>
<th style="width:10%">規格</th>
<th>號機</th>
<!--<th>機種</th>
<style>
table {
table-layout: fixed;
width: 100%;
}
td {
word-wrap: break-word;
}
img {
width: 125px;
}
.width_style_1 {
width: 125px;
}
table {
width: 100%;
}
#table_index_filter {
float: right;
}
#table_index_paginate {
float: right;
}
label {
display: inline-flex;
margin-bottom: .5rem;
margin-top: .5rem;
}
.btn-sm {
font-size: 14px;
margin: 2px 0;
line-height: 90%;
}
</style>
<script>
$(function() {
var api = $('#table_index').dataTable().api();
api
.order([0, "desc"])
.draw();
});
</script>
<div style="overflow-x:auto;">
<table id="table_index" class="table table-striped table-bordered" style="width:100%">
<thead>
<tr>
<th>項次</th>
<th>日期版號</th>
<th>卷號</th>
<th>客戶名稱</th>
<th>預定交期</th>
<th style="width:10%">規格</th>
<th>號機</th>
<!--<th>機種</th>
<th>載重</th>
<th>人乘</th>
<th>停數</th>
<th>速度</th>-->
<th>用途</th>
<th>類型</th>
<th>修改者</th>
<th>修改時間</th>
<th>功能</th>
</tr>
</thead>
<tbody>
<?php
foreach ($data as $data) :
$sql2 = "select item_spec from pricereview_item where mid = '".$data["mid"]."' and item_no = '".$data["pr_item_id"]."'";
$res2 = mysqli_query($link, $sql2);
$row = mysqli_fetch_row($res2);
$item_spec = $row[0];
mysqli_free_result($res2);
?>
<tr>
<td><?php echo $data['id']; ?></td>
<td><?php echo $data['version']; ?></td>
<td><?php echo $data['contractno']; ?></td>
<td><?php echo $data['company']; ?></td>
<td><?php echo $data['facilitok_date']; ?></td>
<td><?php echo $item_spec; ?></td>
<td><?php echo $data['serial']; ?></td>
<!--<td><?php echo $data['rtype']; ?></td>
<th>用途</th>
<th>類型</th>
<th>修改者</th>
<th>修改時間</th>
<th>功能</th>
</tr>
</thead>
<tbody>
<?php
foreach ($data as $data) :
$sql2 = "select item_spec from pricereview_item where mid = '" . $data["mid"] . "' and item_no = '" . $data["pr_item_id"] . "'";
$res2 = mysqli_query($link, $sql2);
$row = mysqli_fetch_row($res2);
$item_spec = $row[0];
mysqli_free_result($res2);
?>
<tr>
<td><?php echo $data['id']; ?></td>
<td><?php echo $data['version']; ?></td>
<td><?php echo $data['contractno']; ?></td>
<td><?php echo $data['company']; ?></td>
<td><?php echo $data['facilitok_date']; ?></td>
<td><?php echo $item_spec; ?></td>
<td><?php echo $data['serial']; ?></td>
<!--<td><?php echo $data['rtype']; ?></td>
<td><?php echo $data['weight']; ?></td>
<td><?php echo $data['numberofpassenger']; ?></td>
<td><?php echo $data['numberofstop']; ?></td>
<td><?php echo $data['speed']; ?></td>-->
<td><?php echo $usefor_arr[$data['usefor']]; ?></td>
<td><?php echo $class_arr[$data['class']]; ?></td>
<td><?php echo $data['creater']; ?></td>
<td><?php echo $data['create_at']; ?></td>
<td><a href="specsurvey-view.php?pa=<?php echo $data['mid'].",".$data['pr_item_id'],",".$data['version'].",".$data['sub_item_id']; ?>&function=specsurvey&<?php echo $token_link; ?>" class="btn btn-warning btn-sm">檢視</a></td>
<!--<td>
<td><?php echo $usefor_arr[$data['usefor']]; ?></td>
<td><?php echo $class_arr[$data['class']]; ?></td>
<td><?php echo $data['creater']; ?></td>
<td><?php echo $data['create_at']; ?></td>
<td><a href="specsurvey-view.php?pa=<?php echo $data['mid'] . "," . $data['pr_item_id'], "," . $data['version'] . "," . $data['sub_item_id']; ?>&function=specsurvey&<?php echo $token_link; ?>" class="btn btn-warning btn-sm">檢視</a></td>
<!--<td>
<p>
<a href="specsurvey-delete.php?id=<?php echo $data['id']; ?>&<?php echo $token_link; ?>" class="btn btn-info btn-sm" onClick="return confirm('Are you sure you want to delete?')">
<span class="glyphicon glyphicon-remove"></span>
</a>
</p>
</td>-->
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php
else:
else :
echo "<h2>There is no record!</h2>";
endif;

194
wms/mkt/specsurvey_renovate-index.php

@ -5,7 +5,7 @@ include "../header.php";
$data = array();
// sql語法存在變數中
$sql_cmd = sql_myself($user_id, "s.creater");
if ($user_id == "M0060" || $user_id == "M0189") $sql_cmd = "";
if ($user_id == "M0060" || $user_id == "M0189" || $user_id == "TEST01" || $user_id == "TEST02" || $user_id == "TEST03" || $user_id == "TEST01" || $user_id == "TEST02" || $user_id == "TEST03" || $user_id == "TEST04") $sql_cmd = "";
$sql2 = (empty($sql_cmd)) ? "where" : "and";
$sql2 .= " s.mid = p.id and p.ekind = '汰改' ";
$sql2 .= "and (s.mid, s.pr_item_id, s.sub_item_id, s.version) in (select s.mid, s.pr_item_id, s.sub_item_id, max(s.version) from specsurvey_main s, pricereview_main p where s.mid = p.id group by s.mid, s.pr_item_id, s.sub_item_id)";
@ -24,7 +24,7 @@ $class_arr = [1 => "新梯", 2 => "舊改M1", 3 => "舊改M2", 4 => "舊改M3",
</p>
-->
<?php
if ($data):
if ($data) :
/*
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if(empty($_POST["name"]) && empty($_POST["email"]) && empty($_POST["website"])){
@ -35,112 +35,120 @@ if ($data):
}
*/
?>
<style>
table {
table-layout:fixed;
width: 100%;
}
td {
word-wrap:break-word;
}
img {
width:125px;
}
.width_style_1 {
width:125px;
}
table{
width:100%;
}
#table_index_filter{
float:right;
}
#table_index_paginate{
float:right;
}
label {
display: inline-flex;
margin-bottom: .5rem;
margin-top: .5rem;
}
.btn-sm {
font-size:14px;
margin: 2px 0;
line-height: 90%;
}
</style>
<script>
$(function () {
var api = $('#table_index').dataTable().api();
api
.order([0, "desc"])
.draw();
});
</script>
<div style="overflow-x:auto;">
<table id="table_index" class="table table-striped table-bordered" style="width:100%">
<thead>
<tr>
<th>項次</th>
<th>日期版號</th>
<th>卷號</th>
<th>客戶名稱</th>
<th>預定交期</th>
<th style="width:10%">規格</th>
<th>號機</th>
<!--<th>機種</th>
<style>
table {
table-layout: fixed;
width: 100%;
}
td {
word-wrap: break-word;
}
img {
width: 125px;
}
.width_style_1 {
width: 125px;
}
table {
width: 100%;
}
#table_index_filter {
float: right;
}
#table_index_paginate {
float: right;
}
label {
display: inline-flex;
margin-bottom: .5rem;
margin-top: .5rem;
}
.btn-sm {
font-size: 14px;
margin: 2px 0;
line-height: 90%;
}
</style>
<script>
$(function() {
var api = $('#table_index').dataTable().api();
api
.order([0, "desc"])
.draw();
});
</script>
<div style="overflow-x:auto;">
<table id="table_index" class="table table-striped table-bordered" style="width:100%">
<thead>
<tr>
<th>項次</th>
<th>日期版號</th>
<th>卷號</th>
<th>客戶名稱</th>
<th>預定交期</th>
<th style="width:10%">規格</th>
<th>號機</th>
<!--<th>機種</th>
<th>載重</th>
<th>人乘</th>
<th>停數</th>
<th>速度</th>-->
<th>用途</th>
<th>類型</th>
<th>修改者</th>
<th>修改時間</th>
<th>功能</th>
</tr>
</thead>
<tbody>
<?php
foreach ($data as $data) :
$sql2 = "select item_spec from pricereview_item where mid = '".$data["mid"]."' and item_no = '".$data["pr_item_id"]."'";
$res2 = mysqli_query($link, $sql2);
$row = mysqli_fetch_row($res2);
$item_spec = $row[0];
mysqli_free_result($res2);
?>
<tr>
<td><?php echo $data['id']; ?></td>
<td><?php echo $data['version']; ?></td>
<td><?php echo $data['contractno']; ?></td>
<td><?php echo $data['company']; ?></td>
<td><?php echo $data['facilitok_date']; ?></td>
<td><?php echo $item_spec; ?></td>
<td><?php echo $data['serial']; ?></td>
<!--<td><?php echo $data['rtype']; ?></td>
<th>用途</th>
<th>類型</th>
<th>修改者</th>
<th>修改時間</th>
<th>功能</th>
</tr>
</thead>
<tbody>
<?php
foreach ($data as $data) :
$sql2 = "select item_spec from pricereview_item where mid = '" . $data["mid"] . "' and item_no = '" . $data["pr_item_id"] . "'";
$res2 = mysqli_query($link, $sql2);
$row = mysqli_fetch_row($res2);
$item_spec = $row[0];
mysqli_free_result($res2);
?>
<tr>
<td><?php echo $data['id']; ?></td>
<td><?php echo $data['version']; ?></td>
<td><?php echo $data['contractno']; ?></td>
<td><?php echo $data['company']; ?></td>
<td><?php echo $data['facilitok_date']; ?></td>
<td><?php echo $item_spec; ?></td>
<td><?php echo $data['serial']; ?></td>
<!--<td><?php echo $data['rtype']; ?></td>
<td><?php echo $data['weight']; ?></td>
<td><?php echo $data['numberofpassenger']; ?></td>
<td><?php echo $data['numberofstop']; ?></td>
<td><?php echo $data['speed']; ?></td>-->
<td><?php echo $usefor_arr[$data['usefor']]; ?></td>
<td><?php echo $class_arr[$data['class']]; ?></td>
<td><?php echo $data['creater']; ?></td>
<td><?php echo $data['create_at']; ?></td>
<td><a href="specsurvey_renovate-view.php?pa=<?php echo $data['mid'].",".$data['pr_item_id'],",".$data['version'].",".$data['sub_item_id']; ?>&function=specsurvey_renovate&<?php echo $token_link; ?>" class="btn btn-warning btn-sm">檢視</a></td>
<!--<td>
<td><?php echo $usefor_arr[$data['usefor']]; ?></td>
<td><?php echo $class_arr[$data['class']]; ?></td>
<td><?php echo $data['creater']; ?></td>
<td><?php echo $data['create_at']; ?></td>
<td><a href="specsurvey_renovate-view.php?pa=<?php echo $data['mid'] . "," . $data['pr_item_id'], "," . $data['version'] . "," . $data['sub_item_id']; ?>&function=specsurvey_renovate&<?php echo $token_link; ?>" class="btn btn-warning btn-sm">檢視</a></td>
<!--<td>
<p>
<a href="specsurvey-delete.php?id=<?php echo $data['id']; ?>&<?php echo $token_link; ?>" class="btn btn-info btn-sm" onClick="return confirm('Are you sure you want to delete?')">
<span class="glyphicon glyphicon-remove"></span>
</a>
</p>
</td>-->
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
<?php
else:
else :
echo "<h2>There is no record!</h2>";
endif;

Loading…
Cancel
Save