diff --git a/wms/cont/api/getElevatorPrice.php b/wms/cont/api/getElevatorPrice.php index cd3be6b1..dd073789 100644 --- a/wms/cont/api/getElevatorPrice.php +++ b/wms/cont/api/getElevatorPrice.php @@ -1,42 +1,51 @@ "A", + "MAF100" => "B", + "MAM200" => "D", + "MAH100" => "E", + ]; + // $elevator_type = match($spec){ + // "MAE100" => "A", + // "MAF100" => "B", + // "MAM200" => "D", + // "MAH100" => "E", + // }; + $elevator_type = $specArr[$spec]; + $sql_str = "SELECT * FROM maintain_standard_option + WHERE elevator_type=:elevator_type AND min_speed<=:speed AND max_speed>=: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(':person', $person); + $stmt->bindParam(':speed', $speed); + $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']; + } -$spec = $_GET['spec'] ?? ''; -$person = $_GET['person'] ?? ''; -$stop = $_GET['stop'] ?? ''; -$weight = $_GET['weight'] ?? ''; -$speed = $_GET['speed'] ?? ''; -$m1 = $_GET['m1'] ?? ''; -$method = $_GET['method'] ?? ''; -$cycle = $_GET['cycle'] ?? ''; -$elevator_type = match($spec){ - "MAE100" => "A", - "MAF100" => "B", - "MAM200" => "D", - "MAH100" => "E", -}; -$sql_str = "SELECT * FROM maintain_standard_option -WHERE elevator_type=:elevator_type AND min_speed<=:speed AND max_speed>=: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(':person', $person); -$stmt->bindParam(':speed', $speed); -$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; \ No newline at end of file + echo $price; +}catch(PDOException $e){ + echo $e->getMessage(); +} \ No newline at end of file diff --git a/wms/cont/api/postElevatorPricereview.php b/wms/cont/api/postElevatorPricereview.php index 03356932..71d0ffab 100644 --- a/wms/cont/api/postElevatorPricereview.php +++ b/wms/cont/api/postElevatorPricereview.php @@ -31,19 +31,106 @@ $current_date = date("Y-M-d H:i:s"); $total_price = $_POST['total_price']; $total_sale_price = $_POST['total_sale_price']; -$sql_str = "SELECT status FROM con_maintance_examine_apply WHERE (vol_no, apply_key) = (:vol_no, :apply_key) "; +$attatch1 = !empty($_FILES['attatch1']) ? $_FILES['attatch1'] : null; +$attatch2 = !empty($_FILES['attatch2']) ? $_FILES['attatch2'] : null; +$attatch1_src = null; +$attatch2_src = null; + +$sql_str = "SELECT status, attatch1, attatch2 FROM con_maintance_examine_apply WHERE (vol_no, apply_key) = (:vol_no, :apply_key) "; $stmt = $conn->prepare($sql_str); $stmt->bindParam(':vol_no', $vol_no); $stmt->bindParam(':apply_key', $apply_key); $stmt->execute(); $contract = $stmt->fetch(PDO::FETCH_ASSOC); +if(!empty($attatch1)){ + $file = $attatch1; + $file_name = $file['name']; + $file_type = $file['type']; + $tmp_name = $file['tmp_name']; + $file_size = $file['size']; + $error = $file['error']; + $rand = strval(rand(1000,1000000)); + $now = (string)date('YmdHis'); + $imgsrc = 'm'.$now.$rand.$file_name; + $allow_ext = array('jpeg', 'jpg', 'png', 'gif','JPG','JPEG','PNG','pdf','PDF','docx', 'doc', 'DOCX', 'DOC', 'xlsx', 'xls', 'XLSX', 'XLS'); + //設定上傳位置 + $path = './pricereview-uploads/'; + $attatch1_src = $path.$imgsrc; + if (!file_exists($path)) { mkdir($path); } + if ($error == 0) { + $ext = pathinfo($file_name, PATHINFO_EXTENSION); + if (!in_array($ext, $allow_ext)) { + echo ""; + exit('檔案類型不符合,請選擇 jpg、png、excel、word 、pdf檔案'); + } + $result = move_uploaded_file($tmp_name, '.'.$attatch1_src); + } else { + //這裡表示上傳有錯誤, 匹配錯誤編號顯示對應的訊息 + switch ($error) { + case 1: echo '上傳檔案超過 upload_max_filesize 容量最大值'; break; + case 2: echo '上傳檔案超過 post_max_size 總容量最大值'; break; + case 3: echo '檔案只有部份被上傳'; break; + case 4: echo '沒有檔案被上傳'; break; + case 6: echo '找不到主機端暫存檔案的目錄位置'; break; + case 7: echo '檔案寫入失敗'; break; + case 8: echo '上傳檔案被PHP程式中斷,表示主機端系統錯誤'; break; + } + } + +}else{ + if($contract){ + $attatch1_src = $contract['attatch1']; + } +} +if(!empty($attatch2)){ + $file = $attatch2; + $file_name = $file['name']; + $file_type = $file['type']; + $tmp_name = $file['tmp_name']; + $file_size = $file['size']; + $error = $file['error']; + $rand = strval(rand(1000,1000000)); + $now = (string)date('YmdHis'); + $imgsrc = 'm'.$now.$rand.$file_name; + $allow_ext = array('jpeg', 'jpg', 'png', 'gif','JPG','JPEG','PNG','pdf','PDF','docx', 'doc', 'DOCX', 'DOC', 'xlsx', 'xls', 'XLSX', 'XLS'); + //設定上傳位置 + $path = './pricereview-uploads/'; + $attatch2_src = $path.$imgsrc; + if (!file_exists($path)) { mkdir($path); } + + if ($error == 0) { + $ext = pathinfo($file_name, PATHINFO_EXTENSION); + if (!in_array($ext, $allow_ext)) { + echo ""; + exit('檔案類型不符合,請選擇 jpg、png、excel、word 、pdf檔案'); + } + $result = move_uploaded_file($tmp_name, '.'.$attatch2_src); + } else { + //這裡表示上傳有錯誤, 匹配錯誤編號顯示對應的訊息 + switch ($error) { + case 1: echo '上傳檔案超過 upload_max_filesize 容量最大值'; break; + case 2: echo '上傳檔案超過 post_max_size 總容量最大值'; break; + case 3: echo '檔案只有部份被上傳'; break; + case 4: echo '沒有檔案被上傳'; break; + case 6: echo '找不到主機端暫存檔案的目錄位置'; break; + case 7: echo '檔案寫入失敗'; break; + case 8: echo '上傳檔案被PHP程式中斷,表示主機端系統錯誤'; break; + } + } + +}else{ + if($contract){ + $attatch2_src = $contract['attatch2']; + } +} + $conn->beginTransaction(); try{ if(!$contract){ - $sql_str = "INSERT INTO con_maintance_examine_apply (apply_key, vol_no, customer, address, case_name ,brand, num, salesman, maintain_kind, contract_begin_date, contract_end_date, contract_kind, payment_kind, progress_remark, service_fee, total_price, total_sale_price, penalty, deposit_rate, keep_rate, warranty_rate, memo, status, creater, create_at) - VALUES (:apply_key, :vol_no, :customer, :address, :case_name ,:brand, :num, :salesman, :maintain_kind, :contract_begin_date, :contract_end_date, :contract_kind, :payment_kind, :progress_remark, :service_fee, :total_price, :total_sale_price, :penalty, :deposit_rate, :keep_rate, :warranty_rate, :memo, :status, :creater, :create_at)"; + $sql_str = "INSERT INTO con_maintance_examine_apply (apply_key, vol_no, customer, address, case_name ,brand, num, salesman, maintain_kind, contract_begin_date, contract_end_date, contract_kind, payment_kind, progress_remark, service_fee, total_price, total_sale_price, penalty, deposit_rate, keep_rate, warranty_rate, memo, status, attatch1, attatch2, creater, create_at) + VALUES (:apply_key, :vol_no, :customer, :address, :case_name ,:brand, :num, :salesman, :maintain_kind, :contract_begin_date, :contract_end_date, :contract_kind, :payment_kind, :progress_remark, :service_fee, :total_price, :total_sale_price, :penalty, :deposit_rate, :keep_rate, :warranty_rate, :memo, :status, :attatch1, :attatch2, :creater, :create_at)"; $stmt = $conn->prepare($sql_str); $stmt->bindParam(':apply_key', $apply_key); $stmt->bindParam(':vol_no', $vol_no); @@ -68,6 +155,8 @@ try{ $stmt->bindParam(':warranty_rate', $warranty_rate); $stmt->bindParam(':memo', $remark); $stmt->bindParam(':status', $status); + $stmt->bindParam(':attatch1', $attatch1_src); + $stmt->bindParam(':attatch2', $attatch2_src); $stmt->bindParam(':creater', $creater); $stmt->bindParam(':create_at', $current_date); $stmt->execute(); @@ -164,6 +253,8 @@ try{ memo=:memo, brand=:brand, status=:status, + attatch1=:attatch1, + attatch2=:attatch2, updated_at=:updated_at, progress_remark=:progress_remark WHERE apply_key=:apply_key AND vol_no=:vol_no"; @@ -188,6 +279,8 @@ try{ $stmt->bindParam(':memo', $remark); $stmt->bindParam(':brand', $brand); $stmt->bindParam(':status', $status); + $stmt->bindParam(':attatch1', $attatch1_src); + $stmt->bindParam(':attatch2', $attatch2_src); $stmt->bindParam(':updated_at', $current_date); $stmt->execute(); @@ -469,7 +562,7 @@ try{ $permissions = [$manager]; $creater = "system"; $create_at = $current_date; - $url = "cont/pricereviewCheck.php?id=" . $apply_key; + $url = "cont/pricereviewCheck.php?apply_key=" . $apply_key; sendSystemNotice($kind, $related_id, $title, $content, $havaread, $permissions, $creater, $create_at, $url); } echo "success"; diff --git a/wms/cont/api/postPricereviewSign.php b/wms/cont/api/postPricereviewSign.php new file mode 100644 index 00000000..7fc900d1 --- /dev/null +++ b/wms/cont/api/postPricereviewSign.php @@ -0,0 +1,127 @@ +prepare($sql_str); + $stmt->bindParam(':sign', $sign_result); + $stmt->bindParam(':mid', $mid); + $stmt->bindParam(':reviewcomment', $reviewcomment); + $stmt->bindParam(':sign_id', $sign_id); + $stmt->execute(); + + if($sign == 3){ + $sql_str = "UPDATE con_maintance_examine_apply SET status=:status, updated_at=:updated_at WHERE apply_key = :apply_key "; + $stmt = $conn->prepare($sql_str); + $stmt->bindParam(':status', $result); + $stmt->bindParam(':apply_key', $mid); + $stmt->bindParam(':updated_at', $updated_at); + $stmt->execute(); + }else{ + $sql_str = "UPDATE con_maintance_examine_apply SET status=:status WHERE apply_key = :apply_key "; + $stmt = $conn->prepare($sql_str); + $stmt->bindParam(':status', $result); + $stmt->bindParam(':apply_key', $mid); + $stmt->execute(); + } + + + include_once "./postSystemNotice.php"; + $sql_str = "SELECT * FROM con_maintance_examine_apply WHERE apply_key = :apply_key ORDER BY create_at DESC LIMIT 1"; + $stmt = $conn->prepare($sql_str); + $stmt->bindParam(':apply_key', $mid); + $stmt->execute(); + $contract = $stmt->fetch(PDO::FETCH_ASSOC); + $ekind = "保養"; + + $sql_str = "SELECT * FROM pricereview_maintain_sign WHERE mid = :mid AND id = :sign_id"; + $stmt = $conn->prepare($sql_str); + $stmt->bindParam(':mid', $mid); + $stmt->bindParam(':sign_id', $sign_id); + $stmt->execute(); + $currentsign = $stmt->fetch(PDO::FETCH_ASSOC); + $permissions = []; + $content = ""; + $url = "cont/pricereviewCheck.php?apply_key=" . $mid; + if($signOff == "YY"){ + if($currentsign['sign1']!=NULL){ $permissions[] = explode(",", $currentsign['sign1'])[0] ; } + if($currentsign['sign2']!=NULL){ $permissions[] = explode(",", $currentsign['sign2'])[0] ; } + if($currentsign['sign3']!=NULL){ $permissions[] = explode(",", $currentsign['sign3'])[0] ; } + if($currentsign['sign4']!=NULL){ $permissions[] = explode(",", $currentsign['sign4'])[0] ; } + $permissions[] = $contract['salesman']; + $title = $ekind . "價審結案通知(".$contract['vol_no']."," .$contract['customer']. ")"; + $content = "狀態:結案同意
"; + $current_assigner = "00000"; + }elseif($signOff == "Y"){ + if($sign == 1 || $sign == 2 || $sign == 3){ + $signer = $currentsign['sign'.($sign+1)]; + if($signer == NULL){ + $signer = $currentsign['sign'.($sign+2)]; + } + $permissions[] = explode(",", $signer)[0]; + $current_assigner = explode(",", $signer)[0]; + $title = $ekind . "價審待簽通知(".$contract['vol_no']."," .$contract['customer']. ")"; + $content = "狀態:待簽核
"; + } + }elseif($signOff == "N"){ + $signer = $contract['salesman']; + $permissions[] = $signer; + $title = $ekind . "價審退回通知(".$contract['vol_no']."," .$contract['customer']. ")"; + $content = "狀態:退回
"; + $url = "cont/pricereviewCreate.php?vol_no=" . $vol_no; + $current_assigner = "00000"; + } + + $kind = 1; + $related_id = $mid; + $content .= "合約號:".$contract['vol_no'] . "
"; + $content .= "客戶名稱:" . $contract['customer'] . "
"; + $content .= "案件名稱:" . $contract['case_name'] . "
"; + $content .= "時間" . date("Y-m-d H:i:s"); + // $content .= "prepare($sql_str); + $stmt->bindParam(':form_id', $mid); + $stmt->execute(); + $form_key = $stmt->fetch(PDO::FETCH_ASSOC)['form_key']; + } + include_once "./postFlow.php"; + if($signOff == "YY") $flow_code = "Z"; + if($signOff == "Y") $flow_code = "B"; + if($signOff == "N") $flow_code = "A"; + if($form_key == null){ + throw new PDOException("form_key 不存在!"); + } + createFlow($mid, $current_assigner, $flow_code, $ekind, $form_key); + echo 1; +}catch(PDOException $e){ + echo $e->getMessage(); +} diff --git a/wms/cont/conn.php b/wms/cont/conn.php new file mode 100644 index 00000000..84d118b9 --- /dev/null +++ b/wms/cont/conn.php @@ -0,0 +1,49 @@ +errorInfo()的形式獲取錯誤資訊 + //PDO::ERRMODE_WARNING: 引發 E_WARNING 錯誤,主動報錯 + //PDO::ERRMODE_EXCEPTION: 主動抛出 exceptions 異常,需要以try{}cath(){}輸出錯誤資訊。 + //設定主動以警告的形式報錯 + $conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); + //如果連接錯誤,將抛出一個PDOException異常對象 +} +catch ( PDOException $e ){ + //如果連結資料庫失敗則顯示錯誤訊並停止本頁的工作 + die("ERROR!!!: ". $e->getMessage()); +} + +//$conn = null; //關閉資料庫的連線 \ No newline at end of file diff --git a/wms/cont/js/axios.min.js b/wms/cont/js/axios.min.js new file mode 100644 index 00000000..a9a8d6f0 --- /dev/null +++ b/wms/cont/js/axios.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).axios=t()}(this,(function(){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n2&&void 0!==arguments[2]?arguments[2]:{},a=i.allOwnKeys,s=void 0!==a&&a;if(null!=t)if("object"!==e(t)&&(t=[t]),p(t))for(r=0,o=t.length;r0;)if(t===(n=r[o]).toLowerCase())return n;return null}var N="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,C=function(e){return!h(e)&&e!==N};var x,P=(x="undefined"!=typeof Uint8Array&&c(Uint8Array),function(e){return x&&e instanceof x}),k=l("HTMLFormElement"),U=function(e){var t=Object.prototype.hasOwnProperty;return function(e,n){return t.call(e,n)}}(),_=l("RegExp"),F=function(e,t){var n=Object.getOwnPropertyDescriptors(e),r={};T(n,(function(n,o){var i;!1!==(i=t(n,o,e))&&(r[o]=i||n)})),Object.defineProperties(e,r)},B="abcdefghijklmnopqrstuvwxyz",L="0123456789",D={DIGIT:L,ALPHA:B,ALPHA_DIGIT:B+B.toUpperCase()+L};var I=l("AsyncFunction"),q={isArray:p,isArrayBuffer:m,isBuffer:function(e){return null!==e&&!h(e)&&null!==e.constructor&&!h(e.constructor)&&v(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:function(e){var t;return e&&("function"==typeof FormData&&e instanceof FormData||v(e.append)&&("formdata"===(t=f(e))||"object"===t&&v(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&m(e.buffer)},isString:y,isNumber:b,isBoolean:function(e){return!0===e||!1===e},isObject:g,isPlainObject:w,isUndefined:h,isDate:E,isFile:O,isBlob:S,isRegExp:_,isFunction:v,isStream:function(e){return g(e)&&v(e.pipe)},isURLSearchParams:A,isTypedArray:P,isFileList:R,forEach:T,merge:function e(){for(var t=C(this)&&this||{},n=t.caseless,r={},o=function(t,o){var i=n&&j(r,o)||o;w(r[i])&&w(t)?r[i]=e(r[i],t):w(t)?r[i]=e({},t):p(t)?r[i]=t.slice():r[i]=t},i=0,a=arguments.length;i3&&void 0!==arguments[3]?arguments[3]:{},o=r.allOwnKeys;return T(t,(function(t,r){n&&v(t)?e[r]=a(t,n):e[r]=t}),{allOwnKeys:o}),e},trim:function(e){return e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e},inherits:function(e,t,n,r){e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},toFlatObject:function(e,t,n,r){var o,i,a,s={};if(t=t||{},null==e)return t;do{for(i=(o=Object.getOwnPropertyNames(e)).length;i-- >0;)a=o[i],r&&!r(a,e,t)||s[a]||(t[a]=e[a],s[a]=!0);e=!1!==n&&c(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},kindOf:f,kindOfTest:l,endsWith:function(e,t,n){e=String(e),(void 0===n||n>e.length)&&(n=e.length),n-=t.length;var r=e.indexOf(t,n);return-1!==r&&r===n},toArray:function(e){if(!e)return null;if(p(e))return e;var t=e.length;if(!b(t))return null;for(var n=new Array(t);t-- >0;)n[t]=e[t];return n},forEachEntry:function(e,t){for(var n,r=(e&&e[Symbol.iterator]).call(e);(n=r.next())&&!n.done;){var o=n.value;t.call(e,o[0],o[1])}},matchAll:function(e,t){for(var n,r=[];null!==(n=e.exec(t));)r.push(n);return r},isHTMLForm:k,hasOwnProperty:U,hasOwnProp:U,reduceDescriptors:F,freezeMethods:function(e){F(e,(function(t,n){if(v(e)&&-1!==["arguments","caller","callee"].indexOf(n))return!1;var r=e[n];v(r)&&(t.enumerable=!1,"writable"in t?t.writable=!1:t.set||(t.set=function(){throw Error("Can not rewrite read-only method '"+n+"'")}))}))},toObjectSet:function(e,t){var n={},r=function(e){e.forEach((function(e){n[e]=!0}))};return p(e)?r(e):r(String(e).split(t)),n},toCamelCase:function(e){return e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n}))},noop:function(){},toFiniteNumber:function(e,t){return e=+e,Number.isFinite(e)?e:t},findKey:j,global:N,isContextDefined:C,ALPHABET:D,generateString:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:D.ALPHA_DIGIT,n="",r=t.length;e--;)n+=t[Math.random()*r|0];return n},isSpecCompliantForm:function(e){return!!(e&&v(e.append)&&"FormData"===e[Symbol.toStringTag]&&e[Symbol.iterator])},toJSONObject:function(e){var t=new Array(10);return function e(n,r){if(g(n)){if(t.indexOf(n)>=0)return;if(!("toJSON"in n)){t[r]=n;var o=p(n)?[]:{};return T(n,(function(t,n){var i=e(t,r+1);!h(i)&&(o[n]=i)})),t[r]=void 0,o}}return n}(e,0)},isAsyncFn:I,isThenable:function(e){return e&&(g(e)||v(e))&&v(e.then)&&v(e.catch)}};function M(e,t,n,r,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),o&&(this.response=o)}q.inherits(M,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:q.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});var z=M.prototype,H={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach((function(e){H[e]={value:e}})),Object.defineProperties(M,H),Object.defineProperty(z,"isAxiosError",{value:!0}),M.from=function(e,t,n,r,o,i){var a=Object.create(z);return q.toFlatObject(e,a,(function(e){return e!==Error.prototype}),(function(e){return"isAxiosError"!==e})),M.call(a,e.message,t,n,r,o),a.cause=e,a.name=e.name,i&&Object.assign(a,i),a};function J(e){return q.isPlainObject(e)||q.isArray(e)}function W(e){return q.endsWith(e,"[]")?e.slice(0,-2):e}function K(e,t,n){return e?e.concat(t).map((function(e,t){return e=W(e),!n&&t?"["+e+"]":e})).join(n?".":""):t}var V=q.toFlatObject(q,{},null,(function(e){return/^is[A-Z]/.test(e)}));function G(t,n,r){if(!q.isObject(t))throw new TypeError("target must be an object");n=n||new FormData;var o=(r=q.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,(function(e,t){return!q.isUndefined(t[e])}))).metaTokens,i=r.visitor||f,a=r.dots,s=r.indexes,u=(r.Blob||"undefined"!=typeof Blob&&Blob)&&q.isSpecCompliantForm(n);if(!q.isFunction(i))throw new TypeError("visitor must be a function");function c(e){if(null===e)return"";if(q.isDate(e))return e.toISOString();if(!u&&q.isBlob(e))throw new M("Blob is not supported. Use a Buffer instead.");return q.isArrayBuffer(e)||q.isTypedArray(e)?u&&"function"==typeof Blob?new Blob([e]):Buffer.from(e):e}function f(t,r,i){var u=t;if(t&&!i&&"object"===e(t))if(q.endsWith(r,"{}"))r=o?r:r.slice(0,-2),t=JSON.stringify(t);else if(q.isArray(t)&&function(e){return q.isArray(e)&&!e.some(J)}(t)||(q.isFileList(t)||q.endsWith(r,"[]"))&&(u=q.toArray(t)))return r=W(r),u.forEach((function(e,t){!q.isUndefined(e)&&null!==e&&n.append(!0===s?K([r],t,a):null===s?r:r+"[]",c(e))})),!1;return!!J(t)||(n.append(K(i,r,a),c(t)),!1)}var l=[],d=Object.assign(V,{defaultVisitor:f,convertValue:c,isVisitable:J});if(!q.isObject(t))throw new TypeError("data must be an object");return function e(t,r){if(!q.isUndefined(t)){if(-1!==l.indexOf(t))throw Error("Circular reference detected in "+r.join("."));l.push(t),q.forEach(t,(function(t,o){!0===(!(q.isUndefined(t)||null===t)&&i.call(n,t,q.isString(o)?o.trim():o,r,d))&&e(t,r?r.concat(o):[o])})),l.pop()}}(t),n}function $(e){var t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,(function(e){return t[e]}))}function X(e,t){this._pairs=[],e&&G(e,this,t)}var Q=X.prototype;function Z(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Y(e,t,n){if(!t)return e;var r,o=n&&n.encode||Z,i=n&&n.serialize;if(r=i?i(t,n):q.isURLSearchParams(t)?t.toString():new X(t,n).toString(o)){var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+r}return e}Q.append=function(e,t){this._pairs.push([e,t])},Q.toString=function(e){var t=e?function(t){return e.call(this,t,$)}:$;return this._pairs.map((function(e){return t(e[0])+"="+t(e[1])}),"").join("&")};var ee,te=function(){function e(){t(this,e),this.handlers=[]}return r(e,[{key:"use",value:function(e,t,n){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!n&&n.synchronous,runWhen:n?n.runWhen:null}),this.handlers.length-1}},{key:"eject",value:function(e){this.handlers[e]&&(this.handlers[e]=null)}},{key:"clear",value:function(){this.handlers&&(this.handlers=[])}},{key:"forEach",value:function(e){q.forEach(this.handlers,(function(t){null!==t&&e(t)}))}}]),e}(),ne={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},re={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:X,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},isStandardBrowserEnv:("undefined"==typeof navigator||"ReactNative"!==(ee=navigator.product)&&"NativeScript"!==ee&&"NS"!==ee)&&"undefined"!=typeof window&&"undefined"!=typeof document,isStandardBrowserWebWorkerEnv:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,protocols:["http","https","file","blob","url","data"]};function oe(e){function t(e,n,r,o){var i=e[o++],a=Number.isFinite(+i),s=o>=e.length;return i=!i&&q.isArray(r)?r.length:i,s?(q.hasOwnProp(r,i)?r[i]=[r[i],n]:r[i]=n,!a):(r[i]&&q.isObject(r[i])||(r[i]=[]),t(e,n,r[i],o)&&q.isArray(r[i])&&(r[i]=function(e){var t,n,r={},o=Object.keys(e),i=o.length;for(t=0;t-1,i=q.isObject(e);if(i&&q.isHTMLForm(e)&&(e=new FormData(e)),q.isFormData(e))return o&&o?JSON.stringify(oe(e)):e;if(q.isArrayBuffer(e)||q.isBuffer(e)||q.isStream(e)||q.isFile(e)||q.isBlob(e))return e;if(q.isArrayBufferView(e))return e.buffer;if(q.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(i){if(r.indexOf("application/x-www-form-urlencoded")>-1)return function(e,t){return G(e,new re.classes.URLSearchParams,Object.assign({visitor:function(e,t,n,r){return re.isNode&&q.isBuffer(e)?(this.append(t,e.toString("base64")),!1):r.defaultVisitor.apply(this,arguments)}},t))}(e,this.formSerializer).toString();if((n=q.isFileList(e))||r.indexOf("multipart/form-data")>-1){var a=this.env&&this.env.FormData;return G(n?{"files[]":e}:e,a&&new a,this.formSerializer)}}return i||o?(t.setContentType("application/json",!1),function(e,t,n){if(q.isString(e))try{return(t||JSON.parse)(e),q.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(n||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional||ie.transitional,n=t&&t.forcedJSONParsing,r="json"===this.responseType;if(e&&q.isString(e)&&(n&&!this.responseType||r)){var o=!(t&&t.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(e){if(o){if("SyntaxError"===e.name)throw M.from(e,M.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:re.classes.FormData,Blob:re.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};q.forEach(["delete","get","head","post","put","patch"],(function(e){ie.headers[e]={}}));var ae=ie,se=q.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),ue=Symbol("internals");function ce(e){return e&&String(e).trim().toLowerCase()}function fe(e){return!1===e||null==e?e:q.isArray(e)?e.map(fe):String(e)}function le(e,t,n,r,o){return q.isFunction(r)?r.call(this,t,n):(o&&(t=n),q.isString(t)?q.isString(r)?-1!==t.indexOf(r):q.isRegExp(r)?r.test(t):void 0:void 0)}var de=function(e,n){function i(e){t(this,i),e&&this.set(e)}return r(i,[{key:"set",value:function(e,t,n){var r=this;function o(e,t,n){var o=ce(t);if(!o)throw new Error("header name must be a non-empty string");var i=q.findKey(r,o);(!i||void 0===r[i]||!0===n||void 0===n&&!1!==r[i])&&(r[i||t]=fe(e))}var i,a,s,u,c,f=function(e,t){return q.forEach(e,(function(e,n){return o(e,n,t)}))};return q.isPlainObject(e)||e instanceof this.constructor?f(e,t):q.isString(e)&&(e=e.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim())?f((c={},(i=e)&&i.split("\n").forEach((function(e){u=e.indexOf(":"),a=e.substring(0,u).trim().toLowerCase(),s=e.substring(u+1).trim(),!a||c[a]&&se[a]||("set-cookie"===a?c[a]?c[a].push(s):c[a]=[s]:c[a]=c[a]?c[a]+", "+s:s)})),c),t):null!=e&&o(t,e,n),this}},{key:"get",value:function(e,t){if(e=ce(e)){var n=q.findKey(this,e);if(n){var r=this[n];if(!t)return r;if(!0===t)return function(e){for(var t,n=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;t=r.exec(e);)n[t[1]]=t[2];return n}(r);if(q.isFunction(t))return t.call(this,r,n);if(q.isRegExp(t))return t.exec(r);throw new TypeError("parser must be boolean|regexp|function")}}}},{key:"has",value:function(e,t){if(e=ce(e)){var n=q.findKey(this,e);return!(!n||void 0===this[n]||t&&!le(0,this[n],n,t))}return!1}},{key:"delete",value:function(e,t){var n=this,r=!1;function o(e){if(e=ce(e)){var o=q.findKey(n,e);!o||t&&!le(0,n[o],o,t)||(delete n[o],r=!0)}}return q.isArray(e)?e.forEach(o):o(e),r}},{key:"clear",value:function(e){for(var t=Object.keys(this),n=t.length,r=!1;n--;){var o=t[n];e&&!le(0,this[o],o,e,!0)||(delete this[o],r=!0)}return r}},{key:"normalize",value:function(e){var t=this,n={};return q.forEach(this,(function(r,o){var i=q.findKey(n,o);if(i)return t[i]=fe(r),void delete t[o];var a=e?function(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(function(e,t,n){return t.toUpperCase()+n}))}(o):String(o).trim();a!==o&&delete t[o],t[a]=fe(r),n[a]=!0})),this}},{key:"concat",value:function(){for(var e,t=arguments.length,n=new Array(t),r=0;r1?n-1:0),o=1;o0;){var a=o[i],s=n[a];if(s){var u=t[a],c=void 0===u||s(u,a,t);if(!0!==c)throw new M("option "+a+" must be "+c,M.ERR_BAD_OPTION_VALUE)}else if(!0!==r)throw new M("Unknown option "+a,M.ERR_BAD_OPTION)}},validators:Ne},Pe=xe.validators,ke=function(){function e(n){t(this,e),this.defaults=n,this.interceptors={request:new te,response:new te}}return r(e,[{key:"request",value:function(e,t){"string"==typeof e?(t=t||{}).url=e:t=e||{};var n=t=Te(this.defaults,t),r=n.transitional,o=n.paramsSerializer,i=n.headers;void 0!==r&&xe.assertOptions(r,{silentJSONParsing:Pe.transitional(Pe.boolean),forcedJSONParsing:Pe.transitional(Pe.boolean),clarifyTimeoutError:Pe.transitional(Pe.boolean)},!1),null!=o&&(q.isFunction(o)?t.paramsSerializer={serialize:o}:xe.assertOptions(o,{encode:Pe.function,serialize:Pe.function},!0)),t.method=(t.method||this.defaults.method||"get").toLowerCase();var a=i&&q.merge(i.common,i[t.method]);i&&q.forEach(["delete","get","head","post","put","patch","common"],(function(e){delete i[e]})),t.headers=pe.concat(a,i);var s=[],u=!0;this.interceptors.request.forEach((function(e){"function"==typeof e.runWhen&&!1===e.runWhen(t)||(u=u&&e.synchronous,s.unshift(e.fulfilled,e.rejected))}));var c,f=[];this.interceptors.response.forEach((function(e){f.push(e.fulfilled,e.rejected)}));var l,d=0;if(!u){var p=[Re.bind(this),void 0];for(p.unshift.apply(p,s),p.push.apply(p,f),l=p.length,c=Promise.resolve(t);d0;)o._listeners[t](e);o._listeners=null}})),this.promise.then=function(e){var t,n=new Promise((function(e){o.subscribe(e),t=e})).then(e);return n.cancel=function(){o.unsubscribe(t)},n},n((function(e,t,n){o.reason||(o.reason=new ye(e,t,n),r(o.reason))}))}return r(e,[{key:"throwIfRequested",value:function(){if(this.reason)throw this.reason}},{key:"subscribe",value:function(e){this.reason?e(this.reason):this._listeners?this._listeners.push(e):this._listeners=[e]}},{key:"unsubscribe",value:function(e){if(this._listeners){var t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}}}],[{key:"source",value:function(){var t;return{token:new e((function(e){t=e})),cancel:t}}}]),e}();var Fe={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Fe).forEach((function(e){var t=o(e,2),n=t[0],r=t[1];Fe[r]=n}));var Be=Fe;var Le=function e(t){var n=new Ue(t),r=a(Ue.prototype.request,n);return q.extend(r,Ue.prototype,n,{allOwnKeys:!0}),q.extend(r,n,null,{allOwnKeys:!0}),r.create=function(n){return e(Te(t,n))},r}(ae);return Le.Axios=Ue,Le.CanceledError=ye,Le.CancelToken=_e,Le.isCancel=me,Le.VERSION=je,Le.toFormData=G,Le.AxiosError=M,Le.Cancel=Le.CanceledError,Le.all=function(e){return Promise.all(e)},Le.spread=function(e){return function(t){return e.apply(null,t)}},Le.isAxiosError=function(e){return q.isObject(e)&&!0===e.isAxiosError},Le.mergeConfig=Te,Le.AxiosHeaders=pe,Le.formToJSON=function(e){return oe(q.isHTMLForm(e)?new FormData(e):e)},Le.getAdapter=Oe,Le.HttpStatusCode=Be,Le.default=Le,Le})); +//# sourceMappingURL=axios.min.js.map diff --git a/wms/cont/js/pricereviewAlpine.js b/wms/cont/js/pricereviewAlpine.js index 14d81040..66bf4fed 100644 --- a/wms/cont/js/pricereviewAlpine.js +++ b/wms/cont/js/pricereviewAlpine.js @@ -61,6 +61,8 @@ const pricereviewCreate = ()=>{ deposit_rate: deposit_rate, keep_rate: keep_rate, warranty_rate: warranty_rate, + attatch1:'', + attatch2:'', openCreateElevatorModal(){ this.modalShow.elevator = true; body.style.overflow = 'hidden'; @@ -345,6 +347,8 @@ const pricereviewCreate = ()=>{ form.append('warranty_rate', this.warranty_rate); form.append('remark', this.remark); form.append('creater', user_id); + form.append('attatch1', this.attatch1); + form.append('attatch2', this.attatch2); form.append('pay_method', this.pay_method); form.append('status', 'Y1'); @@ -384,6 +388,8 @@ const pricereviewCreate = ()=>{ form.append('warranty_rate', this.warranty_rate); form.append('remark', this.remark); form.append('creater', user_id); + form.append('attatch1', this.attatch1); + form.append('attatch2', this.attatch2); form.append('pay_method', this.pay_method); form.append('status', 'YS'); @@ -398,7 +404,7 @@ const pricereviewCreate = ()=>{ if(res.data == 'success'){ alert("送審成功!"); // window.location.reload(); - // window.location.href = './pricereview-index.php?' + token; + window.location.href = '../index.php?' + token; } }) }, @@ -407,6 +413,14 @@ const pricereviewCreate = ()=>{ const res = await axios.get('./api/getUsername.php', {params: {user_id: user_id}}) return res.data ; }, + uploadFiles(e, attatch){ + if(attatch == 1){ + this.attatch1 = e.target.files[0] + } + if(attatch == 2){ + this.attatch2 = e.target.files[0] + } + } } } @@ -414,7 +428,130 @@ const pricereviewCheck = ()=>{ return { init(){ console.log(123); + this.elevators = elevators; + this.otherOptions = otherOptions; + this.elevators.forEach(el=>{ + el.otherOptions = [] + el.otherOptionsTotalPrice = 0; + }) + + this.elevators.forEach((elevator, idx)=>{ + this.elevators_total_price += elevator.stand_price*elevator.maintain_months + this.otherOptions.forEach(option=>{ + if(option.option_relate_spec == elevator.item_no){ + elevator.otherOptionsTotalPrice += option.item_unit_price * option.item_qty + this.elevators[idx].otherOptions.push({ + 'id': option.id, + 'item_spec': option.item_spec, + 'item_unit_price': option.item_unit_price, + 'item_qty': option.item_qty, + 'mi': Math.round(option.item_unit_price), + }) + } + }) + }) + if(payment_kind == "A40006"){ + this.payment_kind = "年繳"; + }else if(payment_kind == "A40007"){ + this.payment_kind = "季繳"; + }else if(payment_kind == "A40003"){ + this.payment_kind = "月繳"; + }else if(payment_kind == "A40004"){ + this.payment_kind = "雙月繳"; + }else if(payment_kind == "A40005"){ + this.payment_kind = "半年繳"; + } + + this.sign1 = this.getUsername(sign1) + this.sign2 = this.getUsername(sign2) + this.sign3 = this.getUsername(sign3) + this.sign4 = this.getUsername(sign4) + }, + user_id:user_id, + apply_key:apply_key, + contractno: vol_no, + salesman: salesman, + customer: customer, + total_price: total_price, + total_sale_price: Number(total_sale_price), + elevators: [], + otherOptions:[], + elevators_total_price:0, + payment_kind: payment_kind, + memo: memo, + address: address, + case_name: case_name, + maintain_months: maintain_months, + service_fee: service_fee, + penalty: penalty, + deposit_rate: deposit_rate, + keep_rate: keep_rate, + warranty_rate: warranty_rate, + contract_begin_date: contract_begin_date, + contract_end_date: contract_end_date, + sign1:'', + sign2:'', + sign3:'', + sign4:'', + reviewcomment:'', + get single_amount(){ + console.log(this.payment_kind); + let month_amount = Number(this.total_sale_price) / Number(this.maintain_months); + let pay_times = 0; + let amount_times = 0; + if(payment_kind == "A40006"){ + amount_times = Math.round(month_amount*12) + pay_times = this.maintain_months / 12 + } + if(payment_kind == "A40007"){ + amount_times = Math.round(month_amount*3) + pay_times = this.maintain_months / 3 + } + if(payment_kind == "A40003"){ + amount_times = Math.round(month_amount) + pay_times = this.maintain_months / 1 + } + if(payment_kind == "A40004"){ + amount_times = Math.round(month_amount*2) + pay_times = this.maintain_months / 2 + } + if(payment_kind == "A40005"){ + amount_times = Math.round(month_amount*6) + pay_times = this.maintain_months / 6 + } + return { + 'amount_times': amount_times, + 'pay_times': pay_times + } + }, + get otherOptionsTotalPrice(){ + return this.otherOptions.reduce((total, option) => { + return total + (option.item_qty * option.item_unit_price); + }, 0); + }, + async getUsername(user_id){ + if(user_id == '') return '---' + const res = await axios.get('./api/getUsername.php', {params: {user_id: user_id}}) + return res.data ; + }, + check(sign, status, user_id = this.user_id ){ + console.log(sign); + const form = new FormData(); + form.append('sign', sign); + form.append('mid', this.apply_key); + form.append('result', status); + form.append('user_id', user_id); + form.append('reviewcomment', this.reviewcomment); + form.append('currentSignId', currentSignId); + form.append('token', token); + form.append('form_key', form_key); + axios.post('./api/postPricereviewSign.php', form).then(res=>{ + console.log(res.data); + if(res.data == 1){ + alert("簽核成功!"); + window.location.reload() + } + }) }, - elevators: elevators, } } \ No newline at end of file diff --git a/wms/cont/pricereview-uploads/m20240312185746914784kobe.jpg b/wms/cont/pricereview-uploads/m20240312185746914784kobe.jpg new file mode 100644 index 00000000..100ba8c7 Binary files /dev/null and b/wms/cont/pricereview-uploads/m20240312185746914784kobe.jpg differ diff --git a/wms/cont/pricereview-uploads/m20240312185839177524curry.jpg b/wms/cont/pricereview-uploads/m20240312185839177524curry.jpg new file mode 100644 index 00000000..b3f7bc2a Binary files /dev/null and b/wms/cont/pricereview-uploads/m20240312185839177524curry.jpg differ diff --git a/wms/cont/pricereview-uploads/m202403121858392743201.png b/wms/cont/pricereview-uploads/m202403121858392743201.png new file mode 100644 index 00000000..f7283401 Binary files /dev/null and b/wms/cont/pricereview-uploads/m202403121858392743201.png differ diff --git a/wms/cont/pricereview-uploads/m202403121903019998611074565_507619045984793_769543820_o.jpg b/wms/cont/pricereview-uploads/m202403121903019998611074565_507619045984793_769543820_o.jpg new file mode 100644 index 00000000..7b84ec51 Binary files /dev/null and b/wms/cont/pricereview-uploads/m202403121903019998611074565_507619045984793_769543820_o.jpg differ diff --git a/wms/cont/pricereview-uploads/m202403121903566135334OlaIEQjXAZDasK9Pd1Jxb.jpg b/wms/cont/pricereview-uploads/m202403121903566135334OlaIEQjXAZDasK9Pd1Jxb.jpg new file mode 100644 index 00000000..59b21a80 Binary files /dev/null and b/wms/cont/pricereview-uploads/m202403121903566135334OlaIEQjXAZDasK9Pd1Jxb.jpg differ diff --git a/wms/cont/pricereview-uploads/m202403121905046665914OlaIEQjXAZDasK9Pd1Jxb.jpg b/wms/cont/pricereview-uploads/m202403121905046665914OlaIEQjXAZDasK9Pd1Jxb.jpg new file mode 100644 index 00000000..59b21a80 Binary files /dev/null and b/wms/cont/pricereview-uploads/m202403121905046665914OlaIEQjXAZDasK9Pd1Jxb.jpg differ diff --git a/wms/cont/pricereview-uploads/m202403121907016007094OlaIEQjXAZDasK9Pd1Jxb.jpg b/wms/cont/pricereview-uploads/m202403121907016007094OlaIEQjXAZDasK9Pd1Jxb.jpg new file mode 100644 index 00000000..59b21a80 Binary files /dev/null and b/wms/cont/pricereview-uploads/m202403121907016007094OlaIEQjXAZDasK9Pd1Jxb.jpg differ diff --git a/wms/cont/pricereview-uploads/m202403121907512357761048100_507643175982380_1454281158_o.jpg b/wms/cont/pricereview-uploads/m202403121907512357761048100_507643175982380_1454281158_o.jpg new file mode 100644 index 00000000..613fa135 Binary files /dev/null and b/wms/cont/pricereview-uploads/m202403121907512357761048100_507643175982380_1454281158_o.jpg differ diff --git a/wms/cont/pricereview-uploads/m202403121907573946501074565_507619045984793_769543820_o.jpg b/wms/cont/pricereview-uploads/m202403121907573946501074565_507619045984793_769543820_o.jpg new file mode 100644 index 00000000..7b84ec51 Binary files /dev/null and b/wms/cont/pricereview-uploads/m202403121907573946501074565_507619045984793_769543820_o.jpg differ diff --git a/wms/cont/pricereview-uploads/m20240312191226166002431968299_122131716218151547_1355033508899312082_n.jpg b/wms/cont/pricereview-uploads/m20240312191226166002431968299_122131716218151547_1355033508899312082_n.jpg new file mode 100644 index 00000000..a182732c Binary files /dev/null and b/wms/cont/pricereview-uploads/m20240312191226166002431968299_122131716218151547_1355033508899312082_n.jpg differ diff --git a/wms/cont/pricereview-uploads/m202403121912261887281074565_507619045984793_769543820_o.jpg b/wms/cont/pricereview-uploads/m202403121912261887281074565_507619045984793_769543820_o.jpg new file mode 100644 index 00000000..7b84ec51 Binary files /dev/null and b/wms/cont/pricereview-uploads/m202403121912261887281074565_507619045984793_769543820_o.jpg differ diff --git a/wms/cont/pricereview-uploads/m202403121914471012954OlaIEQjXAZDasK9Pd1Jxb.jpg b/wms/cont/pricereview-uploads/m202403121914471012954OlaIEQjXAZDasK9Pd1Jxb.jpg new file mode 100644 index 00000000..59b21a80 Binary files /dev/null and b/wms/cont/pricereview-uploads/m202403121914471012954OlaIEQjXAZDasK9Pd1Jxb.jpg differ diff --git a/wms/cont/pricereview-uploads/m202403121914476694521705368342957.jpg b/wms/cont/pricereview-uploads/m202403121914476694521705368342957.jpg new file mode 100644 index 00000000..8eb735ee Binary files /dev/null and b/wms/cont/pricereview-uploads/m202403121914476694521705368342957.jpg differ diff --git a/wms/cont/pricereview-uploads/m20240312192346343561kobe.jpg b/wms/cont/pricereview-uploads/m20240312192346343561kobe.jpg new file mode 100644 index 00000000..100ba8c7 Binary files /dev/null and b/wms/cont/pricereview-uploads/m20240312192346343561kobe.jpg differ diff --git a/wms/cont/pricereview-uploads/m20240312192346755323curry.jpg b/wms/cont/pricereview-uploads/m20240312192346755323curry.jpg new file mode 100644 index 00000000..b3f7bc2a Binary files /dev/null and b/wms/cont/pricereview-uploads/m20240312192346755323curry.jpg differ diff --git a/wms/cont/pricereviewCheck.php b/wms/cont/pricereviewCheck.php index 4e0fc38c..ee887c63 100644 --- a/wms/cont/pricereviewCheck.php +++ b/wms/cont/pricereviewCheck.php @@ -37,21 +37,246 @@ $stmt->bindParam(':apply_key', $apply_key); $stmt->execute(); $elevators = $stmt->fetchAll(PDO::FETCH_ASSOC); +$sql_str = "SELECT * FROM pricereview_maintain_item WHERE (mid, item_group) = (:apply_key, 'E') ORDER BY item_no ASC"; +$stmt = $conn->prepare($sql_str); +$stmt->bindParam(':apply_key', $apply_key); +$stmt->execute(); +$otherOptions = $stmt->fetchAll(PDO::FETCH_ASSOC); + + +$contract_begin_date = new DateTime($contract['contract_begin_date']); +$contract_end_date = new DateTime($contract['contract_end_date']); +// 計算差異 +$interval = $contract_begin_date->diff($contract_end_date); +// 獲取總月數 +$contract_months = $interval->m + 12 * $interval->y + 1; +if($contract_months <= 0){ $contract_months = 1;} + +$sql_str = "SELECT * FROM pricereview_maintain_sign WHERE mid = :apply_key ORDER BY id ASC"; +$stmt = $conn->prepare($sql_str); +$stmt->bindParam(':apply_key', $apply_key); +$stmt->execute(); +$sign_all = $stmt->fetchAll(PDO::FETCH_ASSOC); +$sign = $sign_all ? $sign_all[count($sign_all)-1] : []; +$currentSigner = ''; +$currentSign = 0; +$currentSignId = $sign['id'] ?? ''; +$historySign = []; +if($sign_all){ + foreach($sign_all as $key=>$sign_item){ + if($key == count($sign_all)-1){ + break; + } + $signer1 = getSignerName(explode(",", $sign_item['sign1'])[0]); + $sign1_result = explode(",", $sign_item['sign1'])[1]; + $sign1_date = explode(",", $sign_item['sign1'])[2]; + $sign1_note = $sign_item['sign1_note']; + if($sign1_result == "Y"){ + $sign1_result = "同意"; + }elseif($sign1_result == "YY"){ + $sign1_result = "結案同意"; + }elseif($sign1_result == "N"){ + $sign1_result = "不同意"; + }else{ + $sign1_result = "---"; + } + if(!empty($sign_item['sign2'])){ + $signer2 = getSignerName(explode(",", $sign_item['sign2'])[0]); + $sign2_result = explode(",", $sign_item['sign2'])[1]; + $sign2_note = $sign_item['sign2_note']; + $sign2_date = explode(",", $sign_item['sign2'])[2]; + if($sign2_result == "Y"){ + $sign2_result = "同意"; + }elseif($sign2_result == "YY"){ + $sign2_result = "結案同意"; + }elseif($sign2_result == "N"){ + $sign2_result = "不同意"; + }else{ + $sign2_result = "---"; + } + }else{ + $signer2 = "---"; + $sign2_result = "---"; + $sign2_note = "---"; + $sign2_date = "---"; + $sign2_result = "---"; + } + + + $signer3 = getSignerName(explode(",", $sign_item['sign3'])[0]); + $sign3_result = explode(",", $sign_item['sign3'])[1]; + $sign3_note = $sign_item['sign3_note']; + $sign3_date = explode(",", $sign_item['sign3'])[2]; + if($sign3_result == "Y"){ + $sign3_result = "同意"; + }elseif($sign3_result == "YY"){ + $sign3_result = "結案同意"; + }elseif($sign3_result == "N"){ + $sign3_result = "不同意"; + }else{ + $sign3_result = "---"; + } + if(!empty($sign_item['sign4'])){ + $signer4 = getSignerName(explode(",", $sign_item['sign4'])[0]); + $sign4_result = explode(",", $sign_item['sign4'])[1]; + $sign4_note = $sign_item['sign4_note']; + $sign4_date = explode(",", $sign_item['sign4'])[2]; + if($sign4_result == "Y"){ + $sign4_result = "同意"; + }elseif($sign4_result == "YY"){ + $sign4_result = "結案同意"; + }elseif($sign4_result == "N"){ + $sign4_result = "不同意"; + }else{ + $sign4_result = "---"; + } + }else{ + $signer4 = "---"; + $sign4_result = "---"; + $sign4_note = "---"; + $sign4_date = "---"; + $sign4_result = "---"; + } + + $historySign[] = [ + 'signer1'=>$signer1, + 'sign1_result'=> $sign1_result, + 'sign1_note'=>$sign1_note, + 'sign1_date'=>$sign1_date, + 'signer2'=>$signer2, + 'sign2_result'=> $sign2_result, + 'sign2_note'=>$sign2_note, + 'sign2_date'=>$sign2_date, + 'signer3'=>$signer3, + 'sign3_result'=> $sign3_result, + 'sign3_note'=>$sign3_note, + 'sign3_date'=>$sign3_date, + 'signer4'=>$signer4, + 'sign4_result'=> $sign4_result, + 'sign4_note'=>$sign4_note, + 'sign4_date'=>$sign4_date, + ]; + } + +} + +if($sign){ + // Y:已同意 N:不同意 W:待簽 + // sign1 => 處長, sign2 => 業務承辦人, sign3 => 協理, sign4 => 總經理 + if($sign['sign1'] == NULL || $sign['sign1'] ==''){ + $sign1 = NULL; + }else{ + if( explode(",", $sign['sign1'])[1] != ''){ + $sign1 = explode(",", $sign['sign1'])[1] == 'Y' ? 'Y' : 'N'; + }else{ + $sign1 = 'W'; + } + } + + if($sign['sign2'] == NULL || $sign['sign2'] ==''){ + $sign2 = NULL; + }else{ + if( explode(",", $sign['sign2'])[1] != ''){ + $sign2 = explode(",", $sign['sign2'])[1] == 'Y' ? 'Y' : 'N'; + }else{ + $sign2 = 'W'; + } + } + + if($sign['sign3'] == NULL || $sign['sign3'] ==''){ + $sign3 = NULL; + }else{ + if( explode(",", $sign['sign3'])[1] != ''){ + // $sign3 = explode(",", $sign['sign3'])[1] == 'Y' ? 'Y' : 'N'; + if(explode(",", $sign['sign3'])[1] == 'YY') $sign3 = 'YY'; + if(explode(",", $sign['sign3'])[1] == 'Y') $sign3 = 'Y'; + if(explode(",", $sign['sign3'])[1] == 'N') $sign3 = 'N'; + }else{ + $sign3 = 'W'; + } + } + if($sign['sign4'] == NULL || $sign['sign4'] ==''){ + $sign4 = NULL; + }else{ + if( explode(",", $sign['sign4'])[1] != ''){ + // $sign4 = explode(",", $sign['sign4'])[1] == 'Y' ? 'Y' : 'N'; + if(explode(",", $sign['sign4'])[1] == 'YY') $sign4 = 'YY'; + if(explode(",", $sign['sign4'])[1] == 'Y') $sign4 = 'Y'; + if(explode(",", $sign['sign4'])[1] == 'N') $sign4 = 'N'; + }else{ + $sign4 = 'W'; + } + } + + if($sign1 == 'W'){ + $currentSigner = explode(",", $sign['sign1'])[0]; + $currentSign = 1; + }elseif($sign2 == 'W'){ + $currentSigner = explode(",", $sign['sign2'])[0]; + $currentSign = 2; + }elseif($sign3 == 'W'){ + $currentSigner = explode(",", $sign['sign3'])[0]; + $currentSign = 3; + }elseif($sign4 == 'W'){ + $currentSigner = explode(",", $sign['sign4'])[0]; + $currentSign = 4; + } +}else{ + $sign1 = NULL; + $sign2 = NULL; + $sign3 = NULL; + $sign4 = NULL; +} + + + + $permissions = false; //開啟工務權限 -if($user_id == "M0174" || $user_id == "M0008" || $user_id == "M0012"){ +if($user_id == "M0174" || $user_id == "M0008" || $user_id == "M0012" || $user_id == "M0007"){ $permissions = true; } - +function getSignerName($signer){ + if($signer == null || $signer == '') return "---"; + global $conn; + $sql_str = "SELECT name FROM account WHERE accountid = :signer"; + $stmt = $conn->prepare($sql_str); + $stmt->bindParam(':signer', $signer); + $stmt->execute(); + $signer = $stmt->fetch(PDO::FETCH_ASSOC); + return $signer['name']; +} ?> - +
+ + + + + + + + + + + + + + + + + + + + + +
價審單號卷號營業員客戶名稱牌價總額(A)售價總額(B)破價總額(B-A)
@@ -64,12 +289,12 @@ if($user_id == "M0174" || $user_id == "M0008" || $user_id == "M0012"){ - + - + - + @@ -78,17 +303,17 @@ if($user_id == "M0174" || $user_id == "M0008" || $user_id == "M0012"){ - + - + @@ -96,14 +321,17 @@ if($user_id == "M0174" || $user_id == "M0008" || $user_id == "M0012"){
項次 規格 單價(月)月數保養月數 總價 業務部MI成本(月) 售價(月)利潤利潤(月) 利潤率(%)
- +
- 電梯設備 + 電梯規格 +
    +
  • +
除外項目
    -