|
|
@@ -81,8 +81,6 @@
|
|
|
</div>
|
|
|
<div class="col-xs-12">
|
|
|
<div class="form-group">
|
|
|
-<!-- <label class="control-label col-sm-2" title="">-->
|
|
|
-<!-- <span class="required ">*</span> ${text('检查内容')}:<i class="fa icon-question hide"></i></label>-->
|
|
|
<div class="col-sm-12">
|
|
|
<table class="table table-bordered" style="table-layout: fixed;white-space: normal;">
|
|
|
<tr>
|
|
|
@@ -98,58 +96,53 @@
|
|
|
<th>实测值5</th>
|
|
|
<th>结果</th>
|
|
|
</tr>
|
|
|
- <tr v-for="(item,index) in options" :key="index">
|
|
|
- <td>{{item.orgName}}</td>
|
|
|
- <td style="word-wrap: break-word;overflow-wrap: break-word;">{{item.content}}</td>
|
|
|
- <td style="word-wrap: break-word;overflow-wrap: break-word;">
|
|
|
- <textarea v-model="item.conclusionContent" class="form-control" rows="2"></textarea>
|
|
|
- </td>
|
|
|
- <td>{{item.checkTool}}</td>
|
|
|
- <td>{{item.checkFrequency}}</td>
|
|
|
- <template v-if="item.measureType == '2'">
|
|
|
- <td>
|
|
|
- <select v-model="item.a1" class="form-control" @change="autoResult(item)">
|
|
|
-
|
|
|
- <option value="合格">合格</option>
|
|
|
- <option value="不合格">不合格</option>
|
|
|
- </select>
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <select v-model="item.a2" class="form-control" @change="autoResult(item)">
|
|
|
-
|
|
|
- <option value="合格">合格</option>
|
|
|
- <option value="不合格">不合格</option>
|
|
|
- </select>
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <select v-model="item.a3" class="form-control" @change="autoResult(item)">
|
|
|
-
|
|
|
- <option value="合格">合格</option>
|
|
|
- <option value="不合格">不合格</option>
|
|
|
- </select>
|
|
|
- </td>
|
|
|
- <td>
|
|
|
- <select v-model="item.a4" class="form-control" @change="autoResult(item)">
|
|
|
-
|
|
|
- <option value="合格">合格</option>
|
|
|
- <option value="不合格">不合格</option>
|
|
|
- </select>
|
|
|
+ <tr v-for="(item,index) in options" :key="'n-'+index">
|
|
|
+ <td>{{item.orgName}}</td>
|
|
|
+ <td style="word-wrap: break-word;overflow-wrap: break-word;">{{item.content}}</td>
|
|
|
+ <td style="word-wrap: break-word;overflow-wrap: break-word;">
|
|
|
+ <textarea v-model="item.conclusionContent" class="form-control" rows="2"></textarea>
|
|
|
</td>
|
|
|
- <td>
|
|
|
- <select v-model="item.a5" class="form-control" @change="autoResult(item)">
|
|
|
-
|
|
|
- <option value="合格">合格</option>
|
|
|
- <option value="不合格">不合格</option>
|
|
|
- </select>
|
|
|
- </td>
|
|
|
- </template>
|
|
|
- <template v-else>
|
|
|
- <td><input type="text" v-model="item.a1" class="form-control" @input="formatData()"></td>
|
|
|
- <td><input type="text" v-model="item.a2" class="form-control" @input="formatData()"></td>
|
|
|
- <td><input type="text" v-model="item.a3" class="form-control" @input="formatData()"></td>
|
|
|
- <td><input type="text" v-model="item.a4" class="form-control" @input="formatData()"></td>
|
|
|
- <td><input type="text" v-model="item.a5" class="form-control" @input="formatData()"></td>
|
|
|
- </template>
|
|
|
+ <td>{{item.checkTool}}</td>
|
|
|
+ <td>{{item.checkFrequency}}</td>
|
|
|
+ <template v-if="item.measureType == '2'">
|
|
|
+ <td>
|
|
|
+ <select v-model="item.a1" class="form-control" @change="autoResult(item)">
|
|
|
+ <option value="合格">合格</option>
|
|
|
+ <option value="不合格">不合格</option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <select v-model="item.a2" class="form-control" @change="autoResult(item)">
|
|
|
+ <option value="合格">合格</option>
|
|
|
+ <option value="不合格">不合格</option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <select v-model="item.a3" class="form-control" @change="autoResult(item)">
|
|
|
+ <option value="合格">合格</option>
|
|
|
+ <option value="不合格">不合格</option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <select v-model="item.a4" class="form-control" @change="autoResult(item)">
|
|
|
+ <option value="合格">合格</option>
|
|
|
+ <option value="不合格">不合格</option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <select v-model="item.a5" class="form-control" @change="autoResult(item)">
|
|
|
+ <option value="合格">合格</option>
|
|
|
+ <option value="不合格">不合格</option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ </template>
|
|
|
+ <template v-else>
|
|
|
+ <td><input type="text" v-model="item.a1" class="form-control" @input="formatData()"></td>
|
|
|
+ <td><input type="text" v-model="item.a2" class="form-control" @input="formatData()"></td>
|
|
|
+ <td><input type="text" v-model="item.a3" class="form-control" @input="formatData()"></td>
|
|
|
+ <td><input type="text" v-model="item.a4" class="form-control" @input="formatData()"></td>
|
|
|
+ <td><input type="text" v-model="item.a5" class="form-control" @input="formatData()"></td>
|
|
|
+ </template>
|
|
|
<td>
|
|
|
<div v-if="item.type == 1">
|
|
|
<label v-if="item.result == 1"><input type="radio" v-model="item.result" value="1">合格</label>
|
|
|
@@ -157,11 +150,11 @@
|
|
|
</div>
|
|
|
<div v-if="item.type == 2">
|
|
|
<label>
|
|
|
- <input type="radio" :name="item.id" v-model="item.result" value="1" @click="formatData2(item,1)">
|
|
|
+ <input type="radio" :name="'n-'+item.id" v-model="item.result" value="1" @click="formatData2(item,1,'options')">
|
|
|
合格
|
|
|
</label>
|
|
|
<label>
|
|
|
- <input type="radio" :name="item.id" v-model="item.result" value="0" @click="formatData2(item,0)">
|
|
|
+ <input type="radio" :name="'n-'+item.id" v-model="item.result" value="0" @click="formatData2(item,0,'options')">
|
|
|
不合格
|
|
|
</label>
|
|
|
</div>
|
|
|
@@ -171,6 +164,94 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <div v-if="inspectLevel === '不合格'">
|
|
|
+ <div class="form-unit">${text('加严检查项')}</div>
|
|
|
+ <div class="col-xs-12">
|
|
|
+ <div class="form-group">
|
|
|
+ <div class="col-sm-12">
|
|
|
+ <table class="table table-bordered" style="table-layout: fixed;white-space: normal;">
|
|
|
+ <tr>
|
|
|
+ <th>项目</th>
|
|
|
+ <th>检查内容</th>
|
|
|
+ <th>结论内容</th>
|
|
|
+ <th>检查工具</th>
|
|
|
+ <th>检查频率</th>
|
|
|
+ <th>实测值1</th>
|
|
|
+ <th>实测值2</th>
|
|
|
+ <th>实测值3</th>
|
|
|
+ <th>实测值4</th>
|
|
|
+ <th>实测值5</th>
|
|
|
+ <th>结果</th>
|
|
|
+ </tr>
|
|
|
+ <tr v-for="(item,index) in jyOptions" :key="'j-'+index">
|
|
|
+ <td>{{item.orgName}}</td>
|
|
|
+ <td style="word-wrap: break-word;overflow-wrap: break-word;">{{item.content}}</td>
|
|
|
+ <td style="word-wrap: break-word;overflow-wrap: break-word;">
|
|
|
+ <textarea v-model="item.conclusionContent" class="form-control" rows="2"></textarea>
|
|
|
+ </td>
|
|
|
+ <td>{{item.checkTool}}</td>
|
|
|
+ <td>{{item.checkFrequency}}</td>
|
|
|
+ <template v-if="item.measureType == '2'">
|
|
|
+ <td>
|
|
|
+ <select v-model="item.a1" class="form-control" @change="autoResult(item)">
|
|
|
+ <option value="合格">合格</option>
|
|
|
+ <option value="不合格">不合格</option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <select v-model="item.a2" class="form-control" @change="autoResult(item)">
|
|
|
+ <option value="合格">合格</option>
|
|
|
+ <option value="不合格">不合格</option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <select v-model="item.a3" class="form-control" @change="autoResult(item)">
|
|
|
+ <option value="合格">合格</option>
|
|
|
+ <option value="不合格">不合格</option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <select v-model="item.a4" class="form-control" @change="autoResult(item)">
|
|
|
+ <option value="合格">合格</option>
|
|
|
+ <option value="不合格">不合格</option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ <td>
|
|
|
+ <select v-model="item.a5" class="form-control" @change="autoResult(item)">
|
|
|
+ <option value="合格">合格</option>
|
|
|
+ <option value="不合格">不合格</option>
|
|
|
+ </select>
|
|
|
+ </td>
|
|
|
+ </template>
|
|
|
+ <template v-else>
|
|
|
+ <td><input type="text" v-model="item.a1" class="form-control" @input="formatData()"></td>
|
|
|
+ <td><input type="text" v-model="item.a2" class="form-control" @input="formatData()"></td>
|
|
|
+ <td><input type="text" v-model="item.a3" class="form-control" @input="formatData()"></td>
|
|
|
+ <td><input type="text" v-model="item.a4" class="form-control" @input="formatData()"></td>
|
|
|
+ <td><input type="text" v-model="item.a5" class="form-control" @input="formatData()"></td>
|
|
|
+ </template>
|
|
|
+ <td>
|
|
|
+ <div v-if="item.type == 1">
|
|
|
+ <label v-if="item.result == 1"><input type="radio" v-model="item.result" value="1">合格</label>
|
|
|
+ <label v-if="item.result == 0"><input type="radio" v-model="item.result" value="0">不合格</label>
|
|
|
+ </div>
|
|
|
+ <div v-if="item.type == 2">
|
|
|
+ <label>
|
|
|
+ <input type="radio" :name="'j-'+item.id" v-model="item.result" value="1" @click="formatData2(item,1,'jyOptions')">
|
|
|
+ 合格
|
|
|
+ </label>
|
|
|
+ <label>
|
|
|
+ <input type="radio" :name="'j-'+item.id" v-model="item.result" value="0" @click="formatData2(item,0,'jyOptions')">
|
|
|
+ 不合格
|
|
|
+ </label>
|
|
|
+ </div>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
<!-- <div class="col-xs-12">-->
|
|
|
<!-- <div class="form-group">-->
|
|
|
<!-- <label class="control-label col-sm-2" title="">-->
|
|
|
@@ -244,17 +325,22 @@ var vm = new Vue({
|
|
|
bhgQty:"",
|
|
|
inspectLevel:"",
|
|
|
state:"1",
|
|
|
- options:[]
|
|
|
+ options:[],
|
|
|
+ jyOptions:[]
|
|
|
},
|
|
|
computed: {
|
|
|
- // 计算属性的 getter
|
|
|
resoptions: function () {
|
|
|
- //console.log(newval);
|
|
|
return JSON.parse(JSON.stringify(this.options));
|
|
|
+ },
|
|
|
+ resJyOptions: function () {
|
|
|
+ return JSON.parse(JSON.stringify(this.jyOptions));
|
|
|
}
|
|
|
},
|
|
|
watch: {
|
|
|
- resoptions: function (newval, oldval) {
|
|
|
+ resoptions: function () {
|
|
|
+ this.formatData();
|
|
|
+ },
|
|
|
+ resJyOptions: function () {
|
|
|
this.formatData();
|
|
|
},
|
|
|
sn:function (newval, oldval){
|
|
|
@@ -274,76 +360,75 @@ var vm = new Vue({
|
|
|
var hasMax = max !== null && max !== undefined && max !== '' && !isNaN(Number(max));
|
|
|
return hasMin || hasMax;
|
|
|
},
|
|
|
- formatData(){
|
|
|
- for (let o in this.options){
|
|
|
- let item = this.options[o];
|
|
|
- // 检查5个实测值是否全部为空
|
|
|
- let v1 = item.a1 ? String(item.a1).trim() : '';
|
|
|
- let v2 = item.a2 ? String(item.a2).trim() : '';
|
|
|
- let v3 = item.a3 ? String(item.a3).trim() : '';
|
|
|
- let v4 = item.a4 ? String(item.a4).trim() : '';
|
|
|
- let v5 = item.a5 ? String(item.a5).trim() : '';
|
|
|
- let allEmpty = (v1 === '' && v2 === '' && v3 === '' && v4 === '' && v5 === '');
|
|
|
+ calcItemResult(item){
|
|
|
+ let v1 = item.a1 ? String(item.a1).trim() : '';
|
|
|
+ let v2 = item.a2 ? String(item.a2).trim() : '';
|
|
|
+ let v3 = item.a3 ? String(item.a3).trim() : '';
|
|
|
+ let v4 = item.a4 ? String(item.a4).trim() : '';
|
|
|
+ let v5 = item.a5 ? String(item.a5).trim() : '';
|
|
|
+ let allEmpty = (v1 === '' && v2 === '' && v3 === '' && v4 === '' && v5 === '');
|
|
|
|
|
|
- if(item['type'] == "1"){ // 系统判定
|
|
|
- let fminval = parseFloat(item.minValue ? item.minValue : '');
|
|
|
- item.minValue = fminval;
|
|
|
- let fmaxval = parseFloat(item.maxValue ? item.maxValue : '');
|
|
|
- item.maxValue = fmaxval;
|
|
|
+ if(item['type'] == "1"){ // 系统判定
|
|
|
+ let fminval = parseFloat(item.minValue ? item.minValue : '');
|
|
|
+ item.minValue = fminval;
|
|
|
+ let fmaxval = parseFloat(item.maxValue ? item.maxValue : '');
|
|
|
+ item.maxValue = fmaxval;
|
|
|
|
|
|
- // 5个实测值未输入或未选择时,默认不合格
|
|
|
- if(allEmpty){
|
|
|
- item.result = "0";
|
|
|
- continue;
|
|
|
- }
|
|
|
- // 下拉框类型:全部为"合格"才合格
|
|
|
- if(item.measureType == '2'){
|
|
|
- let allOk = (v1 === '合格' && v2 === '合格' && v3 === '合格' && v4 === '合格' && v5 === '合格');
|
|
|
- item.result = allOk ? "1" : "0";
|
|
|
- continue;
|
|
|
- }
|
|
|
- // 输入框类型无测量范围但有输入值,默认合格
|
|
|
- if (!this.hasMeasureRange(item)) {
|
|
|
- item.result = "1";
|
|
|
- continue;
|
|
|
- }
|
|
|
- // 输入框类型有测量范围,逐个判断
|
|
|
- let tret = "1";
|
|
|
- let a1 = parseFloat(item.a1 ? item.a1 : '');
|
|
|
- let ret1 = this.checkResult(fminval, fmaxval, a1);
|
|
|
- let a2 = parseFloat(item.a2 ? item.a2 : '');
|
|
|
- let ret2 = this.checkResult(fminval, fmaxval, a2);
|
|
|
- let a3 = parseFloat(item.a3 ? item.a3 : '');
|
|
|
- let ret3 = this.checkResult(fminval, fmaxval, a3);
|
|
|
- let a4 = parseFloat(item.a4 ? item.a4 : '');
|
|
|
- let ret4 = this.checkResult(fminval, fmaxval, a4);
|
|
|
- let a5 = parseFloat(item.a5 ? item.a5 : '');
|
|
|
- let ret5 = this.checkResult(fminval, fmaxval, a5);
|
|
|
- if(ret1 == "NG" || ret2 == "NG" || ret3 == "NG" || ret4 == "NG" || ret5 == "NG"){
|
|
|
- tret = "0"
|
|
|
- }
|
|
|
- item.result = tret;
|
|
|
- }else{ // 人工判定
|
|
|
- // 5个实测值未输入或未选择且未手动选择结果时,默认不合格
|
|
|
- if(allEmpty && (item.result === '' || item.result === undefined || item.result === null)){
|
|
|
- item.result = "0";
|
|
|
- }
|
|
|
+ if(allEmpty){
|
|
|
+ item.result = "0";
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(item.measureType == '2'){
|
|
|
+ let allOk = (v1 === '合格' && v2 === '合格' && v3 === '合格' && v4 === '合格' && v5 === '合格');
|
|
|
+ item.result = allOk ? "1" : "0";
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (!this.hasMeasureRange(item)) {
|
|
|
+ item.result = "1";
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ let tret = "1";
|
|
|
+ let a1 = parseFloat(item.a1 ? item.a1 : '');
|
|
|
+ let ret1 = this.checkResult(fminval, fmaxval, a1);
|
|
|
+ let a2 = parseFloat(item.a2 ? item.a2 : '');
|
|
|
+ let ret2 = this.checkResult(fminval, fmaxval, a2);
|
|
|
+ let a3 = parseFloat(item.a3 ? item.a3 : '');
|
|
|
+ let ret3 = this.checkResult(fminval, fmaxval, a3);
|
|
|
+ let a4 = parseFloat(item.a4 ? item.a4 : '');
|
|
|
+ let ret4 = this.checkResult(fminval, fmaxval, a4);
|
|
|
+ let a5 = parseFloat(item.a5 ? item.a5 : '');
|
|
|
+ let ret5 = this.checkResult(fminval, fmaxval, a5);
|
|
|
+ if(ret1 == "NG" || ret2 == "NG" || ret3 == "NG" || ret4 == "NG" || ret5 == "NG"){
|
|
|
+ tret = "0"
|
|
|
+ }
|
|
|
+ item.result = tret;
|
|
|
+ }else{ // 人工判定
|
|
|
+ if(allEmpty && (item.result === '' || item.result === undefined || item.result === null)){
|
|
|
+ item.result = "0";
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- let ops = JSON.parse(JSON.stringify(this.options));
|
|
|
-
|
|
|
- console.log('ret',JSON.stringify(ops));
|
|
|
- $('#checkList').val(JSON.stringify(ops));
|
|
|
-
|
|
|
},
|
|
|
- formatData2(obj,val){
|
|
|
+ formatData(){
|
|
|
for (let o in this.options){
|
|
|
- if(obj.id == this.options[o].id){
|
|
|
- this.options[o].result = val;
|
|
|
+ this.calcItemResult(this.options[o]);
|
|
|
+ }
|
|
|
+ for (let o in this.jyOptions){
|
|
|
+ this.calcItemResult(this.jyOptions[o]);
|
|
|
+ }
|
|
|
+
|
|
|
+ let ops = JSON.parse(JSON.stringify(this.options || []));
|
|
|
+ let jyOps = JSON.parse(JSON.stringify(this.jyOptions || []));
|
|
|
+ let allOps = ops.concat(jyOps);
|
|
|
+ console.log('ret',JSON.stringify(allOps));
|
|
|
+ $('#checkList').val(JSON.stringify(allOps));
|
|
|
+ },
|
|
|
+ formatData2(obj,val,listName){
|
|
|
+ var list = this[listName || 'options'] || [];
|
|
|
+ for (let o in list){
|
|
|
+ if(obj.id == list[o].id){
|
|
|
+ list[o].result = val;
|
|
|
}
|
|
|
}
|
|
|
- console.log('ret11',val,JSON.stringify(this.options));
|
|
|
this.formatData();
|
|
|
},
|
|
|
// 测量类型为下拉框时,根据5个实测值自动判定结果
|
|
|
@@ -360,6 +445,7 @@ var vm = new Vue({
|
|
|
}
|
|
|
}
|
|
|
item.result = allOk ? '1' : '0';
|
|
|
+ this.formatData();
|
|
|
},
|
|
|
checkResult(fminval,fmaxval,fcontent){
|
|
|
let result = "NG";
|
|
|
@@ -412,6 +498,7 @@ var vm = new Vue({
|
|
|
that.bhgQty="";
|
|
|
that.inspectLevel="";
|
|
|
that.options=[];
|
|
|
+ that.jyOptions=[];
|
|
|
that.formatData();
|
|
|
}else {
|
|
|
var snFields = that.parseSnFields(that.sn);
|
|
|
@@ -424,11 +511,15 @@ var vm = new Vue({
|
|
|
that.hgQty=that.faNums;
|
|
|
that.bhgQty=0;
|
|
|
that.inspectLevel=res.data.inspectLevel || "";
|
|
|
- that.options=res.data.mitList;
|
|
|
+ that.options=res.data.mitList || [];
|
|
|
+ that.jyOptions=(that.inspectLevel === '不合格' ? (res.data.jyMitList || []) : []);
|
|
|
|
|
|
for (let o in that.options){
|
|
|
that.options[o]['result'] = "";
|
|
|
}
|
|
|
+ for (let o in that.jyOptions){
|
|
|
+ that.jyOptions[o]['result'] = "";
|
|
|
+ }
|
|
|
that.formatData();
|
|
|
}
|
|
|
})
|
|
|
@@ -464,7 +555,9 @@ var vm = new Vue({
|
|
|
that.faNums=0;
|
|
|
that.hgQty="";
|
|
|
that.bhgQty="";
|
|
|
+ that.inspectLevel="";
|
|
|
that.options=[];
|
|
|
+ that.jyOptions=[];
|
|
|
that.formatData();
|
|
|
}else {
|
|
|
var snFields = that.parseSnFields(value);
|
|
|
@@ -476,7 +569,15 @@ var vm = new Vue({
|
|
|
that.faNums=res.data.faNums || snFields.faNums;
|
|
|
that.hgQty=that.faNums;
|
|
|
that.bhgQty=0;
|
|
|
- that.options=res.data.mitList;
|
|
|
+ that.inspectLevel=res.data.inspectLevel || "";
|
|
|
+ that.options=res.data.mitList || [];
|
|
|
+ that.jyOptions=(that.inspectLevel === '不合格' ? (res.data.jyMitList || []) : []);
|
|
|
+ for (let o in that.options){
|
|
|
+ that.options[o]['result'] = "";
|
|
|
+ }
|
|
|
+ for (let o in that.jyOptions){
|
|
|
+ that.jyOptions[o]['result'] = "";
|
|
|
+ }
|
|
|
that.formatData();
|
|
|
}
|
|
|
})
|