| | |
| | | background-color: #fff; |
| | | border-radius: 3px; |
| | | padding: 20px; |
| | | position: relative; |
| | | position: relative; |
| | | } |
| | | .center-box{ |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | flex-wrap: wrap; |
| | | overflow-y: auto; |
| | | } |
| | | .tables{ |
| | | /* width: 800px; */ |
| | | 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{ |
| | | .center-box { |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | flex-wrap: wrap; |
| | | overflow-y: auto; |
| | | } |
| | | |
| | | .tables { |
| | | /* width: 800px; */ |
| | | 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{ |
| | | .collection { |
| | | width: 50px; |
| | | height: 100%; |
| | | margin-left: 5px; |
| | |
| | | font-size: 12px; |
| | | } |
| | | |
| | | .collection:active{ |
| | | .collection:active { |
| | | opacity: .7; |
| | | } |
| | | </style> |
| | | <style> |
| | | .el-form-item__label{ |
| | | .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; |
| | | } |
| | | |
| | | .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"> |
| | | <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" @click="$emit('goback')">返回</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <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" @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-form-item label="样品编号:"> |
| | | <el-input clearable v-model="currentSample.sampleCode" disabled size="small" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="样品名称:"> |
| | | <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-form-item label="样品数量:"> |
| | | <el-input clearable v-model="sampleProduct.length" disabled size="small" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="下发时间:"> |
| | | <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-form-item label="紧急程度:"> |
| | | <el-input clearable v-model="insOrder.typeName" disabled size="small" placeholder="请输入"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="约定时间:"> |
| | | <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-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}`"> |
| | | <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" @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"/> |
| | | <el-input v-if="getInspectionValueType(n.i) == 1" class="table_input" v-model="n.v.v" |
| | | :disabled="getInspectionItemType(n.i) == 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" /> |
| | | <el-select v-else-if="getInspectionValueType(n.i) == 5" class="table_input" v-model="n.v.v"> |
| | | <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)"> |
| | | <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)"> |
| | | </el-button> |
| | | </template> |
| | | <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='结论'"> |
| | |
| | | </el-select> |
| | | </template> |
| | | <span v-else :style="`font-family:${n.v.ff} !important;`">{{n.v.v}}</span> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | </tbody> |
| | | </table> |
| | | </div> |
| | | </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-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="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> |
| | | <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> |
| | | <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-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> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import ValueTable from '../../tool/value-table.vue' |
| | | import ValueTable from '../../tool/value-table.vue' |
| | | export default { |
| | | props: ['sonLaboratory','orderId'], |
| | | components: { |
| | | props: ['sonLaboratory', 'orderId'], |
| | | components: { |
| | | ValueTable, |
| | | }, |
| | | data() { |
| | | return { |
| | | sampleVisible:false, |
| | | taskVisible:false, |
| | | sampleVisible: false, |
| | | taskVisible: false, |
| | | searchForm: { |
| | | sampleName: null, |
| | | state: null |
| | | }, |
| | | id: 0, |
| | | componentData: { |
| | | componentData: { |
| | | entity: { |
| | | sonLaboratory: null, |
| | | userId: 0 |
| | |
| | | isIndex: false, |
| | | showSelect: false, |
| | | select: false, |
| | | selectMethod:'handleChangeTask', |
| | | selectMethod: 'handleChangeTask', |
| | | sort: false, |
| | | do: [], |
| | | isPage:false, |
| | | isPage: false, |
| | | linkEvent: {}, |
| | | tagField: { |
| | | type: { |
| | | type: { |
| | | select: [] |
| | | }, |
| | | insState: { |
| | | select: [] |
| | | }, |
| | | }, |
| | | currentId:'', |
| | | }, |
| | | currentId: '', |
| | | selectField: {}, |
| | | requiredAdd: [], |
| | | requiredUp: [] |
| | | }, |
| | | upIndex: 0, |
| | | upIndex: 0, |
| | | insOrder: {}, |
| | | sampleProduct: [], |
| | | typeList:[], |
| | | urgentList:[], |
| | | currentSample:{},//当前样品信息 |
| | | tableList:[], |
| | | loading: false, |
| | | typeList: [], |
| | | urgentList: [], |
| | | currentSample: {}, //当前样品信息 |
| | | tableList: [], |
| | | loading: false, |
| | | ps: {}, |
| | | param: {}, |
| | | currentKey:1, |
| | | comparisonList:[], |
| | | excelMethodList:[], |
| | | equipOptions:[], |
| | | currentKey: 1, |
| | | comparisonList: [], |
| | | excelMethodList: [], |
| | | equipOptions:[] |
| | | } |
| | | }, |
| | | created() { |
| | | this.componentData.entity.sonLaboratory = this.sonLaboratory; |
| | | this.id = this.orderId; |
| | | this.componentData.entity.sonLaboratory = this.sonLaboratory; |
| | | this.id = this.orderId; |
| | | }, |
| | | mounted() { |
| | | this.getTypeDicts() |
| | | this.getInsStateDicts() |
| | | this.getComparisonList() |
| | | this.getTypeDicts() |
| | | this.getInsStateDicts() |
| | | this.getComparisonList() |
| | | }, |
| | | watch:{ |
| | | id(val){ |
| | | watch: { |
| | | id(val) { |
| | | this.loading = true |
| | | this.$axios.post(this.$api.insOrderPlan.doInsOrder,{ |
| | | this.$axios.post(this.$api.insOrderPlan.doInsOrder, { |
| | | id: val |
| | | }).then(res=>{ |
| | | }).then(res => { |
| | | this.insOrder = res.data.insOrder; |
| | | this.urgentList.forEach(m=>{ |
| | | if(m.value==this.insOrder.type){ |
| | | this.insOrder.typeName = m.label |
| | | } |
| | | }) |
| | | 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.currentSample = this.sampleProduct[0] |
| | | this.currentSample.insProduct.forEach(a => { |
| | | this.param[a.id] = { |
| | | insValue: [], |
| | | comValue: [], |
| | |
| | | intResult: null |
| | | } |
| | | }) |
| | | if(this.currentSample.index==undefined)this.currentSample['index'] = 1 |
| | | if (this.currentSample.index == undefined) this.currentSample['index'] = 1 |
| | | this.loading = false |
| | | this.handleTableData() |
| | | this.componentData.currentId = val; |
| | | this.currentKey = 1; |
| | | this.handleTableData() |
| | | this.componentData.currentId = val; |
| | | this.currentKey = 1; |
| | | }) |
| | | } |
| | | }, |
| | | methods: { |
| | | handleChangeSample(row, column, event){ |
| | | this.currentSample = row; |
| | | this.currentSample.insProduct.forEach(a=>{ |
| | | handleChangeSample(row, column, event) { |
| | | this.currentSample = row; |
| | | this.currentSample.insProduct.forEach(a => { |
| | | this.param[a.id] = { |
| | | insValue: [], |
| | | comValue: [], |
| | |
| | | intResult: 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.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 => { |
| | |
| | | ele.type = 'danger' |
| | | } |
| | | }) |
| | | this.urgentList = data; |
| | | this.urgentList = data; |
| | | this.componentData.tagField.type.select = data |
| | | }) |
| | | }, |
| | |
| | | ele.type = 'danger' |
| | | } |
| | | }) |
| | | this.typeList = data |
| | | this.typeList = data |
| | | this.componentData.tagField.insState.select = data |
| | | }) |
| | | }, |
| | | getComparisonList(){ |
| | | this.$axios.post(this.$api.enums.selectEnumByCategory, { |
| | | 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=>{ |
| | | 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==='检验子项'){ |
| | | 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){ |
| | | 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, |
| | |
| | | } |
| | | count++ |
| | | } |
| | | if(count === this.currentSample.insProduct.length){ |
| | | 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){ |
| | | 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 |
| | |
| | | } |
| | | } |
| | | a.template.splice(b, 1) |
| | | b-=1 |
| | | b -= 1 |
| | | } |
| | | } |
| | | }) |
| | | ids.forEach(id=>{ |
| | | for(let b=0;b<a.template.length;b++){ |
| | | if(a.template[b].r === id.r){ |
| | | 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==='单位'){ |
| | | 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=>{ |
| | | 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==='序号'){ |
| | | 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==='要求值'){ |
| | | 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==='检验值'){ |
| | | if (b.v.ps != undefined && b.v.ps.value === '检验值') { |
| | | b.v.v = '' |
| | | this.param[b.i].insValue.push(b) |
| | | } |
| | | if (b.v.ps!=undefined&&b.v.ps.value==='计算值'){ |
| | | 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 = '' |
| | | if(b.i===undefined){ |
| | | for(var c in this.param){ |
| | | if (b.i === undefined) { |
| | | for (var c in this.param) { |
| | | this.param[c].resValue.push(b) |
| | | } |
| | | }else{ |
| | | } else { |
| | | this.param[b.i].resValue.push(b) |
| | | } |
| | | } |
| | |
| | | }) |
| | | } |
| | | set.add(b.r) |
| | | if(b.v.f){ |
| | | this.excelMethodList.push(b) |
| | | } |
| | | if (b.v.f) { |
| | | this.excelMethodList.push(b) |
| | | } |
| | | }) |
| | | set = Array.sort(set) |
| | | set.forEach(b=>{ |
| | | 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) |
| | | 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) |
| | | if (d === arr.length - 1) { |
| | | if (c.v.mc == undefined || Object.keys(c.v.mc).length == 4) arr.push(c) |
| | | break |
| | | } |
| | | } |
| | |
| | | a.arr = arrs |
| | | }) |
| | | /* this.currentSample.insProduct.forEach(a=>{ |
| | | for(var i=0;i<a.param.comValue.length;i++){ |
| | | this.param[a.id].comValue[i].v.v = a.param.comValue[i].v.v |
| | | } |
| | | for(var i=0;i<a.param.comValue.length;i++){ |
| | | this.param[a.id].comValue[i].v.v = a.param.comValue[i].v.v |
| | | } |
| | | }) */ |
| | | this.handleExcelMethod() |
| | | }, |
| | | changeInput(m,code){ |
| | | this.handleExcelMethod() |
| | | }, |
| | | changeInput(m, code) { |
| | | let str = code.split('-') |
| | | let r = str[1] |
| | | let c = str[2] |
| | | 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){ |
| | | 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)){ |
| | | 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))){ |
| | | 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){ |
| | | for (var d in this.comparisonList) { |
| | | if (c.c == this.comparisonList[d].value) { |
| | | tableCode = this.comparisonList[d].label |
| | | break |
| | | } |
| | |
| | | }) |
| | | }) |
| | | // 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 |
| | | } |
| | | console.log(33333333333,this.param) |
| | | } |
| | | }else{ |
| | | let comResult = 0; |
| | | switch(item.methodName){ |
| | | case 'AVERAGE': |
| | | let sum = 0 |
| | | for(var a in comValue){ |
| | | sum += comValue[a] |
| | | } |
| | | comResult = sum / Object.keys(comValue).length |
| | | break; |
| | | default: |
| | | 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).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){ |
| | | 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 |
| | | } |
| | | console.log(33333333333, this.param) |
| | | } |
| | | } else { |
| | | let comResult = 0; |
| | | switch (item.methodName) { |
| | | case 'AVERAGE': |
| | | let sum = 0 |
| | | for (var a in comValue) { |
| | | sum += comValue[a] |
| | | } |
| | | comResult = sum / Object.keys(comValue).length |
| | | break; |
| | | default: |
| | | 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).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){ |
| | | 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){ |
| | | getAsk(id) { |
| | | for (var a in this.currentSample.insProduct) { |
| | | if (this.currentSample.insProduct[a].id == id) { |
| | | return this.currentSample.insProduct[a].ask |
| | | } |
| | | } |
| | | }, |
| | | getSystemValue(n){ |
| | | getSystemValue(n) { |
| | | this.$message.error('采集失败【已开放手动方式】') |
| | | for(var a in this.currentSample.insProduct){ |
| | | if(this.currentSample.insProduct[a].id == n.i){ |
| | | for (var a in this.currentSample.insProduct) { |
| | | if (this.currentSample.insProduct[a].id == n.i) { |
| | | this.currentSample.insProduct[a].inspectionItemType = 0 |
| | | } |
| | | } |