<style scoped>
|
.inspection {
|
height: 100%;
|
overflow-y: auto;
|
}
|
|
.inspection::-webkit-scrollbar {
|
width: 0;
|
}
|
|
.title {
|
height: 60px;
|
line-height: 60px;
|
}
|
|
.search {
|
width: 100%;
|
margin-bottom: 10px;
|
background-color: #fff;
|
border-radius: 3px;
|
}
|
|
.search .form-inline {
|
padding-top: 20px;
|
padding-left: 50px;
|
}
|
|
.center {
|
width: calc(100% - 40px);
|
/* max-height: 580px; */
|
background-color: #fff;
|
border-radius: 3px;
|
padding: 20px;
|
overflow: auto;
|
}
|
|
.center-box {
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
flex-wrap: wrap;
|
}
|
|
.tables {
|
margin-bottom: 16px;
|
}
|
|
.tables td {
|
height: 40px;
|
width: 100px;
|
text-align: center;
|
font-size: 14px;
|
}
|
|
.content {
|
display: flex;
|
width: 100%;
|
height: 100%;
|
align-items: center;
|
justify-content: left;
|
padding: 5px;
|
box-sizing: border-box;
|
}
|
|
.content-h-0 {
|
justify-content: center;
|
}
|
|
.content-h-1 {
|
justify-content: start;
|
}
|
|
.content-h-2 {
|
justify-content: end;
|
}
|
|
.content-v-0 {
|
align-items: center;
|
}
|
|
.content-v-1 {
|
align-items: start;
|
}
|
|
.content-v-2 {
|
align-items: end;
|
}
|
|
.table_input {
|
width: 100%;
|
height: 100%;
|
}
|
|
.collection {
|
width: 50px;
|
height: 100%;
|
margin-left: 5px;
|
border-color: transparent;
|
background-color: #409eff;
|
color: #fff;
|
border-radius: 4px;
|
font-size: 12px;
|
}
|
|
.collection:active {
|
opacity: .7;
|
}
|
</style>
|
<style>
|
.el-form-item__label {
|
color: #000;
|
}
|
|
.el-drawer__header::before {
|
content: "";
|
display: inline-block;
|
width: 4px;
|
height: 30.24px;
|
background: #3A7BFA;
|
border-radius: 10px;
|
margin-left: 32px;
|
margin-right: 8.5px;
|
}
|
|
.el-drawer__header {
|
color: #303133;
|
}
|
</style>
|
<template>
|
<div v-loading="loading" class="inspection">
|
<el-row class="title">
|
<el-col :span="12" style="padding-left: 20px;">检验单详情</el-col>
|
<el-col :span="12" style="text-align: right;">
|
<el-button size="small" type="primary" @click="sampleVisible=true">样品切换</el-button>
|
<el-button size="small" type="primary" @click="taskVisible=true">任务切换</el-button>
|
<el-button size="small" type="primary" @click="submit" v-show="state==1" :loading="submitLoading">提交</el-button>
|
<!-- 复核 -->
|
<el-button size="medium" type="primary" @click="upInsReview(1)" :loading="reviewLoading"
|
v-show="state>1">通过</el-button>
|
<el-button size="medium" @click="upInsReview(0)" v-show="state>1">不通过</el-button>
|
<el-button size="small" @click="$emit('goback')">返回</el-button>
|
</el-col>
|
</el-row>
|
<div class="search">
|
<el-form :inline="true" :model="searchForm" class="form-inline" label-width="100px">
|
<el-form-item label="委托编号:">
|
<el-input clearable v-model="insOrder.entrustCode" disabled size="small" placeholder="请输入"></el-input>
|
</el-form-item>
|
<el-form-item label="样品编号:">
|
<el-input clearable v-model="currentSample.sampleCode" disabled size="small" placeholder="请输入"></el-input>
|
</el-form-item>
|
<el-form-item label="样品名称:">
|
<el-input clearable v-model="currentSample.sample" disabled size="small" placeholder="请输入"></el-input>
|
</el-form-item>
|
<el-form-item label="样品数量:">
|
<el-input clearable v-model="sampleProduct.length" disabled size="small" placeholder="请输入"></el-input>
|
</el-form-item>
|
<el-form-item label="下发时间:">
|
<el-input clearable v-model="insOrder.sendTime" disabled size="small" placeholder="请输入"></el-input>
|
</el-form-item>
|
<el-form-item label="紧急程度:">
|
<el-input clearable v-model="insOrder.typeName" disabled size="small" placeholder="请输入"></el-input>
|
</el-form-item>
|
<el-form-item label="约定时间:">
|
<el-input clearable v-model="insOrder.appointed" disabled size="small" placeholder="请输入"></el-input>
|
</el-form-item>
|
<el-form-item label="当前样品位数:">
|
<el-tag v-if="currentSample.index">{{ `NO.${currentSample.index}` }}</el-tag>
|
</el-form-item>
|
</el-form>
|
</div>
|
<div class="center">
|
<div class="center-box">
|
<table border="1" class="tables" cellpadding="10" v-for="(item,index) in tableList" :key="index">
|
<tbody>
|
<tr v-for="(m,i) in item.arr" :key="i">
|
<td :id='item.templateId+"-"+n.i+"-"+n.r+"-"+n.c' v-for="(n,j) in m" :key="j"
|
:colspan="n.v.mc&&n.v.mc.cs?n.v.mc.cs:1" :rowspan="n.v.mc&&n.v.mc.rs?n.v.mc.rs:1"
|
:style="`background:${n.v.bg};color:${n.v.fc};font-size:${n.v.fs}px;width:${item.style.columnlen[n.c]}px;height:${item.style.rowlen[n.r]}px;font-wight:${n.v.bl?'bold':''};`">
|
<div class="content" :class="`content-h-${n.v.ht} content-v-${n.v.vt}`">
|
<template v-if="n.v.ps!=undefined && n.v.ps.value==='检验值'">
|
<el-input v-if="getInspectionValueType(n.i) == 1" class="table_input" v-model="n.v.v"
|
:disabled="getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '')||state>1"
|
@change="m=>changeInput(m,`${item.templateId}-${n.r}-${n.c}-${n.i}`)" />
|
<el-input v-else-if="getInspectionValueType(n.i) == 2" class="table_input" type="textarea"
|
:autosize="{ minRows: 1}" v-model="n.v.v" :disabled="state>1" />
|
<el-select v-else-if="getInspectionValueType(n.i) == 5" class="table_input" v-model="n.v.v"
|
:disabled="state>1">
|
<el-option label="是" value="是"></el-option>
|
<el-option label="否" value="否"></el-option>
|
</el-select>
|
<span :style="`font-family:${n.v.ff} !important;`"
|
v-else-if="getInspectionValueType(n.i) == 4">/</span>
|
<el-button type="primary" icon="el-icon-edit" size="mini" circle
|
v-if="getInspectionItemType(n.i) == 1" style="border: 0;margin-left: 2px;"
|
@click="getSystemValue(n)" :disabled="(n.u != userId && n.u != undefined && n.u != '')||state>1">
|
</el-button>
|
</template>
|
<template v-else-if="n.v.ps!=undefined && n.v.ps.value==='结论'">
|
<span v-if="n.v.v===1" :style="`font-family:${n.v.ff} !important;color: green;`">合格</span>
|
<span v-else-if="n.v.v===0" :style="`font-family:${n.v.ff} !important;color: red;`">不合格</span>
|
<span v-else :style="`font-family:${n.v.ff} !important;`">待定</span>
|
</template>
|
<template v-else-if="n.v.ps!=undefined && n.v.ps.value==='设备'">
|
<el-select v-model="n.v.v" placeholder="请选择" @visible-change="e=>getEquipOptions(e,n.i)"
|
:disabled="state>1">
|
<el-option v-for="item in equipOptions" :key="item.value" :label="item.label" :value="item.label">
|
</el-option>
|
</el-select>
|
</template>
|
<span v-else :style="`font-family:${n.v.ff} !important;`">{{n.v.v}}</span>
|
</div>
|
</td>
|
</tr>
|
</tbody>
|
</table>
|
</div>
|
</div>
|
<el-drawer title="样品切换" :visible.sync="sampleVisible" :size="500">
|
<el-table class="el-table" ref="productTable" :data="sampleProduct" height="100%" tooltip-effect="dark" border
|
highlight-current-row @row-click="handleChangeSample" :row-class-name="tableRowClassName"
|
:current-row-key="currentKey" :row-key="record=>record.index" v-if="sampleVisible">
|
<el-table-column type="index" align="center" label="序号" width="70px" :key="Math.random()">
|
</el-table-column>
|
<el-table-column prop="sampleCode" label="样品编号" min-width="100px" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="model" label="样品型号" min-width="100px" show-overflow-tooltip></el-table-column>
|
<el-table-column prop="insState" label="检测状态" width="95px" show-overflow-tooltip>
|
<template slot-scope="scope">
|
<el-tag v-for="(item, i) in typeList" :key="i" v-if="item.value == scope.row.insState" :type="item.type"
|
size="medium" style="margin-right: 5px;">{{item.label}}</el-tag>
|
</template>
|
</el-table-column>
|
<el-table-column prop="isLeave" label="是否留样" width="95px" show-overflow-tooltip align="center">
|
<template slot-scope="scope">
|
<span>{{ scope.row.isLeave==0?'否':'是' }}</span>
|
</template>
|
</el-table-column>
|
<!-- 检验单会有一个是否有配套样品字段控制显示 -->
|
<el-table-column prop="joinModel" label="配套样品型号" min-width="130px" show-overflow-tooltip
|
v-if="insOrder.mating>0"></el-table-column>
|
<el-table-column prop="joinName" label="配套样品名称" min-width="130px" show-overflow-tooltip
|
v-if="insOrder.mating>0"></el-table-column>
|
<el-table-column prop="joinNum" label="配套样品数量" min-width="130px" show-overflow-tooltip
|
v-if="insOrder.mating>0"></el-table-column>
|
</el-table>
|
</el-drawer>
|
<el-drawer title="任务切换" :visible.sync="taskVisible" :size="500">
|
<ValueTable class="value-table" ref="insOrderPlan" :url="$api.insOrderPlan.selectInsOrderPlanList"
|
:componentData="componentData" :key="upIndex" />
|
</el-drawer>
|
<el-dialog title="检验复核" :visible.sync="reviewDia" width="400px">
|
<div class="body" style="display: flex;" v-if="reviewDia">
|
<div class="search_label" style="width: 120px;"><span class="required-span">* </span>不通过原因:</div>
|
<div class="search_input">
|
<el-input size="small" clearable v-model="noReason" type="textarea"
|
:autosize="{ minRows: 3, maxRows: 5}"></el-input>
|
</div>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="reviewDia = false">取 消</el-button>
|
<el-button type="primary" @click="handleReviewDia" :loading="reviewLoading">确 定</el-button>
|
</span>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script>
|
import ValueTable from '../../tool/value-table.vue'
|
export default {
|
props: ['sonLaboratory', 'orderId', 'state'],
|
components: {
|
ValueTable,
|
},
|
data() {
|
return {
|
sampleVisible: false,
|
taskVisible: false,
|
submitLoading: false,
|
searchForm: {
|
sampleName: null,
|
state: null
|
},
|
id: 0,
|
componentData: {
|
entity: {
|
sonLaboratory: null,
|
userId: 0
|
},
|
isIndex: false,
|
showSelect: false,
|
select: false,
|
selectMethod: 'handleChangeTask',
|
sort: false,
|
do: [],
|
isPage: false,
|
linkEvent: {},
|
tagField: {
|
type: {
|
select: []
|
},
|
insState: {
|
select: []
|
},
|
},
|
currentId: '',
|
selectField: {},
|
requiredAdd: [],
|
requiredUp: []
|
},
|
upIndex: 0,
|
insOrder: {},
|
sampleProduct: [],
|
typeList: [],
|
urgentList: [],
|
currentSample: {}, //当前样品信息
|
tableList: [],
|
loading: false,
|
ps: {},
|
param: {},
|
currentKey: 1,
|
comparisonList: [],
|
excelMethodList: [],
|
equipOptions: [],
|
userId: 0,
|
reviewLoading: false,
|
reviewDia: false,
|
noReason: ''
|
}
|
},
|
created() {
|
this.componentData.entity.sonLaboratory = this.sonLaboratory;
|
this.id = this.orderId;
|
this.getUserInfo()
|
},
|
mounted() {
|
this.getTypeDicts()
|
this.getInsStateDicts()
|
this.getComparisonList()
|
},
|
watch: {
|
id(val) {
|
this.loading = true
|
this.$axios.post(this.$api.insOrderPlan.doInsOrder, {
|
id: val,
|
laboratory: this.sonLaboratory
|
}).then(res => {
|
this.insOrder = res.data.insOrder;
|
this.urgentList.forEach(m => {
|
if (m.value == this.insOrder.type) {
|
this.insOrder.typeName = m.label
|
}
|
})
|
this.sampleProduct = res.data.sampleProduct
|
this.currentSample = this.sampleProduct[0]
|
this.currentSample.insProduct.forEach(a => {
|
this.param[a.id] = {
|
insValue: [],
|
comValue: [],
|
resValue: null,
|
equipValue: null,
|
insResult: null
|
}
|
})
|
if (this.currentSample.index == undefined) this.currentSample['index'] = 1
|
this.loading = false
|
this.handleTableData()
|
this.componentData.currentId = val;
|
this.currentKey = 1;
|
})
|
}
|
},
|
methods: {
|
handleChangeSample(row, column, event) {
|
this.currentSample = row;
|
this.param = {}
|
this.currentSample.insProduct.forEach(a => {
|
this.param[a.id] = {
|
insValue: [],
|
comValue: [],
|
resValue: null,
|
equipValue: null,
|
insResult: null
|
}
|
})
|
this.handleTableData()
|
this.sampleVisible = false;
|
this.currentKey = row.index
|
},
|
handleChangeTask(row) {
|
if (row.length > 0) this.id = row[0].id;
|
this.taskVisible = false;
|
},
|
getTypeDicts() {
|
this.$axios.post(this.$api.enums.selectEnumByCategory, {
|
category: "紧急程度"
|
}).then(res => {
|
let data = res.data
|
data.forEach(ele => {
|
if (ele.value === '0') {
|
ele.type = 'success'
|
} else if (ele.value === '1') {
|
ele.type = 'warning'
|
} else if (ele.value === '2') {
|
ele.type = 'danger'
|
}
|
})
|
this.urgentList = data;
|
this.componentData.tagField.type.select = data
|
})
|
},
|
getInsStateDicts() {
|
this.$axios.post(this.$api.enums.selectEnumByCategory, {
|
category: "检验任务状态"
|
}).then(res => {
|
let data = res.data
|
data.forEach(ele => {
|
//0:待检验 1:检验中 2:已检验 3:待复核 4:复核未通过 5:复核通过
|
if (['2', '5'].includes(ele.value)) {
|
ele.type = 'success'
|
} else if (['1', '3'].includes(ele.value)) {
|
ele.type = 'warning'
|
} else if (['0', '4'].includes(ele.value)) {
|
ele.type = 'danger'
|
}
|
})
|
this.typeList = data
|
this.componentData.tagField.insState.select = data
|
})
|
},
|
getComparisonList() {
|
this.$axios.post(this.$api.enums.selectEnumByCategory, {
|
category: "表格坐标转换"
|
}).then(res => {
|
let data = res.data
|
this.comparisonList = data;
|
})
|
},
|
tableRowClassName({
|
row,
|
rowIndex
|
}) {
|
row.index = rowIndex + 1;
|
},
|
handleTableData() {
|
this.excelMethodList = []
|
const mySet1 = new Set();
|
this.tableList = JSON.parse(JSON.stringify(this.currentSample.insProduct)).filter(m => {
|
let num0 = mySet1.size;
|
mySet1.add(JSON.stringify({
|
template: m.template,
|
templateId: m.templateId
|
}))
|
let num1 = mySet1.size;
|
if (num1 > num0) {
|
return m
|
}
|
})
|
this.tableList.forEach(a => {
|
let dels = []
|
let ids = []
|
a.template.forEach(b => {
|
if (b.v.ps != undefined && b.v.ps.value === '检验项') {
|
let count = 0
|
for (let i in this.currentSample.insProduct) {
|
if (this.currentSample.insProduct[i].templateId === a.templateId && this.currentSample.insProduct[i].inspectionItem === b.v.v) {
|
let count2 = 0
|
for (var c in a.template) {
|
if (a.template[c].r === b.r && a.template[c].v.ps != undefined && a.template[c].v.ps.value === '检验子项') {
|
if(this.currentSample.insProduct[i].inspectionItemSubclass === a.template[c].v.v){
|
ids.push({
|
r: b.r,
|
id: this.currentSample.insProduct[i].id,
|
product: this.currentSample.insProduct[i]
|
})
|
break
|
}
|
}
|
count2++
|
}
|
if (count2 < a.template.length) {
|
break
|
}
|
}
|
count++
|
}
|
if (count === this.currentSample.insProduct.length) {
|
dels.push(b)
|
}
|
}
|
})
|
dels.forEach(del => {
|
for (let b = 0; b < a.template.length; b++) {
|
if (a.template[b].r === del.r) {
|
if (a.template[b].v.mc != undefined) {
|
if (a.template[b].v.mc.rs != undefined && a.template[b].v.mc.rs > 1) {
|
if (a.template[b].r === a.template[b].v.mc.r) {
|
a.template[b].r += 1
|
a.template[b].v.mc.r += 1
|
a.template[b].v.mc.rs -= 1
|
continue
|
}
|
}
|
}
|
a.template.splice(b, 1)
|
b -= 1
|
}
|
}
|
})
|
ids.forEach(id => {
|
for (let b = 0; b < a.template.length; b++) {
|
if (a.template[b].r === id.r) {
|
a.template[b].i = id.id
|
if (a.template[b].v.ps != undefined && a.template[b].v.ps.value === '单位') {
|
a.template[b].v.v = id.product.unit
|
}
|
}
|
}
|
})
|
})
|
this.tableList.forEach(a => {
|
let arrs = []
|
let set = new Set()
|
let count1 = 0
|
let conclusionList = []; //结论列表
|
let finalList = []; //最终值列表
|
conclusionList = a.template.filter(n => n.v.ps != undefined && n.v.ps.value === '结论')
|
finalList = a.template.filter(n => n.v.ps != undefined && n.v.ps.value === '最终值')
|
a.template.forEach(b => {
|
if (b.v.ps != undefined && b.v.ps.value === '序号') {
|
count1++
|
b.v.v = count1
|
}
|
if (b.v.ps != undefined && b.v.ps.value === '要求值') {
|
b.v.v = this.getAsk(b.i)
|
}
|
if (b.v.ps != undefined && b.v.ps.value === '检验值') {
|
b.v.v = ''
|
b.u = ''
|
this.param[b.i].insValue.push(b)
|
}
|
if (b.v.ps != undefined && b.v.ps.value === '计算值') {
|
b.v.v = ''
|
this.param[b.i].comValue.push(b)
|
}
|
if (b.v.ps != undefined && b.v.ps.value === '设备') {
|
b.v.v = ''
|
this.param[b.i].equipValue = b
|
}
|
if (b.v.ps != undefined && b.v.ps.value === '最终值') {
|
b.v.v = ''
|
if (b.i === undefined) {
|
for (var c in this.param) {
|
this.param[c].resValue = b
|
}
|
} else {
|
this.param[b.i].resValue = b
|
}
|
}
|
if (b.v.ps != undefined && b.v.ps.value === '结论') {
|
for (var c in this.param) {
|
this.param[c].insResult = b
|
}
|
conclusionList.forEach((n, i) => {
|
if (n.r == b.r && n.c == b.c) {
|
b.v.f =
|
`(${this.comparisonList.find(j=>j.value==(finalList[i].c)).label}${finalList[i].r+1})`
|
}
|
})
|
}
|
set.add(b.r)
|
if (b.v.f) {
|
this.excelMethodList.push(b)
|
}
|
})
|
set = Array.sort(set)
|
set.forEach(b => {
|
let arr = []
|
a.template.forEach(c => {
|
if (c.r === b) {
|
if (arr.length === 0) {
|
if (c.v.mc == undefined || Object.keys(c.v.mc).length == 4) arr.push(c)
|
} else {
|
for (let d = 0; d < arr.length; d++) {
|
if (c.c < arr[d].c) {
|
if (c.v.mc == undefined || Object.keys(c.v.mc).length == 4) arr.splice(d, 0, c)
|
break
|
}
|
if (d === arr.length - 1) {
|
if (c.v.mc == undefined || Object.keys(c.v.mc).length == 4) arr.push(c)
|
break
|
}
|
}
|
}
|
}
|
})
|
arrs.push(arr)
|
})
|
a.arr = arrs
|
})
|
this.currentSample.insProduct.forEach(a => {
|
try {
|
let comValue = JSON.parse(a.insProductResult.comValue)
|
for (var i = 0; i < comValue.length; i++) {
|
this.param[a.id].comValue[i].v.v = comValue[i].v
|
}
|
} catch (e) {}
|
try {
|
let insValue = JSON.parse(a.insProductResult.insValue)
|
for (var i = 0; i < insValue.length; i++) {
|
this.param[a.id].insValue[i].v.v = insValue[i].v
|
this.param[a.id].insValue[i].u = insValue[i].u
|
}
|
} catch (e) {}
|
try {
|
this.param[a.id].equipValue.v.v = a.insProductResult.equipValue
|
} catch (e) {}
|
try {
|
this.param[a.id].resValue.v.v = a.lastValue
|
this.param[a.id].insResult.v.v = a.insResult
|
} catch (e) {}
|
})
|
this.handleExcelMethod()
|
},
|
changeInput(m, code) {
|
let str = code.split('-')
|
let r = str[1]
|
let c = str[2]
|
let id = str[0]
|
let pId = str[3]
|
var list = []
|
for (let a in this.tableList) {
|
if (this.tableList[a].templateId == id) {
|
list = this.tableList[a].arr
|
break
|
}
|
}
|
this.excelMethodList.forEach(item => {
|
if (item.valueList.find(m => m.r == r && m.c == c)) {
|
var comValue = {}
|
item.valueList.forEach(a => {
|
list.forEach(b => {
|
if (b[0].r == a.r) {
|
b.forEach(c => {
|
if (c.c == a.c) {
|
if (!isNaN(parseFloat(c.v.v))) {
|
var tableCode = ''
|
for (var d in this.comparisonList) {
|
if (c.c == this.comparisonList[d].value) {
|
tableCode = this.comparisonList[d].label
|
break
|
}
|
}
|
comValue[(tableCode + (c.r + 1))] = parseFloat(c.v.v)
|
}
|
}
|
})
|
}
|
})
|
})
|
// console.log('当前的方法',item.methodName,item.r,item.c,this.excelMethodList)
|
if (item.methodName == '自定义方法' && item.v.ps && item.v.ps.value == '结论') {
|
if (this.tableList.find(m => m.id == item.i)) {
|
let ask = this.tableList.find(m => m.id == item.i).ask.split('&');
|
let res = Object.values(comValue)[0]
|
let comp = ask.map((m, i) => {
|
if (m.includes('=')) {
|
return res == m.split('=')[1]
|
}
|
if (m.includes('≥')) {
|
return res >= m.split('≥')[1]
|
}
|
if (m.includes('≤')) {
|
return res <= m.split('≤')[1]
|
}
|
if (m.includes('<')) {
|
return res < m.split('<')[1]
|
}
|
if (m.includes('>')) {
|
return res > m.split('>')[1]
|
}
|
})
|
if (comp.every(m => m)) {
|
item.v.v = 1
|
} else {
|
item.v.v = 0
|
}
|
this.$axios.post(this.$api.insOrderPlan.saveInsContext, this.param, {
|
headers: {
|
'Content-Type': 'application/json'
|
}
|
}).then(res => {
|
if (res.code == 201) {
|
this.$message.error('保存失败')
|
return
|
}
|
this.$message.success('已保存')
|
})
|
}
|
} else {
|
let comResult = 0;
|
switch (item.methodName) {
|
case 'AVERAGE':
|
let num = 0
|
for (var a in comValue) {
|
num += comValue[a]
|
}
|
comResult = num / Object.keys(comValue).length
|
break;
|
case 'SUM':
|
let sum = 0
|
for (var a in comValue) {
|
sum += comValue[a]
|
}
|
comResult = sum
|
break;
|
default:
|
let valueList = [];
|
item.valueList.forEach(a => {
|
valueList.push({
|
name: `${this.comparisonList[a.c].label}${a.r+1}`,
|
value: 0,
|
})
|
})
|
for (var a in comValue) {
|
valueList.forEach(b => {
|
if (b.name == a) {
|
b.value = comValue[a]
|
}
|
})
|
}
|
let str = item.v.f.replace(/=/g, ' ');
|
valueList.forEach(b => {
|
str = str.replace(b.name, b.value)
|
})
|
comResult = eval(str)
|
break;
|
}
|
list.forEach(a => {
|
if (a[0].r == item.r) {
|
for (var b in a) {
|
if (a[b].c == item.c) {
|
a[b].v.v = parseFloat(comResult.toFixed(2))
|
break
|
}
|
}
|
}
|
})
|
this.changeInput(comResult, `${code.split('-')[0]}-${item.r}-${item.c}-${pId}`) //改变最终值
|
}
|
}
|
})
|
},
|
handleExcelMethod() {
|
if (this.excelMethodList.length > 0) {
|
this.excelMethodList.map(item => {
|
item.methodName = item.v.f.split('=').length > 1 && item.v.f.split('=')[1].split('(') && item.v.f.split(
|
'=')[1].split('(')[0] ? item.v.f.split('=')[1].split('(')[0] : '自定义方法';
|
let valueList = [];
|
if (item.v.f.includes(':')) {
|
valueList = [];
|
let r0 = null;
|
let c0 = null;
|
let r1 = null;
|
let c1 = null;
|
let mode = item.v.f.split('(')[1].split(')')[0];
|
let start = mode.split(':')[0]
|
let end = mode.split(':')[1]
|
c0 = this.comparisonList.find(j => j.label == start.split('')[0]).value
|
r0 = start.split('')[1] - 1
|
c1 = this.comparisonList.find(j => j.label == end.split('')[0]).value
|
r1 = end.split('')[1] - 1
|
for (let i = Number(r0); i <= r1; i++) {
|
for (let u = c0; u <= c1; u++) {
|
valueList.push({
|
r: i,
|
c: u
|
})
|
}
|
}
|
item.valueList = valueList;
|
} else {
|
valueList = []
|
let regex = /[=\+\-\*\%\(\)\/\s]/g
|
let mode = item.v.f.replace(regex, ' ').split(' ');
|
mode.filter(m => m && !Number(m)).forEach(m => {
|
let r = m.split('')[1] - 1
|
let c = this.comparisonList.find(j => j.label == m.split('')[0]).value
|
valueList.push({
|
c,
|
r
|
})
|
})
|
}
|
item.valueList = valueList;
|
return item;
|
})
|
}
|
},
|
getInspectionValueType(id) {
|
for (var a in this.currentSample.insProduct) {
|
if (this.currentSample.insProduct[a].id == id) {
|
return this.currentSample.insProduct[a].inspectionValueType
|
}
|
}
|
},
|
getInspectionItemType(id) {
|
for (var a in this.currentSample.insProduct) {
|
if (this.currentSample.insProduct[a].id == id) {
|
return this.currentSample.insProduct[a].inspectionItemType
|
}
|
}
|
},
|
getAsk(id) {
|
for (var a in this.currentSample.insProduct) {
|
if (this.currentSample.insProduct[a].id == id) {
|
return this.currentSample.insProduct[a].ask
|
}
|
}
|
},
|
getSystemValue(n) {
|
try {
|
if (this.param[n.i].equipValue.v.v == null || this.param[n.i].equipValue.v.v == '') {
|
this.$message.error('请先选择采集的设备')
|
return
|
}
|
} catch (e) {
|
this.$message.error('找不到设备内容')
|
}
|
this.$message.error('采集失败【已开放手动方式】')
|
for (var a in this.currentSample.insProduct) {
|
if (this.currentSample.insProduct[a].id == n.i) {
|
this.currentSample.insProduct[a].inspectionItemType = 0
|
}
|
}
|
},
|
getEquipOptions(e, id) {
|
if (e) {
|
let category = this.currentSample.insProduct.find(m => m.id == id).deviceGroup
|
this.$axios.post(this.$api.deviceScope.selectDeviceByCategory, {
|
category
|
}).then(res => {
|
if (res.code === 200 && res.data) {
|
this.equipOptions = res.data.map(m => {
|
m.value = m.id
|
m.label = m.deviceName
|
return m
|
})
|
}
|
}).catch(error => {
|
console.error(error)
|
})
|
}
|
},
|
getUserInfo() {
|
this.$axios.get(this.$api.user.getUserInfo).then(res => {
|
this.userId = res.data.id
|
})
|
},
|
// 复核
|
upInsReview(e) {
|
if (e == 1) {
|
// 通过
|
this.reviewLoading = true;
|
this.$axios.post(this.$api.insOrderPlan.verifyPlan, {
|
orderId: this.orderId,
|
type: 1,
|
laboratory: this.sonLaboratory,
|
tell: null
|
}).then(res => {
|
if (res.code === 200) {
|
this.$message.success("操作成功")
|
this.$emit('goback')
|
}
|
this.reviewLoading = false;
|
}).catch(error => {
|
console.error(error)
|
this.reviewLoading = false;
|
})
|
} else {
|
// 不通过
|
this.reviewDia = true;
|
}
|
},
|
handleReviewDia() {
|
if (this.noReason) {
|
this.reviewLoading = true;
|
this.$axios.post(this.$api.insOrderPlan.verifyPlan, {
|
orderId: this.orderId,
|
type: 0,
|
laboratory: this.sonLaboratory,
|
tell: this.noReason
|
}).then(res => {
|
if (res.code === 200) {
|
this.$message.success("操作成功")
|
this.$emit('goback')
|
}
|
this.reviewLoading = false;
|
}).catch(error => {
|
console.error(error)
|
this.reviewLoading = false;
|
})
|
} else {
|
this.$message.error('未输入不通过原因')
|
}
|
},
|
submit() {
|
this.submitLoading = true;
|
this.$axios.post(this.$api.insOrderPlan.submitPlan, {
|
orderId: this.orderId,
|
laboratory: this.sonLaboratory,
|
}).then(res => {
|
if (res.code === 200) {
|
this.$message.success("操作成功")
|
this.$emit('goback')
|
}
|
this.submitLoading = false;
|
}).catch(error => {
|
console.error(error)
|
this.submitLoading = false;
|
})
|
}
|
}
|
}
|
</script>
|