<style scoped>
|
.title {
|
height: 60px;
|
line-height: 60px;
|
}
|
|
.search {
|
background-color: #fff;
|
height: 80px;
|
display: flex;
|
align-items: center;
|
overflow: hidden;
|
}
|
|
.search_thing {
|
display: flex;
|
align-items: center;
|
height: 50px;
|
width: 230px;
|
}
|
|
.search_label {
|
width: 90px;
|
font-size: 14px;
|
text-align: right;
|
}
|
|
.search_input {
|
width: calc(100% - 90px);
|
}
|
|
.table {
|
margin-top: 10px;
|
background-color: #fff;
|
width: calc(100% - 40px);
|
height: calc(100% - 60px - 80px - 10px - 40px);
|
padding: 20px;
|
}
|
|
.tab {
|
list-style-type: none;
|
display: flex;
|
margin-bottom: 12px;
|
}
|
|
.tab li {
|
line-height: 24px;
|
padding: 6px 14px;
|
font-size: 14px;
|
color: #333333;
|
border: 1px solid #EEEEEE;
|
cursor: pointer;
|
}
|
|
.tab li:nth-child(1) {
|
border-radius: 8px 0 0 8px;
|
}
|
|
.tab li:nth-child(5) {
|
border-radius: 0 8px 8px 0;
|
}
|
|
.tab li.active {
|
border-color: #3A7BFA;
|
color: #3A7BFA;
|
}
|
|
.el-form-item {
|
margin-bottom: 16px;
|
}
|
.box-card >>>.el-radio__inner {
|
border-radius: 2px !important;
|
}
|
.box-card >>>.el-radio__input.is-checked .el-radio__inner::after {
|
content: '';
|
width: 8px;
|
height: 3px;
|
border: 1px solid white;
|
border-top: transparent;
|
border-right: transparent;
|
text-align: center;
|
display: block;
|
position: absolute;
|
top: 3px;
|
left: 2px;
|
transform: rotate(-45deg);
|
border-radius: 0px;
|
background: none;
|
}
|
>>>.el-radio__label{
|
color: #000 !important;
|
}
|
.el-dialog__body >>>.el-radio__label{
|
font-size: 8px;
|
}
|
.el-dialog__body >>>.el-radio__input.is-checked .el-radio__inner::after {
|
content: '';
|
width: 4px;
|
height: 3px;
|
border: 1px solid #000;
|
border-top: transparent;
|
border-right: transparent;
|
text-align: center;
|
display: block;
|
position: absolute;
|
top: 1px;
|
left: 2px;
|
transform: rotate(-45deg);
|
border-radius: 0px;
|
background: none;
|
}
|
>>>.el-radio__input.is-disabled.is-checked .el-radio__inner{
|
background: #3A7BFA;
|
}
|
.el-dialog__body >>>.el-radio__input.is-disabled.is-checked .el-radio__inner{
|
background: transparent;
|
}
|
.el-dialog__body >>>.el-radio__inner{
|
width: 8px !important;
|
height: 8px !important;
|
}
|
.el-dialog__body >>>.el-radio__label{
|
padding-left: 2px !important;
|
}
|
.el-dialog__body >>>.el-card__body{
|
padding: 0 !important;
|
}
|
.el-dialog__body >>>.el-card {
|
border: none;
|
}
|
.el-dialog__body >>>.el-radio__input.is-disabled .el-radio__inner{
|
border-color: #000 !important;
|
}
|
.el-dialog__body >>>.el-radio__input.is-disabled.is-checked .el-radio__inner{
|
border: none !important;
|
}
|
.scor{
|
width: 0.01cm;
|
height: 0.01cm;
|
border-radius: 1px;
|
border: 1px solid #000;
|
display: inline-block;
|
}
|
.ellipsis-multiline {
|
display: -webkit-box;
|
-webkit-line-clamp: 2;
|
-webkit-box-orient: vertical;
|
overflow: hidden;
|
text-overflow: ellipsis;
|
word-wrap: break-word;
|
max-height: 3.0em; /* 高度为字体大小的两倍 */
|
line-height: 1.5em; /* 行高 */
|
height: 3.0em; /* 高度为行高的两倍 */
|
}
|
.thermal-table{
|
min-width: calc(100% - 10px);
|
margin: 5px 5px 0;
|
table-layout: fixed;
|
}
|
.thermal-table td {
|
min-width: 70px;
|
text-align: center;
|
font-size: 14px;
|
word-wrap: break-word;
|
white-space: normal;
|
padding: 5px;
|
}
|
</style>
|
|
<template>
|
<div class="inspection_order">
|
<div style="width: 100%;height: 100%;" v-show="active == 0">
|
<div>
|
<el-row class="title">
|
<el-col :span="12" style="padding-left: 20px;text-align: left;">检验下单</el-col>
|
<el-col :span="12" style="text-align: right;">
|
<el-button size="medium" type="primary" @click="print">标签打印</el-button>
|
<el-button size="medium" type="primary" @click="playOrder(1)" v-if="addPower">下单</el-button>
|
</el-col>
|
</el-row>
|
</div>
|
<div class="search" :style="`height: ${more?150:80}px;`">
|
<el-row :gutter="10" style="width: 100%;">
|
<el-col :span="20" style="display: flex;flex-wrap: wrap;">
|
<div class="search_thing" style="width: 20%;">
|
<div class="search_label">委托编号:</div>
|
<div class="search_input"><el-input size="small" placeholder="请输入" clearable
|
v-model="componentData.entity.entrustCode" @keyup.enter.native="refreshTable()"></el-input></div>
|
</div>
|
<div class="search_thing" style="width: 20%;">
|
<div class="search_label">订单类型:</div>
|
<div class="search_input">
|
<el-select v-model="componentData.entity.formType" size="small" style="width: 100%;" @change="refreshTable()">
|
<el-option v-for="(a,ai) in formType" :key="ai" :label="a.label" :value="a.value"></el-option>
|
</el-select>
|
</div>
|
</div>
|
<div class="search_thing" style="width: 20%;">
|
<div class="search_label">样品名称:</div>
|
<div class="search_input"><el-input size="small" placeholder="请输入" clearable
|
v-model="componentData.entity.sampleName" @keyup.enter.native="refreshTable()"></el-input></div>
|
</div>
|
<div class="search_thing" style="width: 20%;">
|
<div class="search_label">样品型号:</div>
|
<div class="search_input"><el-input size="small" placeholder="请输入" clearable
|
v-model="componentData.entity.sampleModel" @keyup.enter.native="refreshTable()"></el-input></div>
|
</div>
|
<div class="search_thing" style="width: 20%;">
|
<div class="search_label">样品编号:</div>
|
<div class="search_input"><el-input size="small" placeholder="请输入" clearable
|
v-model="componentData.entity.sampleCode" @keyup.enter.native="refreshTable()"></el-input></div>
|
</div>
|
<div class="search_thing" style="width: 20%;" v-if="more">
|
<div class="search_label" style="width: 120px;">外部委托编号:</div>
|
<div class="search_input"><el-input size="small" placeholder="请输入" clearable
|
v-model="componentData.entity.outEntrustCode" @keyup.enter.native="refreshTable()"></el-input></div>
|
</div>
|
<div class="search_thing" style="width: 20%;" v-if="more">
|
<div class="search_label">下单时间:</div>
|
<div class="search_input">
|
<el-date-picker style="width:100%" v-model="componentData.entity.createTime"
|
type="date"
|
size="small"
|
format="yyyy-MM-dd"
|
value-format="yyyy-MM-dd HH:mm:ss"
|
clearable
|
placeholder="选择日期">
|
</el-date-picker>
|
</div>
|
</div>
|
<div class="search_thing" style="width: 20%;" v-if="more">
|
<div class="search_label">约定时间:</div>
|
<div class="search_input">
|
<el-date-picker style="width:100%" v-model="componentData.entity.appointed"
|
type="date"
|
size="small"
|
format="yyyy-MM-dd"
|
value-format="yyyy-MM-dd"
|
clearable
|
placeholder="选择日期">
|
</el-date-picker>
|
</div>
|
</div>
|
<div class="search_thing" style="width: 20%;" v-if="more">
|
<div class="search_label" style="width: 130px;">样机完成时间:</div>
|
<div class="search_input">
|
<el-date-picker style="width:100%" v-model="componentData.entity.issueTime"
|
type="date"
|
size="small"
|
format="yyyy-MM-dd"
|
value-format="yyyy-MM-dd"
|
clearable
|
placeholder="选择日期">
|
</el-date-picker>
|
</div>
|
</div>
|
<div class="search_thing" style="width: 20%;" v-if="more">
|
<div class="search_label">电机编号:</div>
|
<div class="search_input"><el-input size="small" placeholder="请输入" clearable
|
v-model="componentData.entity.motorNumber" @keyup.enter.native="refreshTable()"></el-input></div>
|
</div>
|
<div class="search_thing" style="width: 20%;" v-if="more">
|
<div class="search_label">下单人:</div>
|
<div class="search_input"><el-input size="small" placeholder="请输入" clearable
|
v-model="componentData.entity.name" @keyup.enter.native="refreshTable()"></el-input></div>
|
</div>
|
<div class="search_thing" style="width: 20%;" v-if="more">
|
<div class="search_label">工程名称:</div>
|
<div class="search_input"><el-input size="small" placeholder="请输入" clearable
|
v-model="componentData.entity.engineering" @keyup.enter.native="refreshTable()"></el-input></div>
|
</div>
|
<div class="search_thing" style="width: 20%;" v-if="more">
|
<div class="search_label">生产单位:</div>
|
<div class="search_input"><el-input size="small" placeholder="请输入" clearable
|
v-model="componentData.entity.production" @keyup.enter.native="refreshTable()"></el-input></div>
|
</div>
|
</el-col>
|
<el-col :span="4">
|
<div class="search_thing">
|
<el-button type="text" :icon="!more?'el-icon-arrow-down':'el-icon-arrow-up'" style="color: #3A7BFA;" @click="more=!more">{{!more?'更多':'收起'}}</el-button>
|
<el-button size="small" @click="refresh()">重 置</el-button>
|
<el-button size="small" type="primary" @click="refreshTable()">查 询</el-button>
|
</div>
|
</el-col>
|
</el-row>
|
</div>
|
<div class="table">
|
<ul class="tab">
|
<li v-for="(m,i) in tabList" :key="i+'afgh'" :class="{active:i==tabIndex}" @click="handleTab(m,i)">{{m.label}}</li>
|
</ul>
|
<ValueTable :style="getStyle()" ref="ValueTable"
|
:url="$api.insOrder.selectInsOrderParameter" :componentData="componentData"
|
:upIndex="upIndex" />
|
</div>
|
<!-- 审核 -->
|
<el-dialog title="下单审核" :visible.sync="verifyDialogVisible" width="30%" :before-close="handleClose">
|
<p style="font-size:16px;color:#333333" v-if="!isPass">委托编号<span
|
style="color:#34BD66">ZTMS2023071001</span>的信息是否通过</p>
|
<el-form :label-position="labelPosition" :model="formData" label-width="150px" ref="ruleForm" v-else>
|
<el-form-item label="请输入样品库位号:">
|
<el-input v-model="formData.specificationModel" size="small" style="width:60%"></el-input>
|
</el-form-item>
|
</el-form>
|
<span slot="footer" class="dialog-footer">
|
<el-row v-if="!isPass">
|
<el-button @click="handleClose">退 回</el-button>
|
<el-button type="primary" @click="submitForm" :loading="upLoad">通 过</el-button>
|
</el-row>
|
<el-row v-else>
|
<el-button @click="handleClose">返 回</el-button>
|
<el-button type="primary" @click="submitForm" :loading="upLoad">确 定</el-button>
|
</el-row>
|
</span>
|
</el-dialog>
|
<!-- 撤销 -->
|
<el-dialog title="下单撤销" :visible.sync="quashDialogVisible" width="30%" :before-close="handleClose">
|
<p style="font-size:16px;color:#333333" v-if="!isQuash">委托编号<span
|
style="color:#34BD66">{{this.insOrderRow.entrustCode}}</span>的信息是否撤销</p>
|
<el-form :label-position="labelPosition" :model="formData" label-width="150px" ref="ruleForm" v-else>
|
<el-form-item label="请输入撤销原因:">
|
<el-input v-model="formData.specificationModel" size="small" style="width:60%"></el-input>
|
</el-form-item>
|
</el-form>
|
<span slot="footer" class="dialog-footer">
|
<el-row v-if="!isQuash">
|
<el-button @click="handleClose">取 消</el-button>
|
<el-button type="primary" @click="submitForm" :loading="upLoad">确 定</el-button>
|
</el-row>
|
<el-row v-else>
|
<el-button @click="handleClose">返 回</el-button>
|
<el-button type="primary" @click="submitForm" :loading="upLoad">确 定</el-button>
|
</el-row>
|
</span>
|
</el-dialog>
|
<!-- 下发 -->
|
<el-dialog title="检验分配" :visible.sync="issuedDialogVisible" width="400px" :before-close="handleClose">
|
<div class="body" style="max-height: 60vh;" v-if="issuedDialogVisible">
|
<el-row>
|
<el-col class="search_thing" style="width: 95%;">
|
<div class="search_label"><span class="required-span">* </span>约定时间:</div>
|
<div class="search_input">
|
<el-date-picker size="small" v-model="distributeData.appointed" type="date" placeholder="选择日期"
|
value-format="yyyy-MM-dd" style="width: 100%;" format="yyyy-MM-dd">
|
</el-date-picker>
|
</div>
|
</el-col>
|
<el-col class="search_thing" style="width: 95%;">
|
<div class="search_label">指派人员:</div>
|
<div class="search_input">
|
<el-select v-model="distributeData.userId" placeholder="请选择" size="small" style="width: 100%;" clearable filterable @change="changeUser">
|
<el-option v-for="(item,i) in personList" :key="i+'gbnm.'" :label="item.label" :value="item.value">
|
</el-option>
|
</el-select>
|
</div>
|
</el-col>
|
<el-col class="search_thing" style="width: 95%;">
|
<div class="search_label"><span class="required-span" >* </span>试验室:</div>
|
<div class="search_input">
|
<el-select v-model="distributeData.sonLaboratory" placeholder="请选择" size="small" style="width: 100%;" clearable filterable>
|
<el-option v-for="(item,i) in sonLaboratoryList" :key="i+'oooo'" :label="item.label" :value="item.value">
|
</el-option>
|
</el-select>
|
</div>
|
</el-col>
|
</el-row>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-row>
|
<el-button @click="handleClose2">取 消</el-button>
|
<el-button type="primary" @click="submitForm2" :loading="upLoad">确 定</el-button>
|
</el-row>
|
</span>
|
</el-dialog>
|
<el-dialog title="数据查看" :visible.sync="dataDialogVisible" width="80%">
|
<div style="height: 70vh;overflow-y: auto;" v-if="dataDialogVisible">
|
<ValueTable ref="ValueTableDataLook" :rowKey="'insProductId'" :url="$api.insOrder.selectSampleAndProductByOrderId"
|
:componentData="componentDataDataLook"/>
|
</div>
|
</el-dialog>
|
<!-- 新-跟报告生成的一样 -->
|
<el-dialog
|
title="数据查看"
|
:visible.sync="lookDialogVisible"
|
width="60%"
|
:append-to-body="true"
|
:modal="!lookDialogVisible0"
|
>
|
<div style="max-height: 75vh;overflow-y: auto;">
|
<template v-for="(a,b) in sampleList">
|
<el-divider></el-divider>
|
<p style="margin: 10px 0;font-weight: 700;">样品:<el-tag size="small">{{a.insSample.sample}}</el-tag> 样品编号:{{a.insSample.sampleCode}}</p>
|
<el-card class="box-card" style="margin-top: 16px;" v-for="(item,index) in a.historyList" :key="index">
|
<div slot="header" style="display: flex;justify-content: space-between;">
|
<span>{{ item.laboratory }}</span>
|
</div>
|
<el-table
|
:data="item.insOrderUserList"
|
border
|
style="width: 100%">
|
<el-table-column
|
prop="submitTime"
|
label="提交日期"
|
min-width="150">
|
</el-table-column>
|
<el-table-column
|
prop="submitUserName"
|
label="提交人"
|
min-width="90">
|
</el-table-column>
|
<el-table-column
|
prop="term"
|
label="实验阶段"
|
min-width="120">
|
</el-table-column>
|
<el-table-column
|
prop="note"
|
label="实验操作"
|
min-width="120">
|
</el-table-column>
|
<el-table-column
|
prop="tell"
|
label="再次检验原因"
|
min-width="120">
|
</el-table-column>
|
<el-table-column
|
fixed="right"
|
label="操作"
|
min-width="100">
|
<template slot-scope="scope">
|
<el-button @click="lookDetail(item,scope.row.num,a.insSample)" type="text" size="small">查看</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
</el-card>
|
<p v-if="a.historyList.length==0" style="text-align: center;">暂无检验数据</p>
|
</template>
|
</div>
|
</el-dialog>
|
<el-dialog
|
title="检验详情"
|
:visible.sync="lookDialogVisible0"
|
width="100%" :fullscreen="true" :modal="false" :append-to-body="true">
|
<Inspection v-if="lookDialogVisible0"
|
:orderId="sampleId"
|
:orderId0="orderId0"
|
:userInfo="{}"
|
:inspectorList="currentItem.inspectorList"
|
:sonLaboratory="currentItem.laboratory"
|
:state="2"
|
:orderStateId="currentItem.orderStateId"
|
:version="currentItem.version"
|
:isLook="true"
|
:num1="currentItem.num1"
|
:noBack="true"/>
|
</el-dialog>
|
<el-dialog :title="deleteTilte" :visible.sync="deleteDialogVisible" width="80%">
|
<div style="height: 70vh;overflow-y: auto;" v-if="deleteDialogVisible">
|
<ValueTable ref="ValueTableDataDelete" :url="$api.insOrder.selectNoProducts+'?orderId='+orderId+'&ids='+this.revocationInsProductIds"
|
:componentData="componentDataDelete" :isColumnWidth="true"/>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-row>
|
<el-button @click="handleNo">{{deleteTilte=='撤销'?'取 消':'不通过'}}</el-button>
|
<el-button type="primary" @click="submitDelete" :loading="printLoading">{{deleteTilte=='撤销'?'确 定':'通 过'}}</el-button>
|
</el-row>
|
</span>
|
</el-dialog>
|
</div>
|
<div style="width: 100%;height: 100%;" v-if="active >0">
|
<Add :active="active" :currentId="currentId" v-if="active<4" :examine = "examine" />
|
</div>
|
<el-dialog title="标签打印" :visible.sync="printDialogVisible" width="38%" top="5vh">
|
<div style="width:100%;height: 400px;overflow-y: auto;" v-loading="loadPint">
|
<div class="dia_body">
|
<el-checkbox
|
style="margin: 10px 5px;text-align: left;"
|
:indeterminate="isIndeterminate"
|
v-model="checkAll"
|
@change="handleCheckAllChange">全选</el-checkbox>
|
<el-checkbox-group @change="changePrintCode()" v-model="checkIndexList" style="text-align: left;">
|
<el-card class="box-card" v-for="(item, i) in qrData" :key="i+'wwwww'" style="margin-bottom: 15px; font-size: 16px !important;">
|
<el-checkbox :label="i" :key="i" style="position: relative;top:-10px;left:5px"><br></el-checkbox>
|
<div>
|
<p style="text-align: center;font-size: 26px;font-weight: 700;">{{ item.sample }}({{item.model}})</p>
|
<p style="text-align: center;font-size: 16px;">{{ item.sampleCode }}</p>
|
<el-divider></el-divider>
|
<el-row style="font-size: 16px;">
|
<el-col :span="16" style="text-align: left;line-height: 28px;">
|
<p><span> 委托单号: </span>{{ item.code }}</p>
|
<p><span> 电机编号: </span>{{ item.motorNumber }}</p>
|
<p><span> 样机完成时间: </span>{{ item.issueTime }}</p>
|
<p><span> 样机员: </span>{{ item.issueName }}</p>
|
<p class="ellipsis-multiline"><span> 检测项目: </span>{{ item.item }}</p>
|
</el-col>
|
<el-col :span="8" style="text-align: left;">
|
<vueQr
|
:text="item.str"
|
:size="140"
|
:margin="2"
|
></vueQr>
|
</el-col>
|
</el-row>
|
<!-- <div>
|
<div>
|
<el-row style="font-size: 16px;">
|
<el-col :span="16" style="text-align: left;"><span> 样品编号: </span>{{ item.sampleCode }}</el-col>
|
<el-col :span="8" style="text-align: left;"><span> 规格型号: </span>{{ item.model }}</el-col>
|
</el-row>
|
<el-row style="margin-top: 1px;font-size: 16px;">
|
<el-col :span="16" style="text-align: left;"><span> 委托单号: </span>{{ item.code }}</el-col>
|
<el-col :span="8" style="text-align: left;"><span> 电机编号: </span>{{ item.motorNumber }}</el-col>
|
</el-row>
|
<el-row style="margin-top: 1px;font-size: 16px;">
|
<el-col :span="16" style="text-align: left;"><span> 样机完成时间: </span>{{ item.issueTime }}</el-col>
|
<el-col :span="8" style="text-align: left;"><span> 样机员: </span>{{ item.issueName }}</el-col>
|
</el-row>
|
<el-row style="margin-top: 1px;font-size: 16px;" class="ellipsis-multiline">
|
<el-col style="text-align: left;"><span> 检测项目: </span>{{ item.item }}</el-col>
|
</el-row>
|
</div>
|
</div> -->
|
</div>
|
</el-card>
|
</el-checkbox-group>
|
</div>
|
</div>
|
<span slot="footer" class="dialog-footer">
|
<el-row>
|
<el-button @click="printDialogVisible=false">取 消</el-button>
|
<el-button type="primary" @click="submitPrint" :loading="printLoading">打 印</el-button>
|
</el-row>
|
</span>
|
</el-dialog>
|
<div class="el-dialog__body" style="overflow-y: auto;position: fixed;top:60px;right: 20px;z-index: 9999;display: none;">
|
<div id="printMOrder" class="printMOrder" ref="printMOrder">
|
<el-card class="box-card" v-for="(item, i) in checkDataList" :key="i+'uuuuu'" style="font-size: 16px !important;page-break-after: always;color: #000;box-shadow: none;margin: 0 !important;padding: 0 !important;">
|
<div>
|
<p style="text-align: center;font-size: 26px;font-weight: 700;margin-top: 20px;">{{ item.sample }}({{item.model}})</p>
|
<p style="text-align: center;font-size: 16px;">{{ item.sampleCode }}</p>
|
<!-- <el-divider></el-divider> -->
|
<p style="width: 100%;height:1px;background-color: #333333;margin: 6px 0;"></p>
|
<el-row style="font-size: 16px;">
|
<el-col :span="16" style="text-align: left;line-height: 28px;">
|
<p><span> 委托单号: </span>{{ item.code }}</p>
|
<p><span> 电机编号: </span>{{ item.motorNumber }}</p>
|
<p><span> 样机完成时间: </span>{{ item.issueTime }}</p>
|
<p><span> 样机员: </span>{{ item.issueName }}</p>
|
<p class="ellipsis-multiline"><span> 检测项目: </span>{{ item.item }}</p>
|
</el-col>
|
<el-col :span="8" style="text-align: left;">
|
<vueQr
|
:text="item.str"
|
:size="140"
|
:margin="2"
|
></vueQr>
|
</el-col>
|
</el-row>
|
</div>
|
</el-card>
|
</div>
|
</div>
|
<el-dialog title="样机编号" :visible.sync="BZDialogVisible" width="60%">
|
<div class="body" style="max-height: 60vh;" v-if="BZDialogVisible">
|
</div>
|
<table border="1" class="thermal-table" cellpadding="10">
|
<tr>
|
<td>委托单号</td>
|
<td>样品</td>
|
<td>样品编号</td>
|
<td>样品型号</td>
|
<td>电机编号</td>
|
</tr>
|
<template v-for="(item,index) in BZinfo">
|
<tr v-for="(m,i) in item.arr" :key="i">
|
<td :rowspan="item.arr.length" v-if="i==0">{{item.name}}</td>
|
<td>{{ m.sample }}</td>
|
<td>{{ m.sampleCode }}</td>
|
<td>{{ m.model }}</td>
|
<td>
|
<el-input v-model="m.motorNumber" size="small"></el-input>
|
</td>
|
</tr>
|
</template>
|
</table>
|
<span slot="footer" class="dialog-footer">
|
<el-row>
|
<el-button @click="BZDialogVisible=false">取 消</el-button>
|
<el-button type="primary" @click="submitForm3" :loading="upLoad">确 定</el-button>
|
</el-row>
|
</span>
|
</el-dialog>
|
<el-dialog title="报告下载" :visible.sync="downVisible" width="440px">
|
<p v-for="(item,index) in downList" :key="index" style="text-align: left;">样品编号:{{item.codeUrl}} <el-button type="text" icon="el-icon-download" @click="handleDown(item)">报告下载</el-button></p>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script>
|
import ValueTable from '../tool/value-table.vue'
|
import Add from '../do/b1-ins-order/add.vue'
|
import Inspection from '../do/b1-inspect-order-plan/Inspection.vue'
|
import vueQr from 'vue-qr'
|
import PrintJS from 'print-js'
|
export default {
|
components: {
|
ValueTable,
|
Inspection,
|
Add,
|
vueQr
|
},
|
props:{
|
param: {
|
type: Object,
|
default: () => {}
|
}
|
},
|
data() {
|
return {
|
deleteTilte:'撤销',
|
examine: null,
|
deleteList:[],
|
loadPint:false,
|
checkAll: false,
|
isIndeterminate: true,
|
printLoading:false,
|
printDialogVisible:false,
|
//是否审核通过 true是 false不是
|
isPass: false,
|
//是否审核撤销 true是 false不是
|
isQuash: false,
|
verifyDialogVisible: false,
|
quashDialogVisible: false,
|
issuedDialogVisible: false,
|
dataDialogVisible: false,
|
formData: {},
|
formData0: {},
|
formData1: {},
|
distributeData: {
|
orderId: '',
|
sampleId: '',
|
appointed: '',
|
userId: '',
|
sonLaboratory:''
|
},
|
// 人员列表
|
personList: [],
|
componentData: {
|
entity: {
|
entrustCode: null,
|
sample: null,
|
sampleName: null,
|
sampleModel: null,
|
sampleCode: null,
|
outEntrustCode: null,
|
state: 0,
|
name:null,
|
engineering:null,
|
production:null,
|
appointed:null,
|
issueTime:null,
|
motorNumber:null,
|
formType:null,
|
// orderBy: {
|
// field: '',
|
// order: ''
|
// }
|
},
|
init:false,
|
isIndex: true,
|
showSelect: true,
|
select: true,
|
selectMethod:'selectMethod',
|
do: [{
|
id: 'dataLook',
|
font: '数据查看',
|
type: 'text',
|
method: 'handleDataLook',
|
disabFun: (row, index) => {
|
return row.state != 1 && row.state != 4
|
}
|
}, {
|
id: 'download',
|
font: '报告下载',
|
type: 'text',
|
method: 'download',
|
disabFun: (row, index) => {
|
return !row.reportDtos||row.reportDtos.length==0
|
}
|
}, {
|
id: 'verify',
|
font: '审核',
|
type: 'text',
|
method: 'handleVerify',
|
disabFun: (row, index) => {
|
let state0 = false
|
if(this.currentRole=='检测中心主任'){
|
if(row.checkState1||row.checkState1User){
|
state0 = true
|
}
|
}else if(this.currentRole=='研发部经理'){
|
if(row.checkState2||row.checkState2User){
|
state0 = true
|
}
|
}else if(this.currentRole=='技术负责人'){
|
if(row.checkState3||row.checkState3User){
|
state0 = true
|
}
|
}
|
return row.state != 0 || state0 ||(this.currentRole!='检测中心主任'&&this.currentRole!='研发部经理'&&this.currentRole!='技术负责人')
|
}
|
}, {
|
id: 'quash',
|
font: '撤销',
|
type: 'text',
|
method: 'handlEquash',
|
disabFun: (row, index) => {
|
return row.state != 1 && row.state != 0
|
}
|
},
|
{
|
id: 'quashCheck',
|
font: '撤销审核',
|
type: 'text',
|
method: 'handlEquashCheck',
|
disabFun: (row, index) => {
|
return (row.state != 1 && row.state != 0)||(this.tabIndex!=1)||row.isRevocation!=1
|
}
|
},
|
// {
|
// font: '分配',
|
// type: 'text',
|
// method: 'handleIssued',
|
// disabFun: (row, index) => {
|
// // return row.state != 1 || !!row.assign
|
// return row.appointed || row.state != 1
|
// }
|
// }
|
],
|
linkEvent: {
|
sampleName: {
|
method: 'selectAllByOne'
|
}
|
},
|
tagField: {
|
type: {
|
select: [{
|
value: 0,
|
type: 'success',
|
label: '普通'
|
}, {
|
value: 1,
|
type: 'warning',
|
label: '优先'
|
}, {
|
value: 2,
|
type: 'danger',
|
label: '紧急'
|
}]
|
},
|
createUser: {
|
select: []
|
},
|
orderType: {
|
select: []
|
},
|
processing: {
|
select: [{
|
value: 1,
|
label: '实验室处理'
|
},{
|
value: 0,
|
label: '委托单位取回'
|
}]
|
},
|
isLeave: {
|
select: [{
|
value: 1,
|
label: '留样'
|
},{
|
value: 0,
|
label: '不留样'
|
}]
|
},
|
send: {
|
select: [{
|
value: 1,
|
label: '自取'
|
},{
|
value: 0,
|
label: '其他'
|
}]
|
}
|
},
|
selectField: {},
|
requiredAdd: [],
|
requiredUp: [],
|
needSort: ['createTime', 'sendTime', 'type', 'appointed']
|
},
|
orderId:'',
|
revocationInsProductIds:'',
|
componentDataDataLook: {
|
entity: {
|
id: 0,
|
orderBy: {
|
field: 'sampleCode',
|
order: 'asc'
|
}
|
},
|
isIndex: false,
|
showSelect: false,
|
select: false,
|
do: [],
|
tagField: {
|
insState: {
|
select: []
|
},
|
insResult: {
|
select: [{
|
value: 1,
|
label: '合格',
|
type: 'success'
|
},{
|
value: 0,
|
label: '不合格',
|
type: 'danger'
|
},{
|
value: 3,
|
label: '不判定',
|
type: ''
|
}]
|
}
|
},
|
selectField: {},
|
spanConfig:{
|
rows:[
|
{
|
name:'sampleCode',
|
index:0
|
},
|
{
|
name:'sample',
|
index:1
|
},
|
{
|
name:'model',
|
index:5
|
}
|
]
|
},
|
requiredAdd: [],
|
requiredUp: []
|
},
|
componentDataDelete: {
|
entity: {
|
// orderId: '',
|
// orderBy: {
|
// field: 'sampleCode',
|
// order: 'asc'
|
// }
|
},
|
isPage:false,
|
isIndex: false,
|
showSelect: true,
|
select: true,
|
selectMethod: 'selectDelete',
|
do: [],
|
tagField: {
|
insState: {
|
select: []
|
},
|
insResult: {
|
select: [{
|
value: 1,
|
label: '合格',
|
type: 'success'
|
},{
|
value: 0,
|
label: '不合格',
|
type: 'danger'
|
}]
|
}
|
},
|
selectField: {},
|
spanConfig:{},
|
requiredAdd: [],
|
requiredUp: []
|
},
|
deleteDialogVisible:false,
|
entityCopy: {},
|
upIndex: 0,
|
addPower: true,
|
upLoad: false,
|
tabList: [{
|
label: '待审核',
|
value: 0
|
}, {
|
label: '待检验',
|
value: 1
|
},
|
{
|
label: '已检验',
|
value: 4
|
},
|
{
|
label: '退回',
|
value: 2
|
},
|
{
|
label: '撤销',
|
value: 3
|
},
|
],
|
tabIndex: 0,
|
active: 0, //1:下单,2:查看,3:审核,4:光纤配置,默认为0
|
currentId: null,
|
more:false,
|
insOrderRow:{},
|
checkIndexList:[],
|
checkDataList:[],
|
qrData:[],
|
multipleSelection:[],
|
sonLaboratoryList:[],
|
currentRole:'',
|
BZinfo:[],
|
BZDialogVisible:false,
|
downVisible:false,
|
downList:[],
|
formType:[],
|
currentInfo:{},
|
sampleList:[],
|
lookDialogVisible:false,
|
lookDialogVisible0:false,
|
sampleId:null,
|
orderId0:null,
|
currentItem:{},
|
}
|
},
|
watch:{
|
printDialogVisible(newVal){
|
if(!newVal){
|
this.qrData = []
|
this.checkIndexList = []
|
this.checkDataList = []
|
this.isIndeterminate = true;
|
}
|
},
|
param(val){
|
if(val&&val.text){
|
this.componentData.entity.entrustCode = this.param.text
|
this.componentData.entity.state = 1;
|
this.tabIndex = 1;
|
this.refreshTable()
|
}
|
}
|
},
|
created() {
|
this.getAuthorizedPersonRole()
|
},
|
mounted() {
|
this.entityCopy = this.HaveJson(this.componentData.entity)
|
if(this.param&&this.param.text){
|
this.componentData.entity.entrustCode = this.param.text
|
this.componentData.entity.state = 1;
|
this.tabIndex = 1;
|
this.refreshTable()
|
}else{
|
this.refreshTable()
|
}
|
this.getPower()
|
this.getUserMenu()
|
this.getAuthorizedPerson()
|
this.getInsStateDicts()
|
this.selectEnumByCategoryForOrderType()
|
this.selectEnumByCategoryForSampleForm()
|
},
|
methods: {
|
selectMethod(val){
|
this.multipleSelection = val
|
},
|
async searchPrint(selection){
|
let res = await this.$axios.post(this.$api.insOrder.checkNumber,{
|
ids:selection.map(m=>m.id).join(',')
|
})
|
if(res.data){
|
let arr = []
|
for(let i in res.data){
|
let obj = {
|
name:i,
|
arr:res.data[i],
|
motorNumber:null,
|
}
|
arr.push(obj)
|
}
|
this.BZinfo = arr
|
this.BZDialogVisible = true
|
return true
|
}else{
|
return false
|
}
|
},
|
submitForm3(){
|
let arr = []
|
let num = 0;
|
this.BZinfo.forEach(m=>{
|
arr = arr.concat(m.arr)
|
})
|
arr.forEach(m=>{
|
if(!m.motorNumber){
|
num++
|
}
|
})
|
if(num>0){
|
return this.$message.warning("请输入电机编号")
|
}
|
this.upLoad = true
|
this.$axios.post(this.$api.insOrder.addNumber,{
|
insSamples:arr.map(m=>{
|
return {
|
id:m.id,
|
motorNumber:m.motorNumber
|
}
|
})
|
},{
|
header: {
|
'Content-Type': 'application/json;charset=UTF-8',
|
},
|
noQs:true
|
}).then(res => {
|
this.upLoad = false;
|
if(res.code == 200){
|
this.BZDialogVisible = false
|
this.getLabelPrinting(this.multipleSelection)
|
this.printDialogVisible = true
|
this.refreshTable()
|
}
|
})
|
},
|
getLabelPrinting(selection){
|
this.loadPint = true;
|
this.$axios.post(this.$api.insOrder.labelPrinting,{
|
ids:selection.map(m=>m.id).join(',')
|
}).then(res => {
|
let arr = res.data;
|
arr.forEach(a=>{
|
this.loadPint = false;
|
let arr1 = []
|
a.insProduct.forEach(b=>{
|
arr1.push(b.inspectionItemSubclass)
|
})
|
a.item = [...new Set(arr1)].join(',')
|
})
|
this.qrData = arr.map(m=>{
|
m.str = JSON.stringify({
|
sampleCode:m.sampleCode,
|
entrustCode:m.code
|
})
|
return m
|
})
|
// console.log(this.qrData)
|
})
|
},
|
//选择要打印的二维码
|
changePrintCode(){
|
let indexList = this.checkIndexList
|
let arr = []
|
indexList.forEach(i=>{
|
arr.push(this.qrData[i])
|
})
|
this.checkDataList = arr
|
},
|
//全选
|
handleCheckAllChange(val) {
|
if(val){
|
for(var i=0;i<this.qrData.length;i++){
|
this.checkIndexList.push(i)
|
}
|
this.checkDataList = this.qrData
|
}else{
|
this.checkIndexList = []
|
this.checkDataList = []
|
}
|
this.isIndeterminate = false;
|
},
|
submitPrint(){
|
if(this.checkDataList.length < 1){
|
this.$message.warning("请选择要打印的二维码")
|
return
|
}
|
PrintJS({
|
targetStyles: ["*"], // 使用dom的所有样式,很重要
|
printable: 'printMOrder',//页面
|
type: "html",//文档类型
|
documentTitle: "二维码",
|
style:
|
`@page {
|
margin: 0;
|
size: landscape;
|
}
|
body{
|
zoom:100%;
|
padding:30px 0;
|
margin:0;
|
}`,
|
});
|
},
|
async print(){
|
if(this.multipleSelection.length==0){
|
this.$message.warning('请选择一条数据')
|
return
|
}
|
let selection = this.multipleSelection
|
let isAdd = await this.searchPrint(selection)
|
if(!isAdd){
|
this.getLabelPrinting(selection)
|
this.printDialogVisible = true
|
}
|
},
|
getAuthorizedPerson() {
|
this.$axios.get(this.$api.user.getUserMenu).then(res => {
|
let data = []
|
res.data.forEach(a => {
|
data.push({
|
label: a.name,
|
value: a.id
|
})
|
})
|
this.personList = data
|
})
|
},
|
getAuthorizedPersonRole() {
|
this.$axios.get(this.$api.role.getRole).then(res => {
|
this.currentRole = res.message
|
})
|
},
|
refreshTable(e) {
|
this.$refs['ValueTable'].selectList(e)
|
},
|
refresh() {
|
let state = this.componentData.entity.state
|
this.componentData.entity = this.HaveJson(this.entityCopy)
|
this.componentData.entity.state = state
|
this.refreshTable()
|
this.upIndex++
|
},
|
// 权限分配
|
getPower(radio) {
|
let power = JSON.parse(sessionStorage.getItem('power'))
|
let up = false
|
let del = false
|
let add = false
|
let revoke = false
|
let check = false
|
let checkUpdate = false
|
for (var i = 0; i < power.length; i++) {
|
if (power[i].menuMethod == 'upInsOrder') {
|
up = true
|
}
|
if (power[i].menuMethod == 'addInsOrder') {
|
add = true
|
}
|
if (power[i].menuMethod == 'updateStatus') {
|
revoke = true
|
}
|
if (power[i].menuMethod == 'upInsOrderOfState2') {
|
check = true
|
}
|
if (power[i].menuMethod == 'checkUpdate') {
|
checkUpdate = true
|
}
|
}
|
if (!up) {
|
this.componentData.do.splice(5, 1)
|
}
|
if (!checkUpdate) {
|
this.componentData.do.splice(4, 1)
|
}
|
if (!revoke) {
|
this.componentData.do.splice(3, 1)
|
}
|
if (!check) {
|
this.componentData.do.splice(2, 1)
|
}
|
this.addPower = add
|
},
|
handleClose() {
|
this.verifyDialogVisible = false;
|
this.quashDialogVisible = false;
|
this.issuedDialogVisible = false;
|
this.dataDialogVisible = false;
|
this.upLoad = false;
|
},
|
handleClose2() {
|
this.verifyDialogVisible = false;
|
this.quashDialogVisible = false;
|
this.issuedDialogVisible = false;
|
this.dataDialogVisible = false;
|
this.upLoad = false;
|
},
|
// 详情
|
selectAllByOne(row) {
|
this.active = 2;
|
// console.log(row);
|
// //打开弹框
|
// this.dialogVisible = true;
|
// //row = 点击对应行值
|
// //复制给formData
|
// this.formData = this.HaveJson(row);
|
this.currentId = row.id
|
this.examine = 1
|
},
|
// 数据查看
|
handleDataLook(row) {
|
// this.componentDataDataLook.entity.id = row.id
|
// this.dataDialogVisible = true;
|
|
this.currentInfo = row
|
this.$axios.get(this.$api.insReport.getInsOrderStateCount+'?id='+row.id).then(res => {
|
this.sampleList = res.data
|
this.sampleList.forEach(a=>{
|
a.historyList = a.insOrderStates
|
a.historyList.forEach(item => {
|
item.arr = []
|
this.$set(item,'numValue',1)
|
if(item.num>0){
|
for(var i=0;i<item.num;i++){
|
item.arr.push({
|
label:'记录'+(i+1),
|
value:i+1
|
})
|
}
|
}
|
})
|
})
|
this.lookDialogVisible = true
|
})
|
},
|
// 查看检验详情
|
lookDetail(row,value,insSample){
|
this.lookDialogVisible0 = true
|
let inspectorList = []
|
if(row.userName){
|
inspectorList = row.userName.split(',')
|
}
|
this.sampleId = insSample.id
|
this.orderId0 = insSample.insOrderId
|
this.currentItem = {
|
num1:value,
|
inspectorList:inspectorList,
|
...row
|
}
|
},
|
// 下载报告
|
download(row) {
|
this.downList = row.reportDtos
|
this.downVisible = true;
|
},
|
handleDown(row){
|
let url = row.urlS?row.urlS:row.url;
|
if(url){
|
url = url.split('.')[0]+'.pdf'
|
const link = document.createElement('a');
|
link.href = this.javaApi + url;
|
link.target = '_blank';
|
document.body.appendChild(link);
|
link.click();
|
}
|
},
|
// 审核
|
handleVerify(row) {
|
// this.verifyDialogVisible = true;
|
this.active = 3;
|
this.currentId = row.id
|
this.examine = 1
|
},
|
// 撤销
|
handlEquash(row) {
|
if(this.tabIndex!=1){
|
this.quashDialogVisible = true;
|
this.insOrderRow=row
|
}else{
|
// this.componentDataDelete.entity.orderId = row.id
|
this.orderId = row.id
|
this.revocationInsProductIds = ''
|
this.componentDataDelete.showSelect= true
|
this.componentDataDelete.select= true
|
this.deleteTilte = '撤销'
|
this.deleteDialogVisible = true;
|
}
|
},
|
selectDelete(arr){
|
this.deleteList = arr;
|
},
|
submitDelete(){
|
if(this.deleteTilte=='撤销'){
|
if(this.deleteList.length==0){
|
this.$message.error('请选择要撤销的项')
|
return
|
}
|
let ids = this.deleteList.map(m=>m.id).join(',')
|
this.printLoading = true;
|
this.axios.put(this.$api.insOrder.updateInspected+"?ids="+ids+'&orderId='+this.orderId).then(res=>{
|
if (res.code===200){
|
this.printLoading=false
|
this.deleteDialogVisible=false
|
this.refreshTable('page')
|
this.$message.success("更新成功")
|
}
|
})
|
}else{
|
this.axios.post(this.$api.insOrder.checkUpdate+'?orderId='+this.orderId+'&state='+1).then(res=>{
|
if (res.code===200){
|
this.printLoading=false
|
this.deleteDialogVisible=false
|
this.refreshTable('page')
|
this.$message.success("更新成功")
|
}
|
})
|
}
|
},
|
handlEquashCheck(row){
|
// this.componentDataDelete.entity.orderId = row.id
|
this.orderId = row.id
|
this.revocationInsProductIds = row.revocationInsProductIds
|
this.componentDataDelete.showSelect= false
|
this.componentDataDelete.select= false
|
this.deleteTilte = '撤销审核'
|
this.deleteDialogVisible = true;
|
},
|
handleNo(){
|
if(this.deleteTilte=='撤销'){
|
this.deleteDialogVisible=false
|
}else{
|
this.axios.post(this.$api.insOrder.checkUpdate+'?orderId='+this.orderId+'&state='+0).then(res=>{
|
if (res.code===200){
|
this.printLoading=false
|
this.deleteDialogVisible=false
|
this.refreshTable('page')
|
this.$message.success("更新成功")
|
}
|
})
|
}
|
},
|
// 下发
|
handleIssued(row) {
|
this.issuedDialogVisible = true;
|
this.$axios.post(this.$api.insOrder.selectOrderManDay, {
|
id: row.id
|
}).then(res => {
|
this.distributeData.orderId = row.id
|
this.distributeData.sampleId = row.sampleId
|
this.distributeData.appointed = res.data
|
this.distributeData.type = row.type
|
})
|
this.$axios.post(this.$api.insOrderPlan.upPlanUser2, {
|
orderId:row.id,
|
}).then(res => {
|
if (res.code === 200&&res.data.length>0) {
|
this.sonLaboratoryList = [];
|
res.data.forEach(m=>{
|
this.sonLaboratoryList.push({
|
value:m,
|
label:m
|
})
|
})
|
}
|
})
|
},
|
submitForm2() {
|
if (this.distributeData.appointed == null || this.distributeData.appointed == '') {
|
this.$message.error('约定时间未填写')
|
return
|
}
|
if(this.distributeData.sonLaboratory==null||this.distributeData.sonLaboratory==''){
|
this.$message.error('试验室未填写')
|
return
|
}
|
this.upLoad = true;
|
this.$axios.post(this.$api.insOrder.upInsOrder, {
|
orderId: this.distributeData.orderId,
|
sampleId: this.distributeData.sampleId,
|
appointed: this.distributeData.appointed,
|
userId: this.distributeData.userId,
|
sonLaboratory:this.distributeData.sonLaboratory,
|
}).then(res => {
|
if (res.code === 201) {
|
this.upLoad = false
|
return
|
}
|
this.$message.success('修改成功')
|
this.upLoad = false
|
this.issuedDialogVisible = false
|
this.refreshTable('page')
|
}).catch(e => {
|
this.$message.error('修改失败')
|
this.upLoad = false
|
})
|
},
|
submitForm() {
|
this.upLoad = true;
|
if (this.tabIndex==1){
|
this.axios.put(this.$api.insOrder.updateInspected+"?id="+this.insOrderRow.id).then(res=>{
|
if (res.code===200){
|
this.upLoad=false
|
this.quashDialogVisible=false
|
this.refreshTable('page')
|
this.$message.success("更新成功")
|
}
|
})
|
}else{
|
this.axios.put(this.$api.insOrder.updateStatus+"?id="+this.insOrderRow.id).then(res=>{
|
if (res.code===200){
|
this.upLoad = false
|
this.quashDialogVisible = false
|
this.refreshTable('page')
|
this.$message.success("更新成功")
|
}
|
})
|
}
|
let authorizedPerson = this.formData.authorizedPerson.length > 0 ? this.formData.authorizedPerson.join(',') : ''
|
delete this.formData.createTime
|
delete this.formData.updateTime
|
delete this.formData.createUser
|
delete this.formData.updateUser
|
this.formData.authorizedPerson = authorizedPerson
|
},
|
// 下单
|
playOrder(num) {
|
this.active = num
|
this.examine = 0
|
this.getAuthorizedPersonRole()
|
this.refreshTable('page')
|
},
|
handleTab(m, i) {
|
this.tabIndex = i;
|
this.componentData.entity.state = m.value
|
this.refreshTable('page')
|
this.upIndex++
|
},
|
selectEnumByCategoryForSampleForm() {
|
this.$axios.post(this.$api.enums.selectEnumByCategory, {
|
category: "订单类型"
|
}).then(res => {
|
this.formType = res.data
|
})
|
},
|
getUserMenu() {
|
this.$axios.get(this.$api.user.getUserMenu).then(res => {
|
let data = []
|
res.data.forEach(a => {
|
data.push({
|
label: a.name,
|
value: a.id
|
})
|
})
|
this.componentData.tagField.createUser.select = data
|
})
|
},
|
getInsStateDicts() {
|
this.$axios.post(this.$api.enums.selectEnumByCategory, {
|
category: "检验任务状态"
|
}).then(res => {
|
let data = res.data
|
this.insStateList = data
|
data.forEach(ele => {
|
//0:待检验 1:检验中 2:已检验 3:待复核 4:复核未通过 5:复核通过
|
if (['2', '5'].includes(ele.value)) {
|
ele.type = 'success'
|
} else if (['1', '3'].includes(ele.value)) {
|
ele.type = 'warning'
|
} else if (['0', '4'].includes(ele.value)) {
|
ele.type = 'danger'
|
}
|
})
|
this.componentDataDataLook.tagField.insState.select = data
|
this.componentDataDelete.tagField.insState.select = data
|
})
|
},
|
selectEnumByCategoryForOrderType() {
|
this.$axios.post(this.$api.enums.selectEnumByCategory, {
|
category: "检验类别"
|
}).then(res => {
|
this.componentData.tagField.orderType.select = res.data
|
})
|
},
|
getStyle(){
|
return 'height: calc(100% - '+(this.more?'94':'44')+'px)'
|
},
|
changeUser(){
|
if(this.sonLaboratoryList.length>0){
|
this.distributeData.sonLaboratory = this.sonLaboratoryList[0].value
|
}
|
}
|
}
|
}
|
</script>
|