From f6f4efa0c42ac7001b1d9f6a1405364510191fc9 Mon Sep 17 00:00:00 2001 From: wyuu Date: Wed, 19 Nov 2025 18:07:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E7=94=9F=E7=89=A9=E6=A0=B7=E6=9C=AC?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/liswork/micro/index.ts | 36 ++++ src/api/liswork/work/LisWork.ts | 9 - src/views/liswork/micro/index.vue | 167 +++++++++++------- src/views/liswork/micro/labpat.vue | 14 +- src/views/liswork/micro/labpatlist.vue | 17 +- .../micro/labresult/components/byj.vue | 11 ++ .../micro/labresult/components/cbReport.vue | 11 ++ .../micro/labresult/components/record.vue | 59 +++++++ .../micro/labresult/components/zbReport.vue | 87 +++++++++ src/views/liswork/micro/labresult/index.vue | 59 +++++++ 10 files changed, 394 insertions(+), 76 deletions(-) create mode 100644 src/api/liswork/micro/index.ts create mode 100644 src/views/liswork/micro/labresult/components/byj.vue create mode 100644 src/views/liswork/micro/labresult/components/cbReport.vue create mode 100644 src/views/liswork/micro/labresult/components/record.vue create mode 100644 src/views/liswork/micro/labresult/components/zbReport.vue create mode 100644 src/views/liswork/micro/labresult/index.vue diff --git a/src/api/liswork/micro/index.ts b/src/api/liswork/micro/index.ts new file mode 100644 index 0000000..0fce896 --- /dev/null +++ b/src/api/liswork/micro/index.ts @@ -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 + }) +} \ No newline at end of file diff --git a/src/api/liswork/work/LisWork.ts b/src/api/liswork/work/LisWork.ts index 0a6209f..4b35c5c 100644 --- a/src/api/liswork/work/LisWork.ts +++ b/src/api/liswork/work/LisWork.ts @@ -9,15 +9,6 @@ export function queryLabPatList(query?: Object) { params: query }) } -// 查询微生物数据列表 -export function wswsampleList(query?: Object) { - return request({ - url: '/lisworkgerm/wswsamplelist', - method: 'get', - params: query - }) -} - // 查询数据 export function queryLabPat(query?: Object) { return request({ diff --git a/src/views/liswork/micro/index.vue b/src/views/liswork/micro/index.vue index e0aa049..493ee21 100644 --- a/src/views/liswork/micro/index.vue +++ b/src/views/liswork/micro/index.vue @@ -8,13 +8,12 @@ - + - @@ -50,9 +49,7 @@ :userList="userList" @changeStatus="changeStatus" @batchShow="handleBatchScan" /> - + @@ -78,13 +75,28 @@ 列表翻页 +
+ + 所有 + 近30天 + 近60天 + 近90天 + 近7天 + 此日 -> + + +
-
样本总数:{{ ybs }}
+ +
@@ -115,11 +127,12 @@ import tabView from '@/components/tabViews/index.vue'; // @ts-ignore import iFrame from "@/components/iFrame/index.vue"; // @ts-ignore -// import LabResult from './components/labresult.vue'; +import LabResult from './labresult/index.vue'; import LabPatList from './labpatlist.vue'; // @ts-ignore 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 { ElMessage, ElMessageBox } from "element-plus"; import BatchCode from '../work/components/batchCode.vue'; @@ -129,19 +142,22 @@ import { classCom } from '@/utils/classCom'; import PatientQueryForm from '@/components/selectSearch/index.vue' // @ts-ignore import { listUser } from '@/api/system/user.js' - +import dayjs from 'dayjs' const aotuSize = classCom.useAutoSize(); const previewShow = ref(false); const lbFlag = ref(false); const queryParams = ref({ - jyrq: '2025-08-20', + jyrq: dayjs().format('YYYY-MM-DD'), yq: 'PHOENI', - ybh: '1', instrGroup: '04', problemId: 0, days: 90, + pageSize: 600, + pageNum: 1 }) + +const total = ref(0) const ybs = ref(0) const ws = ref(0) const wjs = ref(0) @@ -321,32 +337,33 @@ const resultsHandle = (flag: boolean) => { } fetchLabResults() } - +const labInfo: any = ref({}) const highlightRowIndex = ref(-1) const labPatListRef = ref() //样本列表点击切换样本信息,同步载入左边样本信息表单和中间结果表单 const selectJob = (job: any) => { + labInfo.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(); 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([]) //载入样本结果表单(中间labresult.vue组件) 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; }) } //载入样本编辑表单(左边labpat.vue组件) 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; }) } @@ -356,20 +373,20 @@ const lastRow: any = ref({}) // 批量扫码ybh同步样本编号 const ybhChangeTb = (val: string) => { console.log('val==>', val); - queryParams.value.ybh = val + labInfo.value.ybh = val handleQuery(); } const handleQuery = () => { if (!labPatList.value.length) return - if (!queryParams.value.ybh) { + if (!labInfo.value.ybh) { highlightRowIndex.value = -1; ElMessage.warning('请输入样本编号') - queryParams.value.ybh = lastRow.value.ybh + labInfo.value.ybh = lastRow.value.ybh 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] if (matchedIndex !== -1) { @@ -388,7 +405,8 @@ const handleQuery = () => { // 创建新样本 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) { labPat.value = response.data; labPat.value.id = `temp_${Date.now()}_${Math.random().toString(36).substr(2, 8)}`; @@ -402,15 +420,15 @@ const handleCreate = () => { // 删除样本 const delSampleHd = () => { - if (lastRow.value.jgbz == '2') return ElMessage.warning('标本已审核,不能删除!') + if (labInfo.value.jgbz == '2') return ElMessage.warning('标本已审核,不能删除!') const data = { - jyrq: lastRow.value.jyrq, - yq: lastRow.value.yq.trim(), - ybh: lastRow.value.ybh, + jyrq: labInfo.value.jyrq, + yq: labInfo.value.yq.trim(), + ybh: labInfo.value.ybh, } ElMessageBox.confirm( - `确定删除当前${lastRow.value.ybh}号标本?`, + `确定删除当前${labInfo.value.ybh}号标本?`, '提示', { confirmButtonText: '确定', @@ -422,7 +440,7 @@ const delSampleHd = () => { delSample(data).then((res: any) => { if (res.code == 0) { 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() // 删除跳当前页面下一个样本 // handleNext() @@ -443,8 +461,8 @@ const delSampleHd = () => { // 上一个样本 const handlePrev = () => { if (!lbFlag.value) { - const ybh = getPreviousNumber(queryParams.value.ybh) as string; - queryParams.value.ybh = ybh; + const ybh = getPreviousNumber(labInfo.value.ybh) as string; + labInfo.value.ybh = ybh; const index = labPatList.value.findIndex((item: any) => item.ybh == ybh) if (index !== -1) { highlightRowIndex.value = index; @@ -468,8 +486,8 @@ const handlePrev = () => { // 下一个样本 const handleNext = () => { if (!lbFlag.value) { - const ybh = getNextNumber(queryParams.value.ybh) as string; - queryParams.value.ybh = ybh; + const ybh = getNextNumber(labInfo.value.ybh) as string; + labInfo.value.ybh = ybh; const index = labPatList.value.findIndex((item: any) => item.ybh == ybh) if (index !== -1) { highlightRowIndex.value = index; @@ -486,14 +504,14 @@ const handleNext = () => { labPatListRef.value.setCurrentRow(row); selectJob(row); } else { - queryParams.value.ybh = getNextNumber(queryParams.value.ybh) as string; + labInfo.value.ybh = getNextNumber(labInfo.value.ybh) as string; handleCreate(); } } } // 最后一个样本 const handleLast = () => { - queryParams.value.ybh = labPatList.value[labPatList.value.length - 1].ybh; + labInfo.value.ybh = labPatList.value[labPatList.value.length - 1].ybh; handleNext(); } const batchRef = ref() @@ -503,7 +521,12 @@ const handleBatchScan = () => { } // 改变样本列表中样本状态 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) { labPat.value = response.data; 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() } +const handleSizeChange = (size: number) => { + queryParams.value.pageSize = size + fetchlabPatList() +} +const handleCurrentChange = (page: number) => { + queryParams.value.pageNum = page + fetchlabPatList() +} + //载入样本列表(右边labpatlist.vue组件) const fetchlabPatList = () => { - if (!queryParams.value.jyrq) { - queryParams.value.jyrq = lastRow.value.jyrq - return ElMessage.warning('请选择检验日期') - } + // if (!queryParams.value.jyrq) { + // queryParams.value.jyrq = lastRow.value.jyrq + // return ElMessage.warning('请选择检验日期') + // } loading.value = true; - wswsampleList(queryParams.value).then((res: any) => { - if (res.code == 0) { - labPatList.value = res.data; - originalLabPatList.value = res.data + wswsamplelistpage(queryParams.value).then((res: any) => { + if (res.code == 200) { + labPatList.value = res.rows; + originalLabPatList.value = res.rows; + total.value = res.total; loading.value = false; - if (res.data.length > 0) { + if (res.rows.length > 0) { highlightRowIndex.value = 0; - setTimeout(() => { labPatListRef.value.setCurrentRow(res.data[0]); }, 100) - selectJob(res.data[0]) + setTimeout(() => { labPatListRef.value.setCurrentRow(res.rows[0]); }, 100) + selectJob(res.rows[0]) getTotals() } else { ybs.value = 0 @@ -642,13 +675,22 @@ onMounted(async () => { padding: .5rem; 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 { height: calc(90vh - 3.4rem); + + } .compact-form { @@ -676,14 +718,15 @@ onMounted(async () => { .button-group { - display: flex; - justify-content: space-around; - font-family: SourceHanSansCN, SourceHanSansCN; - font-weight: 500; - font-size: 1rem; - color: #28BDBB; - // margin-top: 20px; - + // display: flex; + // justify-content: space-around; + // font-family: SourceHanSansCN, SourceHanSansCN; + // font-weight: 500; + // font-size: 1rem; + // color: #28BDBB; + width: 100%; + margin-top: .1875rem; + text-align: right; .text2 { diff --git a/src/views/liswork/micro/labpat.vue b/src/views/liswork/micro/labpat.vue index 24acc83..e13cf5b 100644 --- a/src/views/liswork/micro/labpat.vue +++ b/src/views/liswork/micro/labpat.vue @@ -75,6 +75,7 @@ import YhVerification from '../work/components/yhVerification.vue'; import emitter from '@/utils/mitt'; import { classCom } from '@/utils/classCom'; +import Labpat from '../work/components/labpat.vue'; const aotuSize = classCom.useAutoSize(); @@ -245,7 +246,14 @@ const saveLabPat = async (changedField: any) => { }) } else { 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 (sqhFlag.value) { sqhValue.value = '' @@ -476,11 +484,11 @@ onMounted(() => { } .cb_color { - color: rgba(255, 165, 0, 0.25); + color: rgba(0, 128, 0, 0.25); } .eb_color { - color: rgba(0, 128, 0, 0.25); + color: rgba(255, 165, 0, 0.25); } .sd_color { diff --git a/src/views/liswork/micro/labpatlist.vue b/src/views/liswork/micro/labpatlist.vue index 94a4bbb..0d34137 100644 --- a/src/views/liswork/micro/labpatlist.vue +++ b/src/views/liswork/micro/labpatlist.vue @@ -1,7 +1,7 @@