67 changed files with 2091 additions and 352 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,17 @@ |
|||
<?php |
|||
|
|||
require_once("../conn.php"); |
|||
|
|||
$model = $_GET['model']; |
|||
|
|||
$sql_str = "SELECT id, model, price FROM facility_price WHERE model = :model ORDER BY id DESC"; |
|||
$stmt = $conn->prepare($sql_str); |
|||
$stmt->bindParam(':model', $model); |
|||
$stmt->execute(); |
|||
$el = $stmt->fetch(PDO::FETCH_ASSOC); |
|||
if($el){ |
|||
$price = $el['price']; |
|||
}else{ |
|||
$price = null; |
|||
} |
|||
echo $price; |
@ -0,0 +1,204 @@ |
|||
<?php |
|||
require_once("../conn.php"); |
|||
date_default_timezone_set('Asia/Taipei'); |
|||
|
|||
$contractno = $_POST['contractno']; |
|||
$ekind = $_POST['ekind']; |
|||
$person = $_POST['person']; |
|||
$company = $_POST['company']; |
|||
$case_name = $_POST['case_name']; |
|||
$address = $_POST['address']; |
|||
$compete = ""; |
|||
$price_lowest = $_POST['price_lowest']; |
|||
$price_total = $_POST['price_total']; |
|||
$price_rate = $_POST['price_rate']; |
|||
$special_fee = $_POST['special_fee']; |
|||
$predeal_date = $_POST['predeal_date']; |
|||
$penalty = $_POST['penalty']; |
|||
$deposit_rate = $_POST['deposit_rate']; |
|||
$warranty_rate = $_POST['warranty_rate']; |
|||
$keep_rate = $_POST['keep_rate']; |
|||
$memo = $_POST['memo']; |
|||
$status = $_POST['status']; |
|||
$attatch1 = $_POST['attatch1'] =='' ? NULL : $_POST['attatch1']; |
|||
$attatch2 = $_POST['attatch2'] =='' ? NULL : $_POST['attatch2']; |
|||
$creater = "M0174"; |
|||
$create_at = date("Y-m-d H:i:s"); |
|||
|
|||
|
|||
$elevators = $_POST['elevators']; |
|||
$options = $_POST['options']; |
|||
$otherOptions = $_POST['otherOptions']; |
|||
$maintainOptions = $_POST['maintainOptions']; |
|||
|
|||
$paymentRatio = $_POST['paymentRatio']; |
|||
|
|||
$conn->beginTransaction(); |
|||
|
|||
try{ |
|||
|
|||
$sql_str = "INSERT INTO pricereview_main (contractno, ekind, person, company, case_name, address, compete, price_lowest, price_total, price_rate, special_fee, predeal_date, facilitok_date, penalty, deposit_rate, keep_rate, warranty_rate, memo, status, attatch1, attatch2, creater, create_at) |
|||
VALUES (:contractno, :ekind, :person, :company, :case_name, :address, :compete, :price_lowest, :price_total, :price_rate, :special_fee, :predeal_date, :facilitok_date, :penalty, :deposit_rate, :keep_rate, :warranty_rate, :memo, :status, :attatch1, :attatch2, :creater, :create_at)"; |
|||
$stmt = $conn->prepare($sql_str); |
|||
$stmt->bindParam(':contractno', $contractno); |
|||
$stmt->bindParam(':ekind', $ekind); |
|||
$stmt->bindParam(':person', $person); |
|||
$stmt->bindParam(':company', $company); |
|||
$stmt->bindParam(':case_name', $case_name); |
|||
$stmt->bindParam(':address', $address); |
|||
$stmt->bindParam(':compete', $compete); |
|||
$stmt->bindParam(':price_lowest', $price_lowest); |
|||
$stmt->bindParam(':price_total', $price_total); |
|||
$stmt->bindParam(':price_rate', $price_rate); |
|||
$stmt->bindParam(':special_fee', $special_fee); |
|||
$stmt->bindParam(':predeal_date', $predeal_date); |
|||
$stmt->bindParam(':facilitok_date', $facilitok_date); |
|||
$stmt->bindParam(':penalty', $penalty); |
|||
$stmt->bindParam(':deposit_rate', $deposit_rate); |
|||
$stmt->bindParam(':keep_rate', $keep_rate); |
|||
$stmt->bindParam(':warranty_rate', $warranty_rate); |
|||
$stmt->bindParam(':memo', $memo); |
|||
$stmt->bindParam(':status', $status); |
|||
$stmt->bindParam(':attatch1', $attatch1); |
|||
$stmt->bindParam(':attatch2', $attatch2); |
|||
$stmt->bindParam(':creater', $creater); |
|||
$stmt->bindParam(':create_at', $create_at); |
|||
$stmt->execute(); |
|||
$mid = $conn->lastInsertId(); |
|||
|
|||
//insert 整機單價 |
|||
|
|||
|
|||
//insert options 加價 |
|||
$sql_str = "INSERT INTO pricereview_item (mid, price_id, item_no, item_group, item_spec, option_relate_spec, item_unit_price, item_qty, item_price_bp) |
|||
VALUES (:mid, :price_id, :item_no, :item_group, :item_spec, :option_relate_spec, :item_unit_price, :item_qty, :item_price_bp)"; |
|||
|
|||
foreach(json_decode($options, true) as $option){ |
|||
$price_id = $option['id']; |
|||
$item_no = $option['key'] + 1; |
|||
$item_group = "B"; |
|||
$item_spec = $option['name'] . $option['memo']; |
|||
$option_relate_spec = $option['toElevator'][0]['id']; |
|||
$item_unit_price = $option['price']; |
|||
$item_qty = $option['qty']; |
|||
$item_price_bp = $option['price'] * $option['qty']; |
|||
|
|||
$stmt = $conn->prepare($sql_str); |
|||
$stmt->bindParam(':mid', $mid); |
|||
$stmt->bindParam(':price_id', $price_id); |
|||
$stmt->bindParam(':item_no', $item_no); |
|||
$stmt->bindParam(':item_group', $item_group); |
|||
$stmt->bindParam(':item_spec', $item_spec); |
|||
$stmt->bindParam(':option_relate_spec', $option_relate_spec); |
|||
$stmt->bindParam(':item_unit_price', $item_unit_price); |
|||
$stmt->bindParam(':item_qty', $item_qty); |
|||
$stmt->bindParam(':item_price_bp', $item_price_bp); |
|||
$stmt->execute(); |
|||
} |
|||
|
|||
//insert 除外項目 |
|||
$sql_str = "INSERT INTO pricereview_item (mid, item_no, item_group, item_spec, option_relate_spec, item_unit_price, item_qty, item_price_bp) |
|||
VALUES (:mid, :item_no, :item_group, :item_spec, :option_relate_spec, :item_unit_price, :item_qty, :item_price_bp)"; |
|||
|
|||
foreach(json_decode($otherOptions, true) as $option){ |
|||
$item_no = $option['id'] + 1; |
|||
$item_group = "E"; |
|||
$item_spec = $option['name']; |
|||
$option_relate_spec = $option['toElevator'][0]['id']; |
|||
$item_unit_price = $option['price']; |
|||
$item_qty = $option['num']; |
|||
$item_price_bp = $option['price'] * $option['num']; |
|||
|
|||
$stmt = $conn->prepare($sql_str); |
|||
$stmt->bindParam(':mid', $mid); |
|||
$stmt->bindParam(':item_no', $item_no); |
|||
$stmt->bindParam(':item_group', $item_group); |
|||
$stmt->bindParam(':item_spec', $item_spec); |
|||
$stmt->bindParam(':option_relate_spec', $option_relate_spec); |
|||
$stmt->bindParam(':item_unit_price', $item_unit_price); |
|||
$stmt->bindParam(':item_qty', $item_qty); |
|||
$stmt->bindParam(':item_price_bp', $item_price_bp); |
|||
$stmt->execute(); |
|||
} |
|||
|
|||
$sql_str = "INSERT INTO pricereview_item (mid, item_no, item_group, item_spec, option_relate_spec, item_unit_price, item_qty, item_price_bp) |
|||
VALUES (:mid, :item_no, :item_group, :item_spec, :option_relate_spec, :item_unit_price, :item_qty, :item_price_bp)"; |
|||
//insert 保養延長 |
|||
foreach(json_decode($maintainOptions, true) as $option){ |
|||
$item_no = $option['id'] + 1; |
|||
$item_group = "D"; |
|||
$item_spec = $option['toElevator'][0]['model']; |
|||
$option_relate_spec = $option['toElevator'][0]['id']; |
|||
$item_unit_price = $option['price']; |
|||
$item_qty = $option['num']; |
|||
$item_price_bp = $option['price'] * $option['num']; |
|||
$stmt = $conn->prepare($sql_str); |
|||
$stmt->bindParam(':mid', $mid); |
|||
$stmt->bindParam(':item_no', $item_no); |
|||
$stmt->bindParam(':item_group', $item_group); |
|||
$stmt->bindParam(':item_spec', $item_spec); |
|||
$stmt->bindParam(':option_relate_spec', $option_relate_spec); |
|||
$stmt->bindParam(':item_unit_price', $item_unit_price); |
|||
$stmt->bindParam(':item_qty', $item_qty); |
|||
$stmt->bindParam(':item_price_bp', $item_price_bp); |
|||
$stmt->execute(); |
|||
} |
|||
|
|||
|
|||
$sql_str = "INSERT INTO pricereview_pay (mid, pay_kind, pay_scale, pay_amount, pay_period) |
|||
VALUES (:mid, :pay_kind, :pay_scale, :pay_amount, :pay_period)"; |
|||
|
|||
foreach(json_decode($paymentRatio, true) as $key=>$pay){ |
|||
$pay_kind = $key +1; |
|||
$pay_scale = $pay['scale'] == '' ? 0 : $pay['scale']; |
|||
$pay_amount = $pay['scale']/100 * $price_total; |
|||
$pay_period = $pay['ticket']; |
|||
$stmt = $conn->prepare($sql_str); |
|||
$stmt->bindParam(':mid', $mid); |
|||
$stmt->bindParam(':pay_kind', $pay_kind); |
|||
$stmt->bindParam(':pay_scale', $pay_scale); |
|||
$stmt->bindParam(':pay_amount', $pay_amount); |
|||
$stmt->bindParam(':pay_period', $pay_period); |
|||
$stmt->execute(); |
|||
} |
|||
|
|||
$sql_str = "SELECT * FROM account WHERE accountid = :accountid"; |
|||
$stmt = $conn->prepare($sql_str); |
|||
$stmt->bindParam(':accountid', $creater); |
|||
$stmt->execute(); |
|||
$account = $stmt->fetch(PDO::FETCH_ASSOC); |
|||
$manager = $account['manager']; |
|||
|
|||
$sign1 = "$manager,,"; //區處長 |
|||
$sign2 = NULL; // 業務承辦人 |
|||
$sign3 = "M0060,,"; //業務部協理 |
|||
|
|||
//是否呈核至總經理(M0006) |
|||
if($price_rate < 80 || $special_fee > 0){ |
|||
$sign4 = "M0006,,"; |
|||
$sign_total = 4; |
|||
}else{ |
|||
$sign4 = NULL; |
|||
$sign_total = 3; |
|||
} |
|||
|
|||
$sql_str = "INSERT INTO pricereview_sign (mid, sign1, sign2, sign3, sign4, sign_total) |
|||
VALUES (:mid, :sign1, :sign2, :sign3, :sign4, :sign_total)"; |
|||
$stmt = $conn->prepare($sql_str); |
|||
$stmt->bindParam(':mid', $mid); |
|||
$stmt->bindParam(':sign1', $sign1); |
|||
$stmt->bindParam(':sign2', $sign2); |
|||
$stmt->bindParam(':sign3', $sign3); |
|||
$stmt->bindParam(':sign4', $sign4); |
|||
$stmt->bindParam(':sign_total', $sign_total); |
|||
$stmt->execute(); |
|||
|
|||
|
|||
echo "success"; |
|||
|
|||
$conn->commit(); |
|||
}catch (PDOException $e) { |
|||
$conn->rollback(); |
|||
echo $e->getMessage(); |
|||
die('Error!:' . $e->getMessage()); |
|||
} |
@ -1,7 +1,600 @@ |
|||
const pricereviewCreate = ()=>{ |
|||
return { |
|||
init(){ |
|||
this.elevators = elevators; |
|||
console.log(this.elevators); |
|||
console.log(this.total_spec); |
|||
}, |
|||
|
|||
openFn:{ |
|||
4:'2U', |
|||
5:"4PCO", |
|||
7:"6PCO", |
|||
8:"2S", |
|||
9:"CO" |
|||
}, |
|||
optionalArr: { |
|||
1:'標配', |
|||
2:'選配', |
|||
3:'選配', |
|||
}, |
|||
total_spec: total_spec, |
|||
options: options, |
|||
// orioptions: options,
|
|||
searchtext: '', |
|||
kind: 1, |
|||
subkind: 1, |
|||
buttons: [], |
|||
modalSelectedOptions: {}, |
|||
selectedOptions:[], |
|||
elevators: [], |
|||
toElevators:[], |
|||
toElevatorNo: '', |
|||
currentOptionKey: '', |
|||
currentOtherOptionKey: '', |
|||
currentMaintainOptionKey: '', |
|||
optionKey:0, |
|||
otherOptionKey:0, |
|||
maintainOptionKey:0, |
|||
modalElevatorInfo:{ |
|||
spec:'', |
|||
person:'', |
|||
stop:'', |
|||
speed:'', |
|||
open:'CO', |
|||
num: 1, |
|||
price:'', |
|||
sale_price:'', |
|||
}, |
|||
otherOptions: [], |
|||
modalOtherOptionInfo:{ |
|||
pr_no:"", |
|||
name:"", |
|||
price: 0, |
|||
num:"", |
|||
}, |
|||
maintainOptions:[], |
|||
modalMaintainInfo:{ |
|||
price:0, |
|||
num:"", |
|||
memo:"", |
|||
}, |
|||
paymentRatio:[ |
|||
{ |
|||
scale: 20, |
|||
ticket: 30, |
|||
}, |
|||
{ |
|||
scale: 0, |
|||
ticket: 30, |
|||
}, |
|||
{ |
|||
scale: 50, |
|||
ticket: 30, |
|||
}, |
|||
{ |
|||
scale: 0, |
|||
ticket: 30, |
|||
}, |
|||
{ |
|||
scale: 20, |
|||
ticket: 30, |
|||
}, |
|||
{ |
|||
scale: 10, |
|||
ticket: 30, |
|||
}, |
|||
{ |
|||
scale: 0, |
|||
ticket: 30, |
|||
}, |
|||
], |
|||
serviceFee:0, |
|||
transactionDate: pre_order_date, |
|||
shippingDate:'', |
|||
remark:'', |
|||
async getElevatorPrice(idx){ |
|||
const spec = this.elevators[idx].specifications |
|||
const person = this.elevators[idx].person |
|||
const stop = this.elevators[idx].stop |
|||
const open_converted = this.elevators[idx].open_converted |
|||
const speed = this.elevators[idx].speed |
|||
const model = spec + '-' + person + '*' + stop + '-' + open_converted + speed; |
|||
console.log(model); |
|||
try{ |
|||
const res = await axios.get("./api/getElevatorPrice.php", {params: {model: model}}) |
|||
console.log(res.data); |
|||
if(res.data == null || res.data == ""){ |
|||
console.log("公司並無提供此規格!!"); |
|||
} |
|||
this.elevators[idx].price = res.data |
|||
}catch (error) { |
|||
console.error("Error fetching elevator price:", error); |
|||
} |
|||
|
|||
}, |
|||
async getModalElevatorPrice(){ |
|||
let model = this.modalElevatorInfo.spec + '-' + this.modalElevatorInfo.person + '*' + this.modalElevatorInfo.stop + '-' + this.modalElevatorInfo.open + this.modalElevatorInfo.speed; |
|||
try{ |
|||
const res = await axios.get("./api/getElevatorPrice.php", {params: {model: model}}) |
|||
console.log(res.data); |
|||
if(res.data == null || res.data == ""){ |
|||
console.log("公司並無提供此規格!!"); |
|||
} |
|||
this.modalElevatorInfo.price = res.data |
|||
}catch (error) { |
|||
console.error("Error fetching elevator price:", error); |
|||
} |
|||
}, |
|||
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 == 1) { |
|||
this.buttons = [] |
|||
} |
|||
}, |
|||
optionSubCategory: 1, |
|||
initOptinos(){ |
|||
this.options.forEach(option=>{ |
|||
option.isShow = 1; |
|||
}) |
|||
}, |
|||
searchOptions(kind=this.kind, subkind=this.subkind){ |
|||
if(kind!=null) this.kind = kind; |
|||
if(subkind!=null) this.subkind = subkind; |
|||
this.initOptinos(); |
|||
this.initButtons(kind); |
|||
this.options.forEach(option=>{ |
|||
if(option.kind != this.kind && this.kind != 1){ |
|||
option.isShow = 0; |
|||
}else{ |
|||
if(option.subkind != this.subkind && this.subkind != 1){ |
|||
option.isShow = 0; |
|||
} |
|||
} |
|||
if(option.isShow == 1){ |
|||
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 = '' |
|||
if(String(option.id).includes(this.searchtext) || option.group_name.includes(this.searchtext) || option.memo.toLowerCase().includes(this.searchtext) || option.spec.toLowerCase().includes(this.searchtext) || option.unit.includes(this.searchtext) || String(option.price).includes(this.searchtext)){ |
|||
option.isShow = 1 |
|||
}else{ |
|||
option.isShow = 0 |
|||
} |
|||
} |
|||
}) |
|||
}, |
|||
selectOption(idx, id, name, price, memo){ |
|||
this.options[idx].selected = this.options[idx].selected==1 ? 0 : 1; |
|||
|
|||
if(this.modalSelectedOptions.hasOwnProperty(idx)){ |
|||
delete this.modalSelectedOptions[idx]; |
|||
}else{ |
|||
//this.optionKey => 已選option 流水號, idx:option表內的流水號, id:option 資料庫的ID
|
|||
this.modalSelectedOptions[idx] = {key:this.optionKey, 'idx':idx, 'id': id, 'name': name, 'price': price, qty:1, 'memo': memo, 'toElevator':[] } |
|||
} |
|||
this.optionKey ++; |
|||
}, |
|||
initModalSelectedOptions(){ |
|||
this.modalSelectedOptions = {} |
|||
this.options.forEach(option=>{ |
|||
option.selected = 0 |
|||
}) |
|||
this.$refs.optionsModal.style.display = "block" |
|||
body.style.overflow = 'hidden' |
|||
|
|||
}, |
|||
chkOptions(){ |
|||
Object.keys(this.modalSelectedOptions).forEach(option=>{ |
|||
this.selectedOptions.push(this.modalSelectedOptions[option]) |
|||
}) |
|||
console.log(this.selectedOptions); |
|||
this.$refs.optionsModal.style.display = 'none'; |
|||
}, |
|||
hideOptionsModal(){ |
|||
this.$refs.optionsModal.style.display = 'none'; |
|||
body.style.overflow = 'auto' |
|||
}, |
|||
totalElevatorsPrice(){ |
|||
return this.elevators.reduce((total, elevator) => { |
|||
return total + (elevator.spec_num * elevator.price); |
|||
}, 0); |
|||
}, |
|||
totalElevatorsNum(){ |
|||
return this.elevators.reduce((total, elevator) => { |
|||
return total + Number(elevator.spec_num); |
|||
}, 0) |
|||
}, |
|||
totalElevatorsSalePrice(){ |
|||
return this.elevators.reduce((total, elevator) => { |
|||
return total + (elevator.spec_num * elevator.spec_price); |
|||
}, 0); |
|||
}, |
|||
totalOptionsPrice(){ |
|||
return this.selectedOptions.reduce((total, option) => { |
|||
return total + (option.qty * option.price); |
|||
}, 0); |
|||
}, |
|||
openAddElevatorFn(){ |
|||
|
|||
}, |
|||
createElevatorFn(){ |
|||
if(this.modalElevatorInfo.spec == '') return alert("請選擇電梯規格"); |
|||
if(this.modalElevatorInfo.stop == '') return alert("請填入停數"); |
|||
if(this.modalElevatorInfo.speed == '') return alert("請選擇速度"); |
|||
if(this.modalElevatorInfo.open == '') return alert("請選擇開梯方式"); |
|||
if(this.modalElevatorInfo.person == '') return alert("請填入人乘/載重"); |
|||
if(this.modalElevatorInfo.num == '') return alert("請填入數量"); |
|||
if(this.modalElevatorInfo.sale_price == '') return alert("請填入售價"); |
|||
this.total_spec ++; |
|||
this.elevators.push({ |
|||
id: this.total_spec, |
|||
specifications: this.modalElevatorInfo.spec, |
|||
person: this.modalElevatorInfo.person, |
|||
stop: this.modalElevatorInfo.stop, |
|||
speed: this.modalElevatorInfo.speed, |
|||
open_converted: this.modalElevatorInfo.open, |
|||
spec_price: this.modalElevatorInfo.sale_price, |
|||
price: this.modalElevatorInfo.price, |
|||
open:'', |
|||
spec_num: this.modalElevatorInfo.num, |
|||
}); |
|||
this.modalElevatorInfo = { |
|||
spec:'', |
|||
person:'', |
|||
stop:'', |
|||
speed:'', |
|||
open:'CO', |
|||
num: 1, |
|||
price:'', |
|||
sale_price:'', |
|||
}; |
|||
this.$refs.closeCreateElevatorModalBtn.click(); |
|||
}, |
|||
copyElevator(idx){ |
|||
const spec = this.elevators[idx].specifications |
|||
const person = this.elevators[idx].person |
|||
const stop = this.elevators[idx].stop |
|||
const open_converted = this.elevators[idx].open_converted |
|||
const speed = this.elevators[idx].speed |
|||
const spec_price = this.elevators[idx].spec_price |
|||
const open = this.elevators[idx].open |
|||
const spec_num = this.elevators[idx].spec_num |
|||
const price = this.elevators[idx].price |
|||
|
|||
this.total_spec ++; |
|||
this.elevators.push({ |
|||
id: this.total_spec, |
|||
specifications: spec, |
|||
person: person, |
|||
stop: stop, |
|||
speed: speed, |
|||
open_converted: open_converted, |
|||
spec_price: spec_price, |
|||
price: price, |
|||
open: open, |
|||
spec_num: spec_num, |
|||
}); |
|||
console.log(this.elevators); |
|||
}, |
|||
addOptionToElevator(key){ |
|||
this.currentOptionKey = key; |
|||
this.toElevators = []; |
|||
this.toElevatorNo = ""; |
|||
const matchElevators = this.selectedOptions.filter(option=> option.key == key)[0].toElevator.map(elevator=> elevator.id) |
|||
console.log(matchElevators); |
|||
this.toElevatorNo = matchElevators[0] |
|||
this.elevators.forEach(elevator=>{ |
|||
if(elevator.price > 0){ |
|||
this.toElevators.push({ |
|||
id: elevator.id, |
|||
model: elevator.specifications + '-' + elevator.person + '*' + elevator.stop + '-' + elevator.open_converted + elevator.speed, |
|||
checked: matchElevators.includes(elevator.id) ? 1: 0, |
|||
}) |
|||
} |
|||
}) |
|||
}, |
|||
addOtherOptionToElevator(id){ |
|||
this.currentOtherOptionKey = id; |
|||
this.toElevators = []; |
|||
this.toElevatorNo = ""; |
|||
const matchElevators = this.otherOptions.filter(option=> option.id == id)[0].toElevator.map(elevator=> elevator.id) |
|||
this.toElevatorNo = matchElevators[0] |
|||
this.elevators.forEach(elevator=>{ |
|||
if(elevator.price > 0){ |
|||
this.toElevators.push({ |
|||
id: elevator.id, |
|||
model: elevator.specifications + '-' + elevator.person + '*' + elevator.stop + '-' + elevator.open_converted + elevator.speed, |
|||
checked: matchElevators.includes(elevator.id) ? 1: 0, |
|||
}) |
|||
} |
|||
}) |
|||
}, |
|||
chkOptionToElevators(){ |
|||
const checkedOptions = []; |
|||
// this.toElevators.forEach(elevator=>{
|
|||
// if(elevator.checked){
|
|||
// checkedOptions.push({
|
|||
// id: elevator.id,
|
|||
// model: elevator.model,
|
|||
// });
|
|||
// }
|
|||
// })
|
|||
const matchElevators = this.elevators.filter(elevator=> elevator.id == this.toElevatorNo)[0] |
|||
checkedOptions.push({ |
|||
id: this.toElevatorNo, |
|||
model: matchElevators['specifications'] + '-' + matchElevators['person'] + '*' + matchElevators['stop'] + '-' + matchElevators['open_converted'] + matchElevators['speed'], |
|||
}) |
|||
this.selectedOptions.forEach(option=>{ |
|||
if(option.key == this.currentOptionKey){ |
|||
option.toElevator = []; |
|||
option.toElevator.push(...checkedOptions) |
|||
} |
|||
}) |
|||
this.currentOptionKey = '' |
|||
}, |
|||
chkOtherOptionToElevators(){ |
|||
const checkedOptions = []; |
|||
// this.toElevators.forEach(elevator=>{
|
|||
// if(elevator.checked){
|
|||
// checkedOptions.push({
|
|||
// id: elevator.id,
|
|||
// model: elevator.model,
|
|||
// });
|
|||
// }
|
|||
// })
|
|||
const matchElevators = this.elevators.filter(elevator=> elevator.id == this.toElevatorNo)[0] |
|||
checkedOptions.push({ |
|||
id: this.toElevatorNo, |
|||
model: matchElevators['specifications'] + '-' + matchElevators['person'] + '*' + matchElevators['stop'] + '-' + matchElevators['open_converted'] + matchElevators['speed'], |
|||
}) |
|||
this.otherOptions.forEach(option=>{ |
|||
if(option.id == this.currentOtherOptionKey){ |
|||
option.toElevator = []; |
|||
option.toElevator.push(...checkedOptions) |
|||
} |
|||
}) |
|||
|
|||
this.currentOtherOptionKey = '' |
|||
}, |
|||
removeElevator(id){ |
|||
if(!confirm("確定刪除嗎?")) return; |
|||
this.elevators = this.elevators.filter(elevator=> elevator.id != id) |
|||
const issetElevators = []; |
|||
this.elevators.forEach(elevator=>{ |
|||
issetElevators.push(elevator.id); |
|||
}) |
|||
|
|||
this.selectedOptions.forEach(option=>{ |
|||
option.toElevator = option.toElevator.filter(el=>{ |
|||
return issetElevators.includes(el.id) |
|||
}) |
|||
}) |
|||
console.log(this.selectedOptions); |
|||
}, |
|||
removeOption(key){ |
|||
console.log(this.selectedOptions); |
|||
this.selectedOptions = this.selectedOptions.filter(option=> option.key != key) |
|||
}, |
|||
removeOtherOption(id){ |
|||
this.otherOptions = this.otherOptions.filter(option=> option.id != id) |
|||
}, |
|||
createOtherOptionFn(){ |
|||
this.otherOptions.push({ |
|||
id: this.otherOptionKey, |
|||
pr_no: this.modalOtherOptionInfo.pr_no, |
|||
name: this.modalOtherOptionInfo.name, |
|||
price: this.modalOtherOptionInfo.price, |
|||
num: this.modalOtherOptionInfo.num, |
|||
toElevator:[], |
|||
}) |
|||
this.modalOtherOptionInfo = { |
|||
pr_no: '', |
|||
name: '', |
|||
price: 0, |
|||
num: '', |
|||
} |
|||
this.otherOptionKey ++; |
|||
console.log(this.otherOptions); |
|||
this.$refs.closeCreateOtherOptionModalBtn.click(); |
|||
}, |
|||
totalOtherOptionsPrice(){ |
|||
return this.otherOptions.reduce((total, option) => { |
|||
return total + (Number(option.num) * Number(option.price)); |
|||
}, 0); |
|||
}, |
|||
totalOtherOptionsNum(){ |
|||
return this.otherOptions.reduce((total, option) => { |
|||
return total + Number(option.num); |
|||
}, 0); |
|||
}, |
|||
createMaintainOptionFn(){ |
|||
this.maintainOptions.push({ |
|||
id: this.maintainOptionKey, |
|||
price: this.modalMaintainInfo.price, |
|||
num: this.modalMaintainInfo.num, |
|||
memo: this.modalMaintainInfo.memo, |
|||
toElevator:[], |
|||
}) |
|||
this.modalMaintainInfo = { |
|||
price:0, |
|||
num:"", |
|||
memo:"", |
|||
} |
|||
this.maintainOptionKey ++; |
|||
this.$refs.closeCreateMaintainOptionModalBtn.click(); |
|||
}, |
|||
totalMaintainOptionsPrice(){ |
|||
return this.maintainOptions.reduce((total, option) => { |
|||
return total + (Number(option.num) * Number(option.price)); |
|||
}, 0); |
|||
}, |
|||
totalMaintainOptionsNum(){ |
|||
return this.maintainOptions.reduce((total, option) => { |
|||
return total + Number(option.num); |
|||
}, 0); |
|||
}, |
|||
chkMaintainOptionToElevators(){ |
|||
const checkedOptions = []; |
|||
// this.toElevators.forEach(elevator=>{
|
|||
// if(elevator.checked){
|
|||
// checkedOptions.push({
|
|||
// id: elevator.id,
|
|||
// model: elevator.model,
|
|||
// });
|
|||
// }
|
|||
// })
|
|||
const matchElevators = this.elevators.filter(elevator=> elevator.id == this.toElevatorNo)[0] |
|||
checkedOptions.push({ |
|||
id: this.toElevatorNo, |
|||
model: matchElevators['specifications'] + '-' + matchElevators['person'] + '*' + matchElevators['stop'] + '-' + matchElevators['open_converted'] + matchElevators['speed'], |
|||
}) |
|||
this.maintainOptions.forEach(option=>{ |
|||
if(option.id == this.currentMaintainOptionKey){ |
|||
option.toElevator = []; |
|||
option.toElevator.push(...checkedOptions) |
|||
} |
|||
}) |
|||
this.currentMaintainOptionKey = '' |
|||
}, |
|||
addMaintainOptionToElevator(id){ |
|||
this.currentMaintainOptionKey = id; |
|||
this.toElevators = []; |
|||
this.toElevatorNo = ""; |
|||
const matchElevators = this.maintainOptions.filter(option=> option.id == id)[0].toElevator.map(elevator=> elevator.id) |
|||
this.toElevatorNo = matchElevators[0] |
|||
this.elevators.forEach(elevator=>{ |
|||
if(elevator.price > 0){ |
|||
this.toElevators.push({ |
|||
id: elevator.id, |
|||
model: elevator.specifications + '-' + elevator.person + '*' + elevator.stop + '-' + elevator.open_converted + elevator.speed, |
|||
checked: matchElevators.includes(elevator.id) ? 1: 0, |
|||
}) |
|||
} |
|||
}) |
|||
}, |
|||
removeMaintainOption(id){ |
|||
this.maintainOptions = this.maintainOptions.filter(option=> option.id != id) |
|||
}, |
|||
totalPrice(){ |
|||
return this.totalElevatorsPrice() + this.totalOptionsPrice() + this.totalOtherOptionsPrice() + this.totalMaintainOptionsPrice(); |
|||
}, |
|||
totalSalePrice(){ |
|||
return this.elevators.reduce((total, elevator) => { |
|||
return total + (elevator.spec_num * elevator.spec_price); |
|||
}, 0); |
|||
}, |
|||
scalePrice(scale){ |
|||
if(scale === '') return 0; |
|||
return this.totalSalePrice() * scale / 100; |
|||
}, |
|||
totalScale(){ |
|||
let total = 0; |
|||
Object.keys(this.paymentRatio).forEach(pay=>{ |
|||
if(this.paymentRatio[pay].scale != '' && this.paymentRatio[pay].scale > 0){ |
|||
total += Number(this.paymentRatio[pay].scale) |
|||
} |
|||
}) |
|||
|
|||
return total; |
|||
}, |
|||
customerInfo:{ |
|||
contractno: contractno, |
|||
company: customer, |
|||
manager: manager, |
|||
address: address, |
|||
case_name: case_name, |
|||
uscc: uscc, |
|||
person: salesman, |
|||
}, |
|||
penalty:"", |
|||
deposit_rate:0, |
|||
keep_rate:0, |
|||
warranty_rate:0, |
|||
submit(){ |
|||
const form = new FormData(); |
|||
form.append('contractno', contractno); |
|||
form.append('ekind', "新梯"); |
|||
form.append('person', this.customerInfo.person); |
|||
form.append('company', this.customerInfo.company); |
|||
form.append('case_name', this.customerInfo.case_name); |
|||
form.append('address', this.customerInfo.address); |
|||
form.append('price_lowest', this.totalPrice()); |
|||
form.append('price_total', this.totalSalePrice()); |
|||
form.append('price_rate', Math.round(this.totalSalePrice() / this.totalPrice() * 100 *10) / 10); |
|||
form.append('special_fee', this.serviceFee); |
|||
form.append('predeal_date', this.transactionDate); |
|||
form.append('facilitok_date', this.shippingDate); |
|||
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('memo', this.remark); |
|||
form.append('status', "YS"); |
|||
form.append('attatch1', ""); |
|||
form.append('attatch2', ""); |
|||
|
|||
|
|||
form.append('elevators', JSON.stringify(this.elevators)); |
|||
|
|||
form.append('options', JSON.stringify(this.selectedOptions)); |
|||
form.append('otherOptions', JSON.stringify(this.otherOptions)); |
|||
form.append('maintainOptions', JSON.stringify(this.maintainOptions)); |
|||
|
|||
form.append('paymentRatio', JSON.stringify(this.paymentRatio)); |
|||
|
|||
axios.post('./api/postNewElevatorPricereview.php', form).then(res=>{ |
|||
console.log(res.data); |
|||
if(res.data == "success"){ |
|||
alert("送審成功!"); |
|||
} |
|||
}).catch(err=>{ |
|||
console.error(err); |
|||
}) |
|||
}, |
|||
|
|||
} |
|||
} |
|||
|
|||
|
|||
const pricereviewCheck = ()=>{ |
|||
return { |
|||
init(){ |
|||
console.log(123) |
|||
} |
|||
}, |
|||
} |
|||
} |
@ -1 +1 @@ |
|||
{"version":3,"sources":["pricereview.scss","pricereview.css"],"names":[],"mappings":"AACI;EACI,sBAAA;EACA,aAAA;ACAR;ADGQ;EACI,yBAAA;ACDZ;ADIY;EACI,eAAA;ACFhB;ADIY;EACI,yBAAA;EACA,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,kBAAA;ACFhB;ADKQ;EACI,eAAA;ACHZ;ADMI;EACI,yBAAA;EACA,aAAA;EACA,kBAAA;ACJR;ADKQ;EACI,WAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,iBAAA;EACA,eAAA;ACHZ;ADIY;EACI,yBAAA;EACA,WAAA;ACFhB;ADIY;EACI,yBAAA;EACA,WAAA;EACA,eAAA;EACA,WAAA;ACFhB;ADIY;EACI,yBAAA;EACA,WAAA;ACFhB;ADMQ;EACI,sBAAA;EACA,aAAA;EACA,kBAAA;ACJZ;ADKY;EACI,aAAA;EACA,mBAAA;EACA,6BAAA;EACA,eAAA;EACA,mBAAA;ACHhB;ADIgB;EACI,gBAAA;ACFpB;ADMY;EACI,eAAA;EACA,6BAAA;ACJhB;ADKgB;EACI,eAAA;ACHpB;ADKgB;;;;EAEA,wBAAA;EACA,SAAA;ACDhB;ADKgB;EACI,UAAA;ACHpB;ADKgB;EACI,kBAAA;ACHpB;ADIoB;EACI,kBAAA;EACA,QAAA;EACA,2BAAA;EACA,UAAA;EACA,UAAA;EACA,gBAAA;ACFxB","file":"pricereview.css"} |
|||
{"version":3,"sources":["pricereview.scss","pricereview.css"],"names":[],"mappings":"AACI;EACI,aAAA;ACAR;ADCQ;EACI,sBAAA;ACCZ;ADCQ;EACI,cAAA;ACCZ;ADCQ;EACI,yBAAA;ACCZ;ADKQ;EACI,sBAAA;EACA,aAAA;ACHZ;ADIY;EACI,YAAA;ACFhB;ADMY;EACI,yBAAA;ACJhB;ADOgB;EACI,eAAA;ACLpB;ADOgB;EACI,yBAAA;EACA,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,kBAAA;ACLpB;ADQY;EACI,eAAA;ACNhB;ADSQ;EACI,yBAAA;EACA,aAAA;EACA,kBAAA;EACA,cAAA;ACPZ;ADQY;EACI,WAAA;EACA,WAAA;EACA,YAAA;EACA,UAAA;EACA,iBAAA;EACA,eAAA;ACNhB;ADOgB;EACI,yBAAA;EACA,WAAA;ACLpB;ADOgB;EACI,yBAAA;EACA,WAAA;EACA,eAAA;EACA,WAAA;ACLpB;ADOgB;EACI,yBAAA;EACA,WAAA;ACLpB;ADSY;EACI,sBAAA;EACA,aAAA;EACA,kBAAA;ACPhB;ADQgB;EACI,aAAA;EACA,mBAAA;EACA,6BAAA;EACA,eAAA;EACA,mBAAA;ACNpB;ADOoB;EACI,gBAAA;ACLxB;ADSgB;EACI,eAAA;EACA,6BAAA;ACPpB;ADQoB;EACI,eAAA;ACNxB;ADQoB;;;;EAEA,wBAAA;EACA,SAAA;ACJpB;ADQoB;EACI,UAAA;ACNxB;ADQoB;EACI,kBAAA;ACNxB;ADOwB;EACI,kBAAA;EACA,QAAA;EACA,2BAAA;EACA,UAAA;EACA,UAAA;EACA,gBAAA;ACL5B;ADOwB;EACI,kBAAA;EACA,QAAA;EACA,2BAAA;EACA,WAAA;EACA,UAAA;EACA,gBAAA;EACA,WAAA;EACA,YAAA;ACL5B;ADQoB;EACI,YAAA;EACA,gBAAA;ACNxB;ADUY;EACI,aAAA;EACA,sBAAA;EACA,gBAAA;ACRhB;ADSgB;EACI,aAAA;EACA,mBAAA;EACA,cAAA;ACPpB;ADQoB;EACI,YAAA;EACA,eAAA;EACA,gBAAA;ACNxB;ADQoB;EACI,YAAA;ACNxB;ADQoB;EACI,WAAA;EACA,YAAA;EACA,SAAA;EACA,kBAAA;EACA,gBAAA;ACNxB;;ADcA;EACI,4BAAA;EACA,WAAA;ACXJ;ADYI;EACI,gBAAA;ACVR;ADYI;EACI,yBAAA;ACVR;;ADcA;EACI,eAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,aAAA;EACA,oCAAA;EACA,UAAA;EACA,aAAA;EACA,aAAA;ACXJ;ADYI;EACI;IACI,gCAAA;IACA,UAAA;ECVV;EDYM;IACI,gCAAA;IACA,UAAA;ECVV;AACF;ADYI;EACI,sBAAA;ACVR;ADYI;EACI,cAAA;ACVR;ADYI;EACI,yBAAA;ACVR;ADYI;EACI,sBAAA;EACA,mBAAA;EACA,kBAAA;EACA,aAAA;EACA,aAAA;EACA,QAAA;EACA,SAAA;EACA,gCAAA;EACA,0BAAA;EACA,gBAAA;EACA,8BAAA;ACVR;ADWQ;EACI,aAAA;ACTZ;ADWQ;EACI,YAAA;ACTZ;ADWQ;EACI,YAAA;ACTZ;ADWQ;EACI,aAAA;EACA,sBAAA;ACTZ;ADUY;EACI,kBAAA;EACA,SAAA;EACA,WAAA;EACA,6BAAA;EACA,YAAA;EACA,aAAA;EACA,kBAAA;ACRhB;ADUY;EACI,YAAA;ACRhB;ADWQ;EACI,kBAAA;EACA,aAAA;ACTZ","file":"pricereview.css"} |
@ -1,98 +1,241 @@ |
|||
#pricereviewCreate{ |
|||
table, th, td{ |
|||
border:1px #ccc solid; |
|||
padding: 15px; |
|||
} |
|||
table{ |
|||
thead th{ |
|||
background-color: #6D9EEB; |
|||
>.modal{ |
|||
padding: 20px; |
|||
table, th, td{ |
|||
border:1px #ccc solid; |
|||
} |
|||
tbody { |
|||
td input{ |
|||
font-size: 14px; |
|||
} |
|||
th{ |
|||
background-color: #CCE4F8; |
|||
font-size: 14px; |
|||
padding: 15px 2px; |
|||
min-width: 100px; |
|||
text-align: center; |
|||
} |
|||
table > thead tr th{ |
|||
color:#A52A2A; |
|||
} |
|||
table > tbody .selected{ |
|||
background-color: #E7FEFB; |
|||
} |
|||
input{ |
|||
font-size: 13px; |
|||
table > tbody .selected td{ |
|||
} |
|||
} |
|||
.pricreviewmain{ |
|||
background-color: #F2F2F2; |
|||
padding: 20px; |
|||
border-radius: 6px ; |
|||
button{ |
|||
color:#fff; |
|||
width: 55px; |
|||
height: 30px; |
|||
padding: 0; |
|||
margin-left: 10px; |
|||
font-size: 13px; |
|||
&.addbtn{ |
|||
background-color: #337AB7; |
|||
width: 30px; |
|||
.container{ |
|||
table, th, td{ |
|||
border:1px #ccc solid; |
|||
padding: 15px; |
|||
&.noborder, .noborder th, .noborder td{ |
|||
border:none; |
|||
} |
|||
&.deleteBtn{ |
|||
background-color: #D9534F; |
|||
color:#fff; |
|||
font-size: 12px; |
|||
width: 30px; |
|||
} |
|||
table{ |
|||
thead th{ |
|||
background-color: #6D9EEB; |
|||
} |
|||
&.selectElevator{ |
|||
background-color: #D9534F; |
|||
color:#fff; |
|||
tbody { |
|||
td input{ |
|||
font-size: 14px; |
|||
} |
|||
th{ |
|||
background-color: #CCE4F8; |
|||
font-size: 14px; |
|||
padding: 15px 2px; |
|||
min-width: 100px; |
|||
text-align: center; |
|||
} |
|||
} |
|||
input{ |
|||
font-size: 13px; |
|||
} |
|||
} |
|||
|
|||
>.divitem{ |
|||
border:1px #ccc solid; |
|||
padding: 10px; |
|||
border-radius: 4px ; |
|||
.title{ |
|||
display: flex; |
|||
align-items: center; |
|||
border-bottom: 1px #ccc solid; |
|||
padding: 10px 0; |
|||
margin-bottom: 10px; |
|||
h6{ |
|||
font-weight: 600; |
|||
.pricreviewmain{ |
|||
background-color: #F2F2F2; |
|||
padding: 20px; |
|||
border-radius: 6px ; |
|||
margin:30px 0; |
|||
button{ |
|||
color:#fff; |
|||
width: 55px; |
|||
height: 30px; |
|||
padding: 0; |
|||
margin-left: 10px; |
|||
font-size: 13px; |
|||
&.addbtn{ |
|||
background-color: #337AB7; |
|||
width: 30px; |
|||
} |
|||
|
|||
} |
|||
table, th, td{ |
|||
font-size: 14px; |
|||
background-color: transparent; |
|||
input, select, textarea{ |
|||
font-size: 13px; |
|||
&.deleteBtn{ |
|||
background-color: #D9534F; |
|||
color:#fff; |
|||
font-size: 12px; |
|||
width: 30px; |
|||
} |
|||
input[type=number]::-webkit-outer-spin-button, |
|||
input[type=number]::-webkit-inner-spin-button { |
|||
-webkit-appearance: none; |
|||
margin: 0; |
|||
&.selectElevator{ |
|||
background-color: #D9534F; |
|||
color:#fff; |
|||
} |
|||
} |
|||
table { |
|||
tr:hover .deleteBtn{ |
|||
opacity: 1; |
|||
|
|||
>.divitem{ |
|||
border:1px #ccc solid; |
|||
padding: 10px; |
|||
border-radius: 4px ; |
|||
.title{ |
|||
display: flex; |
|||
align-items: center; |
|||
border-bottom: 1px #ccc solid; |
|||
padding: 10px 0; |
|||
margin-bottom: 10px; |
|||
h6{ |
|||
font-weight: 600; |
|||
} |
|||
|
|||
} |
|||
table, th, td{ |
|||
font-size: 14px; |
|||
background-color: transparent; |
|||
input, select, textarea{ |
|||
font-size: 13px; |
|||
} |
|||
input[type=number]::-webkit-outer-spin-button, |
|||
input[type=number]::-webkit-inner-spin-button { |
|||
-webkit-appearance: none; |
|||
margin: 0; |
|||
} |
|||
} |
|||
table { |
|||
tr:hover .deleteBtn ,tr:hover .copyBtn{ |
|||
opacity: 1; |
|||
} |
|||
.saletd{ |
|||
position: relative; |
|||
>.deleteBtn{ |
|||
position: absolute; |
|||
top: 50%; |
|||
transform: translateY(-50%); |
|||
right:2px; |
|||
opacity: 0; |
|||
transition: .3s; |
|||
} |
|||
>.copyBtn{ |
|||
position: absolute; |
|||
top: 50%; |
|||
transform: translateY(-50%); |
|||
right:38px; |
|||
opacity: 0; |
|||
transition: .3s; |
|||
width: 30px; |
|||
height: 30px; |
|||
} |
|||
} |
|||
textarea{ |
|||
height: auto; |
|||
min-height: 50px; |
|||
} |
|||
} |
|||
.saletd{ |
|||
position: relative; |
|||
>.deleteBtn{ |
|||
position: absolute; |
|||
top: 50%; |
|||
transform: translateY(-50%); |
|||
right:2px; |
|||
opacity: 0; |
|||
transition: .3s; |
|||
} |
|||
>.filediv{ |
|||
display: flex; |
|||
flex-direction: column; |
|||
margin-top: 20px; |
|||
label{ |
|||
display: flex; |
|||
align-items: center; |
|||
margin:10px 0; |
|||
p{ |
|||
width:100px; |
|||
font-size: 15px; |
|||
font-weight: 600; |
|||
} |
|||
input[type="file"]{ |
|||
width:400px |
|||
} |
|||
button{ |
|||
width:90px; |
|||
height: 35px; |
|||
margin:0; |
|||
margin-right: 15px; |
|||
margin-top: 20px; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
.container-fluid, .container{ |
|||
max-width:1400px !important; |
|||
width: 100%; |
|||
h4{ |
|||
font-weight: 600; |
|||
} |
|||
.btn-secondary{ |
|||
background-color: #6C757D; |
|||
} |
|||
} |
|||
|
|||
.window-modal{ |
|||
position: fixed; |
|||
top: 0; |
|||
left:0; |
|||
width: 100%; |
|||
height: 100vh; |
|||
background-color: rgba(0, 0, 0, 0.5); |
|||
z-index: 9; |
|||
padding: 20px; |
|||
display: none; |
|||
@keyframes fade-in { |
|||
0%{ |
|||
transform: translate(-50%, -55%); |
|||
opacity: 0; |
|||
} |
|||
100%{ |
|||
transform: translate(-50%, -50%); |
|||
opacity: 1; |
|||
} |
|||
} |
|||
table, th, td{ |
|||
border:1px #ccc solid; |
|||
} |
|||
table > thead tr th{ |
|||
color:#A52A2A; |
|||
} |
|||
table > tbody .selected{ |
|||
background-color: #E7FEFB; |
|||
} |
|||
.window-modal-content{ |
|||
background-color: #fff; |
|||
border-radius: 10px; |
|||
position: absolute; |
|||
width:1200px; |
|||
padding: 30px; |
|||
top: 50%; |
|||
left:50%; |
|||
transform: translate(-50%, -50%); |
|||
box-shadow: 0 5px 5px #222; |
|||
max-height: 80vh; |
|||
animation: fade-in .2s linear; |
|||
&.modal-xl{ |
|||
width:1200px; |
|||
} |
|||
&.modal-lg{ |
|||
width:800px; |
|||
} |
|||
&.modal-m{ |
|||
width:400px; |
|||
} |
|||
.window-modal-header{ |
|||
display: flex; |
|||
flex-direction: column; |
|||
button.btn-close{ |
|||
position: absolute; |
|||
top: 10px; |
|||
right:10px; |
|||
background-color: transparent; |
|||
border:none; |
|||
outline: none; |
|||
border-radius: 50%; |
|||
} |
|||
>div > input{ |
|||
width: 250px; |
|||
} |
|||
} |
|||
.window-modal-body{ |
|||
overflow-y: scroll; |
|||
height: 400px; |
|||
} |
|||
} |
|||
} |
@ -0,0 +1,13 @@ |
|||
<?php |
|||
include_once('../header.php'); |
|||
|
|||
?> |
|||
<link rel="stylesheet" href="./css/pricereview.css"> |
|||
<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 defer src="./assets/js/alpinejs/cdn.min.js"></script> |
|||
<script src="./assets/js/pricereviewAlpine.js"></script> |
|||
|
|||
<div id="pricereviewCheck" x-data=pricereviewCheck()> |
|||
|
|||
|
|||
</div> |
File diff suppressed because it is too large
Loading…
Reference in new issue