Ellin 1 year ago
parent
commit
4d43d55201
  1. 4
      wms/T8_APItest.php
  2. 12
      wms/contract-repair/api/putContractData.php
  3. 12
      wms/contract/api/postContractData.php
  4. 645
      wms/contract/contract-input.php
  5. 30
      wms/contract/js/alpine.js
  6. 4
      wms/fun_global.php
  7. 101
      wms/mkt/assets/js/alpine.js
  8. 187
      wms/mkt/pricereview-create.php
  9. 2
      wms/mkt/pricereview-record-submit.php
  10. 2
      wms/mkt/pricereview-record-update.php
  11. 4
      wms/schedule-index.php

4
wms/T8_APItest.php

@ -40,12 +40,12 @@ echo "ii";
"name": "salIncomeApplyDetail", "name": "salIncomeApplyDetail",
"rows": [{ "rows": [{
"BillNo": "B23100061", "BillNo": "B23100061",
"IncomeId": "A40003", "IncomeId": "A40004",
"TaxId": "ST005", "TaxId": "ST005",
"RowCode": 1, "RowCode": 1,
"ItemType": "1", "ItemType": "1",
"SPrice": 10000, "SPrice": 10000,
"SQuantity": 2, "SQuantity": 0,
"FromSourceTag": 0, "FromSourceTag": 0,
"FromBillNo": "" "FromBillNo": ""
}] }]

12
wms/contract-repair/api/putContractData.php

@ -67,7 +67,6 @@ if (isset($_POST['contracttype']) && $_POST['contracttype'] == 'r' && isset($_PO
} }
} }
function t8Insert($data) function t8Insert($data)
{ {
require_once('../../contract/connt8.php'); require_once('../../contract/connt8.php');
@ -99,7 +98,18 @@ function t8Insert($data)
$stmt->bindParam(':CreateTime', $create); $stmt->bindParam(':CreateTime', $create);
$stmt->execute(); $stmt->execute();
$sql = "INSERT INTO comCustomer
(OrgId,BizPartnerTypeId,CurrId,BizPartnerId,PersonId,CreatorId,IsInUsed,InvoiceAddress,CreateTime)
VALUES('1000','10','TWD',:BizPartnerId,:PersonId,:CreatorId,1,:InvoiceAddress,:CreateTime)";
$stmt = $connT8->prepare($sql);
$stmt->bindParam(':BizPartnerId', $repair_no);
$stmt->bindParam(':PersonId', $salesman);
$stmt->bindParam(':CreatorId', $user_id);
$stmt->bindParam(':InvoiceAddress', $address);
$stmt->bindParam(':CreateTime', $create);
$stmt->execute();
$sql = "INSERT INTO ";
$connT8->commit(); $connT8->commit();
} }

12
wms/contract/api/postContractData.php

