Browse Source

保養價審 獲取標準價

gary
10994015 1 year ago
parent
commit
859d55c047
  1. 44
      wms/cont/api/getElevatorPrice.php
  2. 0
      wms/cont/api/postElevatorPricereview.php
  3. 5
      wms/cont/css/pricereview.css
  4. 2
      wms/cont/css/pricereview.css.map
  5. 5
      wms/cont/css/pricereview.scss
  6. 149
      wms/cont/js/pricereviewAlpine.js
  7. 128
      wms/cont/pricereviewCreate.php
  8. 78
      wms/cont/window-modal/modalElevaotr.php
  9. 2
      wms/contract/contract-new-apply.php
  10. 2
      wms/contract/js/alpine.js

44
wms/cont/api/getElevatorPrice.php

@ -0,0 +1,44 @@
<?php
require_once "../../mkt/conn.php";
$spec = $_GET['spec'];
$person = $_GET['person'];
$stop = $_GET['stop'];
$weight = $_GET['weight'];
$speed = $_GET['speed'];
$m1 = $_GET['m1'];
$method = $_GET['method'];
$cycle = $_GET['cycle'];
if($spec == "MAE100"){
$elevator_type = "A";
}elseif($spec == "MAF100"){
$elevator_type = "B";
}elseif($spec == "MAM200"){
$elevator_type = "D";
}elseif($spec == "MAH100"){
$elevator_type = "E";
}
$sql_str = "SELECT * FROM maintain_standard_option WHERE elevator_type=:elevator_type AND min_speed = :min_speed AND min_persons <= :person AND max_persons >= :person AND is_m1_bundle=:m1 ORDER bY id DESC";
$stmt = $conn->prepare($sql_str);
$stmt->bindParam(':elevator_type', $elevator_type);
$stmt->bindParam(':min_speed', $speed);
$stmt->bindParam(':person', $person);
$stmt->bindParam(':m1', $m1);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if(!$result){
echo 0;
exit;
}
$differ = $stop > $result['max_floors'] ? $result['max_floors'] - $result['min_floors'] : ($stop - $result['min_floors']);
$price = $result['base_price'] + $differ * $result['floors_price'] +$result['m1_bundle_fee'];
if($cycle == 2){
$price += $price * $result['maintenance_fee_coefficient'];
}
if($method == "A"){
$price += $result['all_inclusive_fee'];
}
echo $price;

0
wms/cont/api/postElevatorPricereview.php

5
wms/cont/css/pricereview.css

