| | |
| | | <label class="layui-form-label" style="width: 85px;">ä¸é</label> |
| | | <div class="layui-input-block" style="margin-left: 120px;"> |
| | | <input type="text" class="layui-input" name="HUpLimit" id="HUpLimit" style="background-color:#efefef4d;" readonly> |
| | | <input type="hidden" class="layui-input" name="HControlUpperLimit" id="HControlUpperLimit"> |
| | | <input type="hidden" class="layui-input" name="HControlLowerLimit" id="HControlLowerLimit"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | <div class="layui-row" style="margin-top:5px;"> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label" style="width: 85px;">Std.Dev</label> |
| | | <label class="layui-form-label" style="width: 85px;">æ§å¶ä¸é</label> |
| | | <div class="layui-input-block" style="margin-left: 120px;"> |
| | | <input type="text" class="layui-input" id="HStdDev" name="HStdDev" style="background-color:#efefef4d;" readonly> |
| | | <input type="text" class="layui-input" name="HControlUpperLimit_X" id="HControlUpperLimit_X"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="margin-left: 48px;"> |
| | | <label class="layui-form-label" style="width: 85px;">æ§å¶ä¸é</label> |
| | | <div class="layui-input-block" style="margin-left: 120px;"> |
| | | <input type="text" class="layui-input" name="HControlLowerLimit_X" id="HControlLowerLimit_X"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label" style="width: 85px;">Sigma</label> |
| | | <label class="layui-form-label" style="width: 85px;">Xä¸å¿çº¿</label> |
| | | <div class="layui-input-block" style="margin-left: 120px;"> |
| | | <input type="text" class="layui-input" id="HSigma" name="HSigma" style="background-color:#efefef4d;" readonly> |
| | | <input type="text" class="layui-input" name="HCenterline_X" id="HCenterline_X"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | |
| | | <input type="text" class="layui-input" name="HPPK" id="HPPK" style="background-color:#efefef4d;" readonly> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label" style="width: 85px;">ï¼°ï¼°</label> |
| | | <div class="layui-input-block" style="margin-left: 120px;"> |
| | | <input type="text" class="layui-input" name="HPP" id="HPP" style="background-color:#efefef4d;" readonly> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-row" style="margin-top:5px;"> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label" style="width: 85px;">C a</label> |
| | | <label class="layui-form-label" style="width: 85px;">æ§å¶ä¸é</label> |
| | | <div class="layui-input-block" style="margin-left: 120px;"> |
| | | <input type="text" class="layui-input" id="HCA" name="HCA" style="background-color:#efefef4d;" readonly> |
| | | <input type="text" class="layui-input" name="HControlUpperLimit_S" id="HControlUpperLimit_S"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="margin-left: 48px;"> |
| | | <label class="layui-form-label" style="width: 85px;">æ§å¶ä¸é</label> |
| | | <div class="layui-input-block" style="margin-left: 120px;"> |
| | | <input type="text" class="layui-input" name="HControlLowerLimit_S" id="HControlLowerLimit_S"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label" style="width: 85px;">Sä¸å¿çº¿</label> |
| | | <div class="layui-input-block" style="margin-left: 120px;"> |
| | | <input type="text" class="layui-input" name="HCenterline_S" id="HCenterline_S"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label" style="width: 85px;">C P K</label> |
| | | <div class="layui-input-block" style="margin-left: 120px;"> |
| | | <input type="text" class="layui-input" id="HCPK" name="HCPK" style="background-color:#efefef4d;" readonly> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label" style="width: 85px;">C P</label> |
| | | <div class="layui-input-block" style="margin-left: 120px;"> |
| | | <input type="text" class="layui-input" name="HCP" id="HCP" style="background-color:#efefef4d;" readonly> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label" style="width: 85px;">Grade</label> |
| | | <div class="layui-input-block" style="margin-left: 120px;"> |
| | | <input type="text" class="layui-input" name="HGrade" id="HGrade" style="background-color:#efefef4d;" readonly> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | optionS[0] = data1.data[limit + 2]; |
| | | table.render(option); |
| | | set_Line(); |
| | | set_PPK(); |
| | | set_CPK(); |
| | | } |
| | | |
| | | } else { |
| | |
| | | layer.alert("æ¥å£è¯·æ±å¤±è´¥!", { icon: 5 }); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | //PPKè®¡ç® x |
| | | function set_PPK() { |
| | | var x_AVG =0; |
| | | var x_SUM = 0; |
| | | var x_PPK = 0; |
| | | var numCount = 0 |
| | | var c4 = [0.7979, 0.8862, 0.9213, 0.9400, 0.9515, 0.9594, 0.9650, 0.9693, 0.9727, 0.9754, 0.9776, 0.9794, 0.9810, 0.9823, 0.9835, 0.9845, 0.9854, 0.9862, 0.9869, 0.9876, 0.9882, 0.9887, 0.9892, 0.9896]; |
| | | |
| | | for (var j = 1; j < option.cols[0].length; j++) { |
| | | if (optionAVG.length != 0 || optionS.length != 0) { |
| | | x_AVG = calc(x_AVG, parseFloat(optionAVG[0][option.cols[0][j].field]), "+"); |
| | | } |
| | | } |
| | | x_AVG = calc(x_AVG, (option.cols[0].length - 1), "/"); |
| | | x_AVG = $("#HCenterline_X").val() == "" ? x_AVG : parseFloat($("#HCenterline_X").val()); |
| | | $("#HCenterline_X").val(x_AVG); |
| | | |
| | | for (var i = 1; i < option.cols[0].length; i++) { |
| | | for (var j = 0; j < option.data.length - 3; j++) { |
| | | numCount += 1; |
| | | x_SUM = calc(x_SUM, parseFloat(((parseFloat(option.data[j][option.cols[0][i].field]) - x_AVG) ** 2).toFixed(6)), "+") |
| | | |
| | | } |
| | | } |
| | | |
| | | x_PPK = Math.sqrt(calc(x_SUM, (numCount - 1), "/")); |
| | | |
| | | var limit = $("#limit").val(); |
| | | if (parseInt(limit) >= 9) { |
| | | $("#HCenterline_S").val(x_PPK.toFixed(4)); |
| | | } |
| | | |
| | | |
| | | //ä¸é |
| | | if ($("#HUpLimit").val() != "" && $("#HDownLimit").val() == "") { |
| | | var HUpLimit = calc(calc(calc(parseFloat($("#HUpLimit").val()), parseFloat($("#HTargetVal").val()), "+"), x_AVG, "-"), calc(calc(3, x_PPK, "*"), c4[option.data.length - 4], "/"), "/"); |
| | | $("#HPPK").val(HUpLimit.toFixed(4)); |
| | | } |
| | | //ä¸é |
| | | else if ($("#HDownLimit").val() != "" && $("#HUpLimit").val() == "") { |
| | | var HDownLimit = calc(calc(x_AVG, calc(parseFloat($("#HDownLimit").val()), parseFloat($("#HTargetVal").val()), "+"), "-"), calc(calc(3, x_PPK, "*"), c4[option.data.length - 4], "/"), "/"); |
| | | $("#HPPK").val(HDownLimit.toFixed(4)); |
| | | } else { |
| | | var HUpLimit = calc(calc(calc(parseFloat($("#HUpLimit").val()), parseFloat($("#HTargetVal").val()), "+"), x_AVG, "-"), calc(calc(3, x_PPK, "*"), c4[option.data.length - 4], "/"), "/"); |
| | | var HDownLimit = (x_AVG - calc(parseFloat($("#HDownLimit").val()), parseFloat($("#HTargetVal").val()), "+")) / ((3 * x_PPK) / c4[option.data.length - 4]); |
| | | $("#HPPK").val(HUpLimit > HDownLimit ? HDownLimit.toFixed(4) : HUpLimit.toFixed(4)); |
| | | } |
| | | } |
| | | |
| | | //CPKè®¡ç® s |
| | | function set_CPK() { |
| | | var x_AVG = 0; |
| | | var s_AVG = 0; |
| | | var s_CPK = 0; |
| | | var d2 = [1.128, 1.693, 2.059, 2.326, 2.534, 2.704, 2.847, 3.078, 3.173, 3.258, 3.336, 3.407, 3.472, 3.532, 3.588, 3.640, 3.689, 3.735, 3.778, 3.819, 3.858, 3.895, 3.931]; |
| | | |
| | | for (var j = 1; j < option.cols[0].length; j++) { |
| | | if (optionAVG.length != 0 || optionS.length != 0) { |
| | | s_AVG = calc(s_AVG, parseFloat(optionS[0][option.cols[0][j].field]), "+"); |
| | | } |
| | | } |
| | | s_AVG = calc(s_AVG, (option.cols[0].length - 1), "/") |
| | | s_AVG = $("#HCenterline_S").val() == "" || "0" ? s_AVG : parseFloat($("#HCenterline_S").val()); |
| | | $("#HCenterline_S").val(s_AVG); |
| | | |
| | | var limit = $("#limit").val(); |
| | | if (parseInt(limit) < 9) { |
| | | $("#HCenterline_S").val(s_AVG.toFixed(4)); |
| | | } |
| | | |
| | | for (var j = 1; j < option.cols[0].length; j++) { |
| | | if (optionAVG.length != 0 || optionS.length != 0) { |
| | | x_AVG = calc(x_AVG, parseFloat(optionAVG[0][option.cols[0][j].field]), "+"); |
| | | } |
| | | } |
| | | x_AVG = calc(x_AVG, (option.cols[0].length - 1), "/"); |
| | | x_AVG = $("#HCenterline_X").val() == "" ? x_AVG : parseFloat($("#HCenterline_X").val()); |
| | | $("#HCenterline_X").val(x_AVG); |
| | | |
| | | s_CPK = calc(s_AVG, d2[option.data.length - 4], "/"); |
| | | |
| | | //ä¸é |
| | | if ($("#HUpLimit").val() != "" && $("#HDownLimit").val() == "") { |
| | | var HUpLimit = calc(calc(calc(parseFloat($("#HUpLimit").val()), parseFloat($("#HTargetVal").val()),"+"), s_AVG, "-"), (3 * s_CPK), "/"); |
| | | $("#HCPK").val(HUpLimit.toFixed(4)); |
| | | } |
| | | //ä¸é |
| | | else if ($("#HDownLimit").val() != "" && $("#HUpLimit").val() == "") { |
| | | var HDownLimit = calc(calc(s_AVG, calc(parseFloat($("#HDownLimit").val()), parseFloat($("#HTargetVal").val()), "+"), "-"), (3 * s_CPK), "/"); |
| | | $("#HCPK").val(HDownLimit.toFixed(4)); |
| | | } else { |
| | | var HUpLimit = calc(calc(calc(parseFloat($("#HUpLimit").val()), parseFloat($("#HTargetVal").val()), "+"), s_AVG, "-"), (3 * s_CPK), "/"); |
| | | var HDownLimit = calc(calc(s_AVG, calc(parseFloat($("#HDownLimit").val()), parseFloat($("#HTargetVal").val()), "+"), "-"), (3 * s_CPK), "/"); |
| | | if (s_CPK == 0) { |
| | | $("#HCPK").val(0); |
| | | } else { |
| | | $("#HCPK").val(HUpLimit > HDownLimit ? HDownLimit.toFixed(4) : HUpLimit.toFixed(4)); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | function calc(num1, num2, calcStr) { |
| | | var str1, // 转æ¢ä¸ºåç¬¦ä¸²çæ°å |
| | | str2, |
| | | ws1 = 0,// ws1ï¼ws2 ç¨æ¥åå¨ä¼ å
¥çnumçå°æ°ç¹åçæ°åç使° |
| | | ws2 = 0,// èµé»è®¤å¼ï¼è§£å³å½æ´æ°åå°æ°è¿ç®æ¶åæ°è®¡ç®é误导è´çç»æè¯¯å·® |
| | | bigger,// biggeråsmallerç¨äºå ï¼åï¼é¤æ³æ¾åºå°çé£ä¸ªæ°åï¼ç»åé¢è¡¥0ï¼è§£å³ä½æ°ä¸å¯¹ä»èé æç计ç®é误çé®é¢ï¼ä¹æ³éè¦å°ç»æé¤ä¸¤ä¸ªæ°åçåæ°ä¹å |
| | | smaller,// ä¾å¦ï¼å å餿³ä¸1.001 + 2.03 ï¼å¦æä¸ç»2.03è¿è¡è¡¥0ï¼æåä¼åæ1001+203ï¼æ°åéä½å¯¼è´ç»æé误ï¼ä¹æ³ä¸1.12*1.1伿¾å¤§ä¸º112*11ï¼æä»¥ç»æéè¦é¤ä»¥1000æä¼æ¯æ£ç¡®çç»æï¼112*11/1000=1.232 |
| | | zeroCount, // éè¦è¡¥å
0çä¸ªæ° |
| | | isExistDot1, // ä¼ å
¥çæ°åæ¯å¦åå¨å°æ°ç¹ |
| | | isExistDot2, |
| | | sum, |
| | | beishu = 1; |
| | | // å°æ°å转æ¢ä¸ºå符串 |
| | | str1 = num1.toString(); |
| | | str2 = num2.toString(); |
| | | // æ¯å¦åå¨å°æ°ç¹ï¼å¤æéè¦è®¡ç®çæ°åæ¯ä¸æ¯å
å«å°æ°ï¼ |
| | | isExistDot1 = str1.indexOf('.') != -1 ? true : false; |
| | | isExistDot2 = str2.indexOf('.') != -1 ? true : false; |
| | | // åå°æ°ç¹åé¢ç使° |
| | | if (isExistDot1) { |
| | | ws1 = str1.split('.')[1].length; |
| | | } |
| | | |
| | | if (isExistDot2) { |
| | | ws2 = str2.split('.')[1].length; |
| | | } |
| | | // å¦ws1 å ws2 æ é»è®¤å¼ï¼å¦ænum1 æ num2 䏿¯å°æ°çè¯å ws1 æ ws2 çå¼å°ä¸º undefined |
| | | // bigger å smaller çå¼ä¼å颿ä¸ç¬¦ |
| | | bigger = ws1 > ws2 ? ws1 : ws2; |
| | | smaller = ws1 < ws2 ? ws1 : ws2; |
| | | |
| | | switch (calcStr) { |
| | | // å åæ³æ¾åºå°çé£ä¸ªæ°åï¼ç»åé¢è¡¥0ï¼è§£å³ä½æ°ä¸å¯¹ä»èé æç计ç®é误çé®é¢ |
| | | // ä¾å¦ï¼1.001 + 2.03 ï¼å¦æä¸ç»2.03è¿è¡è¡¥0ï¼æåä¼åæ1001+203ï¼æ°åéä½å¯¼è´ç»æé误 |
| | | case "+": |
| | | case "-": |
| | | case "/": |
| | | zeroCount = bigger - smaller; |
| | | for (var i = 0; i < zeroCount; i++) { |
| | | if (ws1 == smaller) { |
| | | str1 += "0"; |
| | | } |
| | | else { |
| | | str2 += "0"; |
| | | } |
| | | } |
| | | break; |
| | | case "*": |
| | | // 乿³éè¦å°ç»æé¤ä¸¤ä¸ªæ°åçåæ°ä¹å |
| | | bigger = bigger + smaller; |
| | | break; |
| | | default: |
| | | return "æä¸æ¯æç计ç®ç±»åï¼ç°å·²æ¯æçæå æ³ãåæ³ã乿³ã餿³"; |
| | | break; |
| | | } |
| | | |
| | | // å»é¤æ°åä¸çå°æ°ç¹ |
| | | str1 = str1.replace('.', ''); |
| | | str2 = str2.replace('.', ''); |
| | | |
| | | // 计ç®åæ°ï¼ä¾å¦ï¼1.001å°æ°ç¹åæä¸ä½ï¼åéè¦ä¹ 1000 åæ 1001ï¼åææ´æ°å精度丢失é®é¢åä¸ä¼åå¨ |
| | | for (var i = 0; i < bigger; i++) { |
| | | beishu *= 10; // çä»·äºbeishu = beishu * 10; |
| | | } |
| | | num1 = parseInt(str1); |
| | | num2 = parseInt(str2); |
| | | // è¿è¡æç»è®¡ç®å¹¶é¤ç¸åºåæ° |
| | | switch (calcStr) { |
| | | case "+": |
| | | sum = (num1 + num2) / beishu; |
| | | break; |
| | | case "-": |
| | | sum = (num1 - num2) / beishu; |
| | | break; |
| | | case "*": |
| | | sum = (num1 * num2) / beishu; |
| | | break; |
| | | case "/": |
| | | sum = num1 / num2; |
| | | /* 餿°ä¸è¢«é¤æ°åæ¶æ¾å¤§ä¸å®åæ°ï¼ä¸å½±åç»æï¼ |
| | | æä»¥å¯¹æ°åè¿è¡æ¾å¤§å¯¹åºåæ°å¹¶è¿è¡è¡¥0æä½åä¸ç¨å¦å¯¹åæ°åå¤ç */ |
| | | break; |
| | | default: |
| | | return "æä¸æ¯æç计ç®ç±»åï¼ç°å·²æ¯æçæå æ³ãåæ³ã乿³ã餿³"; |
| | | } |
| | | |
| | | return sum; |
| | | } |
| | | |
| | | //æçº¿å¾ |
| | |
| | | }, |
| | | yAxis: { |
| | | type: 'value', |
| | | min: parseFloat($("#HDownLimit").val()) != 0 ? (parseFloat($("#HTargetVal").val()) + parseFloat($("#HDownLimit").val()) * 1.3) : 0, // 设置æå°å¼ |
| | | max: parseFloat($("#HTargetVal").val()) + parseFloat($("#HUpLimit").val()) * 1.3, // 设置æå¤§å¼ |
| | | interval: (parseFloat($("#HUpLimit").val()) - parseFloat($("#HDownLimit").val()))/10, // 设置é´è· |
| | | min: parseFloat($("#HDownLimit").val()) != 0 ? calc((parseFloat($("#HTargetVal").val()), calc(parseFloat($("#HDownLimit").val()), 1.3), "*"), "+") : 0, // 设置æå°å¼ |
| | | max: calc(parseFloat($("#HTargetVal").val()), calc(parseFloat($("#HUpLimit").val()), 1.3, "*"), "+"), // 设置æå¤§å¼ |
| | | interval: calc(calc(parseFloat($("#HUpLimit").val()), parseFloat($("#HDownLimit").val()), "-"), 10, "/"), // 设置é´è· |
| | | }, |
| | | series: [ |
| | | { |
| | |
| | | yAxis: parseFloat($("#HTargetVal").val()) + parseFloat($("#HDownLimit").val()), lineStyle: { color: '#FF1D00' }, label: { color: '#FF1D00', fontSize: 10 } |
| | | }, |
| | | { |
| | | yAxis: parseFloat($("#HTargetVal").val()) + parseFloat($("#HControlUpperLimit").val()), lineStyle: { color: '#2cb615' }, label: { color: '#2cb615', fontSize: 10 } |
| | | yAxis: parseFloat($("#HControlUpperLimit_X").val()), lineStyle: { color: '#2cb615' }, label: { color: '#2cb615', fontSize: 10 } |
| | | }, |
| | | { |
| | | yAxis: parseFloat($("#HTargetVal").val()) + parseFloat($("#HControlLowerLimit").val()), lineStyle: { color: '#2cb615' }, label: { color: '#2cb615', fontSize: 10 } |
| | | yAxis: parseFloat($("#HControlLowerLimit_X").val()), lineStyle: { color: '#2cb615' }, label: { color: '#2cb615', fontSize: 10 } |
| | | } |
| | | , |
| | | { |
| | | yAxis: parseFloat($("#HCenterline_X").val()), lineStyle: { color: '#6dadf0' }, label: { color: '#6dadf0', fontSize: 10 } |
| | | } |
| | | ] |
| | | }, |
| | |
| | | } |
| | | }, |
| | | itemStyle: { normal: { label: { show: true } } }, |
| | | //markLine: { |
| | | // symbol: 'none',//廿ç®å¤´ |
| | | // data: [ |
| | | // { type: 'max', name: 'Max', lineStyle: { color: 'red' } }, |
| | | // { type: 'average', name: 'Avg', lineStyle: { color: 'blue' } }, |
| | | // { type: 'min', name: 'Min', lineStyle: { color: 'green' } }, |
| | | // ] |
| | | //}, |
| | | markLine: { |
| | | symbol: 'none',//廿ç®å¤´ |
| | | data: [ |
| | | { |
| | | yAxis: parseFloat($("#HControlUpperLimit_S").val()) , lineStyle: { color: '#2cb615' }, label: { color: '#2cb615', fontSize: 10 } |
| | | }, |
| | | { |
| | | yAxis: parseFloat($("#HControlLowerLimit_S").val()), lineStyle: { color: '#2cb615' }, label: { color: '#2cb615', fontSize: 10 } |
| | | } |
| | | , |
| | | { |
| | | yAxis: parseFloat($("#HCenterline_S").val()), lineStyle: { color: '#6dadf0' }, label: { color: '#6dadf0', fontSize: 10 } |
| | | } |
| | | ] |
| | | }, |
| | | } |
| | | ] |
| | | }; |
| | |
| | | $("#HUpLimit").val(data1.data[0].ä¸éå¼); |
| | | $("#HDownLimit").val(data1.data[0].ä¸éå¼); |
| | | $("#HTargetVal").val(data1.data[0].ç®æ å¼); |
| | | $("#HControlUpperLimit").val(data1.data[0].æ§å¶ä¸é); |
| | | $("#HControlLowerLimit").val(data1.data[0].æ§å¶ä¸é); |
| | | //$("#HControlUpperLimit").val(data1.data[0].æ§å¶ä¸é); |
| | | //$("#HControlLowerLimit").val(data1.data[0].æ§å¶ä¸é); |
| | | } else { |
| | | layer.close(wait); |
| | | layer.alert(data1.Message, { icon: 5 }); |