This commit is contained in:
parent
d8197cfb4d
commit
030a068b66
@ -155,3 +155,11 @@ export function saveQcvalMonth(data?: Object) {
|
||||
data
|
||||
})
|
||||
}
|
||||
//复制靶值
|
||||
export function copyQcSample(data?: Object) {
|
||||
return request({
|
||||
url: '/qc/copyQcSample',
|
||||
method: 'get',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
@ -3,15 +3,16 @@
|
||||
<div class="tips">检验科条码打印 科室:{{ formatDict(queryParams.ksdh, 'DP') }} 登录人:{{ nickName }}</div>
|
||||
<div ref="compactForm">
|
||||
<el-row :gutter="10" class="compact-form" v-show="showSearch">
|
||||
<el-form :model="queryParams" ref="queryRef" :inline="true" :size="aotuSize" :rules="queryRules">
|
||||
<el-form :model="queryParams" ref="queryRef" :inline="true" :size="aotuSize" :rules="queryRules"
|
||||
label-width="80px">
|
||||
<el-form-item label="开始时间:" prop="st">
|
||||
<el-date-picker v-model="queryParams.st" type="date" format="YYYY-MM-DD HH:mm:ss"
|
||||
value-format="YYYY-MM-DD HH:mm:ss" @change="handletime" />
|
||||
<el-date-picker v-model="queryParams.st" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
|
||||
@change="handletime" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="结束时间:" prop="et">
|
||||
<el-date-picker v-model="queryParams.et" type="date" format="YYYY-MM-DD HH:mm:ss"
|
||||
value-format="YYYY-MM-DD HH:mm:ss" @change="handletime" />
|
||||
<el-date-picker v-model="queryParams.et" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
|
||||
@change="handletime" />
|
||||
</el-form-item>
|
||||
|
||||
<!-- <el-form-item label="医疗机构:" prop="yljg">
|
||||
@ -82,7 +83,8 @@
|
||||
<svg-icon v-if="row.zt != 1" icon-class="lvgou" />
|
||||
</template>
|
||||
<template #jzbz="{ row }">
|
||||
<div style="color: #f00;"> {{ row.jzbz == '1' ? '急' : '' }}</div>
|
||||
<div style="color: #f00;" v-if="row.jzbz == '1'">急</div>
|
||||
<div style="color: transparent;" v-else>无</div>
|
||||
</template>
|
||||
<template #jjzt="{ row }">
|
||||
{{ row.jjzt == '1' ? '计价' : '无' }}
|
||||
@ -180,7 +182,6 @@ import iFrame from "@/components/iFrame/index.vue";
|
||||
import { comDict } from '@/utils/dict'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import dayjs from 'dayjs';
|
||||
import { log } from 'vxe-pc-ui';
|
||||
const router = useRouter()
|
||||
const route = useRoute()
|
||||
const userStore = useUserStore()
|
||||
@ -209,10 +210,10 @@ interface QueryParams {
|
||||
}
|
||||
// 提交表单数据
|
||||
const queryParams = reactive<QueryParams>({
|
||||
st: '2025-07-18 00:00:00',
|
||||
et: '2025-07-18 23:59:59',
|
||||
st: '2025-07-18',
|
||||
et: '2025-07-18',
|
||||
yljg: '1',
|
||||
zt: '',
|
||||
zt: '2',
|
||||
queryType: '',
|
||||
queryValue: '',
|
||||
ksdh: '',
|
||||
@ -601,13 +602,13 @@ const timeDate = () => {
|
||||
// 计算前6天的日期(当天 + 前6天 = 7天)
|
||||
const startOfWeek = today.subtract(6, 'day');
|
||||
|
||||
queryParams.st = route.query.startdate ? String(route.query.startdate) : startOfWeek.format('YYYY-MM-DD HH:mm:ss');
|
||||
queryParams.et = route.query.endate ? String(route.query.endate) : today.format('YYYY-MM-DD HH:mm:ss');
|
||||
queryParams.st = route.query.startdate ? String(route.query.startdate) : startOfWeek.format('YYYY-MM-DD');
|
||||
queryParams.et = route.query.endate ? String(route.query.endate) : today.format('YYYY-MM-DD');
|
||||
|
||||
}
|
||||
|
||||
onMounted(async () => {
|
||||
// timeDate()
|
||||
timeDate()
|
||||
|
||||
queryParams.ksdh = (route.query.deptcode as string) ? (route.query.deptcode as string) : '';
|
||||
queryParams.userid = (route.query.userid as string) ? (route.query.userid as string) : '';
|
||||
@ -653,7 +654,7 @@ const formatDict = (v: string, dictType: string) => {
|
||||
const handletime = (val: Array<string>) => {
|
||||
// 校验日期格式
|
||||
const dayDiff = getDayDiff(queryParams.st, queryParams.et);
|
||||
if (dayDiff === -1) return ElMessage.warning('请选择有效的日期范围');
|
||||
if (dayDiff === -1 || dayDiff === -2) return ElMessage.warning('请选择有效的日期范围');
|
||||
//校验是否超过7天
|
||||
// if (dayDiff > 7) return ElMessage.warning('查询时间范围不能超过7天,请重新选择');
|
||||
}
|
||||
@ -679,13 +680,12 @@ const getDayDiff = (start: string, end: string): number => {
|
||||
const startTime = new Date(start).getTime();
|
||||
const endTime = new Date(end).getTime();
|
||||
|
||||
// 校验日期有效性
|
||||
if (isNaN(startTime) || isNaN(endTime)) {
|
||||
return -1; // 无效日期
|
||||
return -2; // -2 表示日期无效
|
||||
}
|
||||
|
||||
// 计算毫秒差 → 转换为天数(向上取整,避免因时分秒导致的误差)
|
||||
return Math.ceil((endTime - startTime) / (24 * 60 * 60 * 1000));
|
||||
const dayDiff = Math.ceil((endTime - startTime) / (24 * 60 * 60 * 1000));
|
||||
return dayDiff < 0 ? -1 : dayDiff; // -1 表示结束时间早于开始时间,>=0 为正常天数
|
||||
};
|
||||
// 查询申请单
|
||||
const getList = () => {
|
||||
@ -706,12 +706,8 @@ const getList = () => {
|
||||
|
||||
// 校验日期格式
|
||||
const dayDiff = getDayDiff(queryParams.st, queryParams.et);
|
||||
if (dayDiff === -1) return ElMessage.warning('请选择有效的日期范围');
|
||||
|
||||
|
||||
//校验是否超过7天
|
||||
// if (dayDiff > 7) return ElMessage.warning('查询时间范围不能超过7天,请重新选择');
|
||||
|
||||
if (dayDiff === -1 || dayDiff === -2) return ElMessage.warning('请选择有效的日期范围');
|
||||
|
||||
loading.value = true;
|
||||
fetchCodeList(data).then((response: any) => {
|
||||
|
||||
@ -5,18 +5,20 @@
|
||||
<el-row :gutter="5" class="compact-form" v-show="showSearch">
|
||||
<el-form :model="queryParams" ref="queryRef" label-width="100px" :rules="queryRules" style="width: 100%;">
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="开始时间:" prop="st">
|
||||
<el-date-picker v-model="queryParams.st" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
|
||||
@change="handletime" />
|
||||
@change="handletime" style="width: 100%" />
|
||||
</el-form-item>
|
||||
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<el-form-item label="结束时间:" prop="et">
|
||||
<el-date-picker v-model="queryParams.et" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
|
||||
@change="handletime" />
|
||||
@change="handletime" style="width: 100%" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="打印状态:" prop="dybz">
|
||||
<el-select v-model="queryParams.dybz" placeholder="请选择" clearable @change="handleQuery">
|
||||
<el-option label="已打印" value="1" />
|
||||
@ -24,13 +26,13 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="科室:" prop="ksdh">
|
||||
<SelectTable v-model:data="queryParams.ksdh" :fields="ksdhFields" :tableData="dictData.DP || []"
|
||||
label="label" value="value" objKey="value" placeholder="请选择科室" @getDataValue="handleQuery" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="病人类型:" prop="brlyname">
|
||||
<SelectTable v-model:data="queryParams.brlyname" :fields="brlxFields" :tableData="dictData.PT || []"
|
||||
label="label" value="label" objKey="label" placeholder="请选择" @getDataValue="handleQuery" />
|
||||
@ -39,32 +41,32 @@
|
||||
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-col :span="4">
|
||||
<el-form-item label-width="50px">
|
||||
<el-checkbox v-model="queryParams.alarmflag" label="仅危急值" @change="alarmHandle" size="large" />
|
||||
<el-checkbox v-model="queryParams.jzbz" label="仅急诊" @change="jzbzHandle" size="large" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="姓名:" prop="brxm">
|
||||
<el-input v-model="queryParams.brxm" clearable placeholder="请输入姓名" @keyup.enter="handleQuery"
|
||||
@clear="handleQuery" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="病人号:" prop="brdh">
|
||||
<el-input v-model="queryParams.brdh" clearable placeholder="请输入病人号" @keyup.enter="handleQuery"
|
||||
@clear="handleQuery" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-col :span="4">
|
||||
<el-form-item label="床号:" prop="ch">
|
||||
<el-input v-model="queryParams.ch" clearable placeholder="请输入床号" @keyup.enter="handleQuery"
|
||||
@clear="handleQuery" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="3">
|
||||
<el-form-item label-width="50px">
|
||||
<el-form-item>
|
||||
<el-button icon="search" type="primary" @click="handleQuery">
|
||||
搜索
|
||||
</el-button>
|
||||
@ -251,12 +253,9 @@ const queryRules = ref({
|
||||
})
|
||||
|
||||
const handletime = (val: Array<string>) => {
|
||||
// console.log('时间', val);
|
||||
// 校验日期格式
|
||||
const dayDiff = getDayDiff(queryParams.st, queryParams.et);
|
||||
if (dayDiff === -1) return ElMessage.warning('请选择有效的日期范围');
|
||||
//校验是否超过7天
|
||||
// if (dayDiff > 7) return ElMessage.warning('查询时间范围不能超过7天,请重新选择');
|
||||
if (dayDiff === -1 || dayDiff === -2) return ElMessage.warning('请选择有效的日期范围');
|
||||
}
|
||||
|
||||
// 时间线数据
|
||||
@ -886,13 +885,12 @@ const getDayDiff = (start: string, end: string): number => {
|
||||
const startTime = new Date(start).getTime();
|
||||
const endTime = new Date(end).getTime();
|
||||
|
||||
// 校验日期有效性
|
||||
if (isNaN(startTime) || isNaN(endTime)) {
|
||||
return -1; // 无效日期
|
||||
return -2; // -2 表示日期无效
|
||||
}
|
||||
|
||||
// 计算毫秒差 → 转换为天数(向上取整,避免因时分秒导致的误差)
|
||||
return Math.ceil((endTime - startTime) / (24 * 60 * 60 * 1000));
|
||||
const dayDiff = Math.ceil((endTime - startTime) / (24 * 60 * 60 * 1000));
|
||||
return dayDiff < 0 ? -1 : dayDiff; // -1 表示结束时间早于开始时间,>=0 为正常天数
|
||||
};
|
||||
const getList = () => {
|
||||
|
||||
@ -916,10 +914,7 @@ const getList = () => {
|
||||
if (!data.userid) return ElMessage.error('用户userid不能为空');
|
||||
// 校验日期格式
|
||||
const dayDiff = getDayDiff(queryParams.st, queryParams.et);
|
||||
if (dayDiff === -1) return ElMessage.warning('请选择有效的日期范围');
|
||||
|
||||
//校验是否超过7天
|
||||
// if (dayDiff > 7) return ElMessage.warning('查询时间范围不能超过7天,请重新选择');
|
||||
if (dayDiff === -1 || dayDiff === -2) return ElMessage.warning('请选择有效的日期范围');
|
||||
|
||||
loading.value = true
|
||||
reportList(data).then((res: any) => {
|
||||
|
||||
@ -46,10 +46,10 @@
|
||||
<el-input v-model="row.zkbz" class="full-width-input" />
|
||||
</template>
|
||||
<template #sd="{ row }">
|
||||
<el-input v-model="row.sd" class="full-width-input" />
|
||||
<el-input v-model="row.sd" class="full-width-input" @change="handleSdEnter(row)" />
|
||||
</template>
|
||||
<template #cv="{ row }">
|
||||
<el-input v-model="row.cv" class="full-width-input" />
|
||||
<el-input v-model="row.cv" class="full-width-input" @change="handleCvEnter(row)" />
|
||||
</template>
|
||||
<template #bc="{ row }">
|
||||
<el-input v-model="row.bc" class="full-width-input" />
|
||||
@ -157,21 +157,63 @@
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog title="复制靶值" v-model="copyVisible" width="25vw" :close-on-click-modal="false" :draggable="true">
|
||||
<el-form :model="copyFormData" ref="copyQueryRef" :rules="copyRules" label-position="right" label-width="auto">
|
||||
<el-form-item label="仪器" prop="yq">
|
||||
<YQSelectTable v-model:data="copyFormData.yq" width="100%" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="批号" prop="newzkpph">
|
||||
<el-input v-model="copyFormData.newzkpph" />
|
||||
</el-form-item>
|
||||
<el-form-item label="水平" prop="newzkph">
|
||||
<el-select v-model="copyFormData.newzkph" placeholder="请选择">
|
||||
<el-option label="水平1" value="1" />
|
||||
<el-option label="水平2" value="2" />
|
||||
<el-option label="水平3" value="3" />
|
||||
<el-option label="水平4" value="4" />
|
||||
<el-option label="水平5" value="5" />
|
||||
<el-option label="水平6" value="6" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="新启用日期" prop="newstartda">
|
||||
<el-date-picker v-model="copyFormData.newstartda" type="date" value-format="YYYY-MM-DD" />
|
||||
<el-checkbox v-model="copyFormData.newdtflag" label="复制日期" true-value="1" false-value="0" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" @click="subHandle">确定</el-button>
|
||||
<el-button @click="closeCopyDialog">取消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { queryBatch, queryValXmdh, queryBatchXm, delBatchno, addBatchno, updateBatchno, saveBtQcSample } from '@/api/liswork/qualityControl'
|
||||
import { queryBatch, queryValXmdh, queryBatchXm, delBatchno, addBatchno, updateBatchno, saveBtQcSample, copyQcSample } from '@/api/liswork/qualityControl'
|
||||
import { templateRef } from '@vueuse/core'
|
||||
import { formatDict, getDictData, dictData } from '@/hooks';
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { log } from 'vxe-pc-ui';
|
||||
import YQSelectTable from '@/components/SelectTable/YQSelectTable/index.vue';
|
||||
import dayjs from 'dayjs';
|
||||
|
||||
const yq = defineModel<string>()
|
||||
const title = ref('新增批号')
|
||||
const visible = ref(false)
|
||||
const selectedRow = ref(null)
|
||||
const selectedRow: any = ref(null)
|
||||
const queryRef = templateRef('queryRef')
|
||||
const copyVisible = ref(false)
|
||||
const copyFormData = ref({
|
||||
yq: '',
|
||||
newzkpph: '',
|
||||
newzkph: '',
|
||||
newstartda: dayjs().format('YYYY-MM-DD'),
|
||||
newdtflag: '0'
|
||||
})
|
||||
const copyRules = ref({})
|
||||
const formData = ref({
|
||||
yq: yq,
|
||||
zkpph: '',
|
||||
@ -252,6 +294,7 @@ const columnDragEnd = (data: any) => {
|
||||
}
|
||||
|
||||
const rowClick = (row: any) => {
|
||||
topTableRef.value.setCurrentRow(row)
|
||||
selectedRow.value = row
|
||||
const data = {
|
||||
xmdh: row.xmdh,
|
||||
@ -349,6 +392,18 @@ const batchClick = (row: any) => {
|
||||
batchInfo.value = row
|
||||
getXmList(row)
|
||||
}
|
||||
|
||||
const handleSdEnter = (row: any) => {
|
||||
// cv = sd * 100 / zkbz
|
||||
row.cv = row.sd * 100 / row.zkbz
|
||||
}
|
||||
|
||||
const handleCvEnter = (row: any) => {
|
||||
// sd = cv * zkbz / 100
|
||||
row.sd = row.cv * row.zkbz / 100
|
||||
}
|
||||
|
||||
const leftTableRef = templateRef('leftTableRef')
|
||||
const getBatchList = () => {
|
||||
batchInfo.value = null
|
||||
loading.value = true
|
||||
@ -357,13 +412,17 @@ const getBatchList = () => {
|
||||
tableData.value = res.data || []
|
||||
if (tableData.value.length) {
|
||||
getXmList(tableData.value[0])
|
||||
leftTableRef.value.setCurrentRow(tableData.value[0])
|
||||
} else {
|
||||
topTableData.value = []
|
||||
bottomTableData.value = []
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const topTableRef = templateRef('topTableRef')
|
||||
const getXmList = (row: any) => {
|
||||
topTableRef.value.setCurrentRow(row)
|
||||
queryBatchXm({ yq: yq.value, zkpph: row.zkpph, zkph: row.zkph }).then((res: any) => {
|
||||
res.data.forEach((item: any) => { item.show = false })
|
||||
topTableData.value = res.data
|
||||
@ -373,6 +432,41 @@ const getXmList = (row: any) => {
|
||||
})
|
||||
}
|
||||
const copyBzHandle = () => {
|
||||
if (!selectedRow.value) return ElMessage.warning('请选择要复制的行')
|
||||
copyFormData.value.yq = selectedRow.value.yq.trim()
|
||||
copyFormData.value.newzkpph = selectedRow.value.zkpph
|
||||
copyFormData.value.newzkph = selectedRow.value.zkph
|
||||
copyVisible.value = true
|
||||
}
|
||||
|
||||
const subHandle = () => {
|
||||
const data = {
|
||||
yq: selectedRow.value.yq,
|
||||
zkpph: selectedRow.value.zkpph,
|
||||
zkph: selectedRow.value.zkph,
|
||||
newyq: copyFormData.value.yq,
|
||||
newzkpph: copyFormData.value.newzkpph,
|
||||
newzkph: selectedRow.value.zkph,
|
||||
newstartda: copyFormData.value.newstartda,
|
||||
newdtflag: copyFormData.value.newdtflag
|
||||
}
|
||||
copyQcSample(data).then((res: any) => {
|
||||
if (res.code == 0) {
|
||||
ElMessage.success('复制成功')
|
||||
closeCopyDialog()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const closeCopyDialog = () => {
|
||||
copyFormData.value = {
|
||||
yq: '',
|
||||
newzkpph: '',
|
||||
newzkph: '',
|
||||
newstartda: dayjs().format('YYYY-MM-DD'),
|
||||
newdtflag: ''
|
||||
}
|
||||
copyVisible.value = false
|
||||
}
|
||||
const addBzHandle = () => {
|
||||
topTableData.value.forEach((item: any) => {
|
||||
@ -391,7 +485,8 @@ const delBzHandle = (row: any) => {
|
||||
})
|
||||
}
|
||||
const handleSave = () => {
|
||||
console.log(topTableData.value)
|
||||
const flag = topTableData.value.filter((item: any) => item.zkbz).every((item: any) => item.zkbz && item.sd && item.cv && item.ksrq)
|
||||
if (!flag) return ElMessage.warning('请填写完整信息')
|
||||
saveBtQcSample(topTableData.value).then((res: any) => {
|
||||
if (res.code == 0) {
|
||||
ElMessage.success('保存成功')
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user