@ -271,6 +271,11 @@
.window-modal .window-modal-content .window-modal-header > div > input {
width: 250px;
}
.window-modal .window-modal-content input[type=number]::-webkit-outer-spin-button,
.window-modal .window-modal-content input[type=number]::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
.window-modal .window-back {
position: absolute;
top: 0;

2
wms/cont/css/pricereview.css.map

@ -1 +1 @@
{"version":3,"sources":["pricereview.css","pricereview.scss"],"names":[],"mappings":"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","file":"pricereview.css"}
{"version":3,"sources":["pricereview.css","pricereview.scss"],"names":[],"mappings":"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","file":"pricereview.css"}

5
wms/cont/css/pricereview.scss

@ -281,6 +281,11 @@
width: 250px;
}
}
input[type=number]::-webkit-outer-spin-button,
input[type=number]::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
}
.window-back{
position: absolute;

149
wms/cont/js/pricereviewAlpine.js

@ -8,8 +8,22 @@ const pricereviewCreate = ()=>{
other:false,
otherToElevator:false,
},
vol_no: vol_no,
apply_key: apply_key,
customer:customer,
manager:manager,
salesman:salesman,
salesman_name:salesman_name,
pre_order_date:pre_order_date,
address:address,
progress_status:progress_status,
total_spec:0,
elevators:[],
case_name:'', //案件名稱
contract_status:'', // 契約性質
pay_method:'', // 付款方式
startDate:'', //合約開始日期
endDate:'', // 合約結束日期
modalElevatorInfo:{
spec:'',
person:'',
@ -18,9 +32,10 @@ const pricereviewCreate = ()=>{
speed:'',
permitNumber:'', //許可證號碼
brand:'', //品牌
m1:0, //贈送M1
months:12, //保養月數(月)
cycle:'EM', // 保養週期
m1:'N', //贈送M1
months:'', // 保養月數
cycle:'', // 保養週期
method:'', //保養方式
checkYear:'', //竣工檢查年度
lastDate:'', // 上次年檢日期
yearCheckFee:'', //年檢費用
@ -39,6 +54,12 @@ const pricereviewCreate = ()=>{
currentOtherOptionKey:'',
toElevators:[],
toElevatorNo:'',
serviceFee:0,
remark:'',
penalty:'',
deposit_rate:'',
keep_rate:'',
warranty_rate:'',
openCreateElevatorModal(){
this.modalShow.elevator = true;
body.style.overflow = 'hidden';
@ -52,21 +73,33 @@ const pricereviewCreate = ()=>{
weight:'',
stop:'',
speed:'',
permitNumber:'',
brand:'',
m1:0,
startDate:'',
endDate:'',
cycle:'',
checkYear:'',
lastDate:'',
yearCheckFee:'',
price:'',
qty:1,
sale_price:'',
permitNumber:'', //許可證號碼
brand:'', //品牌
m1:'N', //贈送M1
months:'', // 保養月數
cycle:'', // 保養週期
method:'', //保養方式
checkYear:'', //竣工檢查年度
lastDate:'', // 上次年檢日期
yearCheckFee:'', //年檢費用
price:'', //公司發布價(月)
qty:1, //電梯數量
sale_price:'', //契約報價
};
},
createElevatorFn(){
// if(this.modalElevatorInfo.spec == '') return alert("請選擇電梯規格");
// if(this.modalElevatorInfo.person == '') return alert("請選擇人乘");
// if(this.modalElevatorInfo.weight == '') return alert("請輸入載重");
// if(this.modalElevatorInfo.stop == '') return alert("請輸入停數");
// if(this.modalElevatorInfo.speed == '') return alert("請選擇速度");
// if(this.modalElevatorInfo.brand == '') return alert("請選擇品牌");
// if(this.modalElevatorInfo.months == '') return alert("請輸入保養月數");
// if(this.modalElevatorInfo.method == '') return alert("請選擇保養方式");
// if(this.modalElevatorInfo.cycle == '') return alert("請選擇保養週期");
// if(this.modalElevatorInfo.checkYear == '') return alert("請輸入竣工檢查年度");
// if(this.modalElevatorInfo.price == '') return alert("請選擇正確規格");
// if(this.modalElevatorInfo.sale_price == '') return alert("請輸入契約報價");
this.total_spec ++;
this.elevators.push({
id: this.total_spec,
@ -78,8 +111,9 @@ const pricereviewCreate = ()=>{
permitNumber: this.modalElevatorInfo.permitNumber,
brand: this.modalElevatorInfo.brand,
m1: this.modalElevatorInfo.m1,
months: this.modalElevatorInfo.months,
months:this.modalElevatorInfo.months, // 保養月數
cycle: this.modalElevatorInfo.cycle,
method:this.modalElevatorInfo.method, // 保養方法
checkYear: this.modalElevatorInfo.checkYear,
lastDate: this.modalElevatorInfo.lastDate,
yearCheckFee: this.modalElevatorInfo.yearCheckFee,
@ -95,10 +129,10 @@ const pricereviewCreate = ()=>{
const stop = this.elevators[idx].stop;
const weight = this.elevators[idx].weight
const speed = this.elevators[idx].speed;
const permitNumber = this.elevators[idx].permitNumber;
const brand = this.elevators[idx].brand;
const m1 = this.elevators[idx].m1;
const months = this.elevators[idx].months;
const method = this.elevators[idx].method;
const cycle = this.elevators[idx].cycle;
const checkYear = this.elevators[idx].checkYear;
const lastDate = this.elevators[idx].lastDate;
@ -115,10 +149,11 @@ const pricereviewCreate = ()=>{
stop: stop,
weight:weight,
speed: speed,
permitNumber: permitNumber,
permitNumber: '',
brand: brand,
m1: m1,
months: months,
method: method,
cycle: cycle,
checkYear: checkYear,
lastDate: lastDate,
@ -129,6 +164,7 @@ const pricereviewCreate = ()=>{
})
},
removeElevator(id){
if(!confirm('確定刪除該電梯?')) return;
this.elevators = this.elevators.filter(elevator=> elevator.id != id)
},
openCreateOtherOptionFn(){
@ -221,5 +257,82 @@ const pricereviewCreate = ()=>{
removeOtherOption(id){
this.otherOptions = this.otherOptions.filter(option=> option.id != id)
},
get totalPrice(){
let total_price = this.elevators.reduce((accumulator, el) => accumulator + Number(el.price*el.months), 0);
let total_other_price = this.otherOptions.reduce((accumulator, option) => accumulator + Number(option.price*option.num), 0);
return total_price + total_other_price;
},
get totalSalePrice(){
let total_sale_price = this.elevators.reduce((accumulator, el) => accumulator + Number(el.sale_price*el.months), 0);
return total_sale_price + Number(this.serviceFee);
},
get totalElevatorsNum(){
let total_num = this.elevators.reduce((accumulator, el) => accumulator + Number(el.qty), 0);
return total_num;
},
get totalOtherOptionsNum(){
let total_other_num = this.otherOptions.reduce((accumulator, option) => accumulator + Number(option.num), 0);
return total_other_num;
},
get totalOtherOptionsPrice(){
let total_other_price = this.otherOptions.reduce((accumulator, option) => accumulator + Number(option.price*option.num), 0);
return total_other_price;
},
async getModalElevatorPrice(){
const spec = this.modalElevatorInfo.spec
const person = this.modalElevatorInfo.person
const stop = this.modalElevatorInfo.stop
const weight = this.modalElevatorInfo.weight
const speed = this.modalElevatorInfo.speed
const m1 = this.modalElevatorInfo.m1
const method = this.modalElevatorInfo.method
const cycle = this.modalElevatorInfo.cycle
try{
const res = await axios.get('./api/getElevatorPrice.php', {params: {spec: spec, person:person, weight: weight, stop: stop, speed: speed, m1: m1, method: method, cycle:cycle}})
this.modalElevatorInfo.price = res.data;
console.log(res.data);
}catch (error) {
console.error("Error message:", error);
}
},
save(){
const form = new FormData();
form.append('vol_no', this.vol_no);
form.append('apply_key', this.apply_key);
form.append('customer', this.customer);
form.append('address', this.address);
form.append('case_name', this.case_name);
form.append('brand', this.brand);
form.append('num', this.totalElevatorsNum);
form.append('salesman', this.salesman);
form.append('contract_begin_date', this.startDate);
form.append('contract_end_date', this.endDate);
form.append('contract_kind', this.contract_status);
form.append('progress_status', this.progress_status);
form.append('serviceFee', this.serviceFee);
form.append('penalty', this.penalty);
form.append('deposit_rate', this.deposit_rate);
form.append('keep_rate', this.keep_rate);
form.append('warranty_rate', this.warranty_rate);
form.append('remark', this.remark);
form.append('creater', this.user_id);
form.append('pay_method', this.pay_method);
form.append('status', 'Y1');
form.append('elevators', JSON.stringify(this.elevators));
form.append('otherOptions', JSON.stringify(this.otherOptions));
axios.post('./api/postElevatorPricereview.php', form).then(res=>{
console.log(res.data);
if(res.data == 'success'){
alert("保存成功!");
window.location.reload();
}
})
},
submit(){
},
}
}

128
wms/cont/pricereviewCreate.php

@ -68,7 +68,7 @@ function getApplyKey($p_yyyymm, $seq_name){
<tbody>
<tr>
<th>價審單號</th>
<td><input class="form-control" type="text" disabled value="<?php echo $apply_key; ?>" /></td>
<td><input class="form-control" type="text" disabled x-model="apply_key" /></td>
<th>卷號</th>
<td><input class="form-control" type="text" disabled value="<?php echo $hope_customer['vol_no']; ?>" /></td>
<th>現場名稱</th>
@ -92,7 +92,7 @@ function getApplyKey($p_yyyymm, $seq_name){
<table class="table" border="1">
<thead >
<tr class="" >
<th scope="col" class="text-center " colspan="8">價格審查(契約)基本資料</th>
<th scope="col" class="text-center " colspan="10">價格審查(契約)基本資料</th>
</tr>
</thead>
<tbody>
@ -100,25 +100,30 @@ function getApplyKey($p_yyyymm, $seq_name){
<th>契約性質</th>
<td>
<select class="form-control">
<select class="form-control" x-model="contract_status">
<option value="">請選擇</option>
<option value="">新簽約</option>
<option value="">免保轉有費</option>
<option value="">續約</option>
<option value="1">新簽約</option>
<option value="2">免保轉有費</option>
<option value="3">續約</option>
</select>
</td>
<th>付款方式</th>
<td>
<select class="form-control" >
<select class="form-control" x-model="pay_method" >
<option value="">請選擇</option>
<option value="">月付</option>
<option value="">季付</option>
<option value="">半年付</option>
<option value="">年付</option>
<option value="A40003">月繳</option>
<option value="A40004">雙月繳</option>
<option value="A40007">季繳</option>
<option value="A40005">半年繳</option>
<option value="A40006">年繳</option>
</select>
</td>
<th>案件名稱</th>
<td><input class="form-control" type="text" value="" /></td>
<td><input class="form-control" type="text" x-model="case_name" /></td>
<th>合約開始日期</th>
<td><input type="date" class="form-control" x-model="startDate" /></td>
<th>合約結束日期</th>
<td><input type="date" class="form-control" x-model="endDate" /></td>
</tr>
</tbody>
</table>
@ -147,9 +152,8 @@ function getApplyKey($p_yyyymm, $seq_name){
<td colspan=8>
<textarea class="form-control" name="progress" id="progress" cols="20" rows="6" disabled>注意事項:
1.速度單位是 米/分.
2.選擇贈送M1,保養月數需填寫60.
3.標準價格未帶出,請聯係業務部建立該規格報價.
4.無機房速度20~60米 以60米為標準.
2.標準價格未帶出,請聯係業務部建立該規格報價.
3.無機房速度20~60米 以60米為標準.
</textarea>
</td>
</tr>
@ -233,9 +237,9 @@ function getApplyKey($p_yyyymm, $seq_name){
<input type="text" class="form-control" x-model="elevator.permitNumber" />
</td>
<th>品牌</th>
<td colspan="3">
<select class="form-control" x-model="modalElevatorInfo.brand">
<option value="請選擇">請選擇</option>
<td>
<select class="form-control" x-model="elevator.brand">
<option value="">請選擇</option>
<option value='永大'>永大</option>
<option value='三菱'>三菱</option>
<option value='崇友'>崇友</option>
@ -265,64 +269,69 @@ function getApplyKey($p_yyyymm, $seq_name){
<td>
<input type="number" class="form-control" x-model="elevator.checkYear" />
</td>
<th>上次年檢日期</th>
<td>
<input type="date" class="form-control" x-model="elevator.lastDate" />
</td>
</tr>
<tr>
<th>保養開始日期</th>
<th>年檢費用(元)</th>
<td>
<input type="date" class="form-control" x-model="elevator.months" />
<input type="number" class="form-control" x-model="elevator.yearCheckFee" />
</td>
<th>保養結束日期</th>
<th>電梯數量</th>
<td>
<input type="date" class="form-control" x-model="elevator.months" />
<input type="number" class="form-control" x-model="elevator.qty" disabled />
</td>
<th>保養週期</th>
<td>
<select name="" id="" class="form-control" x-model="elevator.cycle">
<option value="">請選擇</option>
<option value="EM">月保</option>
<option value="BW">雙週保</option>
<option value="1">月保</option>
<option value="2">月保兩次</option>
<option value="3">雙月保</option>
<option value="4">季保</option>
</select>
</td>
<th>保養方式</th>
<td>
<select class="form-control">
<select class="form-control" x-model="elevator.method">
<option value="">請選擇</option>
<option value="3">全包</option>
<option value="2">半包</option>
<option value="4">清包</option>
<option value="A">全包</option>
<option value="B">半包</option>
<option value="C">清包</option>
</select>
</td>
<th>送M1</th>
<th>送M1</th>
<td>
<select class="form-control" x-model="elevator.m1">
<option value="0"></option>
<option value="1"></option>
<option value="N"></option>
<option value="Y"></option>
</select>
</td>
</tr>
<tr>
<th>上次年檢日期</th>
<th>公司發布價(月)</th>
<td>
<input type="date" class="form-control" x-model="elevator.lastDate" />
<input type="text" class="form-control" disabled x-model="elevator.price.toLocaleString()" />
</td>
<th>年檢費用(元)</th>
<th>保養月數</th>
<td>
<input type="number" class="form-control" x-model="elevator.yearCheckFee" />
<input type="number" class="form-control" x-model="elevator.months" />
</td>
<th>公司發布價()</th>
<th>公司發布價(總價)</th>
<td>
<input type="number" class="form-control" x-model="elevator.price" />
</td>
<th>電梯數量</th>
<td>
<input type="number" class="form-control" x-model="elevator.qty" disabled />
<input type="text" class="form-control" disabled x-model="(elevator.price * elevator.months).toLocaleString()" />
</td>
<th>契約報價(月)</th>
<td>
<input type="number" class="form-control" x-model="elevator.sale_price" />
</td>
<th>契約報價(總價)</th>
<td>
<input type="text" class="form-control" disabled x-model="(elevator.sale_price * elevator.months).toLocaleString()" />
</td>
</tr>
</tbody>
</template>
@ -376,8 +385,8 @@ function getApplyKey($p_yyyymm, $seq_name){
</template>
<tr x-show="otherOptions.length > 0">
<td colspan=3>小計</td>
<td colspan=1 ><input type="number" class="form-control" disabled :value="totalOtherOptionsNum().toLocaleString()" ></td>
<td colspan=1 ><input type="text" class="form-control" disabled :value="totalOtherOptionsPrice().toLocaleString()" ></td>
<td colspan=1 ><input type="number" class="form-control" disabled :value="totalOtherOptionsNum.toLocaleString()" ></td>
<td colspan=1 ><input type="text" class="form-control" disabled :value="totalOtherOptionsPrice.toLocaleString()" ></td>
<td colspan=3 ></td>
</tr>
</tbody>
@ -395,14 +404,14 @@ function getApplyKey($p_yyyymm, $seq_name){
<th>服務費(介紹費)</th>
</tr>
<tr>
<td><input type="text" class="form-control" x-model="totalPrice().toLocaleString()" disabled style="width:180px" /></td>
<td><input type="text" class="form-control" x-model="totalSalePrice().toLocaleString()" disabled style="width:180px" /></td>
<td><input type="text" class="form-control" x-model="(totalSalePrice() - totalPrice()).toLocaleString()" disabled style="width:180px" /></td>
<td><input type="text" class="form-control" x-model="totalPrice.toLocaleString()" disabled style="width:180px" /></td>
<td><input type="text" class="form-control" x-model="totalSalePrice.toLocaleString()" disabled style="width:180px" /></td>
<td><input type="text" class="form-control" x-model="(totalSalePrice - totalPrice).toLocaleString()" disabled style="width:180px" /></td>
<td>
<input type="text" class="form-control" x-show="totalPrice()!=0" x-model="Math.round(totalSalePrice() / totalPrice() * 100 * 10) /10" disabled />
<input type="text" class="form-control" x-show="totalPrice()==0" value="0" disabled />
<input type="text" class="form-control" x-show="totalPrice!=0" x-model="Math.round(totalSalePrice / totalPrice * 100* 10) /10 + '%'" disabled />
<input type="text" class="form-control" x-show="totalPrice==0" value="0" disabled />
</td>
<td><input type="text" class="form-control" x-model="totalElevatorsNum()" disabled /></td>
<td><input type="text" class="form-control" x-model="totalElevatorsNum" disabled /></td>
<td><input type="text" class="form-control" x-model="serviceFee" style="width:150px" /></td>
</tr>
<tr>
@ -436,11 +445,11 @@ function getApplyKey($p_yyyymm, $seq_name){
<div class="filediv">
<label style="font-size:13px">▪️ 營業權限85%以上;85-80%呈至區處長審核;80%以下呈至總經理審核。</label>
<label for="">
<p>報價單</p>
<p style="width:120px">報價單</p>
<input type="file" class="form-control" multiple draggable="true" @change="uploadFiles($event, 1)" />
</label>
<label for="">
<p></p>
<p style="width:120px">合約用印申請</p>
<input type="file" class="form-control" multiple draggable="true" @change="uploadFiles($event, 2)" />
</label>
<label for="">
@ -460,4 +469,17 @@ function getApplyKey($p_yyyymm, $seq_name){
<script>
const body = document.querySelector('body');
const vol_no = '<?php echo $hope_customer['vol_no']; ?>';
const apply_key = '<?php echo $apply_key; ?>';
const customer = '<?php echo $hope_customer['customer']; ?>';
const manager = '<?php echo $hope_customer['manager']; ?>';
const salesman = '<?php echo $hope_customer['salesman'] ?>';
const salesman_name = '<?php echo $hope_customer['salesman_name'] ?>';
const pre_order_date = '<?php echo $hope_customer['pre_order_date']; ?>';
const address = '<?php echo $hope_customer['address']; ?>';
const brand = '<?php echo $hope_customer['brand']; ?>';
const progress_status = '<?php echo $hope_customer['progress_status']; ?>';
const user_id = '<?php echo $user_id ?>';
const user_name = '<?php echo $user_name ?>';
</script>

78
wms/cont/window-modal/modalElevaotr.php

@ -15,21 +15,16 @@
</tr>
<tr>
<td>
<select class="form-control" x-model="modalElevatorInfo.spec">
<select class="form-control" x-model="modalElevatorInfo.spec" @change="getModalElevatorPrice()">
<option value="">請選擇</option>
<option value="MAE100">MAE100有機房</option>
<option value="MAM200">MAM200無機房</option>
<option value="MAH100">MAH100小電梯</option>
<option value="MAF100">MAF100貨梯(有機房)</option>
<option value="MAQ100">MAQ100強趨梯</option>
<option value="MAP100">MAP100平台梯</option>
<option value="M1">M1(系統更新)</option>
<option value="M1+M4(1:1)">M1+M4(1:1)系統+主機</option>
<option value="M1+M4(2:1)">M1+M4(2:1)系統+主機</option>
</select>
</td>
<td>
<select name="" id="" class="form-control" x-model="modalElevatorInfo.person">
<select name="" id="" class="form-control" x-model="modalElevatorInfo.person" @change="getModalElevatorPrice()">
<option value="">請選擇</option>
<option value="6">6</option>
<option value="8">8</option>
@ -45,21 +40,21 @@
</select>
</td>
<td>
<input type="number" class="form-control" x-model="modalElevatorInfo.weight" />
<input type="number" class="form-control" x-model="modalElevatorInfo.weight" @change="getModalElevatorPrice()" />
</td>
<td>
<input type="number" class="form-control" x-model="modalElevatorInfo.stop" />
<input type="number" class="form-control" x-model="modalElevatorInfo.stop" @change="getModalElevatorPrice()" />
</td>
</tr>
<tr class="table-active">
<th>速度</th>
<th>電梯許可證號</th>
<th>電梯數量</th>
<th>品牌</th>
<th>贈送M1</th>
</tr>
<tr>
<td>
<select name="" id="" class="form-control" style="width:93px" x-model="modalElevatorInfo.speed" @change="getModalElevatorPrice()" >
<select name="" id="" class="form-control" x-model="modalElevatorInfo.speed" @change="getModalElevatorPrice()" @change="getModalElevatorPrice()" >
<option value="">請選擇</option>
<option value="9">9</option>
<option value="24">24</option>
@ -73,11 +68,11 @@
</select>
</td>
<td>
<input type="text" class="form-control" x-model="modalElevatorInfo.permitNumber" />
<input type="number" class="form-control" x-model="modalElevatorInfo.qty" disabled />
</td>
<td>
<select class="form-control" x-model="modalElevatorInfo.brand">
<option value="請選擇">請選擇</option>
<option value="">請選擇</option>
<option value='永大'>永大</option>
<option value='三菱'>三菱</option>
<option value='崇友'>崇友</option>
@ -104,40 +99,41 @@
</select>
</td>
<td>
<select class="form-control" x-model="modalElevatorInfo.m1">
<option value="0"></option>
<option value="1"></option>
<select class="form-control" x-model="modalElevatorInfo.m1" @change="getModalElevatorPrice()">
<option value="N"></option>
<option value="Y"></option>
</select>
</td>
</tr>
<tr class="table-active">
<th colspan=2>保養開始日期</th>
<th colspan=2>保養結束日期</th>
<th colspan=2>電梯許可證號</th>
<th colspan=2>保養方式</th>
</tr>
<tr class="table-active">
<td colspan=2><input type="date" class="form-control" x-model="modalElevatorInfo.startDate" /></td>
<td colspan=2><input type="date" class="form-control" x-model="modalElevatorInfo.endDate" /></td>
<td colspan=2><input type="number" class="form-control" x-model="modalElevatorInfo.permitNumber" /></td>
<td colspan=2>
<select class="form-control" x-model="modalElevatorInfo.method" @change="getModalElevatorPrice()">
<option value="">請選擇</option>
<option value="A">全包</option>
<option value="B">半包</option>
<option value="C">清包</option>
</select>
</td>
</tr>
<tr class="table-active">
<th>保養方式</th>
<th>保養週期</th>
<th>竣工檢查年度</th>
<th>上次年檢日期</th>
<th>年檢費用(元)</th>
</tr>
<tr>
<td>
<select class="form-control">
<option value="">請選擇</option>
<option value="3">全包</option>
<option value="2">半包</option>
<option value="4">清包</option>
</select>
</td>
<td>
<select name="" id="" class="form-control" x-model="modalElevatorInfo.cycle">
<select name="" id="" class="form-control" x-model="modalElevatorInfo.cycle" @change="getModalElevatorPrice()">
<option value="">請選擇</option>
<option value="">月保</option>
<option value="">雙週保</option>
<option value="1">月保</option>
<option value="2">月保兩次</option>
<option value="3">雙月保</option>
<option value="4">季保</option>
</select>
</td>
<td>
@ -146,32 +142,36 @@
<td>
<input type="date" class="form-control" x-model="modalElevatorInfo.lastDate" />
</td>
<td>
<input type="number" class="form-control" x-model="modalElevatorInfo.yearCheckFee" />
</td>
</tr>
<tr class="table-active">
<th>年檢費用(元)</th>
<th>公司發布價(月)</th>
<th>電梯數量</th>
<th>保養月數</th>
<th>契約報價(月)</th>
<th>契約報價總額</th>
</tr>
<tr>
<td>
<input type="number" class="form-control" x-model="modalElevatorInfo.yearCheckFee" />
<input type="text" class="form-control" disabled x-model="modalElevatorInfo.price.toLocaleString()" />
</td>
<td>
<input type="number" class="form-control" x-model="modalElevatorInfo.price" />
<input type="number" class="form-control" x-model="modalElevatorInfo.months" />
</td>
<td>
<input type="number" class="form-control" x-model="modalElevatorInfo.qty" disabled />
<input type="number" class="form-control" x-model="modalElevatorInfo.sale_price" />
</td>
<td>
<input type="number" class="form-control" x-model="modalElevatorInfo.sale_price" />
<input type="text" class="form-control" disabled x-model="(modalElevatorInfo.sale_price * modalElevatorInfo.months).toLocaleString()" />
</td>
</tr>
</table>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" @click="hideCreateElevatorModal()">關閉</button>
<button type="button" class="btn btn-secondary" @click="hideCreateElevatorModal()">關閉</button>
<button type="button" class="btn btn-primary" @click="createElevatorFn()">新增</button>
</div>
</div>

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

@ -714,7 +714,7 @@ $para = "function_name=pricereview&" . $token_link;
const total_items = <?php echo $contract['total_items'] ?? ''; ?>;
const contract_new_apply_id = <?php echo $contract_new_apply_id; ?>;
const originfiles = [...<?php echo json_encode($files) ?? []; ?>];
const description = '<?php echo $contract['description']; ?>';
const description = `<?php echo $contract['description']; ?>`;
const contractstatus = <?php echo $contract['status']; ?>;
const progress = <?php echo $contract['progress']; ?>;
</script>

2
wms/contract/js/alpine.js

@ -23,7 +23,7 @@ const contractDownload = () => {
data: {
illustrate: {
editshow: false,
plaintext: '茲因甲方向乙方訂購電梯,並委由乙方安裝系爭電梯,經雙方同意共同訂立本合約書,其條款如下:'
plaintext: '茲因甲方向乙方訂購電梯,並委由乙方安裝新增電梯,經雙方同意共同訂立本合約書,其條款如下:'
},
partyA: {
editshow: false,

Loading…
Cancel
Save