<template>
|
<div style="height: calc(100vh - 280px);">
|
<div class="search">
|
<div class="search_thing">
|
<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">
|
<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">
|
<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">
|
<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">
|
<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="margin-left: 20px;">
|
<el-button size="small" @click="refresh()">重 置</el-button>
|
<el-button size="small" type="primary" @click="refreshTable()">查 询</el-button>
|
</div>
|
</div>
|
<div class="table">
|
<ValueTable ref="ValueTable"
|
:url="$api.insOrder.selectInsOrderParameter" :componentData="componentData"
|
:upIndex="upIndex" />
|
</div>
|
<el-dialog
|
title="生成报告"
|
:visible.sync="dialogVisible"
|
width="60%"
|
:append-to-body="true"
|
:modal="!dialogVisible0"
|
>
|
<span style="font-size: 16px;">请选择委托编号为 <span style="color: #3A7BFA">{{currentInfo.entrustCode}}</span> 要生成的数据</span>
|
<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%" @selection-change="list=>handleSelectionChange(list,item.insOrderUserList)">
|
<el-table-column
|
type="selection"
|
width="55">
|
</el-table-column>
|
<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>
|
<span slot="footer" class="dialog-footer">
|
<el-button :loading="loading0" @click="handleNoCreate">不生成</el-button>
|
<el-button type="primary" @click="handleCreate" :loading="loading1">生 成</el-button>
|
</span>
|
</el-dialog>
|
<el-dialog
|
title="检验详情"
|
:visible.sync="dialogVisible0"
|
width="100%" :fullscreen="true" :modal="false" :append-to-body="true">
|
<Inspection v-if="dialogVisible0"
|
: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>
|
</div>
|
</template>
|
|
<script>
|
import ValueTable from '../../tool/value-table.vue'
|
import Inspection from '../b1-inspect-order-plan/Inspection.vue'
|
export default {
|
components: {
|
ValueTable,
|
Inspection,
|
},
|
data() {
|
return {
|
componentData: {
|
entity: {
|
entrustCode: null,
|
sample: null,
|
sampleName: null,
|
sampleModel: null,
|
sampleCode: null,
|
outEntrustCode: null,
|
state: 4,
|
name:null,
|
engineering:null,
|
production:null,
|
formType:null,
|
},
|
isIndex: true,
|
showSelect: false,
|
select: false,
|
// selectMethod:'selectMethod',
|
do: [{
|
id: 'handleCreateReport',
|
font: '生成报告',
|
type: 'text',
|
method: 'handleCreateReport',
|
disabFun: (row, index) => {
|
return row.insState == 5
|
}
|
}],
|
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']
|
},
|
upIndex: 0,
|
entityCopy: {},
|
dialogVisible:false,
|
historyList:[],
|
currentInfo:{},
|
currentItem:{},
|
loading0:false,
|
loading1:false,
|
dialogVisible0:false,
|
sampleList:[],
|
sampleId:null,
|
orderId0:null,
|
formType:[]
|
}
|
},
|
mounted() {
|
this.entityCopy = this.HaveJson(this.componentData.entity)
|
this.getPower()
|
this.selectEnumByCategoryForSampleForm()
|
},
|
methods:{
|
// 权限分配
|
getPower(radio) {
|
let power = JSON.parse(sessionStorage.getItem('power'))
|
let isReport = false
|
for (var i = 0; i < power.length; i++) {
|
if (power[i].menuMethod == 'isReport') {
|
isReport = true
|
}
|
}
|
if (!isReport) {
|
this.componentData.do.splice(0, 1)
|
}
|
},
|
refreshTable(e) {
|
this.$refs['ValueTable'].selectList(e)
|
},
|
refresh() {
|
this.componentData.entity = this.HaveJson(this.entityCopy)
|
this.upIndex++
|
this.refreshTable()
|
},
|
handleCreateReport(row){
|
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.dialogVisible = true
|
})
|
},
|
selectEnumByCategoryForSampleForm() {
|
this.$axios.post(this.$api.enums.selectEnumByCategory, {
|
category: "订单类型"
|
}).then(res => {
|
this.formType = res.data
|
})
|
},
|
// 生成报告
|
handleCreate(){
|
let insReportDto1s = []
|
let num = 0;
|
this.sampleList.forEach(a => {
|
let insReportDto2s = []
|
a.historyList.forEach(item => {
|
item.insOrderUserList.forEach(item1 => {
|
if(item1.state==1){
|
let obj0 = {
|
laboratory:item.laboratory,
|
num:item1.num,
|
insOrderUsersId:item1.id
|
}
|
insReportDto2s.push(obj0)
|
num++
|
}
|
})
|
})
|
let obj0 = {
|
sampleId:a.insSample.id,
|
insReportDto2s:insReportDto2s
|
}
|
insReportDto1s.push(obj0)
|
})
|
if(num==0){
|
this.$message.error("请先选择需要生成的记录!")
|
return
|
}
|
this.loading1 = true
|
this.$axios.post(this.$api.insReport.isReport, {
|
id:this.currentInfo.id,
|
state:1,
|
insReportDto1s:insReportDto1s
|
},{
|
headers: {
|
'Content-Type': 'application/json'
|
}}).then(res => {
|
this.loading1 = false
|
if (res.code === 201) {
|
return
|
}
|
this.$message.success("已生成")
|
this.refreshTable()
|
this.dialogVisible = false
|
}).catch(err => {
|
console.log(err)
|
})
|
},
|
// 不生成
|
handleNoCreate(){
|
this.loading0 = true
|
this.$axios.post(this.$api.insReport.isReport, {
|
id:this.currentInfo.id,
|
state:0
|
},{
|
headers: {
|
'Content-Type': 'application/json'
|
}}).then(res => {
|
this.loading0 = false;
|
if (res.code === 201) {
|
return
|
}
|
this.refreshTable()
|
this.$message.success("已取消生成")
|
this.dialogVisible = false
|
}).catch(err => {
|
console.log(err)
|
})
|
},
|
// 查看检验详情
|
lookDetail(row,value,insSample){
|
this.dialogVisible0 = 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
|
}
|
},
|
handleSelectionChange(list,list0){
|
list0.forEach(item => {
|
let obj = list.find(item0 => item0.id == item.id)
|
if(obj){
|
item.state = 1
|
}else{
|
item.state = 0
|
}
|
})
|
}
|
}
|
}
|
</script>
|
|
<style scoped>
|
.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;
|
height: 100%;
|
padding: 20px;
|
}
|
>>>.el-card__header,>>>.el-card__body{
|
padding-top: 10px;
|
padding-bottom: 10px;
|
}
|
</style>
|