@ -34,6 +34,7 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
$num = !empty($_POST['num']) ? $_POST['num'] : null; $num = !empty($_POST['num']) ? $_POST['num'] : null;
$files = !empty($_FILES['files']) ? $_FILES['files'] : null; $files = !empty($_FILES['files']) ? $_FILES['files'] : null;
$elevators = !empty($_POST['elevators']) ? json_decode($_POST['elevators'], true) : []; $elevators = !empty($_POST['elevators']) ? json_decode($_POST['elevators'], true) : [];
$payType = !empty($_POST['payType']) ? $_POST['payType'] : null;
// validate // validate
$fail_arr = []; $fail_arr = [];
if ($contractno === '') return $fail_arr[] = '合約號為必填'; if ($contractno === '') return $fail_arr[] = '合約號為必填';
@ -56,6 +57,7 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
if ($partyAphone == '') $fail_arr[] = '業務聯繫人電話為必填'; if ($partyAphone == '') $fail_arr[] = '業務聯繫人電話為必填';
if ($partyAemail == '') $fail_arr[] = '業務聯繫人Email為必填'; if ($partyAemail == '') $fail_arr[] = '業務聯繫人Email為必填';
if ($num == '') $fail_arr[] = '電梯數量為必填'; if ($num == '') $fail_arr[] = '電梯數量為必填';
if ($payType == '') $fail_arr[] = '付款方式為必填';
if (count($fail_arr) > 0) { if (count($fail_arr) > 0) {
header("HTTP/1.1 422 Unprocessable Entity"); header("HTTP/1.1 422 Unprocessable Entity");
echo json_encode($fail_arr); echo json_encode($fail_arr);
@ -283,8 +285,8 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
} else { } else {
$files = null; $files = null;
} }
$sql_str = "INSERT INTO contract_b_signed_back (contract_no, contract_type, company, customer_no, salesperson, contract_start_date, contract_end_date, total_price, customer_phone, customer_email, repairman, cycle, contact_person, contact_address, contact_phone, contact_email, elevators_number, area, address, files_id, bonus, max_bonus, created_at, created_by) $sql_str = "INSERT INTO contract_b_signed_back (contract_no, contract_type, company, customer_no, salesperson, contract_start_date, contract_end_date, total_price,payType, customer_phone, customer_email, repairman, cycle, contact_person, contact_address, contact_phone, contact_email, elevators_number, area, address, files_id, bonus, max_bonus, created_at, created_by)
VALUES (:contract_no, :contract_type, :company, :customer_no, :salesperson, :contract_start_date, :contract_end_date, :total_price, :customer_phone, :customer_email, :repairman, :cycle, :contact_person, :contact_address, :contact_phone, :contact_email, :elevators_number, :area, :address, :files_id, :bonus, :max_bonus, :created_at, :created_by)"; VALUES (:contract_no, :contract_type, :company, :customer_no, :salesperson, :contract_start_date, :contract_end_date, :total_price, :payType ,:customer_phone, :customer_email, :repairman, :cycle, :contact_person, :contact_address, :contact_phone, :contact_email, :elevators_number, :area, :address, :files_id, :bonus, :max_bonus, :created_at, :created_by)";
$stmt = $conn->prepare($sql_str); $stmt = $conn->prepare($sql_str);
$stmt->bindParam(":contract_no", $contractno); $stmt->bindParam(":contract_no", $contractno);
$stmt->bindParam(":contract_type", $contract_type); $stmt->bindParam(":contract_type", $contract_type);
@ -310,6 +312,7 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
$stmt->bindParam(":max_bonus", $max_bonus); $stmt->bindParam(":max_bonus", $max_bonus);
$stmt->bindParam(":created_at", $created_at); $stmt->bindParam(":created_at", $created_at);
$stmt->bindParam(":created_by", $user_id); $stmt->bindParam(":created_by", $user_id);
$stmt->bindParam(':payType', $payType);
$stmt->execute(); $stmt->execute();
@ -324,7 +327,7 @@ if (isset($_POST["contractno"]) && $_POST["contractno"] != "" && isset($_POST['c
// $stmt->bindParam(':CreateTime', $createTime); // $stmt->bindParam(':CreateTime', $createTime);
// $stmt->execute(); // $stmt->execute();
T8insert($_POST, $facilityno); // T8insert($_POST, $facilityno);
header('Content-Type: application/json'); header('Content-Type: application/json');
$jsonData = json_encode($files); $jsonData = json_encode($files);
@ -395,7 +398,8 @@ function T8insert($data, $facilityno)
$stmt->execute(); $stmt->execute();
$sql = "INSERT INTO comCustomer(OrgId,BizPartnerTypeId,CurrId,BizPartnerId,PersonId,CreatorId,IsInUsed,InvoiceAddress,CreateTime) $sql = "INSERT INTO comCustomer
(OrgId,BizPartnerTypeId,CurrId,BizPartnerId,PersonId,CreatorId,IsInUsed,InvoiceAddress,CreateTime)
VALUES('1000','10','TWD',:BizPartnerId,:PersonId,:CreatorId,1,:InvoiceAddress,:CreateTime)"; VALUES('1000','10','TWD',:BizPartnerId,:PersonId,:CreatorId,1,:InvoiceAddress,:CreateTime)";
$stmt = $connT8->prepare($sql); $stmt = $connT8->prepare($sql);

645
wms/contract/contract-input.php

@ -5,13 +5,13 @@ include_once("./api/getFacilityNo.php");
$accounttype = "B"; $accounttype = "B";
$sql_str = "SELECT accountid, name FROM account WHERE accounttype = :accounttype"; $sql_str = "SELECT accountid, name FROM account WHERE accounttype = :accounttype";
$stmt = $conn->prepare($sql_str); $stmt = $conn->prepare($sql_str);
$stmt->bindParam(':accounttype',$accounttype); $stmt->bindParam(':accounttype', $accounttype);
$stmt->execute(); $stmt->execute();
$workers = $stmt->fetchAll(PDO::FETCH_ASSOC); $workers = $stmt->fetchAll(PDO::FETCH_ASSOC);
$accounttype = "M"; $accounttype = "M";
$sql_str = "SELECT id,accountid, name FROM account WHERE accounttype = :accounttype"; $sql_str = "SELECT id,accountid, name FROM account WHERE accounttype = :accounttype";
$stmt = $conn->prepare($sql_str); $stmt = $conn->prepare($sql_str);
$stmt->bindParam(':accounttype',$accounttype); $stmt->bindParam(':accounttype', $accounttype);
$stmt->execute(); $stmt->execute();
$contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC); $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
?> ?>
@ -19,331 +19,354 @@ $contractpersons = $stmt->fetchAll(PDO::FETCH_ASSOC);
<link rel="stylesheet" href="semantic/dist/semantic.min.css"> <link rel="stylesheet" href="semantic/dist/semantic.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA==" crossorigin="anonymous" referrerpolicy="no-referrer" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<script defer src="./js/alpinejs/cdn.min.js"></script> <script defer src="./js/alpinejs/cdn.min.js"></script>
<script src="./js/axios/axios.min.js" ></script> <script src="./js/axios/axios.min.js"></script>
<div class="contract-input-component" x-data="contractInput"> <div class="contract-input-component" x-data="contractInput">
<div class="form" method="post" id="form" enctype="multipart/form-data" > <div class="form" method="post" id="form" enctype="multipart/form-data">
<input type="hidden" name='form_name' value="main_form" /> <input type="hidden" name='form_name' value="main_form" />
<div> <div>
<table class="table table-bordered query-table table-striped table-bordered display compact" style="width:99%;margin-left:.5%"> <table class="table table-bordered query-table table-striped table-bordered display compact" style="width:99%;margin-left:.5%">
<thead> <thead>
<tr> <tr>
<td colspan="8"> <td colspan="8">
<h3 style='text-align:center'>合約入力(保養)</h3> <h3 style='text-align:center'>合約入力(保養)</h3>
</td> </td>
</tr> </tr>
</thead> </thead>
<template x-if="step==1"> <template x-if="step==1">
<tbody style="font-weight: bolder;margin-bottom: 20px" x-show="step==1"> <tbody style="font-weight: bolder;margin-bottom: 20px" x-show="step==1">
<tr> <tr>
<td style="vertical-align: middle">合約號</td> <td style="vertical-align: middle">合約號</td>
<td colspan="5"> <td colspan="5">
<input class="form-control" @keyup="nextStepKeyupFn($event)" type="text" name="contractno" x-model="data.contractno" > <input class="form-control" @keyup="nextStepKeyupFn($event)" type="text" name="contractno" x-model="data.contractno">
</td>
<td colspan="2" style="vertical-align: middle">
<label for="customize">
<input type="checkbox" x-model="customize" id="customize" />自定義欄位
</label>
</td>
</tr> </td>
</tbody> <td colspan="2" style="vertical-align: middle">
</template> <label for="customize">
<template x-if="step==2"> <input type="checkbox" x-model="customize" id="customize" />自定義欄位
<tbody style="font-weight: bolder;margin-bottom: 20px" x-show="step==2"> </label>
<tr> </td>
<td colspan="7" style='vertical-align: middle;border-right:0px;'>
<h4>業務確認項</h4>
</td>
<td class="text-right" style='border-left:0px;'>
<button type="button" id="btn_close" class="btn btn-default" onclick="window.history.back();">返回</button>
<button type="button" id="btn_close" class="btn btn-default" onclick="window.close();">關閉分頁</button>
</td>
</tr>
<tr>
<td style="vertical-align: middle">立約人</td>
<td>
<input type="text" x-model="data.customer" />
<p class="alerttext" x-show="data.customer==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">營業員</td>
<td>
<select class="ui fluid search dropdown" name="promiser" x-model="data.salesman">
<option value="">選擇營業員</option>
<?php foreach($contractpersons as $person){ ?>
<option value="<?php echo $person['accountid'] ?>"><?php echo $person['name'] ?></option>
<?php } ?>
</select>
<p class="alerttext" x-show="data.salesman==''"><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" name="start_date" x-model="data.contract_begin_date" >
<p class="alerttext" x-show="data.contract_begin_date==''"><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" name="end_date" x-model="data.contract_end_date" >
<p class="alerttext" x-show="data.contract_end_date==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
<tr>
<td style="vertical-align: middle">電梯台數</td>
<td>
<input class="form-control disabled_select" type="number" x-model="data.num" :disabled="data.disabled">
<p class="alerttext" x-show="data.num==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<p class="alerttext" x-show="data.num==0 && data.num!=''"><i class="fa-solid fa-circle-xmark"></i>電梯數量需大於0</p>
</td>
<td style="vertical-align: middle">統一編號/身分證</td> </tr>
<td> </tbody>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.vat" > </template>
<p class="alerttext" x-show="data.vat==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <template x-if="step==2">
</td> <tbody style="font-weight: bolder;margin-bottom: 20px" x-show="step==2">
<td style="vertical-align: middle">維修型態</td> <tr>
<td style="vertical-align: middle"> <td colspan="7" style='vertical-align: middle;border-right:0px;'>
<select class="ui search dropdown" name="" x-model="data.mtype"> <h4>業務確認項</h4>
<option value="" >選擇維修型態</option> </td>
<option value="A">定期保養</option> <td class="text-right" style='border-left:0px;'>
</select> <button type="button" id="btn_close" class="btn btn-default" onclick="window.history.back();">返回</button>
<p class="alerttext" x-show="data.mtype==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <button type="button" id="btn_close" class="btn btn-default" onclick="window.close();">關閉分頁</button>
</td> </td>
<td></td> </tr>
<td></td> <tr>
</tr> <td style="vertical-align: middle">立約人</td>
<tr> <td>
<td style="vertical-align: middle">客戶電話</td> <input type="text" x-model="data.customer" />
<td> <p class="alerttext" x-show="data.customer==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<input class="form-control disabled_select" type="text" name="tel" x-model="data.phone" > </td>
<p class="alerttext" x-show="data.phone==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <td style="vertical-align: middle">營業員</td>
</td> <td>
<td style="vertical-align: middle">Email</td> <select class="ui fluid search dropdown" name="promiser" x-model="data.salesman">
<td style="vertical-align: middle"> <option value="">選擇營業員</option>
<input class="form-control disabled_select" type="email" name="email" x-model="data.email" > <?php foreach ($contractpersons as $person) { ?>
<p class="alerttext" x-show="data.email==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <option value="<?php echo $person['accountid'] ?>"><?php echo $person['name'] ?></option>
</td> <?php } ?>
<td style="vertical-align: middle">保養員</td> </select>
<td> <p class="alerttext" x-show="data.salesman==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<select class="ui search dropdown" name="repairer_name" x-model="data.mworker"> </td>
<option value="">選擇保養員</option> <td style="vertical-align: middle">合約開始時間</td>
<?php foreach($workers as $worker){ ?> <td>
<option value="<?php echo $worker['accountid']; ?>"><?php echo $worker['name'] ?></option> <input class="form-control disabled_select" type="date" name="start_date" x-model="data.contract_begin_date">
<?php } ?> <p class="alerttext" x-show="data.contract_begin_date==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</select> </td>
<p class="alerttext" x-show="data.mworker==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <td style="vertical-align: middle">合約終止時間</td>
</td> <td>
<td style="vertical-align: middle">保養頻率</td> <input class="form-control disabled_select" type="date" name="end_date" x-model="data.contract_end_date">
<td> <p class="alerttext" x-show="data.contract_end_date==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
<select class="ui search dropdown" name="repairer_name" x-model="data.mcycle"> </td>
<option value="">選擇保養頻率</option> </tr>
<option value="bw">雙週保</option> <tr>
<option value="em">月保</option> <td style="vertical-align: middle">電梯台數</td>
</select> <td>
<p class="alerttext" x-show="data.mcycle==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <input class="form-control disabled_select" type="number" x-model="data.num" :disabled="data.disabled">
</td> <p class="alerttext" x-show="data.num==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</tr> <p class="alerttext" x-show="data.num==0 && data.num!=''"><i class="fa-solid fa-circle-xmark"></i>電梯數量需大於0</p>
<tr> </td>
<td style="vertical-align: middle">業務聯繫人</td>
<td>
<input type="text" x-model="data.partyA" name="partyA" />
<p class="alerttext" x-show="data.partyA==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">業務聯繫人地址</td>
<td>
<input class="form-control disabled_select" x-model="data.partyAaddress" type="text" name="contractaddress" value="" >
<p class="alerttext" x-show="data.partyAaddress==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">業務聯繫人電話</td>
<td>
<input class="form-control disabled_select" type="text" name="contracttel" x-model="data.partyAphone" >
<p class="alerttext" x-show="data.partyAphone==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">業務聯繫人Email</td>
<td>
<input class="form-control disabled_select" type="email" name="contracttel" x-model="data.partyAemail" >
<p class="alerttext" x-show="data.partyAemail==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
<tr>
<td style="vertical-align: middle">區域</td>
<td>
<select class="ui search dropdown" x-model="data.area">
<option value="">選擇區域</option>
<template x-for="city in cities" :key="city.code">
<option x-bind:selected="city.name === data.area" x-text="city.name" :value="city.name"></option>
</template>
</select>
<p class="alerttext" x-show="data.area==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">詳細地址</td>
<td colspan="2">
<input 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 colspan="2">
<input type="file" name="file[]" multiple draggable="true" @change="uploadFiles($event)" />
</td>
</tr>
<tr> <td style="vertical-align: middle">統一編號/身分證</td>
<td>
<input class="form-control disabled_select" type="text" name="uscc" x-model="data.vat">
<p class="alerttext" x-show="data.vat==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">維修型態</td>
<td style="vertical-align: middle">
<select class="ui search dropdown" name="" x-model="data.mtype">
<option value="">選擇維修型態</option>
<option value="A">定期保養</option>
</select>
<p class="alerttext" x-show="data.mtype==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">契約成交價</td>
<td>
<input class="form-control disabled_select" type="text" name="tel" x-model="data.total_price" :disabled="data.disabled">
<p class="alerttext" x-show="data.total_price==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
<tr>
<td style="vertical-align: middle">客戶電話</td>
<td>
<input class="form-control disabled_select" type="text" name="tel" x-model="data.phone">
<p class="alerttext" x-show="data.phone==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">Email</td>
<td style="vertical-align: middle">
<input class="form-control disabled_select" type="email" name="email" x-model="data.email">
<p class="alerttext" x-show="data.email==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">保養員</td>
<td>
<select class="ui search dropdown" name="repairer_name" x-model="data.mworker">
<option value="">選擇保養員</option>
<?php foreach ($workers as $worker) { ?>
<option value="<?php echo $worker['accountid']; ?>"><?php echo $worker['name'] ?></option>
<?php } ?>
</select>
<p class="alerttext" x-show="data.mworker==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">保養頻率</td>
<td>
<select class="ui search dropdown" name="repairer_name" x-model="data.mcycle">
<option value="">選擇保養頻率</option>
<option value="bw">雙週保</option>
<option value="em">月保</option>
</select>
<p class="alerttext" x-show="data.mcycle==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
<tr>
<td style="vertical-align: middle">業務聯繫人</td>
<td>
<input type="text" x-model="data.partyA" name="partyA" />
<p class="alerttext" x-show="data.partyA==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">業務聯繫人地址</td>
<td>
<input class="form-control disabled_select" x-model="data.partyAaddress" type="text" name="contractaddress" value="">
<p class="alerttext" x-show="data.partyAaddress==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">業務聯繫人電話</td>
<td>
<input class="form-control disabled_select" type="text" name="contracttel" x-model="data.partyAphone">
<p class="alerttext" x-show="data.partyAphone==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">業務聯繫人Email</td>
<td>
<input class="form-control disabled_select" type="email" name="contracttel" x-model="data.partyAemail">
<p class="alerttext" x-show="data.partyAemail==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
<tr>
<td style="vertical-align: middle">區域</td>
<td>
<select class="ui search dropdown" x-model="data.area">
<option value="">選擇區域</option>
<template x-for="city in cities" :key="city.code">
<option x-bind:selected="city.name === data.area" x-text="city.name" :value="city.name"></option>
</template>
</select>
<p class="alerttext" x-show="data.area==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">詳細地址</td>
<td colspan="2">
<input 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 colspan="2">
<select class="ui search dropdown" x-model="data.payType">
<option value="">選擇付款方式</option>
<option value="A40006">年繳</option>
<option value="A40007">季繳</option>
<option value="A40003">月繳</option>
<option value="A40004">雙月繳</option>
<option value="A40005">半年繳</option>
</select>
<p class="alerttext" x-show="data.payType==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
</tr>
</tr> <tr>
</tbody> <td></td>
</template> <td></td>
<template x-if="step==3"> <td></td>
<template x-for="(elevator, idx) in data.elevators" :key="elevator.apply_key + elevator.register_code"> <td></td>
<tbody style="font-weight: bolder;margin-bottom: 20px" x-show="step==3"> <td></td>
<tr> <td style="vertical-align: middle">附件</td>
<td colspan=8><p x-text="'電梯' + Number(idx+1)"></p></td> <td colspan="2">
</tr> <input type="file" name="file[]" multiple draggable="true" @change="uploadFiles($event)" />
<tr> </td>
<td style="vertical-align: middle">機種</td> </tr>
<td> </tbody>
<select class="ui search dropdown" name="spec" x-model="data.elevators[idx].spec" > </template>
<option value="">選擇規格</option> <template x-if="step==3">
<option value="MAE100">MAE100</option> <template x-for="(elevator, idx) in data.elevators" :key="elevator.apply_key + elevator.register_code">
<option value="MAM200">MAM200</option> <tbody style="font-weight: bolder;margin-bottom: 20px" x-show="step==3">
<option value="MAH100">MAH100</option> <tr>
<option value="MAQ100">MAQ100</option> <td colspan=8>
<option value="MAF100">MAF100</option> <p x-text="'電梯' + Number(idx+1)"></p>
<option value="MAZ100">MAZ100</option> </td>
</select> </tr>
<p class="alerttext" x-show="!(data.elevators[idx].spec=='MAE100' || data.elevators[idx].spec=='MAM200' || data.elevators[idx].spec=='MAH100' || data.elevators[idx].spec=='MAQ100' || data.elevators[idx].spec=='MAF100' || data.elevators[idx].spec=='MAZ100')"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <tr>
</td> <td style="vertical-align: middle">機種</td>
<td style="vertical-align: middle">載重</td> <td>
<td> <select class="ui search dropdown" name="spec" x-model="data.elevators[idx].spec">
<input type="text" x-model="data.elevators[idx].weight" /> <option value="">選擇規格</option>
<p class="alerttext" x-show="data.elevators[idx].weight==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <option value="MAE100">MAE100</option>
</td> <option value="MAM200">MAM200</option>
<td style="vertical-align: middle">速度</td> <option value="MAH100">MAH100</option>
<td> <option value="MAQ100">MAQ100</option>
<input type="text" x-model="data.elevators[idx].speed" /> <option value="MAF100">MAF100</option>
<p class="alerttext" x-show="data.elevators[idx].speed==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <option value="MAZ100">MAZ100</option>
</td> </select>
<p class="alerttext" x-show="!(data.elevators[idx].spec=='MAE100' || data.elevators[idx].spec=='MAM200' || data.elevators[idx].spec=='MAH100' || data.elevators[idx].spec=='MAQ100' || data.elevators[idx].spec=='MAF100' || data.elevators[idx].spec=='MAZ100')"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">載重</td>
<td>
<input type="text" x-model="data.elevators[idx].weight" />
<p class="alerttext" x-show="data.elevators[idx].weight==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">速度</td>
<td>
<input type="text" x-model="data.elevators[idx].speed" />
<p class="alerttext" x-show="data.elevators[idx].speed==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td>
<td style="vertical-align: middle">人乘</td> <td style="vertical-align: middle">人乘</td>
<td> <td>
<input type="text" x-model="data.elevators[idx].persons" /> <input type="text" x-model="data.elevators[idx].persons" />
<p class="alerttext" x-show="data.elevators[idx].persons==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.elevators[idx].persons==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
</tr> </tr>
<tr> <tr>
<td style="vertical-align: middle">樓停</td> <td style="vertical-align: middle">樓停</td>
<td> <td>
<input type="number" class="form-control" x-model="data.elevators[idx].stop" /> <input type="number" class="form-control" x-model="data.elevators[idx].stop" />
<p class="alerttext" x-show="data.elevators[idx].stop=='' || !data.elevators[idx].stop"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.elevators[idx].stop=='' || !data.elevators[idx].stop"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td style="vertical-align: middle">樓層</td> <td style="vertical-align: middle">樓層</td>
<td> <td>
<input type="text" x-model="data.elevators[idx].floors" /> <input type="text" x-model="data.elevators[idx].floors" />
<p class="alerttext" x-show="data.elevators[idx].floors=='' || !data.elevators[idx].floors"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.elevators[idx].floors=='' || !data.elevators[idx].floors"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td style="vertical-align: middle">緯度</td> <td style="vertical-align: middle">緯度</td>
<td> <td>
<input type="text" x-model="data.elevators[idx].latitude" /> <input type="text" x-model="data.elevators[idx].latitude" />
<p class="alerttext" x-show="data.elevators[idx].latitude=='' || !data.elevators[idx].latitude"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.elevators[idx].latitude=='' || !data.elevators[idx].latitude"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td style="vertical-align: middle">經度</td> <td style="vertical-align: middle">經度</td>
<td> <td>
<input type="text" x-model="data.elevators[idx].longitude" /> <input type="text" x-model="data.elevators[idx].longitude" />
<p class="alerttext" x-show="data.elevators[idx].longitude=='' || !data.elevators[idx].longitude"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.elevators[idx].longitude=='' || !data.elevators[idx].longitude"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
</tr> </tr>
<tr> <tr>
<td style="vertical-align: middle">廠牌</td> <td style="vertical-align: middle">廠牌</td>
<td> <td>
<input type="text" x-model="data.elevators[idx].elevator_brand" class="form-control" /> <input type="text" x-model="data.elevators[idx].elevator_brand" class="form-control" />
<p class="alerttext" x-show="data.elevators[idx].elevator_brand==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.elevators[idx].elevator_brand==''"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td style="vertical-align: middle"> <td style="vertical-align: middle">
開門方式 開門方式
</td> </td>
<td style="vertical-align: middle"> <td style="vertical-align: middle">
<select class="ui search dropdown" name="" x-model="data.elevators[idx].opendoor"> <select class="ui search dropdown" name="" x-model="data.elevators[idx].opendoor">
<option value="">選擇開門方式</option> <option value="">選擇開門方式</option>
<option value="2PCO">2PCO</option> <option value="2PCO">2PCO</option>
<option value="2S">2S</option> <option value="2S">2S</option>
<option value="2SL">2SL</option> <option value="2SL">2SL</option>
<option value="2SR">2SR</option> <option value="2SR">2SR</option>
<option value="2U">2U</option> <option value="2U">2U</option>
<option value="3S">3S</option> <option value="3S">3S</option>
<option value="4PCO">4PCO</option> <option value="4PCO">4PCO</option>
<option value="6PCO">6PCO</option> <option value="6PCO">6PCO</option>
<option value="CO">CO</option> <option value="CO">CO</option>
</select> </select>
<p class="alerttext" x-show="data.elevators[idx].opendoor=='' || !data.elevators[idx].opendoor "><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.elevators[idx].opendoor=='' || !data.elevators[idx].opendoor "><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td style="vertical-align: middle">保養別</td> <td style="vertical-align: middle">保養別</td>
<td> <td>
<select class="ui search dropdown" x-model="data.elevators[idx].maintainance"> <select class="ui search dropdown" x-model="data.elevators[idx].maintainance">
<option value="">選擇保養別</option> <option value="">選擇保養別</option>
<option value="A">全包</option> <option value="A">全包</option>
<option value="B">半包</option> <option value="B">半包</option>
<option value="C">清包</option> <option value="C">清包</option>
</select> </select>
<p class="alerttext" x-show="data.elevators[idx].maintainance=='' || !data.elevators[idx].maintainance"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.elevators[idx].maintainance=='' || !data.elevators[idx].maintainance"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
<td style="vertical-align: middle">竣檢日</td> <td style="vertical-align: middle">竣檢日</td>
<td> <td>
<input class="form-control disabled_select" type="date" x-model="data.elevators[idx].takecertificatedate"> <input class="form-control disabled_select" type="date" x-model="data.elevators[idx].takecertificatedate">
<p class="alerttext" x-show="data.elevators[idx].takecertificatedate=='' || !data.elevators[idx].takecertificatedate"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.elevators[idx].takecertificatedate=='' || !data.elevators[idx].takecertificatedate"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
</tr> </tr>
<tr> <tr>
<td style="vertical-align: middle">許可證有效時間</td> <td style="vertical-align: middle">許可證有效時間</td>
<td> <td>
<input class="form-control disabled_select" type="date" x-model="data.elevators[idx].useful_date"> <input class="form-control disabled_select" type="date" x-model="data.elevators[idx].useful_date">
<p class="alerttext" x-show="data.elevators[idx].useful_date=='' || !data.elevators[idx].useful_date"><i class="fa-solid fa-circle-xmark"></i>未填寫</p> <p class="alerttext" x-show="data.elevators[idx].useful_date=='' || !data.elevators[idx].useful_date"><i class="fa-solid fa-circle-xmark"></i>未填寫</p>
</td> </td>
</tr> </tr>
<tr><td></td> <tr>
<td></td> <td></td>
<td></td> <td></td>
<td></td> <td></td>
<td></td> <td></td>
<td></td> <td></td>
<td></td> <td></td>
<td></td></tr> <td></td>
</tbody> <td></td>
</tr>
</tbody>
</template>
</template> </template>
</template> </table>
</table>
<button x-show="step==3" @click="save()" :disabled="isLoading" type="button" class="btn btn-primary btn-lg pull-right savebtn"> <button x-show="step==3" @click="save()" :disabled="isLoading" type="button" class="btn btn-primary btn-lg pull-right savebtn">
<template x-if="!isLoading"> <template x-if="!isLoading">
<span>存檔</span> <span>存檔</span>
</template> </template>
<template x-if="isLoading"> <template x-if="isLoading">
<div class="loader"></div> <div class="loader"></div>
</template> </template>
</button> </button>
<button x-show="step<=2" @click="nextStepFn()" type="button" class="btn btn-primary btn-lg pull-right savebtn" :disabled="isLoading"> <button x-show="step<=2" @click="nextStepFn()" type="button" class="btn btn-primary btn-lg pull-right savebtn" :disabled="isLoading">
<template x-if="!isLoading"> <template x-if="!isLoading">
<span>下一步</span> <span>下一步</span>
</template> </template>
<template x-if="isLoading"> <template x-if="isLoading">
<div class="loader"></div> <div class="loader"></div>
</template> </template>
</button> </button>
<button x-show="step>1" @click="preStepFn()" :disabled="isLoading" type="button" class="btn btn-primary btn-lg pull-right savebtn"> <button x-show="step>1" @click="preStepFn()" :disabled="isLoading" type="button" class="btn btn-primary btn-lg pull-right savebtn">
<template x-if="!isLoading"> <template x-if="!isLoading">
<span>上一步</span> <span>上一步</span>
</template> </template>
<template x-if="isLoading"> <template x-if="isLoading">
<div class="loader"></div> <div class="loader"></div>
</template> </template>
</button> </button>
</div> </div>
</div> </div>
</div> </div>
<script src="./js/jquery/jquery-3.1.1.min.js"></script> <script src="./js/jquery/jquery-3.1.1.min.js"></script>
<script src="semantic/dist/semantic.min.js" ></script> <script src="semantic/dist/semantic.min.js"></script>
<script src="./js/alpine.js"></script> <script src="./js/alpine.js"></script>
<script> <script>
const user_id = '<?php echo $user_id; ?>' const user_id = '<?php echo $user_id; ?>'

30
wms/contract/js/alpine.js

@ -964,6 +964,7 @@ const contractInput = () => {
num: '', //電梯數量 num: '', //電梯數量
disabled: false, //資料庫是否有電梯數量資料 disabled: false, //資料庫是否有電梯數量資料
elevators: [], //機種、載重、人乘、樓停、樓層、速度、緯度、經度、開門方式、保養別、廠牌、竣檢日、許可證日期 elevators: [], //機種、載重、人乘、樓停、樓層、速度、緯度、經度、開門方式、保養別、廠牌、竣檢日、許可證日期
payType: ''
}, },
customize: false, customize: false,
step: 1, step: 1,
@ -1020,8 +1021,11 @@ const contractInput = () => {
return return
} }
if (!this.customize) { if (!this.customize) {
console.log(res.data); for (let i = 0; i < res.data.elevators.length; i++) {
this.data.total_price = res.data.sold_price this.data.total_price = Number(res.data.elevators[i].sold_price) + Number(this.data.total_price);
console.log(this.data.total_price);
}
this.data.total_price = Number(res.data.elevators[0].maintain_months) * this.data.total_price;
this.data.salesman = res.data.salesman this.data.salesman = res.data.salesman
this.data.contract_begin_date = res.data.contract_begin_date this.data.contract_begin_date = res.data.contract_begin_date
this.data.contract_end_date = res.data.contract_end_date this.data.contract_end_date = res.data.contract_end_date
@ -1035,7 +1039,7 @@ const contractInput = () => {
let cityIndex = this.data.address.indexOf('市'); let cityIndex = this.data.address.indexOf('市');
console.log(cityIndex); console.log(cityIndex);
if (cityIndex == -1) { if (cityIndex == -1) {
cityIndex = this.data.address.indexOf('縣'); // cityIndex = this.data.address.indexOf('縣');
} }
if (cityIndex > 1) { if (cityIndex > 1) {
// 獲取''市''前面的兩個字 // 獲取''市''前面的兩個字
@ -1111,13 +1115,14 @@ const contractInput = () => {
form.append('num', this.data.num); form.append('num', this.data.num);
form.append('elevators', JSON.stringify(this.data.elevators)); form.append('elevators', JSON.stringify(this.data.elevators));
form.append('contracttype', 'b'); form.append('contracttype', 'b');
form.append('payType', this.data.payType)
// 如果有附件檔案,可以逐一加入 // 如果有附件檔案,可以逐一加入
for (var i = 0; i < this.data.files.length; i++) { for (var i = 0; i < this.data.files.length; i++) {
form.append('files[]', this.data.files[i]); form.append('files[]', this.data.files[i]);
} }
axios.post('./api/postContractData.php', form).then(res => { axios.post('./api/postContractData.php', form).then(res => {
console.log(res.status); console.log(res);
if (res.status === 200) { if (res.status === 200) {
alert('儲存成功'); alert('儲存成功');
this.step = 1 this.step = 1
@ -1144,6 +1149,7 @@ const contractInput = () => {
this.data.zip = '' this.data.zip = ''
this.data.partyAphone = '' this.data.partyAphone = ''
this.data.partyAemail = '' this.data.partyAemail = ''
this.data.payType = ''
} }
this.isLoading = false this.isLoading = false
}).catch(error => { }).catch(error => {
@ -1217,7 +1223,7 @@ const contractNewApply = () => {
originfiles: originfiles, originfiles: originfiles,
description: description, description: description,
}, },
status:contractstatus, status: contractstatus,
progress: progress, progress: progress,
pays: { pays: {
1: { 1: {
@ -1332,7 +1338,7 @@ const contractNewApply = () => {
return; return;
} }
if (this.data.workdeadline_a < 30) { if (this.data.workdeadline_a < 30) {
while(this.data.workdeadline_note=='') { while (this.data.workdeadline_note == '') {
this.data.workdeadline_note = prompt('安裝時間需低於30天,請說明原因') this.data.workdeadline_note = prompt('安裝時間需低於30天,請說明原因')
} }
@ -1389,18 +1395,18 @@ const contractNewApply = () => {
this.isLoading = true this.isLoading = true
let newprogress = 0; let newprogress = 0;
let newstatus = 0; let newstatus = 0;
if(this.progress <= 1){ if (this.progress <= 1) {
newprogress = 2; newprogress = 2;
}else if(this.progress == 2){ } else if (this.progress == 2) {
newprogress = 3; newprogress = 3;
} }
if(this.status == 1 && this.progress == 2){ if (this.status == 1 && this.progress == 2) {
newstatus = 3 newstatus = 3
}else{ } else {
newstatus = 1 newstatus = 1
} }
console.log(newstatus); console.log(newstatus);

4
wms/fun_global.php

@ -132,11 +132,11 @@ function pricereview_renovate_class($rate, $user_id, $renovate_flag)
$ret[2] = 'M0012'; $ret[2] = 'M0012';
if ($renovate_flag == "REN") { if ($renovate_flag == "REN") {
// $ret[2] = 'M0012'; // $ret[2] = 'M0012';
if ($rate < 1000) $ret[3] = "M0008"; // 詹總 if ($rate <= 100) $ret[3] = "M0008"; // 詹總
if ($rate < 75) $ret[4] = "M0006"; // 總經理 if ($rate < 75) $ret[4] = "M0006"; // 總經理
} else { } else {
// 全汰改 // 全汰改
if ($rate < 1000) $ret[3] = "M0008"; // 詹總 if ($rate <= 100) $ret[3] = "M0008"; // 詹總
if ($rate < 75) $ret[4] = "M0006"; // 總經理 if ($rate < 75) $ret[4] = "M0006"; // 總經理
} }

101
wms/mkt/assets/js/alpine.js

@ -191,3 +191,104 @@ const priceOptionSelect = ()=>{
} }
} }
} }
const pricereviewOptionSelect = ()=>{
return {
init(){
console.log(options);
this.optionCategory = 0
this.initButtons();
},
options: options,
orioptions: options,
optionalArr: {
1:'標配',
2:'選配',
3:'加價',
},
searchtext:'',
kind:0,
subkind:0,
buttons:[],
initButtons(kind){
if(kind == 'A'){
this.buttons = [
{name: '車廂意匠', type: 'A1'}
]
}else if(kind == 'B'){
this.buttons = [
{name: '天井', type: 'B1'},
{name: '地板', type: 'B2'},
{name: '操縱盤', type: 'B3'},
{name: '扶手', type: 'B4'},
{name: '車廂門與層門(轎門/層門)', type: 'B5'},
{name: '轎壁(車廂側板)', type: 'B6'},
{name: '其他車廂內裝配件', type: 'B7'},
]
}else if(kind == 'C'){
this.buttons = [
{name: '框', type: 'C1'},
{name: '乘場指示器', type: 'C2'},
{name: '燈', type: 'C3'},
{name: '方式與門', type: 'C4'},
]
}else if(kind == 'D'){
this.buttons = [
{name: '功能與配置', type: 'D1'},
{name: 'OH與樓高', type: 'D2'},
]
}else if(kind == 'E'){
this.buttons = [
{name: '平台梯', type: 'E1'},
]
}else if(kind == 'F'){
this.buttons = [
{name: '汰改', type: 'F1'},
]
}else if(kind == 0){
this.buttons = []
}
},
optionSubCategory:1,
changeCategory(category, subcategory=0){
this.kind = (category=='sub') ? this.kind : category;
if(subcategory != 0) {
this.subkind = subcategory
}else{
this.subkind = 0
}
if(category == 0){
this.kind = 0;
this.subkind = 0;
}
this.initButtons(category)
this.reloadOptions();
},
reloadOptions(){
if(this.kind == 0){
this.options = this.orioptions
return;
}
if(this.subkind == 0){
this.options = this.orioptions.filter(option=> option.kind == this.kind)
return;
}
this.options = this.orioptions.filter(option=> option.kind == this.kind && option.subkind == this.subkind)
},
searchOptions(e){
this.reloadOptions();
let val = e.target.value.toLowerCase()
this.options = (this.options).filter(option=>{
if(option.group_name == null) option.group_name = ''
if(option.spec == null) option.spec = ''
if(option.memo == null) option.memo = ''
if(option.price == null) option.price = 0
if(option.unit == null) option.unit = ''
return option.group_name.includes(val) || option.memo.toLowerCase().includes(val) || option.spec.toLowerCase().includes(val) || option.unit.includes(val) || String(option.price).includes(val)
})
}
}
}

187
wms/mkt/pricereview-create.php

@ -1,6 +1,6 @@
<?php <?php
include "../header.php"; include "../header.php";
require_once('./conn.php');
$vol_no = $_REQUEST["vol_no"]; // 從有望客戶過來:卷號 $vol_no = $_REQUEST["vol_no"]; // 從有望客戶過來:卷號
// 營業員只建自己客戶的價審單 // 營業員只建自己客戶的價審單
@ -144,9 +144,9 @@ while ($row = mysqli_fetch_assoc($res)) {
$opt_data_arr[$row["kind"]][$row["group_name"]][$row["id"]]["unit"] = $row["unit"]; $opt_data_arr[$row["kind"]][$row["group_name"]][$row["id"]]["unit"] = $row["unit"];
$opt_data_arr[$row["kind"]][$row["group_name"]][$row["id"]]["price"] = $row["price"]; $opt_data_arr[$row["kind"]][$row["group_name"]][$row["id"]]["price"] = $row["price"];
} }
$option_str = $opt_data_arr[$row["kind"]][$row["group_name"]][$row["id"]]["spec"];
mysqli_free_result($res); mysqli_free_result($res);
$option_str .= '<table id="table_index2" class="table table-striped table-bordered" style="width:100%">'; $option_str = '<table id="table_index2" class="table table-striped table-bordered" style="width:100%">';
$option_str .= '<thead> $option_str .= '<thead>
<tr class="kind-col"> <tr class="kind-col">
<th scope="col" nowrap>名稱</th> <th scope="col" nowrap>名稱</th>
@ -195,6 +195,8 @@ foreach ($opt_data_arr as $k => $v) {
*/ */
} }
$option_str .= "</tbody></table>"; $option_str .= "</tbody></table>";
?> ?>
<style> <style>
.c_iframe iframe { .c_iframe iframe {
@ -242,7 +244,7 @@ $option_str .= "</tbody></table>";
} }
.modal-content { .modal-content {
height: 660px; height: 760px;
} }
#optionModal .modal-body { #optionModal .modal-body {
@ -322,6 +324,7 @@ $option_str .= "</tbody></table>";
} }
</style> </style>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script defer src="../contract/js/alpinejs/cdn.min.js"></script>
<script> <script>
// 加千分位 // 加千分位
function commafy(num) { function commafy(num) {
@ -740,7 +743,8 @@ $option_str .= "</tbody></table>";
$("#optionModal .modal-body td").unbind().click(function() { $("#optionModal .modal-body td").unbind().click(function() {
var pobj = $(this).closest('td').parent(); var pobj = $(this).closest('td').parent();
console.log(jobj.html(pobj.find('td').eq(0).html() + ' ' + pobj.find('td').eq(1).html())); console.log(jobj.html(pobj.find('td').eq(0).html() + ' ' + pobj.find('td').eq(1).html()));
jobj.html(pobj.find('td').eq(0).html() + ' ' + pobj.find('td').eq(1).html()); console.log(pobj.find('td').eq(0).html()+ pobj.find('td').eq(2).html() + ' ' + pobj.find('td').eq(1).html());
jobj.html(pobj.find('td').eq(0).html() + ' ' + pobj.find('td').eq(1).html() + '<br />(' + pobj.find('td').eq(2).html() + ')');
jobj.closest('td').parent().find('input[name=option_unit_price]').val(pobj.find('td').eq(5).html()); jobj.closest('td').parent().find('input[name=option_unit_price]').val(pobj.find('td').eq(5).html());
jobj.closest('td').parent().find('input[name=option_price_bp]').val(commafy(pobj.find('td').eq(5).html().replace(/[,]+/g, "") * jobj.closest('td').parent().find('input[name=option_qty]').val().replace(/[,]+/g, ""))); jobj.closest('td').parent().find('input[name=option_price_bp]').val(commafy(pobj.find('td').eq(5).html().replace(/[,]+/g, "") * jobj.closest('td').parent().find('input[name=option_qty]').val().replace(/[,]+/g, "")));
jobj.closest('td').parent().find('input[name=op_id]').val(pobj.find('input[name=option_id]').val()); jobj.closest('td').parent().find('input[name=op_id]').val(pobj.find('input[name=option_id]').val());
@ -792,6 +796,37 @@ $option_str .= "</tbody></table>";
return false; return false;
} }
}); });
$('#tb3').on('click', 'a[name=btnfaci]', function() {
var jobj = $(this); // 父視窗
if (jobj.closest('td').parent().find('a[name=option_href]').html() != '點選') {
var k = 1;
$("input[name=item_spec]").each(function() {
if ($(this).val() == '') return;
var objInput = document.createElement("input");
objInput.setAttribute("type", "checkbox");
objInput.setAttribute("name", "sub_faci");
objInput.setAttribute("value", k + '.' + $(this).val());
$("#optionFaciModal .modal-body").append(objInput);
$("#optionFaciModal .modal-body").append(k + '.' + $(this).val());
$("#optionFaciModal .modal-body").append("<br>");
k++;
});
$("#optionFaciModal .modal-body").append("<p><button type='button' name='btnpost' data-dismiss='modal' aria-label='Close'><span aria-hidden='true'>確定</span></button></p>");
$("#optionFaciModal").modal('show');
var str = "";
$("button[name=btnpost]").click(function() {
$('input[name=sub_faci]').each(function() {
if ($(this).prop('checked')) {
str += $(this).val() + "<br>";
}
});
jobj.closest('td').parent().find('td[name=option_relate_facil]').html(str);
});
} else {
alert("請先新增OPTION");
return false;
}
});
$('#tb4').on('click', 'a[name=btnfaci]', function() { $('#tb4').on('click', 'a[name=btnfaci]', function() {
var jobj = $(this); // 父視窗 var jobj = $(this); // 父視窗
if (jobj.closest('td').parent().find('select[name=mn_kind]').val() != '') { if (jobj.closest('td').parent().find('select[name=mn_kind]').val() != '') {
@ -1139,6 +1174,14 @@ $option_str .= "</tbody></table>";
}); });
}); });
</script> </script>
<?php
require_once('./conn.php');
$sql_str = "SELECT * FROM option_price WHERE status='Y' ORDER BY kind ASC";
$stmt = $conn->prepare($sql_str);
$stmt->execute();
$options = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<div> <div>
<ul class="notice"> <ul class="notice">
<li>「保存」:儲存價審單內容</li> <li>「保存」:儲存價審單內容</li>
@ -1167,49 +1210,60 @@ $option_str .= "</tbody></table>";
</div> </div>
</div> </div>
<!--子窗:option加價--> <!--子窗:option加價-->
<?php <div class="modal fade" id="optionModal" tabindex="-1" role="dialog" aria-labelledby="optionModalTitle" aria-hidden="true" x-data=pricereviewOptionSelect()>
$sql_str = "SELECT * FROM option_price WHERE status='Y' ORDER BY kind ASC"; <div class="modal-dialog" role="document">
$stmt = $conn->prepare($sql_str); <div class="modal-content">
$stmt->execute(); <div class="modal-header">
$options = $stmt->fetchAll(PDO::FETCH_ASSOC); <h4 class="modal-title" id="optionModalTitle">OPTION加價</h4>
?> <button type="button" class="close" data-dismiss="modal" aria-label="Close">
<div class="modal fade" id="optionModal" tabindex="-1" role="dialog" aria-labelledby="optionModalTitle" aria-hidden="true"> <span aria-hidden="true">&times;</span>
<div class="modal-dialog" role="document"> </button>
<div class="modal-content"> <label for="" >
<div class="modal-header"> <input type="text" class="form-control" style="float:left" placeholder="搜尋..." x-model="searchtext" @keyup="searchOptions($event)" />
<h4 class="modal-title" id="optionModalTitle">OPTION加價</h4> </label>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"> <div class="categories">
<span aria-hidden="true">&times;</span> <button :class="['btn', (kind==0) ? 'btn-primary' : 'btn-secondary text-light']" @click="changeCategory(0)">顯示全部</button>
</button> <button :class="['btn', (kind=='A') ? 'btn-primary' : 'btn-secondary text-light']" @click="changeCategory('A')">A-1 車廂意匠</button>
</div> <button :class="['btn', (kind=='B') ? 'btn-primary' : 'btn-secondary text-light']" @click="changeCategory('B')">A-2 車廂內裝</button>
<div class="modal-body"> <button :class="['btn', (kind=='C') ? 'btn-primary' : 'btn-secondary text-light']" @click="changeCategory('C')">A-3 車廂外部</button>
<table id="table_index2" class="table table-striped table-bordered" style="width:100%"> <button :class="['btn', (kind=='D') ? 'btn-primary' : 'btn-secondary text-light']" @click="changeCategory('D')">A-4 控制與其他</button>
<thead> <button :class="['btn', (kind=='E') ? 'btn-primary' : 'btn-secondary text-light']" @click="changeCategory('E')">B-1 平台梯</button>
<tr class="kind-col"> <button :class="['btn', (kind=='F') ? 'btn-primary' : 'btn-secondary text-light']" @click="changeCategory('F')">C-1 汰改</button>
<th scope="col" nowrap>名稱</th> <br /><br />
<th scope="col" nowrap>規格</th> <template x-for="button in buttons" >
<th scope="col" nowrap>備註</th> <button style="margin-right:3px" :class="['btn', (button.type == subkind) ? 'btn-primary' : 'btn-secondary text-light']" @click="changeCategory('sub', button.type)" x-text="button.name"></button>
<th scope="col" nowrap>配置</th> </template>
<th scope="col" nowrap>單位</th>
<th scope="col" nowrap>定價</th> </div>
</tr> </div>
</thead> <div class="modal-body" >
<tbody> <table id="" class="table table-striped table-bordered" style="width:100%">
<?php foreach($options as $option): ?> <thead>
<tr> <tr class="kind-col">
<td>1</td> <th scope="col" nowrap>名稱</th>
<td>2</td> <th scope="col" nowrap>規格</th>
<td>3</td> <th scope="col" nowrap>備註</th>
<td>4</td> <th scope="col" nowrap>配置</th>
<td>5</td> <th scope="col" nowrap>單位</th>
<td>6</td> <th scope="col" nowrap>定價</th>
</tr> </tr>
<?php endforeach; ?> </thead>
</tbody> <tbody>
</table> <template x-for="option in options" >
</div> <tr style="cursor:pointer">
<td x-text="option.group_name"> </td>
<td x-text="option.spec"></td>
<td x-text="option.memo"></td>
<td x-text="optionalArr[option.optional]"></td>
<td x-text="option.unit"></td>
<td x-text="option.price"></td>
</tr>
</template>
</tbody>
</table>
</div>
</div>
</div> </div>
</div>
</div> </div>
<!--子窗:option關連電梯--> <!--子窗:option關連電梯-->
<div class="modal fade" id="optionFaciModal" tabindex="-1" role="dialog" aria-labelledby="optionFaciModalTitle" aria-hidden="true"> <div class="modal fade" id="optionFaciModal" tabindex="-1" role="dialog" aria-labelledby="optionFaciModalTitle" aria-hidden="true">
@ -1850,7 +1904,7 @@ if($_SERVER["REQUEST_METHOD"] == "POST"){
?> ?>
<tr name="option_templ"> <tr name="option_templ">
<td name="option_seat"> <td name="option_seat">
<a href="" name="option_href" data-toggle="modal"><?php echo $v["item_spec"] . '-(' . $v['item-memo'] . ')'; ?></a> <a href="" name="option_href" data-toggle="modal"><?php echo $v["item_spec"] . '-(' . $v['item_memo'] . ')'; ?></a>
</td> </td>
<td><input type="text" name="option_unit_price" class="form-control dollar-right" size="8" value="<?php echo number_format($v["item_unit_price"]); ?>" readonly></td> <td><input type="text" name="option_unit_price" class="form-control dollar-right" size="8" value="<?php echo number_format($v["item_unit_price"]); ?>" readonly></td>
<td><input type="text" name="option_qty" class="form-control" size="2" maxlength="2" value="<?php echo $v["item_qty"]; ?>"></td> <td><input type="text" name="option_qty" class="form-control" size="2" maxlength="2" value="<?php echo $v["item_qty"]; ?>"></td>
@ -1890,7 +1944,7 @@ if($_SERVER["REQUEST_METHOD"] == "POST"){
?> ?>
<tr name="option_templ"> <tr name="option_templ">
<td name="option_seat"> <td name="option_seat">
<a href="" name="option_href" data-toggle="modal">點選</a> <a href="" name="option_href" data-toggle="modal" @click="searchtext = ''">點選</a>
</td> </td>
<td><input type="text" name="option_unit_price" class="form-control dollar-right" size="8" value="<?php echo (isset($v["option_price"])) ? number_format($v["option_price"]) : 0; ?>" readonly></td> <td><input type="text" name="option_unit_price" class="form-control dollar-right" size="8" value="<?php echo (isset($v["option_price"])) ? number_format($v["option_price"]) : 0; ?>" readonly></td>
<td><input type="text" name="option_qty" class="form-control" size="2" maxlength="2" value="<?php echo (isset($v["option_num"])) ? $v["option_num"] : 0; ?>"></td> <td><input type="text" name="option_qty" class="form-control" size="2" maxlength="2" value="<?php echo (isset($v["option_num"])) ? $v["option_num"] : 0; ?>"></td>
@ -1938,8 +1992,10 @@ if($_SERVER["REQUEST_METHOD"] == "POST"){
<td><input type="text" name="except_qty" class="form-control" size="4" maxlength="4" value="<?php echo $v["item_qty"]; ?>"><input type="hidden" name="except_qty_ori" value="<?php echo $v["item_qty"]; ?>"></td> <td><input type="text" name="except_qty" class="form-control" size="4" maxlength="4" value="<?php echo $v["item_qty"]; ?>"><input type="hidden" name="except_qty_ori" value="<?php echo $v["item_qty"]; ?>"></td>
<td><input type="text" name="except_price_bp" class="form-control dollar-right" size="8" value="<?php echo number_format($v["item_price_bp"]); ?>" readonly> <td><input type="text" name="except_price_bp" class="form-control dollar-right" size="8" value="<?php echo number_format($v["item_price_bp"]); ?>" readonly>
<input type="hidden" name="item_group" value="E"> <input type="hidden" name="item_group" value="E">
<a href="javascript:void(0);" name="btnfaci" class="btn btn-danger btn-sm">電梯</a>
<a href="javascript:void(0);" name="btndel3" class="btn btn-danger btn-sm">X</a> <a href="javascript:void(0);" name="btndel3" class="btn btn-danger btn-sm">X</a>
</td> </td>
<td name="mn_relate_facil" nowrap></td>
</tr> </tr>
<?php <?php
} }
@ -1951,8 +2007,10 @@ if($_SERVER["REQUEST_METHOD"] == "POST"){
<td><input type="text" name="except_unit_price" class="form-control dollar-right" size="8"></td> <td><input type="text" name="except_unit_price" class="form-control dollar-right" size="8"></td>
<td><input type="text" name="except_qty" class="form-control" size="4" maxlength="4"></td> <td><input type="text" name="except_qty" class="form-control" size="4" maxlength="4"></td>
<td><input type="text" name="except_price_bp" class="form-control dollar-right" size="8" readonly> <td><input type="text" name="except_price_bp" class="form-control dollar-right" size="8" readonly>
<a href="javascript:void(0);" name="btnfaci" class="btn btn-danger btn-sm">電梯</a>
<a href="javascript:void(0);" name="btndel3" class="btn btn-danger btn-sm">X</a> <a href="javascript:void(0);" name="btndel3" class="btn btn-danger btn-sm">X</a>
</td> </td>
<td name="mn_relate_facil" nowrap></td>
</tr> </tr>
<?php <?php
} }
@ -2342,22 +2400,21 @@ if($_SERVER["REQUEST_METHOD"] == "POST"){
</tr> </tr>
</tbody> </tbody>
</table> </table>
<ul>
<li>營業權限85%以上;85-80%呈至區處長審核;80%以下呈至總經理審核。</li>
</ul>
</div> </div>
<div class="nextline"></div> <div class="nextline"></div>
<ul> <label for="attatch1">報價單</label>
<li>營業權限85%以上;85-80%呈至區處長審核;80%以下呈至總經理審核。</li> <input type="file" name="attatch1" id="attatch1"><a href="javascript:void(0);" name="filedel" class="btn btn-danger btn-sm">X</a>
</ul> <div class="nextline"></div>
<div class="nextline"></div> <label for="attatch2">附表一</label>
<label for="attatch1">報價單</label> <input type="file" name="attatch2" id="attatch2"><a href="javascript:void(0);" name="filedel2" class="btn btn-danger btn-sm">X</a>
<input type="file" name="attatch1" id="attatch1"><a href="javascript:void(0);" name="filedel" class="btn btn-danger btn-sm">X</a> <div class="nextline"></div><br>
<div class="nextline"></div> <button type="submit" name="save" id="save" value="save">保存</button>&nbsp;
<label for="attatch2">附表一</label> <button type="submit" name="submit" id="submit" value="tosign">提交</button>
<input type="file" name="attatch2" id="attatch2"><a href="javascript:void(0);" name="filedel2" class="btn btn-danger btn-sm">X</a>
<div class="nextline"></div><br>
<button type="submit" name="save" id="save" value="save">保存</button>&nbsp;
<button type="submit" name="submit" id="submit" value="tosign">提交</button>
<input type="hidden" name="fp_id_all" id="fp_id_all"> <input type="hidden" name="fp_id_all" id="fp_id_all">
<input type="hidden" name="fp_kind_all" id="fp_kind_all"> <input type="hidden" name="fp_kind_all" id="fp_kind_all">
@ -2413,3 +2470,9 @@ if($_SERVER["REQUEST_METHOD"] == "POST"){
<?php <?php
include "../footer.php"; include "../footer.php";
?> ?>
<script src="./assets/js/alpine.js"></script>
<script>
const options = [...<?php echo json_encode($options); ?>];
</script>

2
wms/mkt/pricereview-record-submit.php

@ -280,7 +280,7 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
} }
// 價審簽核流程 // 價審簽核流程
// <75%以下呈至總經理審核. ($price_rate) // 小於80%呈至總經理審核. ($price_rate)
// 上級主管 > 伃廷 > MAX > 總經理 // 上級主管 > 伃廷 > MAX > 總經理
if ($status == "YS") { if ($status == "YS") {
$ret = []; $ret = [];

2
wms/mkt/pricereview-record-update.php

@ -384,7 +384,7 @@ if(isset($_POST['pmstatus'])) {
} }
// 價審簽核流程 // 價審簽核流程
// <75%以下呈至總經理審核. ($price_rate) // 小於80%呈至總經理審核. ($price_rate)
// 上級主管 > 伃廷 > MAX > 總經理 // 上級主管 > 伃廷 > MAX > 總經理
if ($status == "YS") { if ($status == "YS") {
$manager_arr = pricereview_class($price_rate, $user_id); $manager_arr = pricereview_class($price_rate, $user_id);

4
wms/schedule-index.php

@ -24,7 +24,7 @@ $data = array();
// sql語法存在變數中 // sql語法存在變數中
$page_close = 0; $page_close = 0;
$sql_cmd2 = ""; $sql_cmd2 = "";
$sql_cmd = sql_myself($user_id); $sql_cmd = sql_myself($user_id, "repairerid");
if ($user_department_id == "501" || $user_department_id == "322" || $user_id == "M0012" || $user_id == "M0105") $sql_cmd = ""; if ($user_department_id == "501" || $user_department_id == "322" || $user_id == "M0012" || $user_id == "M0105") $sql_cmd = "";
if (in_array($user_department_id.$user_role_id, $dr_arr)) $sql_cmd = ""; if (in_array($user_department_id.$user_role_id, $dr_arr)) $sql_cmd = "";
//if (empty($sql_cmd)) $sql_cmd = "where "; //if (empty($sql_cmd)) $sql_cmd = "where ";
@ -38,7 +38,7 @@ if (!empty($sql_cmd2)) {
} }
//$sql = "SELECT * FROM schedule $sql_cmd ORDER BY id"; //$sql = "SELECT * FROM schedule $sql_cmd ORDER BY id";
$sql = "SELECT * FROM schedule $sql_cmd ORDER BY id asc"; $sql = "SELECT * FROM schedule $sql_cmd ORDER BY id desc";
if (!$page_close) $sql .= " limit $page_from, $page_each"; if (!$page_close) $sql .= " limit $page_from, $page_each";
//echo $sql; //echo $sql;

Loading…
Cancel
Save