| | |
| | | <style scoped> |
| | | ins-order-plan-main .title{ |
| | | font-size:20px; |
| | | color:#3A7BFA |
| | | } |
| | | .ins-order-plan-main .search{ |
| | | width: 100%; |
| | | margin-bottom: 10px; |
| | | height: 10vh; |
| | | background-color: #fff; |
| | | border-radius: 3px; |
| | | } |
| | | .search .form-inline{ |
| | | height: 5vh; |
| | | padding-top:2.5vh; |
| | | padding-left: 1%; |
| | | } |
| | | .ins-order-plan-main .center{ |
| | | width: 100%; |
| | | height: 70vh; |
| | | background-color: #fff; |
| | | border-radius: 3px; |
| | | } |
| | | .ins-order-plan-main .center .value-table{ |
| | | width:98%; |
| | | height: 80%; |
| | | margin-left:1%; |
| | | } |
| | | .tab { |
| | | list-style-type: none; |
| | | display: flex; |
| | | padding: 10px 0px; |
| | | } |
| | | .tab li { |
| | | line-height: 24px; |
| | | padding: 6px 14px; |
| | | font-size: 14px; |
| | | color: #333333; |
| | | border: 1px solid #EEEEEE; |
| | | cursor: pointer; |
| | | } |
| | | ins-order-plan-main .title { |
| | | font-size: 20px; |
| | | color: #3A7BFA |
| | | } |
| | | |
| | | .tab li:nth-child(1) { |
| | | border-radius: 8px 0 0 8px; |
| | | } |
| | | .ins-order-plan-main .search { |
| | | width: 100%; |
| | | margin-bottom: 10px; |
| | | height: 80px; |
| | | background-color: #fff; |
| | | border-radius: 3px; |
| | | } |
| | | |
| | | .tab li:nth-child(3) { |
| | | border-radius: 0 8px 8px 0; |
| | | } |
| | | .search .form-inline { |
| | | height: 50px; |
| | | padding-top: 20px; |
| | | padding-left: 50px; |
| | | } |
| | | |
| | | .tab li.active { |
| | | border-color: #3A7BFA; |
| | | color: #3A7BFA; |
| | | } |
| | | .center .center-options:nth-child(1){ |
| | | padding-left: 1%; |
| | | } |
| | | .center .center-options .center-title { |
| | | width:85%; |
| | | padding-top: 20px; |
| | | text-align: left; |
| | | } |
| | | .center .center-options .center-title span:last-child{ |
| | | color: #3A7BFA; |
| | | font-size: 23px; |
| | | font-weight: 400; |
| | | } |
| | | .view-self-checkbox{ |
| | | margin-left: 20px; |
| | | } |
| | | .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;"> |
| | | <ul class="tab"> |
| | | <li v-for="(m,i) in tabList" :key="i" :class="{active:i==tabIndex}" @click="handleTab(m,i)">{{m.label}}</li> |
| | | </ul> |
| | | <el-checkbox @change="changeCheckBox" class="view-self-checkbox" v-model="viewSelf"/><span> 我的任务</span> |
| | | </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="40%"> |
| | | 是否认领委托编号<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> |
| | | <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="40%"> |
| | | 是否认领委托编号<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: { |
| | | 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, |
| | | viewSelf: false, |
| | | state: 1, |
| | | childrenLaboratory: null, |
| | | insState: null, |
| | | sampleName: null, |
| | | orderBy: { |
| | | field: 'type', |
| | | order: 'desc' |
| | |
| | | showSelect: false, |
| | | select: 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} |
| | | }], |
| | | 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:[] |
| | | } |
| | | }, |
| | | type: { |
| | | select: [] |
| | | }, |
| | | insState: { |
| | | select: [] |
| | | } |
| | | }, |
| | | selectField: {}, |
| | | requiredAdd:[], |
| | | requiredUp:[] |
| | | 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(){ |
| | | 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 |
| | | } |
| | | }, |
| | | 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,{ |
| | | }, |
| | | 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> |
| | | }).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> |