| | |
| | | <template> |
| | | <div v-loading="loading" class="inspection" style="background-color: rgb(245, 247, 251);"> |
| | | <div |
| | | v-loading="loading" |
| | | class="inspection" |
| | | style="background-color: rgb(245, 247, 251)" |
| | | > |
| | | <el-row class="title"> |
| | | <el-col v-if="insOrder.ifsOrderType!=='02wg'" :span="8" style="text-align: left;"> |
| | | <el-form :inline="true" :model="otherForm" class="form-inline" label-width="50px" |
| | | style="text-align: right; padding-top: 0; display: inline"> |
| | | <el-col |
| | | v-if="insOrder.ifsOrderType !== '02wg'" |
| | | :span="8" |
| | | style="text-align: left" |
| | | > |
| | | <el-form |
| | | :inline="true" |
| | | :model="otherForm" |
| | | class="form-inline" |
| | | label-width="50px" |
| | | style="text-align: right; padding-top: 0; display: inline" |
| | | > |
| | | <el-form-item label="温度:" style="margin-bottom: 0"> |
| | | <el-input v-model="otherForm.temperature" :disabled="state > 1" placeholder="" size="small" |
| | | style="width: 90px; line-height: 60px" @change="(m) => subOtherForm(m, 'temperature')"></el-input> |
| | | <el-input |
| | | v-model="otherForm.temperature" |
| | | :disabled="state > 1" |
| | | placeholder="" |
| | | size="small" |
| | | style="width: 90px; line-height: 60px" |
| | | @change="(m) => subOtherForm(m, 'temperature')" |
| | | ></el-input> |
| | | <span style="margin-left: 4px">℃</span> |
| | | </el-form-item> |
| | | <el-form-item label="湿度:" style="margin-bottom: 0"> |
| | | <el-input v-model="otherForm.humidity" :disabled="state > 1" placeholder="" size="small" |
| | | style="width: 90px; line-height: 60px" @change="(m) => subOtherForm(m, 'humidity')"></el-input> |
| | | <el-input |
| | | v-model="otherForm.humidity" |
| | | :disabled="state > 1" |
| | | placeholder="" |
| | | size="small" |
| | | style="width: 90px; line-height: 60px" |
| | | @change="(m) => subOtherForm(m, 'humidity')" |
| | | ></el-input> |
| | | <span style="margin-left: 4px">%</span> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-col> |
| | | <el-col :span="insOrder.ifsOrderType!=='02wg'?16:24" style="text-align: right"> |
| | | <el-button v-if="insOrder.ifsOrderType && insOrder.ifsOrderType==='02wg'" size="small" type="primary" @click="showMaterialPropsDialog">IFS物料属性更新</el-button> |
| | | <el-button size="small" type="primary" @click="refreshView">刷新</el-button> |
| | | <el-button v-if="typeSource == 1" size="small" type="primary" @click="openPurchase">进货验证</el-button> |
| | | <el-button v-if="state == 1 && [0,1].includes(Number(typeSource))" size="small" type="primary" |
| | | @click="openUnPassDialog('add')">不合格处理</el-button> |
| | | <el-button size="small" type="primary" @click="sampleVisible = true; uploadSample();">样品切换</el-button> |
| | | <el-col |
| | | :span="insOrder.ifsOrderType !== '02wg' ? 16 : 24" |
| | | style="text-align: right" |
| | | > |
| | | <el-button |
| | | v-if="insOrder.ifsOrderType && insOrder.ifsOrderType === '02wg'" |
| | | size="small" |
| | | type="primary" |
| | | @click="showMaterialPropsDialog" |
| | | >IFS物料属性更新</el-button |
| | | > |
| | | <el-button size="small" type="primary" @click="refreshView" |
| | | >刷新</el-button |
| | | > |
| | | <el-button |
| | | v-if="typeSource == 1" |
| | | size="small" |
| | | type="primary" |
| | | @click="openPurchase" |
| | | >进货验证</el-button |
| | | > |
| | | <el-button |
| | | v-if="state == 1 && [0, 1].includes(Number(typeSource))" |
| | | size="small" |
| | | type="primary" |
| | | @click="openUnPassDialog('add')" |
| | | >不合格处理</el-button |
| | | > |
| | | <el-button |
| | | size="small" |
| | | type="primary" |
| | | @click=" |
| | | sampleVisible = true; |
| | | uploadSample(); |
| | | " |
| | | >样品切换</el-button |
| | | > |
| | | <!-- <el-button v-if="state == 1" size="small" type="primary" @click="taskVisible = true">任务切换</el-button>--> |
| | | <el-button v-if="state == 1" size="small" type="primary" @click="addVerifyDia = true">提交</el-button> |
| | | <el-button |
| | | v-if="state == 1" |
| | | size="small" |
| | | type="primary" |
| | | @click="addVerifyDia = true" |
| | | >提交</el-button |
| | | > |
| | | <!-- 复核 --> |
| | | <el-button v-if="state == 2" size="medium" type="primary" @click="openAddCheck">通过</el-button> |
| | | <el-button v-if="state == 2" size="medium" @click="upInsReview(0)">不通过</el-button> |
| | | <el-button type="primary" size="small" @click="exportTable('myTable')">下载原始记录</el-button> |
| | | <el-button |
| | | v-if="state == 2" |
| | | size="medium" |
| | | type="primary" |
| | | @click="openAddCheck" |
| | | >通过</el-button |
| | | > |
| | | <el-button v-if="state == 2" size="medium" @click="upInsReview(0)" |
| | | >不通过</el-button |
| | | > |
| | | <el-button type="primary" size="small" @click="exportTable('myTable')" |
| | | >下载原始记录</el-button |
| | | > |
| | | <el-button size="small" @click="goback">返回</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <div class="search"> |
| | | <!-- <el-form :inline="true" :model="searchForm" class="form-inline" label-position="right" label-width="100px">--> |
| | | <!-- <el-form-item label="委托编号:">--> |
| | | <!-- <el-input v-model="insOrder.entrustCode" clearable disabled placeholder="请输入" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="样品编号:">--> |
| | | <!-- <el-tooltip :content="currentSample.sampleCode" :disabled="!currentSample.sampleCode">--> |
| | | <!-- <el-input v-model="currentSample.sampleCode" clearable disabled placeholder="请输入" size="small"></el-input>--> |
| | | <!-- </el-tooltip>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="样品名称:">--> |
| | | <!-- <el-input v-model="currentSample.sample" clearable disabled placeholder="请输入" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="样品数量:">--> |
| | | <!-- <el-input v-model="sampleProduct.length" clearable disabled placeholder="请输入" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="样品型号:">--> |
| | | <!-- <el-input v-model="currentSample.model" clearable disabled placeholder="请输入" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="下发时间:">--> |
| | | <!-- <el-input v-model="insOrder.sendTime" clearable disabled placeholder="请输入" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="紧急程度:">--> |
| | | <!-- <el-input v-model="insOrder.typeName" clearable disabled placeholder="请输入" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="约定时间:">--> |
| | | <!-- <el-input v-model="insOrder.appointed" clearable disabled placeholder="请输入" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item v-if="typeSource === 1" label="抽检数量:">--> |
| | | <!-- <el-input v-model="insOrder.testQuantity" clearable disabled placeholder="请输入" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item v-if="typeSource === 1" label="厂家密度:">--> |
| | | <!-- <el-input v-model="supplierDensity" clearable disabled placeholder="请输入" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="当前样品位数:" label-width="120px">--> |
| | | <!-- <el-tag v-if="currentKey">{{ `NO.${currentKey}` }}</el-tag>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="备注:">--> |
| | | <!-- <!– <span style="color:red">{{ insOrder.remark?insOrder.remark:'-' }}</span>–>--> |
| | | <!-- <el-input v-model="insOrder.remark" :disabled="state != 1" clearable placeholder="请输入" size="small"--> |
| | | <!-- @blur="subOtherForm(insOrder.remark, 'remark')"></el-input>--> |
| | | <!-- <!– <el-tag v-if="currentKey">{{ insOrder.remark }}</el-tag> –>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <template v-if="insOrder.isSplitOrder && insOrder.isSplitOrder===1">--> |
| | | <!-- <el-form-item label="外护颜色:">--> |
| | | <!-- <el-input v-model="insOrder.outerColor" clearable disabled placeholder="" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="绝缘颜色:">--> |
| | | <!-- <el-input v-model="insOrder.insulationColor" clearable disabled placeholder="" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="盘号:">--> |
| | | <!-- <el-input v-model="insOrder.drumNo" clearable disabled placeholder="" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </template>--> |
| | | <!-- </el-form>--> |
| | | <!-- --> |
| | | <!-- <el-form :inline="true" :model="searchForm" class="form-inline" label-position="right" label-width="100px">--> |
| | | <!-- <el-form-item label="委托编号:">--> |
| | | <!-- <el-input v-model="insOrder.entrustCode" clearable disabled placeholder="请输入" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="样品编号:">--> |
| | | <!-- <el-tooltip :content="currentSample.sampleCode" :disabled="!currentSample.sampleCode">--> |
| | | <!-- <el-input v-model="currentSample.sampleCode" clearable disabled placeholder="请输入" size="small"></el-input>--> |
| | | <!-- </el-tooltip>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="样品名称:">--> |
| | | <!-- <el-input v-model="currentSample.sample" clearable disabled placeholder="请输入" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="样品数量:">--> |
| | | <!-- <el-input v-model="sampleProduct.length" clearable disabled placeholder="请输入" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="样品型号:">--> |
| | | <!-- <el-input v-model="currentSample.model" clearable disabled placeholder="请输入" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="下发时间:">--> |
| | | <!-- <el-input v-model="insOrder.sendTime" clearable disabled placeholder="请输入" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="紧急程度:">--> |
| | | <!-- <el-input v-model="insOrder.typeName" clearable disabled placeholder="请输入" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="约定时间:">--> |
| | | <!-- <el-input v-model="insOrder.appointed" clearable disabled placeholder="请输入" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item v-if="typeSource === 1" label="抽检数量:">--> |
| | | <!-- <el-input v-model="insOrder.testQuantity" clearable disabled placeholder="请输入" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item v-if="typeSource === 1" label="厂家密度:">--> |
| | | <!-- <el-input v-model="supplierDensity" clearable disabled placeholder="请输入" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="当前样品位数:" label-width="120px">--> |
| | | <!-- <el-tag v-if="currentKey">{{ `NO.${currentKey}` }}</el-tag>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="备注:">--> |
| | | <!-- <!– <span style="color:red">{{ insOrder.remark?insOrder.remark:'-' }}</span>–>--> |
| | | <!-- <el-input v-model="insOrder.remark" :disabled="state != 1" clearable placeholder="请输入" size="small"--> |
| | | <!-- @blur="subOtherForm(insOrder.remark, 'remark')"></el-input>--> |
| | | <!-- <!– <el-tag v-if="currentKey">{{ insOrder.remark }}</el-tag> –>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <template v-if="insOrder.isSplitOrder && insOrder.isSplitOrder===1">--> |
| | | <!-- <el-form-item label="外护颜色:">--> |
| | | <!-- <el-input v-model="insOrder.outerColor" clearable disabled placeholder="" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="绝缘颜色:">--> |
| | | <!-- <el-input v-model="insOrder.insulationColor" clearable disabled placeholder="" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="盘号:">--> |
| | | <!-- <el-input v-model="insOrder.drumNo" clearable disabled placeholder="" size="small"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </template>--> |
| | | <!-- </el-form>--> |
| | | <!-- --> |
| | | <el-descriptions title="检验单概况" :column="4" border> |
| | | <template v-if="insOrder.ifsOrderType"> |
| | | <el-descriptions-item label="零件号">{{insOrder.partNo}}</el-descriptions-item> |
| | | <el-descriptions-item label="零件名称">{{insOrder.partDetail}}</el-descriptions-item> |
| | | <el-descriptions-item label="批次号">{{ insOrder.lotBatchNo }}</el-descriptions-item> |
| | | <el-descriptions-item label="样品型号" >{{currentSample.model}}</el-descriptions-item> |
| | | <el-descriptions-item label="抽检数量">{{insOrder.testQuantity}}</el-descriptions-item> |
| | | <el-descriptions-item label="厂家密度">{{supplierDensity}}</el-descriptions-item> |
| | | <template v-if="insOrder.ifsOrderType && insOrder.ifsOrderType==='02wg'"> |
| | | <el-descriptions-item label="载具编号">{{insOrder.drumNo}}</el-descriptions-item> |
| | | <el-descriptions-item label="起始米标(km)">{{insOrder.startMeterMark}}</el-descriptions-item> |
| | | <el-descriptions-item label="截止米标(km)">{{insOrder.endMeterMark}}</el-descriptions-item> |
| | | <el-descriptions-item label="入库长度(km)">{{calcInbondLength(insOrder.startMeterMark,insOrder.endMeterMark)}}</el-descriptions-item> |
| | | <el-descriptions-item label="绝缘颜色">{{insOrder.insulationColor}}</el-descriptions-item> |
| | | <el-descriptions-item label="外护颜色">{{insOrder.outerColor}}</el-descriptions-item> |
| | | <el-descriptions-item label="印字信息">{{insOrder.letteringInfo}}</el-descriptions-item> |
| | | <el-descriptions-item label="零件号">{{ |
| | | insOrder.partNo |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="零件名称">{{ |
| | | insOrder.partDetail |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="批次号">{{ |
| | | insOrder.lotBatchNo |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="样品型号">{{ |
| | | currentSample.model |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="抽检数量">{{ |
| | | insOrder.testQuantity |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="厂家密度">{{ |
| | | supplierDensity |
| | | }}</el-descriptions-item> |
| | | <template |
| | | v-if="insOrder.ifsOrderType && insOrder.ifsOrderType === '02wg'" |
| | | > |
| | | <el-descriptions-item label="载具编号">{{ |
| | | insOrder.drumNo |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="起始米标(km)">{{ |
| | | insOrder.startMeterMark |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="截止米标(km)">{{ |
| | | insOrder.endMeterMark |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="入库长度(km)">{{ |
| | | calcInbondLength(insOrder.startMeterMark, insOrder.endMeterMark) |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="绝缘颜色">{{ |
| | | insOrder.insulationColor |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="外护颜色">{{ |
| | | insOrder.outerColor |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="印字信息">{{ |
| | | insOrder.letteringInfo |
| | | }}</el-descriptions-item> |
| | | </template> |
| | | </template> |
| | | <template v-else> |
| | | <el-descriptions-item label="委托编号">{{ insOrder.entrustCode }}</el-descriptions-item> |
| | | <el-descriptions-item label="样品编号">{{ currentSample.sampleCode }}</el-descriptions-item> |
| | | <el-descriptions-item label="样品名称">{{ currentSample.sample }}</el-descriptions-item> |
| | | <el-descriptions-item label="样品数量">{{ sampleProduct.length }}</el-descriptions-item> |
| | | <el-descriptions-item label="样品型号">{{ currentSample.model }}</el-descriptions-item> |
| | | <el-descriptions-item label="下发时间">{{ insOrder.sendTime }}</el-descriptions-item> |
| | | <el-descriptions-item label="紧急程度">{{ insOrder.typeName }}</el-descriptions-item> |
| | | <el-descriptions-item label="约定时间">{{ insOrder.appointed }}</el-descriptions-item> |
| | | <el-descriptions-item label="委托编号">{{ |
| | | insOrder.entrustCode |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="样品编号">{{ |
| | | currentSample.sampleCode |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="样品名称">{{ |
| | | currentSample.sample |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="样品数量">{{ |
| | | sampleProduct.length |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="样品型号">{{ |
| | | currentSample.model |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="下发时间">{{ |
| | | insOrder.sendTime |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="紧急程度">{{ |
| | | insOrder.typeName |
| | | }}</el-descriptions-item> |
| | | <el-descriptions-item label="约定时间">{{ |
| | | insOrder.appointed |
| | | }}</el-descriptions-item> |
| | | </template> |
| | | <el-descriptions-item label="当前样品位数"><el-tag v-if="currentKey">{{ `NO.${currentKey}` }}</el-tag></el-descriptions-item> |
| | | <el-descriptions-item label="当前样品位数" |
| | | ><el-tag v-if="currentKey">{{ |
| | | `NO.${currentKey}` |
| | | }}</el-tag></el-descriptions-item |
| | | > |
| | | <el-descriptions-item label="备注"> |
| | | <el-input v-model="insOrder.remark" :disabled="state != 1" clearable placeholder="请输入" size="small" |
| | | @blur="subOtherForm(insOrder.remark, 'remark')"></el-input> |
| | | <el-input |
| | | v-model="insOrder.remark" |
| | | :disabled="state != 1" |
| | | clearable |
| | | placeholder="请输入" |
| | | size="small" |
| | | @blur="subOtherForm(insOrder.remark, 'remark')" |
| | | ></el-input> |
| | | </el-descriptions-item> |
| | | </el-descriptions> |
| | | </div> |
| | | <div class="center"> |
| | | <div class="search" style=" |
| | | <div |
| | | class="search" |
| | | style=" |
| | | text-align: left; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | "> |
| | | " |
| | | > |
| | | <div style="display: flex; align-items: center"> |
| | | <span v-if="tableList.length > 0">检验模板:</span> |
| | | <el-radio-group v-model="currentTable" size="small"> |
| | | <el-radio-button v-for="(item, index) in tableLists" :key="index" :label="item.templateId" size="small">{{ |
| | | item.templateName }}</el-radio-button> |
| | | <el-radio-button |
| | | v-for="(item, index) in tableLists" |
| | | :key="index" |
| | | :label="item.templateId" |
| | | size="small" |
| | | >{{ item.templateName }}</el-radio-button |
| | | > |
| | | </el-radio-group> |
| | | </div> |
| | | <div style="display: flex; align-items: center"> |
| | | <el-button v-if="state == 1" size="small" type="primary" @click="openAddUnpass">新增不合格复测</el-button> |
| | | <el-button v-if="state == 1" size="small" type="primary" @click="unpassCheck">不合格复测</el-button> |
| | | <el-button v-if="state > 1" size="small" type="primary" @click="viewUnpassCheck">查看不合格复测</el-button> |
| | | <el-button |
| | | v-if="state == 1" |
| | | size="small" |
| | | type="primary" |
| | | @click="openAddUnpass" |
| | | >新增不合格复测</el-button |
| | | > |
| | | <el-button |
| | | v-if="state == 1" |
| | | size="small" |
| | | type="primary" |
| | | @click="unpassCheck" |
| | | >不合格复测</el-button |
| | | > |
| | | <el-button |
| | | v-if="state > 1" |
| | | size="small" |
| | | type="primary" |
| | | @click="viewUnpassCheck" |
| | | >查看不合格复测</el-button |
| | | > |
| | | <span v-if="cableTagList.length > 0"> 电缆配置:</span> |
| | | <el-select v-if="cableTagList.length > 0" v-model="currentTab" clearable placeholder="请选择" size="small" |
| | | @change="(m) => handleChangeCableTag(currentSample.id, 0, 'cableTag', m) |
| | | " @focus="getCableTag(currentSample.id)"> |
| | | <el-option v-for="item in cableTagList" :key="item.cableTag" :label="item.cableTag" :value="item.cableTag"> |
| | | <el-select |
| | | v-if="cableTagList.length > 0" |
| | | v-model="currentTab" |
| | | clearable |
| | | placeholder="请选择" |
| | | size="small" |
| | | @change=" |
| | | (m) => handleChangeCableTag(currentSample.id, 0, 'cableTag', m) |
| | | " |
| | | @focus="getCableTag(currentSample.id)" |
| | | > |
| | | <el-option |
| | | v-for="item in cableTagList" |
| | | :key="item.cableTag" |
| | | :label="item.cableTag" |
| | | :value="item.cableTag" |
| | | > |
| | | <span style="float: left">{{ item.cableTag }}</span> |
| | | <el-tag v-if="item.status == 0" size="small" style="float: right; margin-top: 5px" |
| | | type="danger">未检</el-tag> |
| | | <el-tag v-if="item.status == 1" size="small" style="float: right; margin-top: 5px" |
| | | type="warning">检验中</el-tag> |
| | | <el-tag v-if="item.status == 2" size="small" style="float: right; margin-top: 5px" |
| | | type="success">已检</el-tag> |
| | | <el-tag |
| | | v-if="item.status == 0" |
| | | size="small" |
| | | style="float: right; margin-top: 5px" |
| | | type="danger" |
| | | >未检</el-tag |
| | | > |
| | | <el-tag |
| | | v-if="item.status == 1" |
| | | size="small" |
| | | style="float: right; margin-top: 5px" |
| | | type="warning" |
| | | >检验中</el-tag |
| | | > |
| | | <el-tag |
| | | v-if="item.status == 2" |
| | | size="small" |
| | | style="float: right; margin-top: 5px" |
| | | type="success" |
| | | >已检</el-tag |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | <span v-if="repetitionTagList.length > 0"> 重复检验项:</span> |
| | | <el-select v-if="repetitionTagList.length > 0" v-model="repetitionTag" clearable placeholder="请选择" |
| | | size="small" @change="(m) => |
| | | handleChangeCableTag(currentSample.id, 0, 'repetitionTag', m) |
| | | " @focus="getRepetitionTag(currentSample.id)"> |
| | | <el-option v-for="item in repetitionTagList" :key="item.repetitionTag" :label="item.radius" |
| | | :value="item.repetitionTag"> |
| | | <span v-if="repetitionTagList.length > 0" |
| | | > 重复检验项:</span |
| | | > |
| | | <el-select |
| | | v-if="repetitionTagList.length > 0" |
| | | v-model="repetitionTag" |
| | | clearable |
| | | placeholder="请选择" |
| | | size="small" |
| | | @change=" |
| | | (m) => |
| | | handleChangeCableTag(currentSample.id, 0, 'repetitionTag', m) |
| | | " |
| | | @focus="getRepetitionTag(currentSample.id)" |
| | | > |
| | | <el-option |
| | | v-for="item in repetitionTagList" |
| | | :key="item.repetitionTag" |
| | | :label="item.radius" |
| | | :value="item.repetitionTag" |
| | | > |
| | | <span style="float: left">{{ item.radius }}</span> |
| | | <el-tag v-if="item.status == 0" size="small" style="float: right; margin-top: 5px" |
| | | type="danger">未检</el-tag> |
| | | <el-tag v-if="item.status == 1" size="small" style="float: right; margin-top: 5px" |
| | | type="warning">检验中</el-tag> |
| | | <el-tag v-if="item.status == 2" size="small" style="float: right; margin-top: 5px" |
| | | type="success">已检</el-tag> |
| | | <el-tag |
| | | v-if="item.status == 0" |
| | | size="small" |
| | | style="float: right; margin-top: 5px" |
| | | type="danger" |
| | | >未检</el-tag |
| | | > |
| | | <el-tag |
| | | v-if="item.status == 1" |
| | | size="small" |
| | | style="float: right; margin-top: 5px" |
| | | type="warning" |
| | | >检验中</el-tag |
| | | > |
| | | <el-tag |
| | | v-if="item.status == 2" |
| | | size="small" |
| | | style="float: right; margin-top: 5px" |
| | | type="success" |
| | | >已检</el-tag |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | <span v-if="typeSource == '1'"> 待检验数量:</span> |
| | | <el-select v-if="typeSource == '1'" v-model="rawMaterialTag" placeholder="请选择" size="small" @change="(m) => handleChangeCableTag(currentSample.id, 4, 'cableTag', m) |
| | | " @focus="getRawMaterialTag(currentSample.id)"> |
| | | <el-option v-for="item in rawMaterialTagList" :key="item.rawMaterialTag" :label="item.rawMaterialTag" |
| | | :value="item.rawMaterialTag"> |
| | | <el-select |
| | | v-if="typeSource == '1'" |
| | | v-model="rawMaterialTag" |
| | | placeholder="请选择" |
| | | size="small" |
| | | @change=" |
| | | (m) => handleChangeCableTag(currentSample.id, 4, 'cableTag', m) |
| | | " |
| | | @focus="getRawMaterialTag(currentSample.id)" |
| | | > |
| | | <el-option |
| | | v-for="item in rawMaterialTagList" |
| | | :key="item.rawMaterialTag" |
| | | :label="item.rawMaterialTag" |
| | | :value="item.rawMaterialTag" |
| | | > |
| | | <span style="float: left">{{ item.rawMaterialTag }}</span> |
| | | <el-tag v-if="item.status == 0" size="small" style="float: right; margin-top: 5px" |
| | | type="danger">未检</el-tag> |
| | | <el-tag v-if="item.status == 1" size="small" style="float: right; margin-top: 5px" |
| | | type="warning">检验中</el-tag> |
| | | <el-tag v-if="item.status == 2" size="small" style="float: right; margin-top: 5px" |
| | | type="success">已检</el-tag> |
| | | <el-tag |
| | | v-if="item.status == 0" |
| | | size="small" |
| | | style="float: right; margin-top: 5px" |
| | | type="danger" |
| | | >未检</el-tag |
| | | > |
| | | <el-tag |
| | | v-if="item.status == 1" |
| | | size="small" |
| | | style="float: right; margin-top: 5px" |
| | | type="warning" |
| | | >检验中</el-tag |
| | | > |
| | | <el-tag |
| | | v-if="item.status == 2" |
| | | size="small" |
| | | style="float: right; margin-top: 5px" |
| | | type="success" |
| | | >已检</el-tag |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | <el-button :loading="dataAcquisitionLoading" v-if="state == 1" size="small" type="primary" |
| | | @click="getDataAcquisitionDevice">数据采集</el-button> |
| | | <el-button :type="dataAcquisitionEidtAble ? '' : 'primary'" v-if="state == 1" size="small" |
| | | @click="dataAcquisitionEidtAble = !dataAcquisitionEidtAble">{{ dataAcquisitionEidtAble ? "关闭编辑" : "编辑数采" |
| | | }}</el-button> |
| | | <el-button |
| | | :loading="dataAcquisitionLoading" |
| | | v-if="state == 1" |
| | | size="small" |
| | | type="primary" |
| | | @click="getDataAcquisitionDevice" |
| | | >数据采集</el-button |
| | | > |
| | | <el-button |
| | | :type="dataAcquisitionEidtAble ? '' : 'primary'" |
| | | v-if="state == 1" |
| | | size="small" |
| | | @click="dataAcquisitionEidtAble = !dataAcquisitionEidtAble" |
| | | >{{ dataAcquisitionEidtAble ? "关闭编辑" : "编辑数采" }}</el-button |
| | | > |
| | | </div> |
| | | </div> |
| | | <!-- 常规检验原始记录 --> |
| | | <div id="nav" v-loading="tableLoading" class="center-box"> |
| | | <template v-if=" |
| | | tableLists.find((m) => m.templateId == currentTable)"> |
| | | <table v-for="(item, index) in tableList" :key="index + currentTable + currentSample.id" border="1" |
| | | cellpadding="10" class="tables" id="myTable"> |
| | | <template v-if="tableLists.find((m) => m.templateId == currentTable)"> |
| | | <table |
| | | v-for="(item, index) in tableList" |
| | | :key="index + currentTable + currentSample.id" |
| | | border="1" |
| | | cellpadding="10" |
| | | class="tables" |
| | | id="myTable" |
| | | > |
| | | <tbody> |
| | | <tr style="white-space: nowrap"> |
| | | 委托编号:{{ |
| | |
| | | }} |
| | | </tr> |
| | | <tr v-for="(m, i) in item.arr" :key="i"> |
| | | <td v-for="(n, j) in m" v-if="n.v.mc == undefined || Object.keys(n.v.mc).length === 4" |
| | | :id="item.templateId + '-' + n.i + '-' + n.r + '-' + n.c" :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 ? n.v.bg : ''};color:${n.v.fc |
| | | };font-size:${n.v.fs}px;width:${handleWidth( |
| | | n |
| | | )}px !important;height:${item.style.rowlen[n.r]}px;font-wight:${n.v.bl ? 'bold' : '' |
| | | };`"> |
| | | <div :class="`content-h-${n.v.ht} content-v-${n.v.vt}`" :style="`width:${handleWidth(n)}px !important;min-height:${item.style.rowlen[n.r] |
| | | }px;`" class="content"> |
| | | <template v-if=" |
| | | n.v.ps != undefined && |
| | | typeof n.v.ps.value === 'string' && |
| | | n.v.ps.value.includes('检验值') && |
| | | state == 1 |
| | | "> |
| | | <el-input v-if="getInspectionValueType(n.i) == 1" |
| | | :key="'abc-' + '000' + index + '000' + i + '000' + j" v-model="n.v.v" :disabled="(getInspectionItemType(n.i) == 1 && |
| | | !dataAcquisitionEidtAble) || |
| | | <td |
| | | v-for="(n, j) in m" |
| | | v-if="n.v.mc == undefined || Object.keys(n.v.mc).length === 4" |
| | | :id="item.templateId + '-' + n.i + '-' + n.r + '-' + n.c" |
| | | :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 ? n.v.bg : ''};color:${ |
| | | n.v.fc |
| | | };font-size:${n.v.fs}px;width:${handleWidth( |
| | | n |
| | | )}px !important;height:${ |
| | | item.style.rowlen[n.r] |
| | | }px;font-wight:${n.v.bl ? 'bold' : ''};`" |
| | | > |
| | | <div |
| | | :class="`content-h-${n.v.ht} content-v-${n.v.vt}`" |
| | | :style="`width:${handleWidth(n)}px !important;min-height:${ |
| | | item.style.rowlen[n.r] |
| | | }px;`" |
| | | class="content" |
| | | > |
| | | <template |
| | | v-if=" |
| | | n.v.ps != undefined && |
| | | typeof n.v.ps.value === 'string' && |
| | | n.v.ps.value.includes('检验值') && |
| | | state == 1 |
| | | " |
| | | > |
| | | <el-input |
| | | v-if="getInspectionValueType(n.i) == 1" |
| | | :key="'abc-' + '000' + index + '000' + i + '000' + j" |
| | | v-model="n.v.v" |
| | | :disabled=" |
| | | (getInspectionItemType(n.i) == 1 && |
| | | !dataAcquisitionEidtAble) || |
| | | (n.u != userId && n.u != undefined && n.u != '') |
| | | " class="table_input" @change="(m) => |
| | | " |
| | | class="table_input" |
| | | @change=" |
| | | (m) => |
| | | changeInput( |
| | | m, |
| | | `${item.templateId}-${n.r}-${n.c}-${n.i}`, |
| | | n, |
| | | 'getDataType' |
| | | ) |
| | | " @input="handleInput(n)" @mousewheel.native.prevent @keydown.enter=" |
| | | changeInput( |
| | | '', |
| | | `${item.templateId}-${n.r}-${n.c}-${n.i}`, |
| | | n, |
| | | 'getDataType' |
| | | ) |
| | | "> |
| | | </el-input> |
| | | <el-input v-else-if="getInspectionValueType(n.i) == 2" v-model="n.v.v" :disabled="getInspectionItemType(n.i) == 1 || |
| | | (n.u != userId && n.u != undefined && n.u != '') |
| | | " class="table_input" type="textarea" @change="(m) => |
| | | " |
| | | @input="handleInput(n)" |
| | | @mousewheel.native.prevent |
| | | @keydown.enter=" |
| | | changeInput( |
| | | m, |
| | | '', |
| | | `${item.templateId}-${n.r}-${n.c}-${n.i}`, |
| | | n, |
| | | 'getDataType' |
| | | ) |
| | | " /> |
| | | " |
| | | > |
| | | </el-input> |
| | | <el-input |
| | | v-else-if="getInspectionValueType(n.i) == 2" |
| | | v-model="n.v.v" |
| | | :disabled=" |
| | | getInspectionItemType(n.i) == 1 || |
| | | (n.u != userId && n.u != undefined && n.u != '') |
| | | " |
| | | class="table_input" |
| | | type="textarea" |
| | | @change=" |
| | | (m) => |
| | | changeInput( |
| | | m, |
| | | `${item.templateId}-${n.r}-${n.c}-${n.i}`, |
| | | n, |
| | | 'getDataType' |
| | | ) |
| | | " |
| | | /> |
| | | <!-- <el-select v-else-if="getInspectionValueType(n.i) == 5" v-model="n.v.v" :disabled="state > 1 || |
| | | getInspectionItemType(n.i) == 1 || |
| | | (n.u != userId && n.u != undefined && n.u != '') |
| | |
| | | " @visible-change="(e) => getDic(e, n.i)"> |
| | | <el-option v-for="(e, i) in enumList" :key="i" :label="e.label" :value="e.value"></el-option> |
| | | </el-select> --> |
| | | <span v-else-if="getInspectionValueType(n.i) == 4" |
| | | :style="`font-family:${n.v.ff} !important;`">/</span> |
| | | <span |
| | | v-else-if="getInspectionValueType(n.i) == 4" |
| | | :style="`font-family:${n.v.ff} !important;`" |
| | | >/</span |
| | | > |
| | | </template> |
| | | <template v-else-if="n.v.ps != undefined && n.v.ps.value === '结论'"> |
| | | <el-select v-if=" |
| | | (getInspectionValueType(n.i) == 2 || |
| | | getInspectionValueType(n.i) == 5) && |
| | | state == 1 |
| | | " v-model="n.v.v" class="table_input" @change="(m) => |
| | | changeInput( |
| | | m, |
| | | `${item.templateId}-${n.r}-${n.c}-${n.i}`, |
| | | n, |
| | | 'getDataType', |
| | | 'changeSelect' |
| | | ) |
| | | "> |
| | | <template |
| | | v-else-if="n.v.ps != undefined && n.v.ps.value === '结论'" |
| | | > |
| | | <el-select |
| | | v-if=" |
| | | (getInspectionValueType(n.i) == 2 || |
| | | getInspectionValueType(n.i) == 5) && |
| | | state == 1 |
| | | " |
| | | v-model="n.v.v" |
| | | class="table_input" |
| | | @change=" |
| | | (m) => |
| | | changeInput( |
| | | m, |
| | | `${item.templateId}-${n.r}-${n.c}-${n.i}`, |
| | | n, |
| | | 'getDataType', |
| | | 'changeSelect' |
| | | ) |
| | | " |
| | | > |
| | | <el-option :value="1" label="合格"></el-option> |
| | | <el-option :value="0" label="不合格"></el-option> |
| | | <el-option :value="3" label="不判定"></el-option> |
| | | <el-option :value="2" label="待定"></el-option> |
| | | </el-select> |
| | | <template v-if="state > 1"> |
| | | <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-if="n.v.v === 3" |
| | | :style="`font-family:${n.v.ff} !important;color: #3A7BFA;`">不判定</span> |
| | | <span v-else :style="`font-family:${n.v.ff} !important;`">待定</span> |
| | | <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-if="n.v.v === 3" |
| | | :style="`font-family:${n.v.ff} !important;color: #3A7BFA;`" |
| | | >不判定</span |
| | | > |
| | | <span |
| | | v-else |
| | | :style="`font-family:${n.v.ff} !important;`" |
| | | >待定</span |
| | | > |
| | | </template> |
| | | <template v-if="getInspectionValueType(n.i) != 2 && |
| | | state == 1"> |
| | | <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-if="n.v.v === 3" |
| | | :style="`font-family:${n.v.ff} !important;color: #3A7BFA;`">不判定</span> |
| | | <span v-else :style="`font-family:${n.v.ff} !important;`">待定</span> |
| | | <template |
| | | v-if="getInspectionValueType(n.i) != 2 && state == 1" |
| | | > |
| | | <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-if="n.v.v === 3" |
| | | :style="`font-family:${n.v.ff} !important;color: #3A7BFA;`" |
| | | >不判定</span |
| | | > |
| | | <span |
| | | v-else |
| | | :style="`font-family:${n.v.ff} !important;`" |
| | | >待定</span |
| | | > |
| | | </template> |
| | | </template> |
| | | <template v-else-if=" |
| | | n.v.ps != undefined && |
| | | n.v.ps.value === '设备编码' && |
| | | state == 1 |
| | | "> |
| | | <template |
| | | v-else-if=" |
| | | n.v.ps != undefined && |
| | | n.v.ps.value === '设备编码' && |
| | | state == 1 |
| | | " |
| | | > |
| | | <span>{{ n.v.v }}</span> |
| | | </template> |
| | | <template v-else-if=" |
| | | n.v.ps != undefined && n.v.ps.value === '设备名称' |
| | | "> |
| | | <el-select v-model="n.v.v" :disabled="state > 1" class="table_input" filterable multiple |
| | | placeholder="设备" remote @change="(val) => changeEquip(val, n)" |
| | | @visible-change="(e) => getEquipOptions(e, n.i)"> |
| | | <el-option v-for="item in equipOptions" :key="item.value" :label="item.label" |
| | | :value="item.value"> |
| | | <template |
| | | v-else-if=" |
| | | n.v.ps != undefined && n.v.ps.value === '设备名称' |
| | | " |
| | | > |
| | | <el-select |
| | | v-model="n.v.v" |
| | | :disabled="state > 1" |
| | | class="table_input" |
| | | filterable |
| | | multiple |
| | | placeholder="设备" |
| | | remote |
| | | @change="(val) => changeEquip(val, n)" |
| | | @visible-change="(e) => getEquipOptions(e, n.i)" |
| | | > |
| | | <el-option |
| | | v-for="item in equipOptions" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | {{ item.label + "--" + item.value }} |
| | | </el-option> |
| | | </el-select> |
| | | </template> |
| | | <template v-else-if=" |
| | | n.v.ps != undefined && |
| | | n.v.ps.value === '要求值' && |
| | | state == 1 |
| | | "> |
| | | <template |
| | | v-else-if=" |
| | | n.v.ps != undefined && |
| | | n.v.ps.value === '要求值' && |
| | | state == 1 |
| | | " |
| | | > |
| | | <span :style="`font-family:${n.v.ff} !important;`">{{ |
| | | getTell(n.i) |
| | | }}</span> |
| | | </template> |
| | | <template v-else-if=" |
| | | n.v.ps != undefined && |
| | | n.v.ps.value === '计算值' && |
| | | state == 1 |
| | | "><span :style="`font-family:${n.v.ff} !important;`">{{ |
| | | toFixed(n.v.v, n.v.ct) |
| | | }}</span></template> |
| | | <template v-else-if=" |
| | | n.v.ps != undefined && |
| | | n.v.ps.value === '最终值' && |
| | | state == 1 |
| | | "> |
| | | <template |
| | | v-else-if=" |
| | | n.v.ps != undefined && |
| | | n.v.ps.value === '计算值' && |
| | | state == 1 |
| | | " |
| | | ><span :style="`font-family:${n.v.ff} !important;`">{{ |
| | | toFixed(n.v.v, n.v.ct) |
| | | }}</span></template |
| | | > |
| | | <template |
| | | v-else-if=" |
| | | n.v.ps != undefined && |
| | | n.v.ps.value === '最终值' && |
| | | state == 1 |
| | | " |
| | | > |
| | | <span :style="`font-family:${n.v.ff} !important;`">{{ |
| | | toFixed(n.v.v, n.v.ct) |
| | | }}</span> |
| | | </template> |
| | | <template v-else-if=" |
| | | n.v.ps != undefined && n.v.ps.value === '样品编号' |
| | | "> |
| | | <div :title="currentSample.sampleCode" style=" |
| | | display: flex; |
| | | flex-wrap: nowrap; |
| | | align-items: center; |
| | | width: 100%; |
| | | "> |
| | | <i class="el-icon-caret-left table_caret" style="width: 16px" @click="caretSample(-1)"></i> |
| | | <template |
| | | v-else-if=" |
| | | n.v.ps != undefined && n.v.ps.value === '样品编号' |
| | | " |
| | | > |
| | | <div |
| | | :title="currentSample.sampleCode" |
| | | style=" |
| | | display: flex; |
| | | flex-wrap: nowrap; |
| | | align-items: center; |
| | | width: 100%; |
| | | " |
| | | > |
| | | <i |
| | | class="el-icon-caret-left table_caret" |
| | | style="width: 16px" |
| | | @click="caretSample(-1)" |
| | | ></i> |
| | | <div |
| | | :style="`font-family:${n.v.ff} !important;overflow: hidden;white-space: nowrap;width: calc(100% - 32px);`"> |
| | | :style="`font-family:${n.v.ff} !important;overflow: hidden;white-space: nowrap;width: calc(100% - 32px);`" |
| | | > |
| | | {{ currentSample.sampleCode }} |
| | | </div> |
| | | <i class="el-icon-caret-right table_caret" style="width: 16px" @click="caretSample(1)"></i> |
| | | <i |
| | | class="el-icon-caret-right table_caret" |
| | | style="width: 16px" |
| | | @click="caretSample(1)" |
| | | ></i> |
| | | </div> |
| | | </template> |
| | | <template v-else-if=" |
| | | n.v.ps != undefined && n.v.ps.value === '样品型号' |
| | | "> |
| | | <div v-if=" |
| | | currentSample.model !== undefined && |
| | | currentSample.model !== null |
| | | " :style="`font-family:${n.v.ff} !important;`"> |
| | | <template |
| | | v-else-if=" |
| | | n.v.ps != undefined && n.v.ps.value === '样品型号' |
| | | " |
| | | > |
| | | <div |
| | | v-if=" |
| | | currentSample.model !== undefined && |
| | | currentSample.model !== null |
| | | " |
| | | :style="`font-family:${n.v.ff} !important;`" |
| | | > |
| | | {{ currentSample.model }} |
| | | </div> |
| | | </template> |
| | | <span v-else :style="`font-family:${n.v.ff} !important;`" v-html="getValue(n.v)"></span> |
| | | <span |
| | | v-else |
| | | :style="`font-family:${n.v.ff} !important;`" |
| | | v-html="getValue(n.v)" |
| | | ></span> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | |
| | | </table> |
| | | </template> |
| | | </div> |
| | | <el-upload v-if="state == 1" ref="upload" :action="action" :before-upload="beforeUpload" :data="{ |
| | | orderId: id, |
| | | }" :headers="uploadHeader" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" |
| | | <el-upload |
| | | v-if="state == 1" |
| | | ref="upload" |
| | | :action="action" |
| | | :before-upload="beforeUpload" |
| | | :data="{ |
| | | orderId: id, |
| | | }" |
| | | :headers="uploadHeader" |
| | | :on-error="onError" |
| | | :on-success="handleSuccessUp" |
| | | :show-file-list="false" |
| | | accept=".jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar" |
| | | style="width: 80px !important;margin-top: 10px;"> |
| | | <el-button v-if="state == 1" size="small" type="primary">附件上传</el-button></el-upload> |
| | | <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 290px)'" @pagination="pagination" style="height: 100%; margin-top: 16px"></lims-table> |
| | | style="width: 80px !important; margin-top: 10px" |
| | | > |
| | | <el-button v-if="state == 1" size="small" type="primary" |
| | | >附件上传</el-button |
| | | ></el-upload |
| | | > |
| | | <lims-table |
| | | :tableData="tableData" |
| | | :column="column" |
| | | :page="page" |
| | | :tableLoading="tableLoading" |
| | | :height="'calc(100vh - 290px)'" |
| | | @pagination="pagination" |
| | | style="height: 100%; margin-top: 16px" |
| | | ></lims-table> |
| | | </div> |
| | | <el-drawer :size="550" :visible.sync="sampleVisible" title="样品切换"> |
| | | <el-table v-if="sampleVisible" ref="productTable" :current-row-key="currentKey" :data="sampleProduct" |
| | | :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border |
| | | :row-class-name="tableRowClassName" :row-key="(record) => record.index" border class="el-table" height="100%" |
| | | highlight-current-row tooltip-effect="dark" @row-click="handleChangeSample"> |
| | | <el-table-column :key="Math.random()" align="center" label="序号" type="index" width="70px"> |
| | | <el-table |
| | | v-if="sampleVisible" |
| | | ref="productTable" |
| | | :current-row-key="currentKey" |
| | | :data="sampleProduct" |
| | | :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" |
| | | border |
| | | :row-class-name="tableRowClassName" |
| | | :row-key="(record) => record.index" |
| | | border |
| | | class="el-table" |
| | | height="100%" |
| | | highlight-current-row |
| | | tooltip-effect="dark" |
| | | @row-click="handleChangeSample" |
| | | > |
| | | <el-table-column |
| | | :key="Math.random()" |
| | | align="center" |
| | | label="序号" |
| | | type="index" |
| | | width="70px" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column label="样品编号" min-width="100px" prop="sampleCode" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="样品型号" min-width="100px" prop="model" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="检测状态" prop="insState" show-overflow-tooltip width="100px"> |
| | | <el-table-column |
| | | label="样品编号" |
| | | min-width="100px" |
| | | prop="sampleCode" |
| | | show-overflow-tooltip |
| | | ></el-table-column> |
| | | <el-table-column |
| | | label="样品型号" |
| | | min-width="100px" |
| | | prop="model" |
| | | show-overflow-tooltip |
| | | ></el-table-column> |
| | | <el-table-column |
| | | label="检测状态" |
| | | prop="insState" |
| | | show-overflow-tooltip |
| | | width="100px" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <el-tag v-for="(item, i) in typeList" v-if="item.value == scope.row.insState" :key="i" :type="item.type" |
| | | size="medium" style="margin-right: 5px">{{ item.label }}</el-tag> |
| | | <el-tag |
| | | v-for="(item, i) in typeList" |
| | | v-if="item.value == scope.row.insState" |
| | | :key="i" |
| | | :type="item.type" |
| | | size="medium" |
| | | style="margin-right: 5px" |
| | | >{{ item.label }}</el-tag |
| | | > |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column align="center" label="是否留样" prop="isLeave" show-overflow-tooltip width="95px"> |
| | | <el-table-column |
| | | align="center" |
| | | label="是否留样" |
| | | prop="isLeave" |
| | | show-overflow-tooltip |
| | | width="95px" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ scope.row.isLeave == 0 ? "否" : "是" }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <!-- 检验单会有一个是否有配套样品字段控制显示 --> |
| | | <el-table-column v-if="insOrder.mating > 0" label="配套样品型号" min-width="130px" prop="joinModel" |
| | | show-overflow-tooltip></el-table-column> |
| | | <el-table-column v-if="insOrder.mating > 0" label="配套样品名称" min-width="130px" prop="joinName" |
| | | show-overflow-tooltip></el-table-column> |
| | | <el-table-column v-if="insOrder.mating > 0" label="配套样品数量" min-width="130px" prop="joinNum" |
| | | show-overflow-tooltip></el-table-column> |
| | | <el-table-column |
| | | v-if="insOrder.mating > 0" |
| | | label="配套样品型号" |
| | | min-width="130px" |
| | | prop="joinModel" |
| | | show-overflow-tooltip |
| | | ></el-table-column> |
| | | <el-table-column |
| | | v-if="insOrder.mating > 0" |
| | | label="配套样品名称" |
| | | min-width="130px" |
| | | prop="joinName" |
| | | show-overflow-tooltip |
| | | ></el-table-column> |
| | | <el-table-column |
| | | v-if="insOrder.mating > 0" |
| | | label="配套样品数量" |
| | | min-width="130px" |
| | | prop="joinNum" |
| | | show-overflow-tooltip |
| | | ></el-table-column> |
| | | </el-table> |
| | | </el-drawer> |
| | | <el-drawer :size="500" :visible.sync="taskVisible" title="任务切换"> |
| | | <lims-table :tableData="tableData0" :column="column0" :page="page0" :tableLoading="tableLoading0" |
| | | :height="'calc(100vh - 90px)'" :currentChange="handleChangeTask"></lims-table> |
| | | <lims-table |
| | | :tableData="tableData0" |
| | | :column="column0" |
| | | :page="page0" |
| | | :tableLoading="tableLoading0" |
| | | :height="'calc(100vh - 90px)'" |
| | | :currentChange="handleChangeTask" |
| | | ></lims-table> |
| | | </el-drawer> |
| | | <el-dialog |
| | | title="哑铃片设备试样类型" |
| | | :visible.sync="dialogVisible" |
| | | :before-close="handleDialogCancel" |
| | | width="30%"> |
| | | <el-select v-model="deviceDbTableName" placeholder="请选择试样类型" style="width:100%" size="small"> |
| | | width="30%" |
| | | > |
| | | <el-select |
| | | v-model="deviceDbTableName" |
| | | placeholder="请选择试样类型" |
| | | style="width: 100%" |
| | | size="small" |
| | | > |
| | | <el-option label="片状" value="TestData"></el-option> |
| | | <el-option label="管状" value="TestData2"></el-option> |
| | | </el-select> |
| | |
| | | <span class="required-span">* </span>不通过的理由: |
| | | </div> |
| | | <div class="search_input" style="width: 100%"> |
| | | <el-input v-model="noReason" :autosize="{ minRows: 4 }" clearable size="small" type="textarea"></el-input> |
| | | <el-input |
| | | v-model="noReason" |
| | | :autosize="{ minRows: 4 }" |
| | | clearable |
| | | size="small" |
| | | type="textarea" |
| | | ></el-input> |
| | | </div> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="reviewDia = false">取 消</el-button> |
| | | <el-button :loading="reviewLoading" type="primary" @click="handleReviewDia">确 定</el-button> |
| | | <el-button |
| | | :loading="reviewLoading" |
| | | type="primary" |
| | | @click="handleReviewDia" |
| | | >确 定</el-button |
| | | > |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :visible.sync="addVerifyDia" title="指定复核人员" width="400px"> |
| | | <div class="body" style="display: flex; padding: 10px; align-items: center"> |
| | | <div |
| | | class="body" |
| | | style="display: flex; padding: 10px; align-items: center" |
| | | > |
| | | <div class="search_label" style="width: 150px"> |
| | | <span class="required-span">*</span>复核人 |
| | | </div> |
| | | <div class="search_input" style="width: 100%"> |
| | | <el-select v-model="verifyUser" clearable filterable placeholder="请选择" size="small" style="width: 100%"> |
| | | <el-option v-for="(item, i) in personList" :key="i" :label="item.label" :value="item.value"> |
| | | <el-select |
| | | v-model="verifyUser" |
| | | clearable |
| | | filterable |
| | | placeholder="请选择" |
| | | size="small" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="(item, i) in personList" |
| | | :key="i" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="addVerifyDia = false">取 消</el-button> |
| | | <el-button :loading="submitLoading" type="primary" @click="submit()">确 定</el-button> |
| | | <el-button :loading="submitLoading" type="primary" @click="submit()" |
| | | >确 定</el-button |
| | | > |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" |
| | | :visible.sync="dataGetDia" title="数据采集" width="80%"> |
| | | <el-dialog |
| | | :close-on-click-modal="false" |
| | | :close-on-press-escape="false" |
| | | :show-close="false" |
| | | :visible.sync="dataGetDia" |
| | | title="数据采集" |
| | | width="80%" |
| | | > |
| | | <div> |
| | | <table border="1" cellpadding="10" class="thermal-table"> |
| | | <tr> |
| | |
| | | <td style="text-align: left"> |
| | | <!-- 添加容器 div --> |
| | | <div class="data-collection-items"> |
| | | <el-select v-if="item.child[0].isShowSelect" v-model="item.child[0].getDataIndex1" |
| | | :multiple-limit="item.child[0].maxNum" clearable filterable multiple placeholder="请选择" |
| | | @change="setData(item)"> |
| | | <el-option v-for="(subItem, subIndex) in item.child[0].arr" :key="index + '-' + subIndex" :filter-method="filterMethod" |
| | | :label="subIndex + 1 + '^' + subItem.result" :value="subIndex + '^' + subItem.result"> |
| | | <span>{{ |
| | | "序号:" + |
| | | (subIndex + 1) + |
| | | "," + |
| | | "结果:" + |
| | | subItem.result + |
| | | "," + |
| | | "厚度:" + |
| | | subItem.thickness + |
| | | "," + |
| | | "时间:" + |
| | | subItem.mergedDateTime |
| | | }}</span> |
| | | </el-option> |
| | | </el-select> |
| | | <el-checkbox-group v-if="!item.child[0].isShowSelect" v-model="item.child[0].getDataIndex1" |
| | | :max="item.child[0].maxNum"> |
| | | <el-checkbox v-for="(n, j) in item.child[0].arr" :key="index + '-' + j + 'aaaaaa'" :label="j + '^' + n" |
| | | @change="handleGroupSelect(item.child[0], j, item.child[0].arr.length)" >{{ n }}</el-checkbox> |
| | | </el-checkbox-group> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | <tr v-for="(m, i) in item.child" v-show="i > 0" :key="index + '-' + i + 'bbbbbbbbbbbbbb'"> |
| | | <td>{{ m.name }}</td> |
| | | <td style="text-align: left"> |
| | | <!-- 添加容器 div --> |
| | | <div class="data-collection-items"> |
| | | <el-select v-if="m.isShowSelect" v-model="m.getDataIndex1" :multiple-limit="m.maxNum" clearable |
| | | filterable multiple placeholder="请选择"> |
| | | <el-option v-for="(subItem, index1) in m.arr" :key="index + '-' + index1 + 'cccccccc'" |
| | | :label="index1 + 1 + '^' + subItem.result" :value="index1 + '^' + subItem.result"> |
| | | <span>{{ |
| | | "序号:" + |
| | | (index1 + 1) + |
| | | "," + |
| | | "结果:" + |
| | | subItem.result + |
| | | "," + |
| | | "厚度:" + |
| | | subItem.thickness + |
| | | "," + |
| | | "时间:" + |
| | | subItem.mergedDateTime |
| | | }}</span> |
| | | </el-option> |
| | | </el-select> |
| | | <el-checkbox-group v-if="!m.isShowSelect" v-model="m.getDataIndex1" :max="m.maxNum"> |
| | | <el-checkbox v-for="(n, j) in m.arr" :key="index + '-' + j + 'dddddddd'" :label="j + '^' + n" |
| | | @change="handleGroupSelect(m, j, m.arr.length)" >{{ n }}</el-checkbox> |
| | | </el-checkbox-group> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | </template> |
| | | </table> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dataGetDia = false">取 消</el-button> |
| | | <el-button :loading="getDataIndexLoading" type="primary" @click="submitDataGet()">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-select |
| | | v-if="item.child[0].isShowSelect" |
| | | v-model="item.child[0].getDataIndex1" |
| | | :multiple-limit="item.child[0].maxNum" |
| | | clearable |
| | | filterable |
| | | multiple |
| | | placeholder="请选择" |
| | | @change="setData(item)" |
| | | > |
| | | <el-option |
| | | v-for="(subItem, subIndex) in item.child[0].arr" |
| | | :key="index + '-' + subIndex" |
| | | :filter-method="filterMethod" |
| | | :label="subIndex + 1 + '^' + subItem.result" |
| | | :value="subIndex + '^' + subItem.result" |
| | | > |
| | | <span>{{ |
| | | "序号:" + |
| | | (subIndex + 1) + |
| | | "," + |
| | | "结果:" + |
| | | subItem.result + |
| | | "," + |
| | | "厚度:" + |
| | | subItem.thickness + |
| | | "," + |
| | | "时间:" + |
| | | subItem.mergedDateTime |
| | | }}</span> |
| | | </el-option> |
| | | </el-select> |
| | | <el-checkbox-group |
| | | v-if="!item.child[0].isShowSelect" |
| | | v-model="item.child[0].getDataIndex1" |
| | | :max="item.child[0].maxNum" |
| | | > |
| | | <el-checkbox |
| | | v-for="(n, j) in item.child[0].arr" |
| | | :key="index + '-' + j + 'aaaaaa'" |
| | | :label="j + '^' + n" |
| | | @change=" |
| | | handleGroupSelect( |
| | | item.child[0], |
| | | j, |
| | | item.child[0].arr.length |
| | | ) |
| | | " |
| | | >{{ n }}</el-checkbox |
| | | > |
| | | </el-checkbox-group> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | <tr |
| | | v-for="(m, i) in item.child" |
| | | v-show="i > 0" |
| | | :key="index + '-' + i + 'bbbbbbbbbbbbbb'" |
| | | > |
| | | <td>{{ m.name }}</td> |
| | | <td style="text-align: left"> |
| | | <!-- 添加容器 div --> |
| | | <div class="data-collection-items"> |
| | | <el-select |
| | | v-if="m.isShowSelect" |
| | | v-model="m.getDataIndex1" |
| | | :multiple-limit="m.maxNum" |
| | | clearable |
| | | filterable |
| | | multiple |
| | | placeholder="请选择" |
| | | > |
| | | <el-option |
| | | v-for="(subItem, index1) in m.arr" |
| | | :key="index + '-' + index1 + 'cccccccc'" |
| | | :label="index1 + 1 + '^' + subItem.result" |
| | | :value="index1 + '^' + subItem.result" |
| | | > |
| | | <span>{{ |
| | | "序号:" + |
| | | (index1 + 1) + |
| | | "," + |
| | | "结果:" + |
| | | subItem.result + |
| | | "," + |
| | | "厚度:" + |
| | | subItem.thickness + |
| | | "," + |
| | | "时间:" + |
| | | subItem.mergedDateTime |
| | | }}</span> |
| | | </el-option> |
| | | </el-select> |
| | | <el-checkbox-group |
| | | v-if="!m.isShowSelect" |
| | | v-model="m.getDataIndex1" |
| | | :max="m.maxNum" |
| | | > |
| | | <el-checkbox |
| | | v-for="(n, j) in m.arr" |
| | | :key="index + '-' + j + 'dddddddd'" |
| | | :label="j + '^' + n" |
| | | @change="handleGroupSelect(m, j, m.arr.length)" |
| | | >{{ n }}</el-checkbox |
| | | > |
| | | </el-checkbox-group> |
| | | </div> |
| | | </td> |
| | | </tr> |
| | | </template> |
| | | </table> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dataGetDia = false">取 消</el-button> |
| | | <el-button |
| | | :loading="getDataIndexLoading" |
| | | type="primary" |
| | | @click="submitDataGet()" |
| | | >确 定</el-button |
| | | > |
| | | </span> |
| | | </el-dialog> |
| | | |
| | | <el-dialog :close-on-click-modal="false" :visible.sync="addCheck" title="指定报告审核人员" width="400px" |
| | | @close="closeAddVerifyDia"> |
| | | <div class="body" style="display: flex; padding: 10px; align-items: center"> |
| | | <el-dialog |
| | | :close-on-click-modal="false" |
| | | :visible.sync="addCheck" |
| | | title="指定报告审核人员" |
| | | width="400px" |
| | | @close="closeAddVerifyDia" |
| | | > |
| | | <div |
| | | class="body" |
| | | style="display: flex; padding: 10px; align-items: center" |
| | | > |
| | | <div class="search_label" style="width: 150px"> |
| | | <span class="required-span">*</span>审核人: |
| | | </div> |
| | | <div class="search_input" style="width: 100%"> |
| | | <el-select v-model="checkUser" clearable filterable placeholder="请选择" size="small" style="width: 100%"> |
| | | <el-option v-for="(item, i) in personList" :key="i" :label="item.label" :value="item.value"> |
| | | <el-select |
| | | v-model="checkUser" |
| | | clearable |
| | | filterable |
| | | placeholder="请选择" |
| | | size="small" |
| | | style="width: 100%" |
| | | > |
| | | <el-option |
| | | v-for="(item, i) in personList" |
| | | :key="i" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closeAddVerifyDia">取 消</el-button> |
| | | <el-button :loading="reviewLoading" type="primary" @click="upInsReview(1)">确 定</el-button> |
| | | <el-button |
| | | :loading="reviewLoading" |
| | | type="primary" |
| | | @click="upInsReview(1)" |
| | | >确 定</el-button |
| | | > |
| | | </span> |
| | | </el-dialog> |
| | | <!-- 添加不合格复测弹框--> |
| | | <add-un-pass v-if="addUnPassDialog" ref="addUnPassDialog" :addUnPassDialog="addUnPassDialog" |
| | | @resetAddUnPass="resetAddUnPass"></add-un-pass> |
| | | <add-un-pass |
| | | v-if="addUnPassDialog" |
| | | ref="addUnPassDialog" |
| | | :addUnPassDialog="addUnPassDialog" |
| | | @resetAddUnPass="resetAddUnPass" |
| | | ></add-un-pass> |
| | | <!-- 不合格处理弹框--> |
| | | <UnPassDialog v-if="unPassDialog" ref="unPassDialog" :orderId="orderId" :unPassDialog="unPassDialog" |
| | | @resetForm="resetForm"></UnPassDialog> |
| | | <UnPassDialog |
| | | v-if="unPassDialog" |
| | | ref="unPassDialog" |
| | | :orderId="orderId" |
| | | :unPassDialog="unPassDialog" |
| | | @resetForm="resetForm" |
| | | ></UnPassDialog> |
| | | <!-- 不合格复测弹框--> |
| | | <InspectionWord v-if="unPassCheck" :inspectorList="inspectorList" :orderId="orderId" |
| | | :cableTag="temCableTag" :repetitionTag="repetitionTag" |
| | | :rawMaterialTag="rawMaterialTag" :sonLaboratory="sonLaboratory" :state="state" :typeSource="typeSource" |
| | | :unPassCheck="unPassCheck" @closeUnPassCheckDialog="closeUnPassCheckDialog" @refreshView="refreshView" /> |
| | | <InspectionWord |
| | | v-if="unPassCheck" |
| | | :inspectorList="inspectorList" |
| | | :orderId="orderId" |
| | | :cableTag="temCableTag" |
| | | :repetitionTag="repetitionTag" |
| | | :rawMaterialTag="rawMaterialTag" |
| | | :sonLaboratory="sonLaboratory" |
| | | :state="state" |
| | | :typeSource="typeSource" |
| | | :unPassCheck="unPassCheck" |
| | | @closeUnPassCheckDialog="closeUnPassCheckDialog" |
| | | @refreshView="refreshView" |
| | | /> |
| | | <!-- 进货验证弹框--> |
| | | <purchase-verification v-if="purchaseDialog" ref="purchaseDialog" :orderId="orderId" |
| | | :purchaseDialog="purchaseDialog" @resetPurchaseDialog="resetPurchaseDialog"></purchase-verification> |
| | | <purchase-verification |
| | | v-if="purchaseDialog" |
| | | ref="purchaseDialog" |
| | | :orderId="orderId" |
| | | :purchaseDialog="purchaseDialog" |
| | | @resetPurchaseDialog="resetPurchaseDialog" |
| | | ></purchase-verification> |
| | | <!--查看工时弹框--> |
| | | <viewManHourDia ref="viewManHourDia" @submit="openAddVerifyDia"></viewManHourDia> |
| | | <!-- IFS物料属性编辑弹框--> |
| | | <viewManHourDia |
| | | ref="viewManHourDia" |
| | | @submit="openAddVerifyDia" |
| | | ></viewManHourDia> |
| | | <!-- IFS物料属性编辑弹框--> |
| | | <el-dialog |
| | | title="更新IFS库存物料批次属性" |
| | | :visible.sync="ifsMaterialPropsVisible" |
| | | width="20%"> |
| | | <el-form style="width:100%" :model="ifsMaterialPropsForm"> |
| | | width="20%" |
| | | > |
| | | <el-form style="width: 100%" :model="ifsMaterialPropsForm"> |
| | | <el-form-item label="载具编号(Attr1):"> |
| | | <el-input placeholder="载具编号" size="small" v-model="ifsMaterialPropsForm.drumNo"></el-input> |
| | | <el-input |
| | | placeholder="载具编号" |
| | | size="small" |
| | | v-model="ifsMaterialPropsForm.drumNo" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="起始米标(Attr2):"> |
| | | <el-input @blur="validateQuality()" placeholder="起始米标" size="small" v-model="ifsMaterialPropsForm.startMeterMark"> |
| | | <el-input |
| | | @blur="validateQuality()" |
| | | placeholder="起始米标" |
| | | size="small" |
| | | v-model="ifsMaterialPropsForm.startMeterMark" |
| | | > |
| | | <span slot="suffix">km</span> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="截止米标(Attr3):"> |
| | | <el-input @blur="validateQuality()" placeholder="截止米标" size="small" v-model="ifsMaterialPropsForm.endMeterMark"> |
| | | <el-input |
| | | @blur="validateQuality()" |
| | | placeholder="截止米标" |
| | | size="small" |
| | | v-model="ifsMaterialPropsForm.endMeterMark" |
| | | > |
| | | <span slot="suffix">km</span> |
| | | </el-input> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="入库长度">--> |
| | | <!-- <el-input v-model="ifsMaterialPropsForm.inboundLength"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- <el-form-item label="入库长度">--> |
| | | <!-- <el-input v-model="ifsMaterialPropsForm.inboundLength"></el-input>--> |
| | | <!-- </el-form-item>--> |
| | | <el-form-item label="外护颜色(Attr4):"> |
| | | <el-select size="small" v-model="ifsMaterialPropsForm.outerColor"> |
| | | <el-option v-for="(item,index) in outerColorList" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option> |
| | | <el-option |
| | | v-for="(item, index) in outerColorList" |
| | | :label="item.dictLabel" |
| | | :value="item.dictValue" |
| | | :key="index" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="绝缘颜色(Attr5):"> |
| | | <el-select size="small" v-model="ifsMaterialPropsForm.insulationColor"> |
| | | <el-option v-for="(item,index) in insulationColorList" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option> |
| | | <el-select |
| | | size="small" |
| | | v-model="ifsMaterialPropsForm.insulationColor" |
| | | > |
| | | <el-option |
| | | v-for="(item, index) in insulationColorList" |
| | | :label="item.dictLabel" |
| | | :value="item.dictValue" |
| | | :key="index" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="印字信息(Attr8):"> |
| | | <el-select size="small" v-model="ifsMaterialPropsForm.letteringInfo" placeholder="请选择"> |
| | | <el-option v-for="(item,index) in letteringInfoList" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option> |
| | | <el-select |
| | | size="small" |
| | | v-model="ifsMaterialPropsForm.letteringInfo" |
| | | placeholder="请选择" |
| | | > |
| | | <el-option |
| | | v-for="(item, index) in letteringInfoList" |
| | | :label="item.dictLabel" |
| | | :value="item.dictValue" |
| | | :key="index" |
| | | ></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="closePartPropDialog()">取 消</el-button> |
| | | <el-button type="primary" @click="saveOrUpdatePartProp()">确 定</el-button> |
| | | </span> |
| | | <el-button @click="closePartPropDialog()">取 消</el-button> |
| | | <el-button type="primary" @click="saveOrUpdatePartProp()" |
| | | >确 定</el-button |
| | | > |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | |
| | | downFile, |
| | | getFileList, |
| | | delfile, |
| | | inspectionOrderDetailsTaskSwitching |
| | | inspectionOrderDetailsTaskSwitching, |
| | | } from "@/api/business/inspectionTask.js"; |
| | | import InspectionWorker from '@/workers/InspectionWorker.worker.js'; |
| | | import DataWorker from '@/workers/DataWorker.worker.js'; |
| | | import InspectionWorker from "@/workers/InspectionWorker.worker.js"; |
| | | import DataWorker from "@/workers/DataWorker.worker.js"; |
| | | import html2canvas from "html2canvas"; |
| | | import { mapGetters } from "vuex"; |
| | | import viewManHourDia from "@/views/business/inspectionTask/components/viewManHourDia.vue"; |
| | | import {getOneByIfsId,saveOrUpdateProps} from "@/api/business/ifsPartProps.js"; |
| | | import {getDicts} from "@/api/system/dict/data"; |
| | | import { |
| | | getOneByIfsId, |
| | | saveOrUpdateProps, |
| | | } from "@/api/business/ifsPartProps.js"; |
| | | import { getDicts } from "@/api/system/dict/data"; |
| | | export default { |
| | | name: 'Inspection', |
| | | name: "Inspection", |
| | | components: { |
| | | viewManHourDia, |
| | | PurchaseVerification, |
| | |
| | | dialogResolve: null, |
| | | dialogReject: null, |
| | | dialogVisible: false, |
| | | deviceDbTableName: '', |
| | | outerColorList:[], |
| | | insulationColorList:[], |
| | | deviceDbTableName: "", |
| | | outerColorList: [], |
| | | insulationColorList: [], |
| | | letteringInfoList: [], |
| | | ifsMaterialPropsForm:{ |
| | | id:null, |
| | | ifsMaterialPropsForm: { |
| | | id: null, |
| | | ifsInventoryId: null, |
| | | drumNo: '', // 载具编号 |
| | | startMeterMark: '', // 起始米标 |
| | | endMeterMark: '', // 截止米标 |
| | | insulationColor: '', // 绝缘颜色 |
| | | outerColor: '', // 外护颜色 |
| | | inboundLength: '', // 入库长度 |
| | | letteringInfo: '', // 印字信息 |
| | | drumNo: "", // 载具编号 |
| | | startMeterMark: "", // 起始米标 |
| | | endMeterMark: "", // 截止米标 |
| | | insulationColor: "", // 绝缘颜色 |
| | | outerColor: "", // 外护颜色 |
| | | inboundLength: "", // 入库长度 |
| | | letteringInfo: "", // 印字信息 |
| | | }, |
| | | ifsMaterialPropsVisible:false, |
| | | ifsMaterialPropsVisible: false, |
| | | sonLaboratory: null, |
| | | orderId: null, |
| | | state: null, |
| | |
| | | tableData: [], |
| | | column: [ |
| | | { |
| | | label: "类型", prop: "type", dataType: "tag", |
| | | label: "类型", |
| | | prop: "type", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (params == 1) { |
| | | return '图片' |
| | | return "图片"; |
| | | } else { |
| | | return '文件' |
| | | return "文件"; |
| | | } |
| | | } |
| | | }, |
| | | }, |
| | | { label: "附件名称", prop: "fileName" }, |
| | | { label: "上传人", prop: "name" }, |
| | |
| | | // 任务切换列表--开始 |
| | | tableData0: [], |
| | | column0: [ |
| | | { label: "委托编号", prop: "entrustCode", width: '160px' }, |
| | | { label: "检验对象", prop: "sampleType", width: '140px' }, |
| | | { label: "委托编号", prop: "entrustCode", width: "160px" }, |
| | | { label: "检验对象", prop: "sampleType", width: "140px" }, |
| | | { |
| | | label: "紧急程度", prop: "type", dataType: "tag", |
| | | label: "紧急程度", |
| | | prop: "type", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | return this.urgentList.find(m => m.value == params).label |
| | | return this.urgentList.find((m) => m.value == params).label; |
| | | }, |
| | | formatType: (params) => { |
| | | return this.urgentList.find(m => m.value == params).type |
| | | } |
| | | return this.urgentList.find((m) => m.value == params).type; |
| | | }, |
| | | }, |
| | | { |
| | | label: "状态", prop: "insState", dataType: "tag", |
| | | label: "状态", |
| | | prop: "insState", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | return this.typeList.find(m => m.value == params).label |
| | | return this.typeList.find((m) => m.value == params).label; |
| | | }, |
| | | formatType: (params) => { |
| | | return this.typeList.find(m => m.value == params).type |
| | | } |
| | | return this.typeList.find((m) => m.value == params).type; |
| | | }, |
| | | }, |
| | | { label: "约定时间", prop: "appointed", width: '140px' }, |
| | | { label: "下发时间", prop: "sendTime", width: '140px' }, |
| | | { label: "约定时间", prop: "appointed", width: "140px" }, |
| | | { label: "下发时间", prop: "sendTime", width: "140px" }, |
| | | ], |
| | | page0: { |
| | | total: 0, |
| | |
| | | }, |
| | | }, |
| | | created() { |
| | | let { sonLaboratory, orderId, state, inspectorList, typeSource,isSplit } = |
| | | let { sonLaboratory, orderId, state, inspectorList, typeSource, isSplit } = |
| | | this.$route.query; |
| | | this.sonLaboratory = sonLaboratory; |
| | | this.orderId = orderId; |
| | |
| | | watch: { |
| | | // 监听任务id,获取任务信息 |
| | | id(val) { |
| | | this.refreshView() |
| | | this.refreshView(); |
| | | }, |
| | | // 监听当前模板变化 |
| | | currentTable(val1, val0) { |
| | |
| | | // 特殊检验项--监听设备信息改变 |
| | | equipForm: { |
| | | deep: true, |
| | | handler(val) { }, |
| | | handler(val) {}, |
| | | }, |
| | | }, |
| | | beforeDestroy() { |
| | |
| | | this.stopWorker(); |
| | | }, |
| | | methods: { |
| | | validateQuality(){ |
| | | let inboundLength = Number(this.calcInbondLength(this.ifsMaterialPropsForm.startMeterMark,this.ifsMaterialPropsForm.endMeterMark)); |
| | | validateQuality() { |
| | | let inboundLength = Number( |
| | | this.calcInbondLength( |
| | | this.ifsMaterialPropsForm.startMeterMark, |
| | | this.ifsMaterialPropsForm.endMeterMark |
| | | ) |
| | | ); |
| | | let testQuantity = Number(this.insOrder.testQuantity); |
| | | if(inboundLength!=null && testQuantity!==inboundLength){ |
| | | this.$message.warning(`入库长度(${inboundLength}km)与检验数量(${testQuantity}km)不符,请确认!`); |
| | | if (inboundLength != null && testQuantity !== inboundLength) { |
| | | this.$message.warning( |
| | | `入库长度(${inboundLength}km)与检验数量(${testQuantity}km)不符,请确认!` |
| | | ); |
| | | } |
| | | }, |
| | | calcInbondLength(startMeterMark,endMeterMark){ |
| | | calcInbondLength(startMeterMark, endMeterMark) { |
| | | let inboundLength = null; |
| | | if((startMeterMark!=null && startMeterMark!=='') && (endMeterMark!=null&&endMeterMark!=='')){ |
| | | if ( |
| | | startMeterMark != null && |
| | | startMeterMark !== "" && |
| | | endMeterMark != null && |
| | | endMeterMark !== "" |
| | | ) { |
| | | let minus = this.$Big(endMeterMark).minus(this.$Big(startMeterMark)); |
| | | inboundLength = Math.abs(minus) |
| | | inboundLength = Math.abs(minus); |
| | | } |
| | | return inboundLength; |
| | | }, |
| | | getLetteringInfoDicts(){ |
| | | getDicts("lettering_info_type").then(res=>{ |
| | | if(res.code==200){ |
| | | this.letteringInfoList = res.data |
| | | getLetteringInfoDicts() { |
| | | getDicts("lettering_info_type").then((res) => { |
| | | if (res.code == 200) { |
| | | this.letteringInfoList = res.data; |
| | | } |
| | | }) |
| | | }); |
| | | }, |
| | | getInsulationColorDicts(){ |
| | | getDicts("insulation_color_type").then(res=>{ |
| | | if(res.code==200){ |
| | | this.insulationColorList = res.data |
| | | getInsulationColorDicts() { |
| | | getDicts("insulation_color_type").then((res) => { |
| | | if (res.code == 200) { |
| | | this.insulationColorList = res.data; |
| | | } |
| | | }) |
| | | }); |
| | | }, |
| | | getOuterColorDicts(){ |
| | | getDicts("outer_color_type").then(res=>{ |
| | | if(res.code==200){ |
| | | this.outerColorList = res.data |
| | | getOuterColorDicts() { |
| | | getDicts("outer_color_type").then((res) => { |
| | | if (res.code == 200) { |
| | | this.outerColorList = res.data; |
| | | } |
| | | }) |
| | | }); |
| | | }, |
| | | closePartPropDialog(){ |
| | | closePartPropDialog() { |
| | | this.ifsMaterialPropsForm = { |
| | | id:null, |
| | | id: null, |
| | | ifsInventoryId: null, |
| | | drumNo: '', // 载具编号 |
| | | startMeterMark: '', // 起始米标 |
| | | endMeterMark: '', // 截止米标 |
| | | insulationColor: '', // 绝缘颜色 |
| | | outerColor: '', // 外护颜色 |
| | | inboundLength: '', // 入库长度 |
| | | letteringInfo: '', // 印字信息 |
| | | } |
| | | drumNo: "", // 载具编号 |
| | | startMeterMark: "", // 起始米标 |
| | | endMeterMark: "", // 截止米标 |
| | | insulationColor: "", // 绝缘颜色 |
| | | outerColor: "", // 外护颜色 |
| | | inboundLength: "", // 入库长度 |
| | | letteringInfo: "", // 印字信息 |
| | | }; |
| | | this.ifsMaterialPropsVisible = false; |
| | | }, |
| | | getPartProps(ifsId){ |
| | | getOneByIfsId(ifsId).then((res)=>{ |
| | | if(res.code==200 && res.data){ |
| | | getPartProps(ifsId) { |
| | | getOneByIfsId(ifsId).then((res) => { |
| | | if (res.code == 200 && res.data) { |
| | | this.ifsMaterialPropsForm = res.data; |
| | | } |
| | | }) |
| | | }); |
| | | }, |
| | | saveOrUpdatePartProp(){ |
| | | this.ifsMaterialPropsForm.ifsInventoryId = this.insOrder.ifsInventoryId |
| | | saveOrUpdatePartProp() { |
| | | this.ifsMaterialPropsForm.ifsInventoryId = this.insOrder.ifsInventoryId; |
| | | saveOrUpdateProps({ |
| | | ...this.ifsMaterialPropsForm, |
| | | partNo: this.insOrder.partNo, |
| | | lotBatchNo: this.insOrder.lotBatchNo, |
| | | contract: this.insOrder.contract |
| | | }).then((res)=>{ |
| | | if(res.code==200){ |
| | | contract: this.insOrder.contract, |
| | | }).then((res) => { |
| | | if (res.code == 200) { |
| | | this.$message.success("保存成功"); |
| | | this.ifsMaterialPropsVisible = false; |
| | | this.refreshView() |
| | | this.refreshView(); |
| | | } |
| | | }) |
| | | }); |
| | | }, |
| | | //打开IFS物料属性弹框 |
| | | showMaterialPropsDialog(){ |
| | | this.getPartProps(this.insOrder.ifsInventoryId) |
| | | this.getOuterColorDicts() |
| | | this.getInsulationColorDicts() |
| | | this.getLetteringInfoDicts() |
| | | this.$nextTick(()=>{ |
| | | showMaterialPropsDialog() { |
| | | this.getPartProps(this.insOrder.ifsInventoryId); |
| | | this.getOuterColorDicts(); |
| | | this.getInsulationColorDicts(); |
| | | this.getLetteringInfoDicts(); |
| | | this.$nextTick(() => { |
| | | this.ifsMaterialPropsVisible = true; |
| | | }) |
| | | }); |
| | | }, |
| | | // 文件管理--开始 |
| | | getList() { |
| | |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "warning", |
| | | }).then(() => { |
| | | delfile({ id: row.id }).then((res) => { |
| | | this.$message.success("删除成功"); |
| | | this.getList(); |
| | | }); |
| | | }).catch(() => { }); |
| | | }) |
| | | .then(() => { |
| | | delfile({ id: row.id }).then((res) => { |
| | | this.$message.success("删除成功"); |
| | | this.getList(); |
| | | }); |
| | | }) |
| | | .catch(() => {}); |
| | | }, |
| | | // 文件管理--结束 |
| | | // 处理整组勾选逻辑的方法 |
| | | handleGroupSelect(childItem, clickedIndex, groupSize = 5) { |
| | | if(groupSize == 6){ |
| | | if (groupSize == 6) { |
| | | groupSize = 6; |
| | | }else{ |
| | | } else { |
| | | groupSize = 5; |
| | | } |
| | | // 计算所在组的起始索引 |
| | |
| | | // 清空当前已选 |
| | | childItem.getDataIndex1 = []; |
| | | // 遍历当前组的 groupSize 个元素,添加到选中列表 |
| | | for (let i = groupStartIndex; i < groupStartIndex + groupSize && i < childItem.arr.length; i++) { |
| | | childItem.getDataIndex1.push(i + '^' + childItem.arr[i]); |
| | | for ( |
| | | let i = groupStartIndex; |
| | | i < groupStartIndex + groupSize && i < childItem.arr.length; |
| | | i++ |
| | | ) { |
| | | childItem.getDataIndex1.push(i + "^" + childItem.arr[i]); |
| | | } |
| | | }, |
| | | |
| | | // 任务切换--开始 |
| | | getList0() { |
| | | this.tableLoading0 = true; |
| | | let param = { userId: this.userId, sonLaboratory: this.sonLaboratory, ...this.page0 }; |
| | | let param = { |
| | | userId: this.userId, |
| | | sonLaboratory: this.sonLaboratory, |
| | | ...this.page0, |
| | | }; |
| | | delete param.total; |
| | | inspectionOrderDetailsTaskSwitching({ ...param }) |
| | | .then((res) => { |
| | |
| | | laboratory: this.sonLaboratory, |
| | | }).then(async (res) => { |
| | | this.insOrder = res.data.insOrder; |
| | | if(res.data.insOrder.ifsOrderType==='02wg'){ |
| | | if (res.data.insOrder.ifsOrderType === "02wg") { |
| | | //查询零件属性 |
| | | this.getPartProps(res.data.insOrder.ifsInventoryId) |
| | | this.getPartProps(res.data.insOrder.ifsInventoryId); |
| | | } |
| | | this.supplierDensity = res.data.supplierDensity; |
| | | this.getList() |
| | | this.getList(); |
| | | this.urgentList.forEach((m) => { |
| | | if (m.value == this.insOrder.type) { |
| | | this.insOrder.typeName = m.label; |
| | |
| | | }, |
| | | openDialog() { |
| | | this.dialogVisible = true; |
| | | this.deviceDbTableName = ''; // 重置表单 |
| | | this.deviceDbTableName = ""; // 重置表单 |
| | | // 返回 Promise,等待用户操作 |
| | | return new Promise((resolve, reject) => { |
| | | this.dialogResolve = resolve; |
| | |
| | | |
| | | // 弹框取消/关闭 |
| | | handleDialogCancel() { |
| | | console.log(111) |
| | | console.log(111); |
| | | this.dialogVisible = false; |
| | | // 调用 reject,终止后续代码 |
| | | this.dialogReject(); |
| | |
| | | // 数据采集 |
| | | async getDataAcquisitionDevice() { |
| | | //过滤选中的设备列表 |
| | | let deviceList = [] |
| | | for (let item in this.param){ |
| | | let val1 = this.param[item] |
| | | for(let item2 in val1){ |
| | | if(item2==='equipName'){ |
| | | let equipName = val1[item2] |
| | | equipName.forEach(item=>{ |
| | | if(item.v.v && Array.isArray(item.v.v)){ |
| | | deviceList.push(...item.v.v) |
| | | let deviceList = []; |
| | | for (let item in this.param) { |
| | | let val1 = this.param[item]; |
| | | for (let item2 in val1) { |
| | | if (item2 === "equipName") { |
| | | let equipName = val1[item2]; |
| | | equipName.forEach((item) => { |
| | | if (item.v.v && Array.isArray(item.v.v)) { |
| | | deviceList.push(...item.v.v); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | //数组去重 |
| | | let deviceSetList = [...new Set(deviceList)]; |
| | | try { |
| | | if (deviceSetList.includes("NS-YL3141") && !this.deviceDbTableName) { |
| | | await this.openDialog(); |
| | | } |
| | | let itemIds = []; |
| | | this.currentSample.insProduct.forEach((item) => { |
| | | if (item.inspectionItemType === "1") { |
| | | itemIds.push(item.id); |
| | | } |
| | | }); |
| | | const params = { |
| | | entrustCode: this.insOrder.entrustCode, |
| | | lotBatchNo: this.insOrder.lotBatchNo, |
| | | sampleCode: this.currentSample.sampleCode, |
| | | id: this.currentSample.id, |
| | | itemIds: itemIds, |
| | | dbTable: this.deviceDbTableName, |
| | | }; |
| | | this.dataAcquisitionLoading = true; |
| | | dataCollection(params) |
| | | .then((res) => { |
| | | this.dataAcquisitionLoading = false; |
| | | if (res.code != 200) { |
| | | return; |
| | | } |
| | | this.dataAcquisitionInfoNew = this.HaveJson(res.data); |
| | | // 对数采回来的值进行处理 |
| | | this.handleDataAcquisition(res.data); |
| | | }) |
| | | } |
| | | .catch((err) => { |
| | | this.dataAcquisitionLoading = false; |
| | | }); |
| | | } catch (error) { |
| | | console.error("数据采集设备列表处理失败", error); |
| | | } |
| | | } |
| | | //数组去重 |
| | | let deviceSetList = [...new Set(deviceList)] |
| | | try{ |
| | | if(deviceSetList.includes('NS-YL3141') && !this.deviceDbTableName){ |
| | | await this.openDialog(); |
| | | } |
| | | let itemIds = []; |
| | | this.currentSample.insProduct.forEach((item) => { |
| | | if (item.inspectionItemType === "1") { |
| | | itemIds.push(item.id); |
| | | } |
| | | }); |
| | | const params = { |
| | | entrustCode: this.insOrder.entrustCode, |
| | | lotBatchNo: this.insOrder.lotBatchNo, |
| | | sampleCode: this.currentSample.sampleCode, |
| | | id: this.currentSample.id, |
| | | itemIds: itemIds, |
| | | dbTable: this.deviceDbTableName, |
| | | }; |
| | | this.dataAcquisitionLoading = true; |
| | | dataCollection(params).then((res) => { |
| | | this.dataAcquisitionLoading = false; |
| | | if (res.code != 200) { |
| | | return; |
| | | } |
| | | this.dataAcquisitionInfoNew = this.HaveJson(res.data); |
| | | // 对数采回来的值进行处理 |
| | | this.handleDataAcquisition(res.data); |
| | | }).catch(err => { |
| | | this.dataAcquisitionLoading = false; |
| | | }); |
| | | }catch (error){ |
| | | console.error('数据采集设备列表处理失败',error) |
| | | } |
| | | }, |
| | | }, |
| | | objectOrder(obj) { |
| | | let newkey = Object.keys(obj).sort(); |
| | | let newObj = {}; |
| | |
| | | } else { |
| | | str0 = i + "," + j; |
| | | } |
| | | }; |
| | | } |
| | | let list = this.tableList[0].arr; |
| | | let maxNum = 0; |
| | | let itemNum = 0;//包含检验值批注的个数 |
| | | let itemNum = 0; //包含检验值批注的个数 |
| | | list.forEach((item, index) => { |
| | | let num0 = 0; |
| | | let str = ""; |
| | |
| | | ) { |
| | | num++; |
| | | const matchArray = n.v.ps.value.match(/\d+/g); |
| | | if(matchArray){ |
| | | if (matchArray) { |
| | | const no = Number(matchArray[0]); |
| | | itemNum = itemNum>= no ? itemNum : no; |
| | | itemNum = itemNum >= no ? itemNum : no; |
| | | } |
| | | } |
| | | }); |
| | | if (str0 == str) { |
| | | maxNum = num===itemNum ? num : itemNum; |
| | | maxNum = num === itemNum ? num : itemNum; |
| | | } |
| | | } |
| | | // 绑定设备 |
| | |
| | | id: id, |
| | | type: type, |
| | | laboratory: this.sonLaboratory, |
| | | cableTag: (cableTag ? cableTag : this.temCableTag), |
| | | cableTag: cableTag ? cableTag : this.temCableTag, |
| | | rawMaterialTag: this.rawMaterialTag, |
| | | repetitionTag: this.repetitionTag |
| | | repetitionTag: this.repetitionTag, |
| | | }); |
| | | this.tableLoading = false; |
| | | if (res.data.length > 0) { |
| | |
| | | let inspectionItemClass = |
| | | this.currentSample.insProduct[i].inspectionItemClass == |
| | | null || |
| | | this.currentSample.insProduct[i].inspectionItemClass == |
| | | this.currentSample.insProduct[i].inspectionItemClass == |
| | | undefined |
| | | ? "" |
| | | : this.currentSample.insProduct[i].inspectionItemClass; |
| | | inspectionItemClass = inspectionItemClass.replace(/[\n\r\s]*/g, ""); |
| | | inspectionItemClass = inspectionItemClass.replace( |
| | | /[\n\r\s]*/g, |
| | | "" |
| | | ); |
| | | let inspectionItem = |
| | | this.currentSample.insProduct[i].inspectionItem == null || |
| | | this.currentSample.insProduct[i].inspectionItem == undefined |
| | | this.currentSample.insProduct[i].inspectionItem == undefined |
| | | ? "" |
| | | : this.currentSample.insProduct[i].inspectionItem; |
| | | inspectionItem = inspectionItem.replace(/[\n\r\s]*/g, ""); |
| | | let inspectionItemSubclass = |
| | | this.currentSample.insProduct[i].inspectionItemSubclass == |
| | | null || |
| | | this.currentSample.insProduct[i].inspectionItemSubclass == |
| | | this.currentSample.insProduct[i].inspectionItemSubclass == |
| | | undefined |
| | | ? "" |
| | | : this.currentSample.insProduct[i].inspectionItemSubclass; |
| | |
| | | (this.currentSample.insProduct[i].templateId === |
| | | a.templateId && |
| | | inspectionItemClass + |
| | | inspectionItem + |
| | | inspectionItemSubclass + |
| | | unit === |
| | | str2) || |
| | | inspectionItem + |
| | | inspectionItemSubclass + |
| | | unit === |
| | | str2) || |
| | | (this.currentSample.insProduct[i].templateId === |
| | | a.templateId && |
| | | !unit2.includes("/") && |
| | | inspectionItemClass + |
| | | inspectionItem + |
| | | inspectionItemSubclass === |
| | | str) |
| | | inspectionItem + |
| | | inspectionItemSubclass === |
| | | str) |
| | | ) { |
| | | ids.push({ |
| | | r: b.r, |
| | |
| | | } |
| | | } else { |
| | | // 如果相等,那么说明找到了,并且把id存起来,后续检验项也会在页面中显示出来 |
| | | let aa = inspectionItemClass + |
| | | let aa = |
| | | inspectionItemClass + |
| | | inspectionItem + |
| | | inspectionItemSubclass; |
| | | if ( |
| | | this.currentSample.insProduct[i].templateId === |
| | | a.templateId && |
| | | a.templateId && |
| | | inspectionItemClass + |
| | | inspectionItem + |
| | | inspectionItemSubclass === |
| | | str |
| | | inspectionItem + |
| | | inspectionItemSubclass === |
| | | str |
| | | ) { |
| | | ids.push({ |
| | | r: b.r, |
| | |
| | | this.param[b.i].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})`; |
| | | b.v.f = `(${ |
| | | this.comparisonList.find((j) => j.value == finalList[i].c) |
| | | .label |
| | | }${finalList[i].r + 1})`; |
| | | } |
| | | }); |
| | | } |
| | |
| | | } |
| | | }); |
| | | // 以下是样式处理逻辑 |
| | | set = [...set] |
| | | set = [...set]; |
| | | // set = set.sort(); |
| | | set.forEach((b) => { |
| | | let arr = []; |
| | |
| | | ); |
| | | } |
| | | } |
| | | } catch (e) { } |
| | | } catch (e) {} |
| | | try { |
| | | // 检验值赋值 |
| | | let insValue = JSON.parse(a.insProductResult.insValue); |
| | |
| | | // this.param[a.id].insValue[i].u = insValue[i].u |
| | | } |
| | | } |
| | | } catch (e) { } |
| | | } catch (e) {} |
| | | try { |
| | | // 设备编号赋值 |
| | | let equipValue = JSON.parse(a.insProductResult.equipValue); |
| | |
| | | // 普通设备赋值 |
| | | this.param[a.id].equipValue[i].v.v = equipValue[i].v; |
| | | } |
| | | } catch (e) { } |
| | | } catch (e) {} |
| | | try { |
| | | // 设备名称赋值 |
| | | let equipName = JSON.parse(a.insProductResult.equipName); |
| | |
| | | ); |
| | | // 结论赋值 |
| | | this.param[a.id].insResult.v.v = a.insResult; |
| | | } catch (e) { } |
| | | } catch (e) {} |
| | | }); |
| | | // 对excel函数进行处理 |
| | | this.handleExcelMethod(); |
| | |
| | | let str = v.v |
| | | ? v.v |
| | | : v.v === 0 |
| | | ? v.v |
| | | : v.ct && v.ct.s |
| | | ? v.ct.s.length > 0 && |
| | | v.ct.s[0].v |
| | | .replace(new RegExp("\n", "g"), "<br/>") |
| | | .replace(new RegExp("@", "g"), "<br/>") |
| | | : ""; |
| | | ? v.v |
| | | : v.ct && v.ct.s |
| | | ? v.ct.s.length > 0 && |
| | | v.ct.s[0].v |
| | | .replace(new RegExp("\n", "g"), "<br/>") |
| | | .replace(new RegExp("@", "g"), "<br/>") |
| | | : ""; |
| | | // 对数据保留小数点进行处理 |
| | | if (v.ct && v.ct.fa && v.ct.fa.includes(".") && str) { |
| | | let num = 0; |
| | |
| | | getEquipOptions(e, id) { |
| | | if (e) { |
| | | this.equipOptions = []; |
| | | search({ status: 0 }).then((res) => { |
| | | if (res.code === 200 && res.data) { |
| | | this.equipOptions = res.data.map((m) => { |
| | | m.value = m.managementNumber; |
| | | m.label = m.deviceName; |
| | | return m; |
| | | }); |
| | | } |
| | | }) |
| | | search({ status: 0 }) |
| | | .then((res) => { |
| | | if (res.code === 200 && res.data) { |
| | | this.equipOptions = res.data.map((m) => { |
| | | m.value = m.managementNumber; |
| | | m.label = m.deviceName; |
| | | return m; |
| | | }); |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | }); |
| | |
| | | laboratory: this.sonLaboratory, |
| | | tell: null, |
| | | userId: this.checkUser, |
| | | }).then((res) => { |
| | | if (res.code === 200) { |
| | | this.$message.success("操作成功"); |
| | | this.goback(); |
| | | this.addCheck = false; |
| | | } |
| | | this.reviewLoading = false; |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | this.$message.success("操作成功"); |
| | | this.goback(); |
| | | this.addCheck = false; |
| | | } |
| | | this.reviewLoading = false; |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | this.reviewLoading = false; |
| | |
| | | type: 0, |
| | | laboratory: this.sonLaboratory, |
| | | tell: this.noReason, |
| | | }).then((res) => { |
| | | if (res.code === 200) { |
| | | this.$message.success("操作成功"); |
| | | this.goback(); |
| | | } |
| | | this.reviewLoading = false; |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | this.$message.success("操作成功"); |
| | | this.goback(); |
| | | } |
| | | this.reviewLoading = false; |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | this.reviewLoading = false; |
| | |
| | | openAddVerifyDia() { |
| | | this.addVerifyDia = true; |
| | | }, |
| | | confirmSubmit(registerInsResults){ |
| | | confirmSubmit(registerInsResults) { |
| | | submitPlan({ |
| | | orderId: this.orderId, |
| | | laboratory: this.sonLaboratory, |
| | | verifyUser: this.verifyUser, |
| | | entrustCode: this.insOrder.entrustCode, |
| | | registerInsResults: registerInsResults |
| | | }).then((res) => { |
| | | if (res.code === 200) { |
| | | this.$message.success("操作成功"); |
| | | this.goback(); |
| | | this.submitLoading = false; |
| | | this.addVerifyDia = false; |
| | | } |
| | | registerInsResults: registerInsResults, |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | this.$message.success("操作成功"); |
| | | this.goback(); |
| | | this.submitLoading = false; |
| | | this.addVerifyDia = false; |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | this.submitLoading = false; |
| | |
| | | this.$message.error("请指定复核人员"); |
| | | return; |
| | | } |
| | | if (!this.otherForm.humidity && this.insOrder.ifsOrderType!=='02wg') { |
| | | if (!this.otherForm.humidity && this.insOrder.ifsOrderType !== "02wg") { |
| | | this.$message.error("请输入湿度"); |
| | | return; |
| | | } |
| | | if (!this.otherForm.temperature && this.insOrder.ifsOrderType!=='02wg') { |
| | | if ( |
| | | !this.otherForm.temperature && |
| | | this.insOrder.ifsOrderType !== "02wg" |
| | | ) { |
| | | this.$message.error("请输入温度"); |
| | | return; |
| | | } |
| | | if (!this.insOrder.lotPartId && this.insOrder.ifsOrderType==='02wg') { |
| | | if (!this.insOrder.lotPartId && this.insOrder.ifsOrderType === "02wg") { |
| | | this.$message.error("请填写IFS库存物料批次属性"); |
| | | return; |
| | | } |
| | |
| | | checkSubmitPlan({ |
| | | orderId: this.orderId, |
| | | laboratory: this.sonLaboratory, |
| | | }).then((res) => { |
| | | if (res.code === 200) { |
| | | if (!res.data || res.data.errorMsg.length == 0) { |
| | | this.submitLoading = true; |
| | | //检验类型为原材料 |
| | | if(this.typeSource==1 && res.data.unInsOrderCount==0 && this.isSplit==1){ |
| | | const htmlStr = "是否登记IFS采购检验结果并移库?该操作会登记<span style='color:#ff4949'>同一零件同一订单的所有拆分批次</span>,请谨慎选择。" |
| | | this.$confirm(htmlStr, '提示', { |
| | | confirmButtonText: '是', |
| | | cancelButtonText: '否', |
| | | type: 'warning', |
| | | dangerouslyUseHTMLString: true |
| | | }).then(() => { |
| | | this.confirmSubmit(true) |
| | | }).catch(() => { |
| | | this.confirmSubmit(false) |
| | | }); |
| | | }else{ |
| | | this.confirmSubmit(true) |
| | | } |
| | | } else { |
| | | let newData = []; |
| | | const h = this.$createElement; |
| | | for (let i in res.data.errorMsg) { |
| | | const lastChar = res.data.errorMsg[i].slice(-1); |
| | | if (lastChar == "-") { |
| | | res.data.errorMsg[i] = res.data.errorMsg[i].slice(0, -1); |
| | | }) |
| | | .then((res) => { |
| | | if (res.code === 200) { |
| | | if (!res.data || res.data.errorMsg.length == 0) { |
| | | this.submitLoading = true; |
| | | //检验类型为原材料 |
| | | if ( |
| | | this.typeSource == 1 && |
| | | res.data.unInsOrderCount == 0 && |
| | | this.isSplit == 1 |
| | | ) { |
| | | const htmlStr = |
| | | "是否登记IFS采购检验结果并移库?该操作会登记<span style='color:#ff4949'>同一零件同一订单的所有拆分批次</span>,请谨慎选择。"; |
| | | this.$confirm(htmlStr, "提示", { |
| | | confirmButtonText: "是", |
| | | cancelButtonText: "否", |
| | | type: "warning", |
| | | dangerouslyUseHTMLString: true, |
| | | }) |
| | | .then(() => { |
| | | this.confirmSubmit(true); |
| | | }) |
| | | .catch(() => { |
| | | this.confirmSubmit(false); |
| | | }); |
| | | } else { |
| | | this.confirmSubmit(true); |
| | | } |
| | | } else { |
| | | let newData = []; |
| | | const h = this.$createElement; |
| | | for (let i in res.data.errorMsg) { |
| | | const lastChar = res.data.errorMsg[i].slice(-1); |
| | | if (lastChar == "-") { |
| | | res.data.errorMsg[i] = res.data.errorMsg[i].slice(0, -1); |
| | | } |
| | | newData.push( |
| | | h( |
| | | "p", |
| | | { style: "font-size: 14px;color: red;" }, |
| | | Number(i) + 1 + "、" + res.data.errorMsg[i] |
| | | ) |
| | | ); |
| | | } |
| | | newData.push( |
| | | h( |
| | | "p", |
| | | { style: "font-size: 14px;color: red;" }, |
| | | Number(i) + 1 + "、" + res.data.errorMsg[i] |
| | | { |
| | | style: |
| | | "font-size: 16px;color:#000;margin-top:12px;overflow-y: auto;max-height:80vh", |
| | | }, |
| | | "以上项目不合格,确定提交?" |
| | | ) |
| | | ); |
| | | } |
| | | newData.push( |
| | | h( |
| | | "p", |
| | | { |
| | | style: |
| | | "font-size: 16px;color:#000;margin-top:12px;overflow-y: auto;max-height:80vh", |
| | | }, |
| | | "以上项目不合格,确定提交?" |
| | | ) |
| | | ); |
| | | this.$confirm("提示", { |
| | | title: "提示", |
| | | message: h("div", null, newData), |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "", |
| | | }) |
| | | .then(() => { |
| | | this.submitLoading = true; |
| | | this.confirmSubmit(false) |
| | | this.$confirm("提示", { |
| | | title: "提示", |
| | | message: h("div", null, newData), |
| | | confirmButtonText: "确定", |
| | | cancelButtonText: "取消", |
| | | type: "", |
| | | }) |
| | | .catch(() => { }); |
| | | .then(() => { |
| | | this.submitLoading = true; |
| | | this.confirmSubmit(false); |
| | | }) |
| | | .catch(() => {}); |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | }) |
| | | .catch((error) => { |
| | | console.error(error); |
| | | this.submitLoading = false; |
| | |
| | | } else { |
| | | param = this.param; |
| | | } |
| | | let isNoTestValue = '' |
| | | let isNoTestValue = ""; |
| | | for (let key in param) { |
| | | if (param[key]) { |
| | | if (param[key].insValue?.length === 0) { |
| | | isNoTestValue = 1 |
| | | isNoTestValue = 1; |
| | | } else { |
| | | isNoTestValue = '' |
| | | isNoTestValue = ""; |
| | | } |
| | | } |
| | | } |
| | |
| | | sampleId: this.currentSample.id, |
| | | orderId: this.orderId, |
| | | sonLaboratory: this.sonLaboratory, |
| | | isNoTestValue: isNoTestValue |
| | | isNoTestValue: isNoTestValue, |
| | | }).then((res) => { |
| | | this.$message.success("已保存"); |
| | | }); |
| | |
| | | this.$refs.upload.clearFiles(); |
| | | }, |
| | | handleDown(row) { |
| | | downFile({ id: row.id }).then((res) => { |
| | | this.$download.saveAs(res.data.fileUrl, row.fileName) |
| | | }) |
| | | .catch((error) => { }); |
| | | downFile({ id: row.id }) |
| | | .then((res) => { |
| | | this.$download.saveAs(res.data.fileUrl, row.fileName); |
| | | }) |
| | | .catch((error) => {}); |
| | | }, |
| | | /** |
| | | * 将数值v保留ct.fa中'##'后的指定小数位数,并返回格式化后的字符串。 |
| | |
| | | } |
| | | }, |
| | | goback() { |
| | | this.$router.go(-1) |
| | | } |
| | | this.$router.go(-1); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | |
| | | height: 100%; |
| | | } |
| | | |
| | | .table_input>>>.el-input__inner { |
| | | .table_input >>> .el-input__inner { |
| | | border-color: rgba(0, 0, 0, 0.5) !important; |
| | | } |
| | | |
| | |
| | | opacity: 0.8; |
| | | } |
| | | |
| | | >>>input::-webkit-inner-spin-button { |
| | | >>> input::-webkit-inner-spin-button { |
| | | -webkit-appearance: none !important; |
| | | /* 隐藏微调按钮 */ |
| | | margin: 0 !important; |
| | | /* 移除微调按钮的边距 */ |
| | | } |
| | | |
| | | >>>input[type="number"] { |
| | | >>> input[type="number"] { |
| | | -moz-appearance: textfield !important; |
| | | /* 针对 Firefox */ |
| | | } |
| | | |
| | | >>>.el-form-item__content { |
| | | >>> .el-form-item__content { |
| | | display: inline-flex; |
| | | align-items: center; |
| | | } |
| | |
| | | /* 设置最大宽度 */ |
| | | } |
| | | |
| | | |
| | | .data-collection-items { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | } |
| | | .data-collection-items .el-select, |
| | | .data-collection-items .el-checkbox { |
| | | flex-basis: 20% ; |
| | | flex-basis: 20%; |
| | | box-sizing: border-box; |
| | | padding: 5px 2%; |
| | | } |