<style scoped>
|
ins-order-plan-main .title {
|
font-size: 20px;
|
color: #3A7BFA
|
}
|
|
.ins-order-plan-main .search {
|
width: 100%;
|
margin-bottom: 10px;
|
height: 80px;
|
background-color: #fff;
|
border-radius: 3px;
|
}
|
|
.search .form-inline {
|
height: 50px;
|
padding-top: 20px;
|
padding-left: 50px;
|
}
|
|
.ins-order-plan-main .center {
|
width: calc(100% - 40px);
|
height: calc(100% - 60px - 80px - 40px);
|
background-color: #fff;
|
border-radius: 3px;
|
padding: 20px;
|
}
|
|
.ins-order-plan-main .center .value-table {
|
width: 100%;
|
height: calc(100% - 68px);
|
}
|
|
.tab {
|
list-style-type: none;
|
display: flex;
|
}
|
|
.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(3) {
|
border-radius: 0 8px 8px 0;
|
}
|
|
.tab li.active {
|
border-color: #3A7BFA;
|
color: #3A7BFA;
|
}
|
|
.center .center-options .center-title {
|
width: 100%;
|
text-align: right;
|
display: flex;
|
align-items: center;
|
}
|
|
.center .center-options .center-title span:last-child {
|
color: #3A7BFA;
|
font-size: 23px;
|
font-weight: 400;
|
}
|
|
.view-self-checkbox {
|
margin-left: 50px;
|
}
|
</style>
|
<style>
|
.ins-order-plan-main .el-form-item__label{
|
color: #000;
|
}
|
</style>
|
<template>
|
<div class="ins-order-plan-main">
|
<p style="font-size: 16px;padding:19.5px 0px">检验任务</p>
|
<div class="search">
|
<el-form :inline="true" :model="searchForm" class="form-inline">
|
<el-form-item label="样品名称:">
|
<el-input clearable v-model="searchForm.sampleName" size="small" placeholder="请输入"></el-input>
|
</el-form-item>
|
<el-form-item label="状态:">
|
<el-select clearable size="small" v-model="searchForm.state" placeholder="请选择">
|
<el-option v-for="(item,index) in insStateList" :key="index" :label="item.label"
|
:value="item.value"></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item>
|
<el-button size="small" @click="onReset">重置</el-button>
|
<el-button size="small" type="primary" @click="onSubmit">查询</el-button>
|
</el-form-item>
|
</el-form>
|
</div>
|
<div class="center">
|
<div class="center-options">
|
<el-row>
|
<el-col :span="21">
|
<div style="display: flex;align-items: center;margin-bottom: 10px;">
|
<ul class="tab">
|
<li v-for="(m,i) in tabList" :key="i" :class="{active:i==tabIndex}" @click="handleTab(m,i)">{{m.label}}
|
</li>
|
</ul>
|
<div>
|
<el-checkbox @change="changeCheckBox" class="view-self-checkbox"
|
v-model="viewSelf"><span>我的任务</span></el-checkbox>
|
</div>
|
</div>
|
</el-col>
|
<el-col :span="3">
|
<div class="center-title">
|
<span>总计任务数量:</span>
|
<span v-if="$refs.insOrderPlan != undefined">{{$refs.insOrderPlan.total}}</span>
|
</div>
|
</el-col>
|
</el-row>
|
</div>
|
<ValueTable :tableRowClassName="changeRowClass" class="value-table" ref="insOrderPlan"
|
:url="$api.insOrderPlan.selectInsOrderPlanList" :upUrl="$api.user.updateUser" :componentData="componentData"
|
:key="upIndex" @upUser="upUser" />
|
</div>
|
<el-dialog title="提示" :visible.sync="claimVisible" width="400px">
|
是否认领委托编号<span style="color:#33C130">{{sampleUserForm.entrustCode}}</span>的任务
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="claimVisible = false">取 消</el-button>
|
<el-button type="primary" @click="confirmClaim">确 定</el-button>
|
</span>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script>
|
import ValueTable from '../tool/value-table.vue'
|
import {
|
getYearAndMonthAndDays
|
} from '../../util/date'
|
export default {
|
components: {
|
ValueTable
|
},
|
data() {
|
return {
|
viewSelf: false,
|
sampleUserForm: {
|
entrustCode: null,
|
insSampleId: null,
|
userId: null
|
},
|
claimVisible: false,
|
searchForm: {
|
sampleName: null,
|
state: null
|
},
|
tabList: [],
|
active: 1,
|
tabIndex: 0,
|
componentData: {
|
entity: {
|
viewSelf: false,
|
state: 1,
|
childrenLaboratory: null,
|
insState: null,
|
sampleName: null,
|
orderBy: {
|
field: 'type',
|
order: 'desc'
|
}
|
},
|
isIndex: true,
|
showSelect: false,
|
select: false,
|
sort: false,
|
do: [{
|
id: '',
|
font: '检验',
|
type: 'text',
|
method: '',
|
field: []
|
}, {
|
id: '',
|
font: '交接',
|
type: 'text',
|
method: ''
|
},
|
{
|
id: '',
|
font: '复核',
|
type: 'text',
|
method: ''
|
}, {
|
id: '',
|
font: '认领',
|
type: 'text',
|
method: 'claimFun',
|
disabFun: (row, index) => {
|
return row.sampleUserId != null
|
}
|
}
|
],
|
tagField: {
|
type: {
|
select: []
|
},
|
insState: {
|
select: []
|
}
|
},
|
selectField: {},
|
requiredAdd: [],
|
requiredUp: []
|
},
|
upIndex: 0,
|
planTotal: 0,
|
insStateList: []
|
}
|
},
|
created() {
|
this.getTypeDicts()
|
this.getInsStateDicts()
|
this.getLaboratoryDicts()
|
this.$nextTick(() => {
|
this.refreshTable()
|
})
|
},
|
watch: {
|
tabList(newVal) {
|
if (newVal && newVal.length > 0) {
|
this.componentData.entity.childrenLaboratory = newVal[0].value
|
this.$nextTick(() => {
|
this.refreshTable()
|
})
|
}
|
}
|
},
|
methods: {
|
upUser() {
|
|
},
|
changeCheckBox(val) {
|
this.componentData.entity.viewSelf = val
|
this.$nextTick(() => {
|
this.refreshTable()
|
})
|
},
|
claimFun(row) {
|
console.log(row)
|
if (row) {
|
this.sampleUserForm = {
|
entrustCode: row.entrustCode,
|
insSampleId: row.id
|
}
|
this.claimVisible = true
|
}
|
|
},
|
confirmClaim() {
|
this.$axios.post(this.$api.insOrderPlan.claimInsOrderPlan, this.sampleUserForm, {
|
headers: {
|
'Content-Type': 'application/json'
|
}
|
}).then(res => {
|
if (res.code === 200 && res.data) {
|
this.$message.success("认领成功")
|
this.claimVisible = false
|
this.refreshTable()
|
}
|
}).catch(error => {
|
console.error(error)
|
})
|
},
|
refreshTable() {
|
this.$refs.insOrderPlan.selectList()
|
},
|
changeRowClass({
|
row,
|
rowIndex
|
}) {
|
let currentTime = getYearAndMonthAndDays()
|
if (row.sendTime && currentTime === row.sendTime) {
|
return 'highlight-warning-row-border'
|
} else if (row.sendTime && currentTime > row.sendTime) {
|
return 'highlight-danger-row-border'
|
}
|
return ''
|
},
|
onReset() {
|
this.searchForm = {
|
sampleName: null,
|
state: null,
|
}
|
this.componentData.entity.insState = null
|
this.componentData.entity.sampleName = null
|
this.refreshTable()
|
},
|
onSubmit() {
|
this.componentData.entity.insState = this.searchForm.state
|
this.componentData.entity.sampleName = this.searchForm.sampleName
|
this.$nextTick(() => {
|
this.refreshTable()
|
})
|
},
|
handleTab(m, i) {
|
this.tabIndex = i;
|
this.componentData.entity.childrenLaboratory = m.value
|
this.refreshTable()
|
},
|
getTypeDicts() {
|
this.$axios.post(this.$api.enums.selectEnumByCategory, {
|
category: "紧急程度"
|
}).then(res => {
|
let data = res.data
|
data.forEach(ele => {
|
if (ele.value === '0') {
|
ele.type = 'success'
|
} else if (ele.value === '1') {
|
ele.type = 'warning'
|
} else if (ele.value === '2') {
|
ele.type = 'danger'
|
}
|
})
|
this.componentData.tagField.type.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.componentData.tagField.insState.select = data
|
})
|
},
|
getLaboratoryDicts() {
|
this.$axios.post(this.$api.enums.selectEnumByCategory, {
|
category: "子实验室"
|
}).then(res => {
|
this.tabList = res.data.map(ele => {
|
return {
|
label: ele.label,
|
value: ele.value
|
}
|
})
|
this.$nextTick(() => {
|
this.componentData.entity.childrenLaboratory = this.tabList[0].value
|
})
|
})
|
}
|
}
|
}
|
</script>
|