| | |
| | | <style scoped> |
| | | .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; |
| | | .inspection { |
| | | height: 100%; |
| | | overflow-y: auto; |
| | | } |
| | | } |
| | | |
| | | .center-box { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | flex-wrap: wrap; |
| | | } |
| | | .inspection::-webkit-scrollbar { |
| | | width: 0; |
| | | } |
| | | |
| | | .tables { |
| | | margin-bottom: 16px; |
| | | } |
| | | .title { |
| | | height: 60px; |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .tables td { |
| | | height: 40px; |
| | | width: 100px; |
| | | text-align: center; |
| | | font-size: 14px; |
| | | } |
| | | .search { |
| | | width: 100%; |
| | | margin-bottom: 10px; |
| | | background-color: #fff; |
| | | border-radius: 3px; |
| | | } |
| | | |
| | | .content { |
| | | display: flex; |
| | | width: 100%; |
| | | height: 100%; |
| | | align-items: center; |
| | | justify-content: left; |
| | | padding: 5px; |
| | | box-sizing: border-box; |
| | | } |
| | | .search .form-inline { |
| | | padding-top: 20px; |
| | | padding-left: 50px; |
| | | } |
| | | |
| | | .content-h-0 { |
| | | justify-content: center; |
| | | } |
| | | .center { |
| | | width: calc(100% - 40px); |
| | | /* max-height: 580px; */ |
| | | background-color: #fff; |
| | | border-radius: 3px; |
| | | padding: 20px; |
| | | overflow: auto; |
| | | } |
| | | |
| | | .content-h-1 { |
| | | justify-content: start; |
| | | } |
| | | .center-box { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | flex-wrap: wrap; |
| | | } |
| | | |
| | | .content-h-2 { |
| | | justify-content: end; |
| | | } |
| | | .tables { |
| | | margin-bottom: 16px; |
| | | } |
| | | |
| | | .content-v-0 { |
| | | align-items: center; |
| | | } |
| | | .tables td { |
| | | height: 40px; |
| | | width: 100px; |
| | | text-align: center; |
| | | font-size: 14px; |
| | | } |
| | | |
| | | .content-v-1 { |
| | | align-items: start; |
| | | } |
| | | .content { |
| | | display: flex; |
| | | width: 100%; |
| | | height: 100%; |
| | | align-items: center; |
| | | justify-content: left; |
| | | padding: 5px; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .content-v-2 { |
| | | align-items: end; |
| | | } |
| | | .content-h-0 { |
| | | justify-content: center; |
| | | } |
| | | |
| | | .table_input { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | .content-h-1 { |
| | | justify-content: start; |
| | | } |
| | | |
| | | .collection { |
| | | width: 50px; |
| | | height: 100%; |
| | | margin-left: 5px; |
| | | border-color: transparent; |
| | | background-color: #409eff; |
| | | color: #fff; |
| | | border-radius: 4px; |
| | | font-size: 12px; |
| | | } |
| | | .content-h-2 { |
| | | justify-content: end; |
| | | } |
| | | |
| | | .collection:active { |
| | | opacity: .7; |
| | | } |
| | | .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-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::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; |
| | | } |
| | | .el-drawer__header { |
| | | color: #303133; |
| | | } |
| | | </style> |
| | | <template> |
| | | <div v-loading="loading"> |
| | | <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> |
| | | <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> |
| | | 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-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> |
| | | </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> |
| | | <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, |
| | | 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({ |
| | | inspectionItem: m.inspectionItem, |
| | | 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].inspectionItemSubclass === b.v.v && this.currentSample |
| | | .insProduct[i].templateId === a.templateId) { |
| | | ids.push({ |
| | | r: b.r, |
| | | id: this.currentSample.insProduct[i].id, |
| | | product: this.currentSample.insProduct[i] |
| | | }) |
| | | break |
| | | } |
| | | count++ |
| | | } |
| | | if (count === this.currentSample.insProduct.length) { |
| | | dels.push(b) |
| | | } |
| | | } |
| | | }).then(res => { |
| | | this.insOrder = res.data.insOrder; |
| | | this.urgentList.forEach(m => { |
| | | if (m.value == this.insOrder.type) { |
| | | this.insOrder.typeName = m.label |
| | | } |
| | | }) |
| | | 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.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})` |
| | | 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: |
| | | } |
| | | 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, |
| | | name: `${this.comparisonList[a.c].label}${a.r+1}`, |
| | | value: 0, |
| | | }) |
| | | }) |
| | | for (var a in comValue) { |
| | | valueList.forEach(b => { |
| | | if(b.name==a){ |
| | | if (b.name == a) { |
| | | b.value = comValue[a] |
| | | } |
| | | }) |
| | | } |
| | | let str = item.v.f.replace(/=/g,' '); |
| | | } |
| | | let str = item.v.f.replace(/=/g, ' '); |
| | | valueList.forEach(b => { |
| | | str = str.replace(b.name,b.value) |
| | | 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 => { |
| | | 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=>{ |
| | | this.equipOptions = res.data.map(m => { |
| | | m.value = m.id |
| | | m.label = m.deviceName |
| | | return m |
| | |
| | | }) |
| | | } |
| | | }, |
| | | getUserInfo() { |
| | | this.$axios.get(this.$api.user.getUserInfo).then(res => { |
| | | this.userId = res.data.id |
| | | }) |
| | | }, |
| | | getUserInfo() { |
| | | this.$axios.get(this.$api.user.getUserInfo).then(res => { |
| | | this.userId = res.data.id |
| | | }) |
| | | }, |
| | | // 复核 |
| | | upInsReview(e){ |
| | | if(e==1){ |
| | | 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 |
| | | orderId: this.orderId, |
| | | type: 1, |
| | | laboratory: this.sonLaboratory, |
| | | tell: null |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success("操作成功") |
| | |
| | | console.error(error) |
| | | this.reviewLoading = false; |
| | | }) |
| | | }else{ |
| | | } else { |
| | | // 不通过 |
| | | this.reviewDia = true; |
| | | } |
| | | }, |
| | | handleReviewDia(){ |
| | | if(this.noReason){ |
| | | 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 |
| | | orderId: this.orderId, |
| | | type: 0, |
| | | laboratory: this.sonLaboratory, |
| | | tell: this.noReason |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success("操作成功") |
| | |
| | | console.error(error) |
| | | this.reviewLoading = false; |
| | | }) |
| | | }else{ |
| | | } else { |
| | | this.$message.error('未输入不通过原因') |
| | | } |
| | | }, |
| | | submit(){ |
| | | submit() { |
| | | this.submitLoading = true; |
| | | this.$axios.post(this.$api.insOrderPlan.submitPlan, { |
| | | orderId:this.orderId, |
| | | laboratory:this.sonLaboratory, |
| | | orderId: this.orderId, |
| | | laboratory: this.sonLaboratory, |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.$message.success("操作成功") |
| | |
| | | this.submitLoading = false; |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |