微生物样本信息
This commit is contained in:
parent
b907c83aba
commit
f6f4efa0c4
36
src/api/liswork/micro/index.ts
Normal file
36
src/api/liswork/micro/index.ts
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
// @ts-ignore
|
||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
|
||||||
|
// 查询微生物数据列表
|
||||||
|
export function wswsampleList(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/lisworkgerm/wswsamplelist',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 查询微生物数据列表 分页
|
||||||
|
export function wswsamplelistpage(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/lisworkgerm/wswsamplelistpage',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 获取微生物样本信息
|
||||||
|
export function sampleMedInfo(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/lisworkgerm/sampleMedInfo',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 获取操作记录
|
||||||
|
export function getComLog(query?: Object) {
|
||||||
|
return request({
|
||||||
|
url: '/lisworkgerm/getcomlog',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
@ -9,15 +9,6 @@ export function queryLabPatList(query?: Object) {
|
|||||||
params: query
|
params: query
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 查询微生物数据列表
|
|
||||||
export function wswsampleList(query?: Object) {
|
|
||||||
return request({
|
|
||||||
url: '/lisworkgerm/wswsamplelist',
|
|
||||||
method: 'get',
|
|
||||||
params: query
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询数据
|
// 查询数据
|
||||||
export function queryLabPat(query?: Object) {
|
export function queryLabPat(query?: Object) {
|
||||||
return request({
|
return request({
|
||||||
|
|||||||
@ -8,13 +8,12 @@
|
|||||||
<el-row :gutter="5">
|
<el-row :gutter="5">
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="样本号:" prop="ybh">
|
<el-form-item label="样本号:" prop="ybh">
|
||||||
<el-input v-model="queryParams.ybh" placeholder="样本编号" @keyup.enter="handleQuery"
|
<el-input v-model="labInfo.ybh" placeholder="样本编号" @keyup.enter="handleQuery" style="width:100%" />
|
||||||
style="width:100%" />
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="6">
|
<el-col :span="6">
|
||||||
<el-form-item label="日期:" prop="jyrq">
|
<el-form-item label="日期:" prop="jyrq">
|
||||||
<el-date-picker v-model="queryParams.jyrq" type="date" label-width="1.25rem" placeholder="检验日期"
|
<el-date-picker v-model="labInfo.jyrq" type="date" label-width="1.25rem" placeholder="检验日期"
|
||||||
value-format="YYYY-MM-DD" :clearable="false" @change="" style="width:100%"></el-date-picker>
|
value-format="YYYY-MM-DD" :clearable="false" @change="" style="width:100%"></el-date-picker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@ -50,9 +49,7 @@
|
|||||||
:userList="userList" @changeStatus="changeStatus" @batchShow="handleBatchScan" />
|
:userList="userList" @changeStatus="changeStatus" @batchShow="handleBatchScan" />
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="16">
|
<el-col :span="16">
|
||||||
<!-- <LabResult ref="labResultRef" :labPat="labPat" :tableData="labResuts" :tableKey="queryParams"
|
<LabResult ref="labResultRef" v-model:labPat="labPat" :labPatKey="queryParams" />
|
||||||
:userList="userList" :resultSysList="resultConfig" @fetchLabResults="resultsHandle" :dictData="dictData"
|
|
||||||
@changeStatus="changeStatus" @previewHandle="previewHandle" /> -->
|
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
@ -78,13 +75,28 @@
|
|||||||
<el-checkbox v-model="lbFlag" :size="aotuSize"> 列表翻页 </el-checkbox>
|
<el-checkbox v-model="lbFlag" :size="aotuSize"> 列表翻页 </el-checkbox>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="radio_box">
|
||||||
|
<el-radio-group v-model="queryParams.days" @change="fetchlabPatList">
|
||||||
|
<el-radio :value="0">所有</el-radio>
|
||||||
|
<el-radio :value="30">近30天</el-radio>
|
||||||
|
<el-radio :value="60">近60天</el-radio>
|
||||||
|
<el-radio :value="90">近90天</el-radio>
|
||||||
|
<el-radio :value="7">近7天</el-radio>
|
||||||
|
<el-radio :value="1">此日 -></el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
<el-date-picker v-model="queryParams.jyrq" type="date" :size="aotuSize" />
|
||||||
|
</div>
|
||||||
<LabPatList ref="labPatListRef" :labPatList="labPatList" :loading="loading" @select="selectJob"
|
<LabPatList ref="labPatListRef" :labPatList="labPatList" :loading="loading" @select="selectJob"
|
||||||
:tableKey="queryParams" :dictData="dictData" @search="searchJobs" />
|
:tableKey="queryParams" :dictData="dictData" @search="searchJobs" />
|
||||||
|
|
||||||
<div class="button-group">
|
<div class="button-group">
|
||||||
<div class="text1">样本总数:<span>{{ ybs }}</span></div>
|
<!-- <div class="text1">样本总数:<span>{{ ybs }}</span></div>
|
||||||
<div class="text2">未审:<span>{{ ws }}</span></div>
|
<div class="text2">未审:<span>{{ ws }}</span></div>
|
||||||
<div class="text3">危:<span>{{ wjs }}</span></div>
|
<div class="text3">危:<span>{{ wjs }}</span></div> -->
|
||||||
|
<el-pagination v-model:current-page="queryParams.pageNum" v-model:page-size="queryParams.pageSize"
|
||||||
|
:page-sizes="[300, 600, 1000]" :size="aotuSize" background
|
||||||
|
layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -115,11 +127,12 @@ import tabView from '@/components/tabViews/index.vue';
|
|||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import iFrame from "@/components/iFrame/index.vue";
|
import iFrame from "@/components/iFrame/index.vue";
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
// import LabResult from './components/labresult.vue';
|
import LabResult from './labresult/index.vue';
|
||||||
import LabPatList from './labpatlist.vue';
|
import LabPatList from './labpatlist.vue';
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import { comDict } from '@/utils/dict'
|
import { comDict } from '@/utils/dict'
|
||||||
import { wswsampleList, queryLabResults, loadDefault, queryLabPat, instrdconfig, delSample, getGroupInstrdList } from "@/api/liswork/work/LisWork";
|
import { queryLabResults, loadDefault, queryLabPat, instrdconfig, delSample, getGroupInstrdList } from "@/api/liswork/work/LisWork";
|
||||||
|
import { wswsamplelistpage, sampleMedInfo } from "@/api/liswork/micro/index";
|
||||||
import { getComDicts, queryComDictListService } from "@/api/liswork/dict/ComDict";
|
import { getComDicts, queryComDictListService } from "@/api/liswork/dict/ComDict";
|
||||||
import { ElMessage, ElMessageBox } from "element-plus";
|
import { ElMessage, ElMessageBox } from "element-plus";
|
||||||
import BatchCode from '../work/components/batchCode.vue';
|
import BatchCode from '../work/components/batchCode.vue';
|
||||||
@ -129,19 +142,22 @@ import { classCom } from '@/utils/classCom';
|
|||||||
import PatientQueryForm from '@/components/selectSearch/index.vue'
|
import PatientQueryForm from '@/components/selectSearch/index.vue'
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
import { listUser } from '@/api/system/user.js'
|
import { listUser } from '@/api/system/user.js'
|
||||||
|
import dayjs from 'dayjs'
|
||||||
const aotuSize = classCom.useAutoSize();
|
const aotuSize = classCom.useAutoSize();
|
||||||
|
|
||||||
const previewShow = ref(false);
|
const previewShow = ref(false);
|
||||||
const lbFlag = ref(false);
|
const lbFlag = ref(false);
|
||||||
const queryParams = ref({
|
const queryParams = ref({
|
||||||
jyrq: '2025-08-20',
|
jyrq: dayjs().format('YYYY-MM-DD'),
|
||||||
yq: 'PHOENI',
|
yq: 'PHOENI',
|
||||||
ybh: '1',
|
|
||||||
instrGroup: '04',
|
instrGroup: '04',
|
||||||
problemId: 0,
|
problemId: 0,
|
||||||
days: 90,
|
days: 90,
|
||||||
|
pageSize: 600,
|
||||||
|
pageNum: 1
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const total = ref(0)
|
||||||
const ybs = ref(0)
|
const ybs = ref(0)
|
||||||
const ws = ref(0)
|
const ws = ref(0)
|
||||||
const wjs = ref(0)
|
const wjs = ref(0)
|
||||||
@ -321,32 +337,33 @@ const resultsHandle = (flag: boolean) => {
|
|||||||
}
|
}
|
||||||
fetchLabResults()
|
fetchLabResults()
|
||||||
}
|
}
|
||||||
|
const labInfo: any = ref({})
|
||||||
const highlightRowIndex = ref(-1)
|
const highlightRowIndex = ref(-1)
|
||||||
const labPatListRef = ref()
|
const labPatListRef = ref()
|
||||||
//样本列表点击切换样本信息,同步载入左边样本信息表单和中间结果表单
|
//样本列表点击切换样本信息,同步载入左边样本信息表单和中间结果表单
|
||||||
const selectJob = (job: any) => {
|
const selectJob = (job: any) => {
|
||||||
|
labInfo.value = { ...job }
|
||||||
lastRow.value = job;
|
lastRow.value = job;
|
||||||
// 复制选中的job数据到当前编辑状态
|
|
||||||
// Object.assign(labPat.value, {...job})
|
|
||||||
queryParams.value.jyrq = job.jyrq;
|
|
||||||
queryParams.value.yq = job.yq.trim();
|
|
||||||
queryParams.value.ybh = job.ybh;
|
|
||||||
fetchLabPat();
|
fetchLabPat();
|
||||||
fetchLabResults();
|
fetchLabResults();
|
||||||
highlightRowIndex.value = labPatList.value.findIndex((item: any) => item.ybh == queryParams.value.ybh);
|
highlightRowIndex.value = labPatList.value.findIndex((item: any) => item.ybh == labInfo.value.ybh);
|
||||||
}
|
}
|
||||||
const labResuts = ref([])
|
const labResuts = ref([])
|
||||||
//载入样本结果表单(中间labresult.vue组件)
|
//载入样本结果表单(中间labresult.vue组件)
|
||||||
const fetchLabResults = async () => {
|
const fetchLabResults = async () => {
|
||||||
queryLabResults({ jyrq: queryParams.value.jyrq, yq: queryParams.value.yq, ybh: queryParams.value.ybh }).then((response: any) => {
|
queryLabResults({ jyrq: queryParams.value.jyrq, yq: queryParams.value.yq, ybh: labInfo.value.ybh }).then((response: any) => {
|
||||||
labResuts.value = response.data;
|
labResuts.value = response.data;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
//载入样本编辑表单(左边labpat.vue组件)
|
//载入样本编辑表单(左边labpat.vue组件)
|
||||||
const fetchLabPat = () => {
|
const fetchLabPat = () => {
|
||||||
queryLabPat(queryParams.value).then((response: any) => {
|
const data = {
|
||||||
|
jyrq: labInfo.value.jyrq,
|
||||||
|
yq: labInfo.value.yq,
|
||||||
|
ybh: labInfo.value.ybh
|
||||||
|
}
|
||||||
|
queryLabPat(data).then((response: any) => {
|
||||||
labPat.value = response.data;
|
labPat.value = response.data;
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -356,20 +373,20 @@ const lastRow: any = ref({})
|
|||||||
// 批量扫码ybh同步样本编号
|
// 批量扫码ybh同步样本编号
|
||||||
const ybhChangeTb = (val: string) => {
|
const ybhChangeTb = (val: string) => {
|
||||||
console.log('val==>', val);
|
console.log('val==>', val);
|
||||||
queryParams.value.ybh = val
|
labInfo.value.ybh = val
|
||||||
handleQuery();
|
handleQuery();
|
||||||
}
|
}
|
||||||
const handleQuery = () => {
|
const handleQuery = () => {
|
||||||
if (!labPatList.value.length) return
|
if (!labPatList.value.length) return
|
||||||
if (!queryParams.value.ybh) {
|
if (!labInfo.value.ybh) {
|
||||||
highlightRowIndex.value = -1;
|
highlightRowIndex.value = -1;
|
||||||
ElMessage.warning('请输入样本编号')
|
ElMessage.warning('请输入样本编号')
|
||||||
queryParams.value.ybh = lastRow.value.ybh
|
labInfo.value.ybh = lastRow.value.ybh
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
queryParams.value = { ...queryParams.value };
|
// queryParams.value = { ...queryParams.value };
|
||||||
// 查找匹配的行
|
// 查找匹配的行
|
||||||
const matchedIndex = labPatList.value.findIndex((item: any) => item.ybh == queryParams.value.ybh);
|
const matchedIndex = labPatList.value.findIndex((item: any) => item.ybh == labInfo.value.ybh);
|
||||||
const row = labPatList.value[matchedIndex]
|
const row = labPatList.value[matchedIndex]
|
||||||
|
|
||||||
if (matchedIndex !== -1) {
|
if (matchedIndex !== -1) {
|
||||||
@ -388,7 +405,8 @@ const handleQuery = () => {
|
|||||||
|
|
||||||
// 创建新样本
|
// 创建新样本
|
||||||
const handleCreate = () => {
|
const handleCreate = () => {
|
||||||
loadDefault(queryParams.value).then((response: any) => {
|
labInfo.value.jyrq = ''
|
||||||
|
loadDefault({ ybh: labInfo.value.ybh, ...queryParams.value }).then((response: any) => {
|
||||||
if (response.code == 0) {
|
if (response.code == 0) {
|
||||||
labPat.value = response.data;
|
labPat.value = response.data;
|
||||||
labPat.value.id = `temp_${Date.now()}_${Math.random().toString(36).substr(2, 8)}`;
|
labPat.value.id = `temp_${Date.now()}_${Math.random().toString(36).substr(2, 8)}`;
|
||||||
@ -402,15 +420,15 @@ const handleCreate = () => {
|
|||||||
|
|
||||||
// 删除样本
|
// 删除样本
|
||||||
const delSampleHd = () => {
|
const delSampleHd = () => {
|
||||||
if (lastRow.value.jgbz == '2') return ElMessage.warning('标本已审核,不能删除!')
|
if (labInfo.value.jgbz == '2') return ElMessage.warning('标本已审核,不能删除!')
|
||||||
const data = {
|
const data = {
|
||||||
jyrq: lastRow.value.jyrq,
|
jyrq: labInfo.value.jyrq,
|
||||||
yq: lastRow.value.yq.trim(),
|
yq: labInfo.value.yq.trim(),
|
||||||
ybh: lastRow.value.ybh,
|
ybh: labInfo.value.ybh,
|
||||||
}
|
}
|
||||||
|
|
||||||
ElMessageBox.confirm(
|
ElMessageBox.confirm(
|
||||||
`确定删除当前${lastRow.value.ybh}号标本?`,
|
`确定删除当前${labInfo.value.ybh}号标本?`,
|
||||||
'提示',
|
'提示',
|
||||||
{
|
{
|
||||||
confirmButtonText: '确定',
|
confirmButtonText: '确定',
|
||||||
@ -422,7 +440,7 @@ const delSampleHd = () => {
|
|||||||
delSample(data).then((res: any) => {
|
delSample(data).then((res: any) => {
|
||||||
if (res.code == 0) {
|
if (res.code == 0) {
|
||||||
ElMessage.success('删除成功')
|
ElMessage.success('删除成功')
|
||||||
labPatList.value = labPatList.value.filter((item: any) => item.ybh != lastRow.value.ybh)
|
labPatList.value = labPatList.value.filter((item: any) => item.ybh != labInfo.value.ybh)
|
||||||
getTotals()
|
getTotals()
|
||||||
// 删除跳当前页面下一个样本
|
// 删除跳当前页面下一个样本
|
||||||
// handleNext()
|
// handleNext()
|
||||||
@ -443,8 +461,8 @@ const delSampleHd = () => {
|
|||||||
// 上一个样本
|
// 上一个样本
|
||||||
const handlePrev = () => {
|
const handlePrev = () => {
|
||||||
if (!lbFlag.value) {
|
if (!lbFlag.value) {
|
||||||
const ybh = getPreviousNumber(queryParams.value.ybh) as string;
|
const ybh = getPreviousNumber(labInfo.value.ybh) as string;
|
||||||
queryParams.value.ybh = ybh;
|
labInfo.value.ybh = ybh;
|
||||||
const index = labPatList.value.findIndex((item: any) => item.ybh == ybh)
|
const index = labPatList.value.findIndex((item: any) => item.ybh == ybh)
|
||||||
if (index !== -1) {
|
if (index !== -1) {
|
||||||
highlightRowIndex.value = index;
|
highlightRowIndex.value = index;
|
||||||
@ -468,8 +486,8 @@ const handlePrev = () => {
|
|||||||
// 下一个样本
|
// 下一个样本
|
||||||
const handleNext = () => {
|
const handleNext = () => {
|
||||||
if (!lbFlag.value) {
|
if (!lbFlag.value) {
|
||||||
const ybh = getNextNumber(queryParams.value.ybh) as string;
|
const ybh = getNextNumber(labInfo.value.ybh) as string;
|
||||||
queryParams.value.ybh = ybh;
|
labInfo.value.ybh = ybh;
|
||||||
const index = labPatList.value.findIndex((item: any) => item.ybh == ybh)
|
const index = labPatList.value.findIndex((item: any) => item.ybh == ybh)
|
||||||
if (index !== -1) {
|
if (index !== -1) {
|
||||||
highlightRowIndex.value = index;
|
highlightRowIndex.value = index;
|
||||||
@ -486,14 +504,14 @@ const handleNext = () => {
|
|||||||
labPatListRef.value.setCurrentRow(row);
|
labPatListRef.value.setCurrentRow(row);
|
||||||
selectJob(row);
|
selectJob(row);
|
||||||
} else {
|
} else {
|
||||||
queryParams.value.ybh = getNextNumber(queryParams.value.ybh) as string;
|
labInfo.value.ybh = getNextNumber(labInfo.value.ybh) as string;
|
||||||
handleCreate();
|
handleCreate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 最后一个样本
|
// 最后一个样本
|
||||||
const handleLast = () => {
|
const handleLast = () => {
|
||||||
queryParams.value.ybh = labPatList.value[labPatList.value.length - 1].ybh;
|
labInfo.value.ybh = labPatList.value[labPatList.value.length - 1].ybh;
|
||||||
handleNext();
|
handleNext();
|
||||||
}
|
}
|
||||||
const batchRef = ref()
|
const batchRef = ref()
|
||||||
@ -503,7 +521,12 @@ const handleBatchScan = () => {
|
|||||||
}
|
}
|
||||||
// 改变样本列表中样本状态
|
// 改变样本列表中样本状态
|
||||||
const changeStatus = (updatedPat: any, flag: boolean) => {
|
const changeStatus = (updatedPat: any, flag: boolean) => {
|
||||||
queryLabPat(queryParams.value).then((response: any) => {
|
const data = {
|
||||||
|
jyrq: updatedPat.jyrq,
|
||||||
|
yq: updatedPat.yq.trim(),
|
||||||
|
ybh: updatedPat.ybh,
|
||||||
|
}
|
||||||
|
queryLabPat(data).then((response: any) => {
|
||||||
if (response.code == 0) {
|
if (response.code == 0) {
|
||||||
labPat.value = response.data;
|
labPat.value = response.data;
|
||||||
const index = labPatList.value.findIndex((item: any) => item.ybh == updatedPat.ybh);
|
const index = labPatList.value.findIndex((item: any) => item.ybh == updatedPat.ybh);
|
||||||
@ -545,22 +568,32 @@ const searchJobs = async (text: string, page: number, size: number) => {
|
|||||||
fetchlabPatList()
|
fetchlabPatList()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const handleSizeChange = (size: number) => {
|
||||||
|
queryParams.value.pageSize = size
|
||||||
|
fetchlabPatList()
|
||||||
|
}
|
||||||
|
const handleCurrentChange = (page: number) => {
|
||||||
|
queryParams.value.pageNum = page
|
||||||
|
fetchlabPatList()
|
||||||
|
}
|
||||||
|
|
||||||
//载入样本列表(右边labpatlist.vue组件)
|
//载入样本列表(右边labpatlist.vue组件)
|
||||||
const fetchlabPatList = () => {
|
const fetchlabPatList = () => {
|
||||||
if (!queryParams.value.jyrq) {
|
// if (!queryParams.value.jyrq) {
|
||||||
queryParams.value.jyrq = lastRow.value.jyrq
|
// queryParams.value.jyrq = lastRow.value.jyrq
|
||||||
return ElMessage.warning('请选择检验日期')
|
// return ElMessage.warning('请选择检验日期')
|
||||||
}
|
// }
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
wswsampleList(queryParams.value).then((res: any) => {
|
wswsamplelistpage(queryParams.value).then((res: any) => {
|
||||||
if (res.code == 0) {
|
if (res.code == 200) {
|
||||||
labPatList.value = res.data;
|
labPatList.value = res.rows;
|
||||||
originalLabPatList.value = res.data
|
originalLabPatList.value = res.rows;
|
||||||
|
total.value = res.total;
|
||||||
loading.value = false;
|
loading.value = false;
|
||||||
if (res.data.length > 0) {
|
if (res.rows.length > 0) {
|
||||||
highlightRowIndex.value = 0;
|
highlightRowIndex.value = 0;
|
||||||
setTimeout(() => { labPatListRef.value.setCurrentRow(res.data[0]); }, 100)
|
setTimeout(() => { labPatListRef.value.setCurrentRow(res.rows[0]); }, 100)
|
||||||
selectJob(res.data[0])
|
selectJob(res.rows[0])
|
||||||
getTotals()
|
getTotals()
|
||||||
} else {
|
} else {
|
||||||
ybs.value = 0
|
ybs.value = 0
|
||||||
@ -642,13 +675,22 @@ onMounted(async () => {
|
|||||||
padding: .5rem;
|
padding: .5rem;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
|
|
||||||
.flex-between {
|
}
|
||||||
margin-bottom: .5rem;
|
|
||||||
|
.radio_box {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin: .125rem 0;
|
||||||
|
|
||||||
|
.el-radio {
|
||||||
|
margin-right: 15px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.right_box {
|
.right_box {
|
||||||
height: calc(90vh - 3.4rem);
|
height: calc(90vh - 3.4rem);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.compact-form {
|
.compact-form {
|
||||||
@ -676,14 +718,15 @@ onMounted(async () => {
|
|||||||
|
|
||||||
|
|
||||||
.button-group {
|
.button-group {
|
||||||
display: flex;
|
// display: flex;
|
||||||
justify-content: space-around;
|
// justify-content: space-around;
|
||||||
font-family: SourceHanSansCN, SourceHanSansCN;
|
// font-family: SourceHanSansCN, SourceHanSansCN;
|
||||||
font-weight: 500;
|
// font-weight: 500;
|
||||||
font-size: 1rem;
|
// font-size: 1rem;
|
||||||
color: #28BDBB;
|
// color: #28BDBB;
|
||||||
// margin-top: 20px;
|
width: 100%;
|
||||||
|
margin-top: .1875rem;
|
||||||
|
text-align: right;
|
||||||
|
|
||||||
|
|
||||||
.text2 {
|
.text2 {
|
||||||
|
|||||||
@ -75,6 +75,7 @@ import YhVerification from '../work/components/yhVerification.vue';
|
|||||||
|
|
||||||
import emitter from '@/utils/mitt';
|
import emitter from '@/utils/mitt';
|
||||||
import { classCom } from '@/utils/classCom';
|
import { classCom } from '@/utils/classCom';
|
||||||
|
import Labpat from '../work/components/labpat.vue';
|
||||||
const aotuSize = classCom.useAutoSize();
|
const aotuSize = classCom.useAutoSize();
|
||||||
|
|
||||||
|
|
||||||
@ -245,7 +246,14 @@ const saveLabPat = async (changedField: any) => {
|
|||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
if (!changedField) return
|
if (!changedField) return
|
||||||
changepatcolumn({ ...props.labPatKey, column: changedField?.field, value: changedField?.newValue }).then((res: any) => {
|
const data = {
|
||||||
|
...props.labPatKey,
|
||||||
|
jyrq: props.labPat.jyrq,
|
||||||
|
ybh: props.labPat.ybh,
|
||||||
|
column: changedField?.field,
|
||||||
|
value: changedField?.newValue
|
||||||
|
}
|
||||||
|
changepatcolumn(data).then((res: any) => {
|
||||||
if (res.code == 0) {
|
if (res.code == 0) {
|
||||||
if (sqhFlag.value) {
|
if (sqhFlag.value) {
|
||||||
sqhValue.value = ''
|
sqhValue.value = ''
|
||||||
@ -476,11 +484,11 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.cb_color {
|
.cb_color {
|
||||||
color: rgba(255, 165, 0, 0.25);
|
color: rgba(0, 128, 0, 0.25);
|
||||||
}
|
}
|
||||||
|
|
||||||
.eb_color {
|
.eb_color {
|
||||||
color: rgba(0, 128, 0, 0.25);
|
color: rgba(255, 165, 0, 0.25);
|
||||||
}
|
}
|
||||||
|
|
||||||
.sd_color {
|
.sd_color {
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="table-container">
|
<div class="table-container">
|
||||||
<ContextMenu :items="contextMenuItems" @select="handleMenuSelect" menu-width="200">
|
<ContextMenu :items="contextMenuItems" @select="handleMenuSelect" menu-width="200">
|
||||||
<CommonTable :table-data="labPatList" :loading="loading" :columns="tableColumns" :dict-data="dictData"
|
<CommonTable :table-data="labPatList" :loading="loading" :columns="tableColumns"
|
||||||
:row-config="{ isHover: true, keyField: 'ybh' }" @current-change="handleRowClick" size="small"
|
:row-config="{ isHover: true, keyField: 'ybh' }" @current-change="handleRowClick" size="small"
|
||||||
:row-style="rowStyle" :cell-style="cellStyle" class="mytable-style" ref="tableRef" :enable-column-drag="true"
|
:row-style="rowStyle" :cell-style="cellStyle" class="mytable-style" ref="tableRef" :enable-column-drag="true"
|
||||||
@column-drag-end="handleColumnDragEnd">
|
@column-drag-end="handleColumnDragEnd">
|
||||||
@ -200,6 +200,19 @@ const cellStyle = ({ row, column }: any) => {
|
|||||||
if (column.title == "警" && row.alarmflag == 1) {
|
if (column.title == "警" && row.alarmflag == 1) {
|
||||||
return { background: '#f00 !important' };
|
return { background: '#f00 !important' };
|
||||||
}
|
}
|
||||||
|
if (column.title == "状态" && row.jgbz == '2') {
|
||||||
|
return {
|
||||||
|
background: 'pink !important',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if (column.title == "状态" && row.jgbz == '3') {
|
||||||
|
return {
|
||||||
|
background: '#00ff64 !important',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
if (column.title == "状态" && row.jgbz == '4') {
|
||||||
|
return { background: '#ffff64 !important' };
|
||||||
|
}
|
||||||
|
|
||||||
if (column.title == "类型" && row.brly == '1') { //门诊
|
if (column.title == "类型" && row.brly == '1') { //门诊
|
||||||
return { background: '#e9e930 !important' };
|
return { background: '#e9e930 !important' };
|
||||||
@ -242,7 +255,7 @@ defineExpose({
|
|||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.table-container {
|
.table-container {
|
||||||
height: 76vh;
|
height: 72vh;
|
||||||
|
|
||||||
.form-box {
|
.form-box {
|
||||||
font-family: SourceHanSansCN, SourceHanSansCN;
|
font-family: SourceHanSansCN, SourceHanSansCN;
|
||||||
|
|||||||
11
src/views/liswork/micro/labresult/components/byj.vue
Normal file
11
src/views/liswork/micro/labresult/components/byj.vue
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
培养基接种
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
||||||
11
src/views/liswork/micro/labresult/components/cbReport.vue
Normal file
11
src/views/liswork/micro/labresult/components/cbReport.vue
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
初级
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
||||||
59
src/views/liswork/micro/labresult/components/record.vue
Normal file
59
src/views/liswork/micro/labresult/components/record.vue
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<CustomTable :data="tableData" :columns="columns" :config="tableConfig"></CustomTable>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import CustomTable from "@/components/elTable/index.vue"
|
||||||
|
import { getComLog } from "@/api/liswork/micro/index"
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
labPat: {
|
||||||
|
type: Object,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
//结果主键
|
||||||
|
labPatKey: {
|
||||||
|
type: Object,
|
||||||
|
default: () => { }
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const { labPat, labPatKey } = toRefs(props);
|
||||||
|
|
||||||
|
|
||||||
|
const tableData = ref([])
|
||||||
|
const columns = ref([
|
||||||
|
{ label: "操作时间", prop: "rzdt", align: 'center', visible: true },
|
||||||
|
{ label: "操作", prop: "rzbz", align: 'center', visible: true },
|
||||||
|
{ label: "操作人", prop: "yhdh", align: 'center', visible: true },
|
||||||
|
{ label: "操作电脑", prop: "dnmc", align: 'center', visible: true },
|
||||||
|
{ label: "操作记录", prop: "rznr", align: 'center', visible: true },
|
||||||
|
{ label: "备注", prop: "bz", align: 'center', visible: true },
|
||||||
|
])
|
||||||
|
const tableConfig = ref({
|
||||||
|
border: true,
|
||||||
|
height: '78vh'
|
||||||
|
})
|
||||||
|
|
||||||
|
const getRecordList = () => {
|
||||||
|
const data = {
|
||||||
|
jyrq: labPat.value.jyrq,
|
||||||
|
yq: labPat.value.yq,
|
||||||
|
ybh: labPat.value.ybh,
|
||||||
|
}
|
||||||
|
getComLog(data).then((res: any) => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
tableData.value = res.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
watch(() => props.labPat, (newValue) => {
|
||||||
|
// getRecordList()
|
||||||
|
}, { immediate: true })
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
||||||
87
src/views/liswork/micro/labresult/components/zbReport.vue
Normal file
87
src/views/liswork/micro/labresult/components/zbReport.vue
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<CustomTable :data="tableData" :columns="columns" :config="tableConfig" :enable-column-drag="true"
|
||||||
|
@column-drag-end="handleColumnDragEnd">
|
||||||
|
</CustomTable>
|
||||||
|
|
||||||
|
<el-tabs v-model="activeName" type="card" class="demo-tabs">
|
||||||
|
<el-tab-pane label="药敏结果" name="first">
|
||||||
|
<CustomTable :data="ymTableData" :columns="ymColumns" :config="ymTableConfig" :enable-column-drag="true"
|
||||||
|
@column-drag-end="ymHandleColumnDragEnd">
|
||||||
|
</CustomTable>
|
||||||
|
<div class="btns">
|
||||||
|
<el-button type="primary" plain :size="autoSize">更换抗生素组</el-button>
|
||||||
|
<el-button type="primary" plain :size="autoSize">添加抗生素组</el-button>
|
||||||
|
<span>{{ ymTableData.length }}项</span>
|
||||||
|
</div>
|
||||||
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="专家评语" name="second">
|
||||||
|
<el-input v-model="textarea" style="width: 100%" :rows="20" type="textarea" />
|
||||||
|
</el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import CustomTable from "@/components/elTable/index.vue";
|
||||||
|
import { classCom } from "@/utils/classCom";
|
||||||
|
const autoSize = classCom.useAutoSize();
|
||||||
|
const activeName = ref('first')
|
||||||
|
const textarea = ref('')
|
||||||
|
const tableData = ref([]);
|
||||||
|
|
||||||
|
const columns = ref([
|
||||||
|
{ label: "细菌/结果", prop: "instrid", align: 'center', visible: true },
|
||||||
|
{ label: "菌落计数", prop: "instrid", align: 'center', visible: true },
|
||||||
|
{ label: "检验结果", prop: "instrid", align: 'center', visible: true },
|
||||||
|
{ label: "阴阳性", prop: "instrid", align: 'center', visible: true },
|
||||||
|
{ label: "鉴定率", prop: "instrid", align: 'center', visible: true },
|
||||||
|
{ label: "危急值", prop: "instrid", align: 'center', visible: true },
|
||||||
|
{ label: "菌属", prop: "instrid", align: 'center', visible: true },
|
||||||
|
])
|
||||||
|
|
||||||
|
const tableConfig = ref({
|
||||||
|
height: '28vh',
|
||||||
|
border: true,
|
||||||
|
highlightCurrentRow: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
const handleColumnDragEnd = (data: any) => {
|
||||||
|
columns.value = data.columns;
|
||||||
|
}
|
||||||
|
|
||||||
|
const ymTableData = ref([]);
|
||||||
|
|
||||||
|
const ymColumns = ref([
|
||||||
|
{ label: "抗生素", prop: "instrid", align: 'center', visible: true },
|
||||||
|
{ label: "Mic", prop: "instrid", align: 'center', visible: true },
|
||||||
|
{ label: "KB", prop: "instrid", align: 'center', visible: true },
|
||||||
|
{ label: "结果", prop: "instrid", align: 'center', visible: true },
|
||||||
|
{ label: "结果标志", prop: "instrid", align: 'center', visible: true },
|
||||||
|
{ label: "分组", prop: "instrid", align: 'center', visible: true },
|
||||||
|
{ label: "专家值", prop: "instrid", align: 'center', visible: true },
|
||||||
|
{ label: "折点", prop: "instrid", align: 'center', visible: true },
|
||||||
|
{ label: "引用说明", prop: "instrid", align: 'center', visible: true },
|
||||||
|
])
|
||||||
|
|
||||||
|
const ymTableConfig = ref({
|
||||||
|
height: '43vh',
|
||||||
|
border: true,
|
||||||
|
highlightCurrentRow: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
const ymHandleColumnDragEnd = (data: any) => {
|
||||||
|
ymColumns.value = data.columns;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.btns {
|
||||||
|
margin-top: .625rem;
|
||||||
|
|
||||||
|
span {
|
||||||
|
color: #1f6dd3;
|
||||||
|
margin-left: 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
59
src/views/liswork/micro/labresult/index.vue
Normal file
59
src/views/liswork/micro/labresult/index.vue
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<el-tabs v-model="activeName" type="card" class="demo-tabs">
|
||||||
|
<el-tab-pane label="鉴定(终报)结果" name="first">
|
||||||
|
<ZbReport />
|
||||||
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="初级和二级报告" name="second">
|
||||||
|
<CbReport />
|
||||||
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="培养基接种" name="third">
|
||||||
|
<Byj />
|
||||||
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="操作记录" name="fourth">
|
||||||
|
<Record :labPat="labPat" :labPatKey="labPatKey" />
|
||||||
|
</el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import ZbReport from './components/zbReport.vue';
|
||||||
|
import CbReport from './components/cbReport.vue';
|
||||||
|
import Byj from './components/byj.vue';
|
||||||
|
import Record from './components/record.vue';
|
||||||
|
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
labPat: {
|
||||||
|
type: Object,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
//结果主键
|
||||||
|
labPatKey: {
|
||||||
|
type: Object,
|
||||||
|
default: () => { }
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const { labPat, labPatKey } = toRefs(props);
|
||||||
|
const activeName = ref('first')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
:deep(.el-tabs--card>.el-tabs__header) {
|
||||||
|
height: 30px !important;
|
||||||
|
margin-bottom: 0px;
|
||||||
|
|
||||||
|
.el-tabs__item {
|
||||||
|
height: 30px !important;
|
||||||
|
|
||||||
|
&.is-active {
|
||||||
|
border-bottom: 2px solid #409eff !important;
|
||||||
|
background-color: #e9f1fb;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Loading…
x
Reference in New Issue
Block a user