检验项目优化

This commit is contained in:
wyuu 2025-12-08 17:49:43 +08:00
parent 8d98e4c8c3
commit 61e1af8c97
11 changed files with 335 additions and 284 deletions

View File

@ -124,7 +124,7 @@ aside {
//main-container全局样式 //main-container全局样式
.app-container { .app-container {
padding: 10px 10px 0 10px; padding: 10px 10px 0 10px;
min-height: calc(100vh - 84px); min-height: calc(100vh - 5.25rem);
} }
.components-container { .components-container {
@ -309,3 +309,28 @@ aside {
margin-right: 0.2rem; margin-right: 0.2rem;
} }
} }
.search-form {
:deep(.el-form-item__label) {
padding: 0 !important;
}
:deep(.el-form-item) {
margin-right: 0;
}
.el-form-item--default {
margin-bottom: .3125rem !important;
}
.el-form-item--small {
margin-bottom: .3125rem !important;
}
}
.page-box {
margin-top: 10px;
float: right;
}

View File

@ -19,11 +19,12 @@ const props = withDefaults(defineProps<{
size?: string, size?: string,
clearable?: boolean, clearable?: boolean,
instrGroup?: string | number, //部门组代号 instrGroup?: string | number, //部门组代号
data: string data: string | undefined
}>(), { }>(), {
width: '100%', width: '100%',
size: 'default', size: 'default',
clearable: false clearable: false,
data: ''
}) })
const instrOptions = ref<Array<{ yq: string; yqmc: string }>>([]); const instrOptions = ref<Array<{ yq: string; yqmc: string }>>([]);

View File

@ -55,12 +55,13 @@ const props = withDefaults(defineProps<Props>(), {
placeholder: "请选择", placeholder: "请选择",
size: "default", size: "default",
isHighlight: true, isHighlight: true,
value: undefined, value: 'value',
label: undefined, label: 'label',
border: false, border: true,
width: "100%", width: "100%",
dictType: '', dictType: '',
clearable: true clearable: true,
objKey: ''
}); });

View File

@ -1,55 +1,52 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="14" :xs="24"> <el-col :span="14">
<!-- 表单区域--> <!-- 表单区域-->
<el-form inline :model="queryParams" class="mb8" size="small"> <el-form inline :model="queryParams" class="search-form " size="small" label-width="85px">
<el-form-item label="项目类别"> <el-form-item label="项目类别:">
<SelectTable v-model:data="queryParams.xmgl" :fields="xmglFields" :tableData="dictData.XMGL" label="label" <SelectTable v-model:data="queryParams.xmgl" :fields="xmglFields" :tableData="dictData.XMGL" label="label"
value="value" objKey="value" width="140px" placeholder="项目类别" size="small" @getDataValue="getList" /> value="value" objKey="value" width="8.75rem" size="small" @getDataValue="getList" />
</el-form-item> </el-form-item>
<el-form-item label="细菌标志"> <el-form-item label="细菌标志:">
<SelectTable v-model:data="queryParams.itemclass" :fields="itemclassFields" :tableData="dictData.ITEMCLASS" <SelectTable v-model:data="queryParams.itemclass" :fields="itemclassFields" :tableData="dictData.ITEMCLASS"
label="label" value="value" objKey="value" width="140px" placeholder="细菌标志" size="small" label="label" value="value" objKey="value" width="8.75rem" size="small" @getDataValue="getList" />
@getDataValue="getList" />
</el-form-item> </el-form-item>
<el-form-item label="仪器代号"> <el-form-item label="仪器代号:">
<SelectTable v-model:data="queryParams.yq" :fields="yqFields" :tableData="instrOptions" label="yqmc" <SelectTable v-model:data="queryParams.yq" :fields="yqFields" :tableData="instrOptions" label="yqmc"
value="yq" objKey="yq" :border="true" width="140px" placeholder="请选择仪器" size="small" value="yq" objKey="yq" :border="true" width="8.75rem" placeholder="请选择仪器" size="small"
@getDataValue="getList" /> @getDataValue="getList" />
</el-form-item> </el-form-item>
<el-form-item label="快速查找"> <el-form-item label="快速查找:">
<el-input clearable placeholder="快速查找" v-model="queryParams.inputcode" prefix-icon="Search" <el-input clearable v-model="queryParams.inputcode" prefix-icon="Search" style="width: 8.75rem"
style="width: 150px" @change="getList" />
</el-form-item>
<el-form-item label="仪器大类">
<SelectTable v-model:data="queryParams.yqdl" :fields="yqdlFields" :tableData="dictData.YQDL" label="label"
value="value" objKey="value" :border="true" width="140px" placeholder="仪器大类" size="small"
@getDataValue="getList" />
</el-form-item>
<el-form-item label="项目ID">
<el-input clearable placeholder="项目ID" prefix-icon="Search" v-model="queryParams.xmid" style="width: 150px"
@change="getList" /> @change="getList" />
</el-form-item> </el-form-item>
<el-form-item label="仪器大类:">
<SelectTable v-model:data="queryParams.yqdl" :fields="yqdlFields" :tableData="dictData.YQDL" label="label"
value="value" objKey="value" :border="true" width="8.75rem" size="small" @getDataValue="getList" />
</el-form-item>
<el-form-item label="项目ID:">
<el-input clearable placeholder="项目ID" prefix-icon="Search" v-model="queryParams.xmid"
style="width: 8.75rem" @change="getList" />
</el-form-item>
<el-form-item> <el-form-item>
<el-radio-group v-model="queryParams.uflag" fill="primary" size="large" @change="changeStauts"> <el-radio-group v-model="queryParams.uflag" fill="primary" :size="autoSize" @change="changeStauts">
<el-radio value="0">在用</el-radio> <el-radio value="0">在用</el-radio>
<el-radio value="1">停用</el-radio> <el-radio value="1">停用</el-radio>
<el-radio value="">所有</el-radio> <el-radio value="">所有</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-checkbox v-model="queryParams.isMIC" label="隐藏微生物项目" size="large" @change="getList" /> <el-checkbox v-model="queryParams.isMIC" label="隐藏微生物项目" :size="autoSize" @change="getList" />
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleRefresh">刷新</el-button> <el-button type="primary" plain icon="Refresh" :size="autoSize" @click="handleRefresh">刷新</el-button>
<el-button type="primary" plain icon="Plus" @click="handleAdd">新增</el-button> <el-button type="primary" plain icon="Plus" :size="autoSize" @click="handleAdd">新增</el-button>
<el-button type="primary" plain icon="Plus" @click="handleDel">删除</el-button> <el-button type="danger" plain icon="Delete" :size="autoSize" @click="handleDel">删除</el-button>
<el-button type="primary" plain icon="Plus" @click="handleBatchVs">批量项目对应</el-button> <el-button type="primary" plain :size="autoSize" @click="handleBatchVs">批量项目对应</el-button>
<el-button type="primary" plain icon="Plus" @click="handleBatchDel">批量删除对应</el-button> <el-button type="primary" plain :size="autoSize" @click="handleSave">保存</el-button>
<el-button type="primary" plain icon="Plus" @click="handleSave">保存</el-button>
</el-col> </el-col>
</el-row> </el-row>
<!-- 表格区域--> <!-- 表格区域-->
@ -59,7 +56,7 @@
{{ formatDict(row.xmgl, 'XMGL') }} {{ formatDict(row.xmgl, 'XMGL') }}
</template> </template>
<template #xmlb="{ row }"> <template #xmlb="{ row }">
{{xmlbList.find(item => item.value === row.xmlb).label}} {{xmlbList.find(item => item.value === row.xmlb)?.label}}
</template> </template>
<template #jsxm="{ row }"> <template #jsxm="{ row }">
{{ row.jsxm === 'Y' ? '是' : '否' }} {{ row.jsxm === 'Y' ? '是' : '否' }}
@ -71,15 +68,21 @@
{{ formatDict(row.yqdl, 'YQDL') }} {{ formatDict(row.yqdl, 'YQDL') }}
</template> </template>
</CustomTable> </CustomTable>
<div class="page-box">
<el-pagination v-model:current-page="queryParams.pageNum" v-model:page-size="queryParams.pageSize"
:page-sizes="[30, 60, 100]" background layout="total, sizes, prev, pager, next,jumper" :total="total"
:size="autoSize" @size-change="handleSizeChange" @current-change="handleCurrentChange" />
</div>
</el-col> </el-col>
<!-- 右侧区域--> <!-- 右侧区域-->
<el-col :span="10" :xs="24"> <el-col :span="10">
<tabView :tabList="tabList" v-model:activeTab="activeTab" @update:active-tab="updateActive" /> <tabView :tabList="tabList" v-model:activeTab="activeTab" @update:active-tab="updateActive" />
<KeepAlive> <KeepAlive>
<component class="tabDiv" ref="tableTabRef" :is="activeTabN" :formData="selectRow" v-model="modelParam" <component class="tabDiv" ref="tableTabRef" :is="activeTabN" :formData="selectRow" v-model="modelParam"
@refreshTabData="rowChange"></component> @refreshTabData="rowChange"></component>
</KeepAlive> </KeepAlive>
<BatchInstrVs v-show="batchInstrVsModel.visible" v-model="batchInstrVsModel" /> <BatchInstrVs v-model="batchInstrVsModel" />
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
@ -88,15 +91,15 @@
<script setup lang="ts"> <script setup lang="ts">
import { onMounted, ref, toRaw, computed } from 'vue'; import { onMounted, ref, toRaw, computed } from 'vue';
import Basic from './tab/base/Basic.vue' import Basic from './tab/base/Basic.vue'
import CommonlyValues from '@/views/liswork/labItem/tab/CommonlyValues.vue' import CommonlyValues from './tab/commonlyValues.vue'
import UseInstr from './tab/UseInstr.vue' import UseInstr from './tab/useInstr.vue'
import Knowledge from './tab/Knowledge.vue' import Knowledge from './tab/knowledge.vue'
import CommonDescriptions from './tab/CommonDescriptions.vue' import CommonDescriptions from './tab/commonDescriptions.vue'
import CustomTable from '@/components/elTable/index.vue' import CustomTable from '@/components/elTable/index.vue'
import Sort from './tab/Sort.vue' import Sort from './tab/sort.vue'
import Parameter from './tab/Parameter.vue'; import Parameter from './tab/parameter.vue';
import ChannelNumber from './tab/ChannelNumber.vue'; import ChannelNumber from './tab/channelNumber.vue';
import ReferenceValueDetails from './tab/ReferenceValueDetails.vue'; import ReferenceValueDetails from './tab/referenceValueDetails.vue';
import { queryXmInfoNewService, queryXmInfoNewDetailService, saveDataService, deleteXmInfoService } from '@/api/liswork/labItem/labItemApi'; import { queryXmInfoNewService, queryXmInfoNewDetailService, saveDataService, deleteXmInfoService } from '@/api/liswork/labItem/labItemApi';
import SelectTable from '@/components/SelectTable/index.vue' import SelectTable from '@/components/SelectTable/index.vue'
import { getGroupInstrdList } from '@/api/liswork/work/LisWork'; import { getGroupInstrdList } from '@/api/liswork/work/LisWork';
@ -106,6 +109,8 @@ import { formatDict, getDictData, dictData } from '@/hooks';
import { ElMessage, ElMessageBox } from 'element-plus'; import { ElMessage, ElMessageBox } from 'element-plus';
import BatchInstrVs from './BatchInstrVs.vue'; import BatchInstrVs from './BatchInstrVs.vue';
import _ from 'lodash'; import _ from 'lodash';
import { classCom } from '@/utils/classCom';
const autoSize = classCom.useAutoSize()
const xmlbList = ref<Array<any>>([ const xmlbList = ref<Array<any>>([
{ label: '数值型', value: '1' }, { label: '数值型', value: '1' },
@ -122,8 +127,13 @@ const queryParams = ref({
yqdl: '', //仪器大类 yqdl: '', //仪器大类
xmid: '', //项目ID xmid: '', //项目ID
uflag: '0', //状态 uflag: '0', //状态
isMIC: false || null //是否隐藏微生物项目 isMIC: false || null, //是否隐藏微生物项目
pageSize: 30,
pageNum: 1
}) })
const total = ref(0)
//字典数据 //字典数据
const tableRef = ref() const tableRef = ref()
const xmglFields = ref([ const xmglFields = ref([
@ -157,7 +167,7 @@ const activeTabMap = {
ReferenceValueDetails ReferenceValueDetails
} }
const activeTabN = computed(() => activeTabMap[activeTab.value as keyof typeof activeTabMap] || Basic); const activeTabN = computed(() => activeTabMap[activeTab.value as keyof typeof activeTabMap] || "Basic");
//table表格列 //table表格列
const columns = ref([ const columns = ref([
@ -185,7 +195,7 @@ const columns = ref([
const tableConfig = ref({ const tableConfig = ref({
border: true, // 边框 border: true, // 边框
height: '66vh', // 高度 height: '70vh', // 高度
highlightCurrentRow: true, // 高亮当前行 highlightCurrentRow: true, // 高亮当前行
// cellStyle: cellStyleHd // cellStyle: cellStyleHd
}) })
@ -214,7 +224,6 @@ const modelParam = ref<any>({
commonDescriptionsData: [], commonDescriptionsData: [],
referenceValueDetailsData: [] referenceValueDetailsData: []
}) })
const basic = ref<boolean>(false)
// 1. 定义变量跟踪是否有未保存的修改 // 1. 定义变量跟踪是否有未保存的修改
const hasUnsavedChanges = ref(false); const hasUnsavedChanges = ref(false);
@ -251,17 +260,33 @@ const getYqConfig = () => {
} }
}) })
} }
const handleSizeChange = (val: number) => {
queryParams.value.pageSize = val;
getList();
}
const handleCurrentChange = (val: number) => {
queryParams.value.pageNum = val;
getList();
}
//获取表格数据 //获取表格数据
const getList = () => { const getList = () => {
queryXmInfoNewService(queryParams.value).then((res: any) => { queryXmInfoNewService(queryParams.value).then((res: any) => {
dataList.value = res.data; dataList.value = res.rows || [];
total.value = res.total;
hasUnsavedChanges.value = false;
if (res.rows.length) {
tableRef.value.setCurrentRow(res.rows[0]);
rowChange(res.rows[0]);
} else {
selectRow.value = '';
selectDetailRow.value = '';
changeActiveTab()
}
}) })
} }
//新增 //新增
const handleAdd = () => { const handleAdd = () => {
selectRow.value = ''; selectRow.value = '';
tableTabRef.value.changeDisabled(false);
modelParam.value = { modelParam.value = {
basicData: { basicData: {
yq: '', yq: '',
@ -306,22 +331,20 @@ const handleAdd = () => {
} }
//删除 //删除
const handleDel = async () => { const handleDel = () => {
if (selectRow.value) { if (selectRow.value.xmid) {
await ElMessageBox.confirm('是否删除选中的数据?', '提示', ElMessageBox.confirm('是否删除选中的数据?', '提示',
{ confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' } { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }
); ).then(() => {
await deleteXmInfoService({ xmid: selectRow.value.xmid }); deleteXmInfoService({ xmid: selectRow.value.xmid }).then((res: any) => {
if (res.code == 0) {
ElMessage.success('删除成功!') ElMessage.success('删除成功!')
getList(); getList();
selectRow.value = null; selectRow.value = null;
if (typeof tableTabRef.value.changeDisabled === 'function') {
tableTabRef.value.changeDisabled(true);
} }
})
})
} }
} }
//批量对应 //批量对应
@ -329,24 +352,17 @@ const handleBatchVs = () => {
batchInstrVsModel.value.visible = true; batchInstrVsModel.value.visible = true;
} }
//批量删除对应
const handleBatchDel = () => {
console.log('删除对应')
}
//保存 //保存
const handleSave = async (flag: any) => { const handleSave = async (flag: any) => {
//验证表单 //验证表单
if (typeof tableTabRef.value.validate === 'function') { if (activeTab.value == 'Basic') {
const valid = await tableTabRef.value.validate(); // 调用子组件的验证方法 const valid = await tableTabRef.value.validate(); // 调用基本资料子组件的验证方法
if (!valid) { if (!valid) return ElMessage.error('表单验证失败,请检查输入项!');
ElMessage.error('表单验证失败,请检查输入项!');
return;
}
} }
await saveDataService({ saveDataService({
xmInfoNew: modelParam.value.basicData, xmInfoNew: modelParam.value.basicData,
xmDoubleRows: [], xmDoubleRows: [],
xmValRows: [], xmValRows: [],
@ -357,21 +373,19 @@ const handleSave = async (flag: any) => {
xmRefNewRows: modelParam.value.referenceValueDetailsData, xmRefNewRows: modelParam.value.referenceValueDetailsData,
xmInfoVsRows: modelParam.value.userInstrData, xmInfoVsRows: modelParam.value.userInstrData,
xmTextresultNewRows: modelParam.value.commonDescriptionsData xmTextresultNewRows: modelParam.value.commonDescriptionsData
}).then((res: any) => {
if (res.code == 0) {
ElMessage.success('保存成功!')
getList();
// 保存后更新快照
initialModelParam.value = _.cloneDeep(modelParam.value);
hasUnsavedChanges.value = false;
tableConfig.value.highlightCurrentRow = true
}
}) })
if (!flag) { if (!flag) {
rowChange(selectRow.value) rowChange(selectRow.value)
} }
if (basic.value) {
getList();
basic.value = false
}
ElMessage.success('保存成功!')
// 保存后更新快照
initialModelParam.value = _.cloneDeep(modelParam.value);
hasUnsavedChanges.value = false;
} }
const handleRefresh = () => { const handleRefresh = () => {
@ -394,14 +408,9 @@ const changeStauts = () => {
// 选择行变化 // 选择行变化
const rowChange = async (row: any) => { const rowChange = async (row: any) => {
if (typeof tableTabRef.value.changeDisabled === 'function') {
tableTabRef.value.changeDisabled(false);
}
// 如果有未保存的修改,显示提示 // 如果有未保存的修改,显示提示
if (hasUnsavedChanges.value) { if (hasUnsavedChanges.value) {
try { ElMessageBox.confirm(
await ElMessageBox.confirm(
'当前数据有未保存的修改,是否保存?', '当前数据有未保存的修改,是否保存?',
'提示', '提示',
{ {
@ -409,18 +418,23 @@ const rowChange = async (row: any) => {
cancelButtonText: '不保存', cancelButtonText: '不保存',
type: 'warning' type: 'warning'
} }
); ).then(() => {
// 用户选择保存 // 用户选择保存
await handleSave("1"); handleSave("1");
} catch (error) { }).catch(() => {
// 用户选择不保存,继续执行 // 用户选择不保存
} getInfo(row)
})
} else {
getInfo(row)
} }
}
const getInfo = async (row: any) => {
tableConfig.value.highlightCurrentRow = true
selectRow.value = row; selectRow.value = row;
const res = await queryXmInfoNewDetailService(row.xmid, row.yq, row.xmdh) const res = await queryXmInfoNewDetailService(row.xmid, row.yq, row.xmdh)
selectDetailRow.value = res.data selectDetailRow.value = res.data
console.log('选中行明细数据:', selectDetailRow.value)
changeActiveTab() changeActiveTab()
initialModelParam.value = _.cloneDeep(modelParam.value); initialModelParam.value = _.cloneDeep(modelParam.value);
hasUnsavedChanges.value = false; hasUnsavedChanges.value = false;
@ -429,8 +443,6 @@ const rowChange = async (row: any) => {
if (typeof tableTabRef.value.resetField === 'function') { if (typeof tableTabRef.value.resetField === 'function') {
tableTabRef.value.resetField(); tableTabRef.value.resetField();
} }
} }
//tab变化 //tab变化
@ -440,14 +452,11 @@ const updateActive = () => {
const changeActiveTab = () => { const changeActiveTab = () => {
if (selectRow.value) {
modelParam.value.basicData = toRaw(selectDetailRow.value.xmInfoNew || {}); modelParam.value.basicData = toRaw(selectDetailRow.value.xmInfoNew || {});
modelParam.value.commonlyValuesData = toRaw(selectDetailRow.value.xmValNewRows || []); modelParam.value.commonlyValuesData = toRaw(selectDetailRow.value.xmValNewRows || []);
modelParam.value.userInstrData = toRaw(selectDetailRow.value.xmInfoVsRows || []); modelParam.value.userInstrData = toRaw(selectDetailRow.value.xmInfoVsRows || []);
modelParam.value.commonDescriptionsData = toRaw(selectDetailRow.value.xmTextresultNewRows || []); modelParam.value.commonDescriptionsData = toRaw(selectDetailRow.value.xmTextresultNewRows || []);
modelParam.value.referenceValueDetailsData = toRaw(selectDetailRow.value.xmRefNewRows || []); modelParam.value.referenceValueDetailsData = toRaw(selectDetailRow.value.xmRefNewRows || []);
}
} }
onMounted(async () => { onMounted(async () => {
@ -459,9 +468,4 @@ onMounted(async () => {
</script> </script>
<style lang="css"> <style lang="scss" scoped></style>
.tabDiv {
height: 88vh;
overflow-y: auto;
}
</style>

View File

@ -8,12 +8,12 @@
<CustomTable ref="tableRef" :data="modelParam.commonlyValuesData" :columns="columns" :enable-column-drag="true" <CustomTable ref="tableRef" :data="modelParam.commonlyValuesData" :columns="columns" :enable-column-drag="true"
@column-drag-end="handleColumnDragEnd" :config="tableConfig" @row-click="handRowClick"> @column-drag-end="handleColumnDragEnd" :config="tableConfig" @row-click="handRowClick">
<template #qz="{ row }"> <template #qz="{ row }">
<el-select v-model="row.qz" clearable allow-create filterable default-first-option> <el-select v-model="row.qz" clearable allow-create filterable default-first-option class="full-width-input">
<el-option v-for="item in qzOptions" :key="item.value" :label="item.label" :value="item.value"></el-option> <el-option v-for="item in qzOptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select> </el-select>
</template> </template>
<template #jgbz="{ row }"> <template #jgbz="{ row }">
<el-select v-model="row.jgbz" clearable> <el-select v-model="row.jgbz" clearable class="full-width-input">
<el-option v-for="item in jgbzOptions" :key="item.value" :label="item.label" :value="item.value"></el-option> <el-option v-for="item in jgbzOptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select> </el-select>
</template> </template>
@ -27,7 +27,7 @@
<script setup lang="ts"> <script setup lang="ts">
import CustomTable from '@/components/elTable/index.vue' import CustomTable from '@/components/elTable/index.vue'
import { dictData, getDictData } from '@/hooks'; import { dictData, getDictData } from '@/hooks';
import { ElMessageBox } from 'element-plus'; import { ElMessage, ElMessageBox } from 'element-plus';
import { delXmValNewService } from '@/api/liswork/labItem/labItemApi' import { delXmValNewService } from '@/api/liswork/labItem/labItemApi'
@ -36,13 +36,13 @@ const emit = defineEmits(['refreshTabData'])
const tableRef = ref<any>(); const tableRef = ref<any>();
const columns = ref([ const columns = ref([
{ prop: 'qz', label: '取值', visible: true, align: 'center', slot: 'qz', width: 200 }, { prop: 'qz', label: '取值', visible: true, align: 'center', slot: 'qz', showOverflowTooltip: false },
{ prop: 'srm', label: '快速输入码', visible: true, align: 'center', slot: 'srm', width: 100 }, { prop: 'srm', label: '快速输入码', visible: true, align: 'center', slot: 'srm' },
{ prop: 'jgbz', label: '结果标志', visible: true, align: 'center', slot: 'jgbz', width: 100 } { prop: 'jgbz', label: '结果标志', visible: true, align: 'center', slot: 'jgbz', showOverflowTooltip: false }
]); ]);
const tableConfig = ref({ const tableConfig = ref({
border: true, // 边框 border: true, // 边框
height: '80vh', // 高度 height: '78vh', // 高度
highlightCurrentRow: true, // 高亮当前行 highlightCurrentRow: true, // 高亮当前行
// cellStyle: cellStyleHd // cellStyle: cellStyleHd
}) })
@ -58,7 +58,7 @@ const handleColumnDragEnd = (data: any) => {
//序号最大值 //序号最大值
const maxXh = computed(() => { const maxXh = computed(() => {
return modelParam.value.commonlyValuesData.length > 0 ? Math.max(...modelParam.value.commonlyValuesData.value.map((item: any) => item.xh || 0)) : 0; return modelParam.value.commonlyValuesData.length > 0 ? modelParam.value.commonlyValuesData.length + 1 : 0;
}); });
const bClickAdd = () => { const bClickAdd = () => {
@ -67,22 +67,21 @@ const bClickAdd = () => {
qz: '', qz: '',
srm: '', srm: '',
jgbz: '', jgbz: '',
xh: maxXh.value + 1 xh: maxXh.value
} }
modelParam.value.commonlyValuesData.push(newData); modelParam.value.commonlyValuesData.push(newData);
} }
const bClickDel = async () => { const bClickDel = () => {
if (selectRow.value) { if (!selectRow.value) return ElMessage.warning('请选择要删除的数据!');
await ElMessageBox.confirm('是否要删除选中的数据?', '警告', ElMessageBox.confirm('是否要删除选中的数据?', '警告',
{ confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }); { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(async () => {
//删掉界面上面的数据 //删掉界面上面的数据
//tableList.value = tableList.value?.filter((item:any) => item.xh != selectRow.value.xh ); //tableList.value = tableList.value?.filter((item:any) => item.xh != selectRow.value.xh );
await delXmValNewService({ xmid: modelParam.value.basicData.xmid, xh: selectRow.value.xh }) await delXmValNewService({ xmid: modelParam.value.basicData.xmid, xh: selectRow.value.xh })
emit('refreshTabData', modelParam.value.basicData) emit('refreshTabData', modelParam.value.basicData)
} })
} }

View File

@ -1,106 +1,108 @@
<template> <template>
<!-- 基本资料 --> <!-- 基本资料 -->
<div> <div class="basic_info">
<el-form ref="formRef" :model="modelParam.basicData" :rules="rules" size="small" class="form-inline" inline <el-form ref="formRef" :model="modelParam.basicData" :rules="rules" size="small" class="form-inline" inline
label-width="70px" :disabled="disabled" label-position="right" inline-message> label-width="6.25rem" label-position="right" :inline-message="false">
<span class="text-span">基本参数:</span> <span class="text-span">基本参数:</span>
<el-divider style="margin: 5px 0;" /> <el-divider style="margin: .3125rem 0;" />
<el-form-item label="项目类别" prop="xmgl"> <el-form-item label="项目类别" prop="xmgl">
<SelectTable v-model:data="modelParam.basicData.xmgl" :fields="xmglFields" :tableData="dictData.XMGL" <SelectTable v-model:data="modelParam.basicData.xmgl" :fields="xmglFields" :tableData="dictData.XMGL"
label="label" value="value" objKey="value" width="140px" placeholder="项目类别" size="small" /> label="label" value="value" objKey="value" width="12.5rem" placeholder="" size="small" />
</el-form-item> </el-form-item>
<el-form-item label="英文缩写" prop="xmdh"> <el-form-item label="英文缩写" prop="xmdh">
<el-input placeholder="英文缩写" v-model="modelParam.basicData.xmdh" @input="xmdhInput"></el-input> <el-input v-model="modelParam.basicData.xmdh" @input="xmdhInput" />
</el-form-item> </el-form-item>
<el-form-item label="项目名称" prop="xmmc"> <el-form-item label="项目名称" prop="xmmc">
<el-input placeholder="项目名称" v-model="modelParam.basicData.xmmc" @change="xmmcChange"></el-input> <el-input v-model="modelParam.basicData.xmmc" @change="xmmcChange" />
</el-form-item> </el-form-item>
<el-form-item label="单位" prop="dw"> <el-form-item label="单位" prop="dw">
<SelectTable v-model:data="modelParam.basicData.dw" :fields="xmglFields" :tableData="dictData.UT" label="label" <SelectTable v-model:data="modelParam.basicData.dw" :fields="xmglFields" :tableData="dictData.UT" label="label"
value="label" objKey="label" width="140px" placeholder="单位" size="small" /> value="label" objKey="label" width="12.5rem" placeholder="" size="small" />
</el-form-item> </el-form-item>
<el-form-item label="结果类别" prop="xmlb"> <el-form-item label="结果类别" prop="xmlb">
<SelectTable v-model:data="modelParam.basicData.xmlb" :fields="xmglFields" :tableData="xmlbData" label="label" <SelectTable v-model:data="modelParam.basicData.xmlb" :fields="xmglFields" :tableData="xmlbData" label="label"
value="value" objKey="value" width="140px" placeholder="结果类别" size="small" /> value="value" objKey="value" width="12.5rem" placeholder="" size="small" />
</el-form-item> </el-form-item>
<el-form-item label="阴阳性" prop="mrz"> <el-form-item label="阴阳性" prop="mrz">
<SelectTable v-model:data="modelParam.basicData.mrz" :fields="xmglFields" :tableData="mrzData" label="label" <SelectTable v-model:data="modelParam.basicData.mrz" :fields="xmglFields" :tableData="mrzData" label="label"
value="value" objKey="value" width="140px" placeholder="阴阳性" size="small" /> value="value" objKey="value" width="12.5rem" placeholder="" size="small" />
</el-form-item> </el-form-item>
<el-form-item label="仪器大类" prop="yqdl"> <el-form-item label="仪器大类" prop="yqdl">
<SelectTable v-model:data="modelParam.basicData.yqdl" :fields="xmglFields" :tableData="dictData.YQDL" <SelectTable v-model:data="modelParam.basicData.yqdl" :fields="xmglFields" :tableData="dictData.YQDL"
label="label" value="value" objKey="value" width="140px" placeholder="仪器大类" size="small" /> label="label" value="value" objKey="value" width="12.5rem" placeholder="" size="small" />
</el-form-item> </el-form-item>
<el-form-item label="允许CV(%)" prop="qccv" label-width="100px"> <el-form-item label="允许CV(%)" prop="qccv">
<el-input placeholder="允许CV(%)" type="number" v-model="modelParam.basicData.qccv"></el-input> <el-input type="number" v-model="modelParam.basicData.qccv" />
</el-form-item> </el-form-item>
<el-form-item label="稀释倍数" prop="xsbs"> <el-form-item label="稀释倍数" prop="xsbs">
<el-input placeholder="稀释倍数" v-model="modelParam.basicData.xsbs"></el-input> <el-input v-model="modelParam.basicData.xsbs" />
</el-form-item> </el-form-item>
<el-form-item label="whonet编码" prop="whocode" label-width="100px"> <el-form-item label="whonet编码" prop="whocode">
<el-input placeholder="whonet编码" v-model="modelParam.basicData.whocode"></el-input> <el-input v-model="modelParam.basicData.whocode" />
</el-form-item> </el-form-item>
<el-form-item label="Gram" prop="germflag"> <el-form-item label="Gram" prop="germflag">
<el-input placeholder="Gram" v-model="modelParam.basicData.germflag"></el-input> <el-input v-model="modelParam.basicData.germflag" />
</el-form-item> </el-form-item>
<el-form-item label="英文名称" prop="yymc"> <el-form-item label="英文名称" prop="yymc">
<el-input placeholder="英文名称" v-model="modelParam.basicData.yymc"></el-input> <el-input v-model="modelParam.basicData.yymc" />
</el-form-item> </el-form-item>
<el-form-item label="项目ID" prop="xmid"> <el-form-item label="项目ID" prop="xmid">
<el-input placeholder="项目ID" disabled v-model="modelParam.basicData.xmid"></el-input> <el-input disabled v-model="modelParam.basicData.xmid" />
</el-form-item>
<el-form-item label="知识库编码" prop="knowledge">
<el-input v-model="modelParam.basicData.knowledge" />
</el-form-item>
<el-form-item label="小数保留位数" prop="xsws">
<SelectTable v-model:data="modelParam.basicData.xsws" :fields="xmglFields" :tableData="xswsData" label="label"
value="value" objKey="value" width="12.5rem" placeholder="" size="small" />
</el-form-item>
<el-form-item label="打印形式" prop="dylx">
<SelectTable v-model:data="modelParam.basicData.dylx" :fields="xmglFields" :tableData="dylxData" label="label"
value="value" objKey="value" width="12.5rem" placeholder="" size="small" />
</el-form-item>
<el-form-item label="总汇表代号" prop="zhbdh">
<el-input v-model="modelParam.basicData.zhbdh" />
</el-form-item>
<el-form-item label="报告单代号" prop="bgdh">
<el-input v-model="modelParam.basicData.bgdh" />
</el-form-item>
<el-form-item label="价格" prop="jg">
<el-input type="number" v-model="modelParam.basicData.jg" />
</el-form-item>
<el-form-item label="助记符" prop="zjf">
<el-input v-model="modelParam.basicData.zjf" />
</el-form-item>
<el-form-item label="测试方法" prop="csff">
<SelectTable v-model:data="modelParam.basicData.csff" :fields="xmglFields" :tableData="dictData.MD"
label="label" value="value" objKey="value" width="12.5rem" placeholder="" size="small" />
</el-form-item>
<el-form-item label="分组打印组号" prop="fzdyxh">
<el-input type="number" v-model="modelParam.basicData.fzdyxh" />
</el-form-item>
<el-form-item label="细菌项目类别" prop="itemclass">
<SelectTable v-model:data="modelParam.basicData.itemclass" :fields="xmglFields" :tableData="dictData.ITEMCLASS"
label="label" value="value" objKey="value" width="12.5rem" placeholder="" size="small" />
</el-form-item> </el-form-item>
<el-form-item prop="uflag"> <el-form-item prop="uflag">
<el-checkbox value="uflag">停用</el-checkbox> <el-checkbox value="uflag">停用</el-checkbox>
</el-form-item> </el-form-item>
<el-form-item label="知识库编码" prop="knowledge" label-width="100px">
<el-input placeholder="知识库编码" v-model="modelParam.basicData.knowledge"></el-input>
</el-form-item>
<el-form-item label="小数保留位数" prop="xsws" label-width="100px">
<SelectTable v-model:data="modelParam.basicData.xsws" :fields="xmglFields" :tableData="xswsData" label="label"
value="value" objKey="value" width="140px" placeholder="小数保留位数" size="small" />
</el-form-item>
<el-form-item label="打印形式" prop="dylx">
<SelectTable v-model:data="modelParam.basicData.dylx" :fields="xmglFields" :tableData="dylxData" label="label"
value="value" objKey="value" width="140px" placeholder="打印形式" size="small" />
</el-form-item>
<el-form-item label="总汇表代号" prop="zhbdh" label-width="100px">
<el-input placeholder="总汇表代号" v-model="modelParam.basicData.zhbdh"></el-input>
</el-form-item>
<el-form-item label="报告单代号" prop="bgdh" label-width="90px">
<el-input placeholder="报告单代号" v-model="modelParam.basicData.bgdh"></el-input>
</el-form-item>
<el-form-item label="价格" prop="jg">
<el-input placeholder="价格" type="number" v-model="modelParam.basicData.jg"></el-input>
</el-form-item>
<el-form-item label="助记符" prop="zjf">
<el-input placeholder="助记符" v-model="modelParam.basicData.zjf"></el-input>
</el-form-item>
<el-form-item label="测试方法" prop="csff">
<SelectTable v-model:data="modelParam.basicData.csff" :fields="xmglFields" :tableData="dictData.MD"
label="label" value="value" objKey="value" width="140px" placeholder="测试方法" size="small" />
</el-form-item>
<el-form-item label="分组打印组号" prop="fzdyxh" label-width="100px">
<el-input placeholder="分组打印组号" type="number" v-model="modelParam.basicData.fzdyxh"></el-input>
</el-form-item>
<el-form-item label="细菌项目类别" prop="itemclass" label-width="100px">
<SelectTable v-model:data="modelParam.basicData.itemclass" :fields="xmglFields" :tableData="dictData.ITEMCLASS"
label="label" value="value" objKey="value" width="140px" placeholder="细菌项目类别" size="small" />
</el-form-item>
<span class="text-span">结果参考值计算:</span> <span class="text-span">结果参考值计算:</span>
<el-divider style="margin: 5px 0;" /> <el-divider style="margin: .3125rem 0;" />
<el-form-item label="参考下限" prop="ckxx"> <el-form-item label="参考下限" prop="ckxx">
<el-input placeholder="参考下限" v-model="modelParam.basicData.ckxx" @input="updatedyckz"></el-input> <el-input v-model="modelParam.basicData.ckxx" @input="updatedyckz" />
</el-form-item> </el-form-item>
<el-form-item label="参考上限" prop="cksx"> <el-form-item label="参考上限" prop="cksx">
<el-input placeholder="参考上限" v-model="modelParam.basicData.cksx" @input="updatedyckz"></el-input> <el-input v-model="modelParam.basicData.cksx" @input="updatedyckz" />
</el-form-item> </el-form-item>
<el-form-item label="参考值" prop="dyckz" label-width="60px"> <el-form-item label="参考值" prop="dyckz">
<el-input placeholder="参考值" v-model="modelParam.basicData.dyckz"></el-input> <el-input v-model="modelParam.basicData.dyckz" />
<el-button type="primary" @click="multiRefClick">多行参考值向导...</el-button> <el-button type="primary" class="ml5" @click="multiRefClick">多行参考值向导...</el-button>
</el-form-item> </el-form-item>
<el-form-item label="公式" prop="jsgs" label-width="40px"> <el-form-item label="公式" prop="jsgs">
<el-input placeholder="公式" v-model="modelParam.basicData.jsgs"></el-input> <el-input v-model="modelParam.basicData.jsgs" />
<el-button v-show="modelParam.basicData.jsxm === 'Y'" type="primary" @click="calcGuildeClick">向导...</el-button> <el-button v-show="modelParam.basicData.jsxm === 'Y'" type="primary" class="ml5"
@click="calcGuildeClick">向导...</el-button>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-checkbox label="参考值与性别有关" v-model="ygxbCheck"></el-checkbox> <el-checkbox label="参考值与性别有关" v-model="ygxbCheck"></el-checkbox>
@ -111,53 +113,53 @@
<el-checkbox label="计算项目" v-model="jsxmCheck"></el-checkbox> <el-checkbox label="计算项目" v-model="jsxmCheck"></el-checkbox>
</el-form-item> </el-form-item>
<span class="text-span">医学审核条件:</span> <span class="text-span">医学审核条件:</span>
<el-divider style="margin: 5px 0;" /> <el-divider style="margin: .3125rem 0;" />
<el-form-item label="项目结果不可能大于" prop="sjx" label-width="140px"> <el-form-item label="项目结果不可能大于" prop="sjx" label-width="8.75rem">
<el-input placeholder="项目结果不可能大于" v-model="modelParam.basicData.sjx" style="width: 100px;"></el-input> <el-input v-model="modelParam.basicData.sjx" style="width:10rem" />
</el-form-item> </el-form-item>
<el-form-item label="不可能小于" prop="xjx" label-width="90px"> <el-form-item label="不可能小于" prop="xjx" label-width="7rem">
<el-input placeholder="不可能小于" v-model="modelParam.basicData.xjx" style="width: 100px;"></el-input> <el-input v-model="modelParam.basicData.xjx" style="width:10rem" />
</el-form-item> </el-form-item>
<el-form-item label="病人两次检验结果在" prop="jgjg" label-width="140px"> <el-form-item label="病人两次检验结果在" prop="jgjg" label-width="8.75rem">
<el-input placeholder="病人两次检验结果在" v-model="modelParam.basicData.jgjg" style="width: 100px;"></el-input> <el-input v-model="modelParam.basicData.jgjg" style="width:10rem" />
</el-form-item> </el-form-item>
<!--计算属性--> <!--计算属性-->
<el-form-item label="天内不可能相差" prop="cp_jgz" label-width="120px"> <el-form-item label="天内不可能相差" prop="cp_jgz" label-width="7rem">
<el-input placeholder="天内不可能相差" v-model="modelParam.basicData.cp_jgz" style="width: 100px;"></el-input> <el-input v-model="modelParam.basicData.cp_jgz" style="width:10rem" />
</el-form-item> </el-form-item>
<!--报警条件--> <!--报警条件-->
<span class="text-span">报警条件</span> <span class="text-span">报警条件</span>
<el-divider style="margin: 5px 0;" /> <el-divider style="margin: .3125rem 0;" />
<el-form-item label="危急值"> <el-form-item label="危急值">
<el-input placeholder="上限极值" v-model="modelParam.basicData.hlimt"></el-input> <el-input placeholder="上限极值" v-model="modelParam.basicData.hlimt" /> &nbsp;
<el-input placeholder="下限极值" v-model="modelParam.basicData.llimit"></el-input> <el-input placeholder="下限极值" v-model="modelParam.basicData.llimit" />
<el-button type="primary" @click="conditionClick">特定条件</el-button> <el-button type="primary" class="ml5" @click="conditionClick">特定条件</el-button>
</el-form-item> </el-form-item>
<el-form-item label="复查"> <el-form-item label="复查">
<el-input placeholder="上限极值" v-model="modelParam.basicData.redoxx"></el-input> <el-input placeholder="上限极值" v-model="modelParam.basicData.redoxx" />&nbsp;
<el-input placeholder="下限极值" v-model="modelParam.basicData.redosx"></el-input> <el-input placeholder="下限极值" v-model="modelParam.basicData.redosx" />
</el-form-item> </el-form-item>
<span class="text-span">其他参数</span> <span class="text-span">其他参数</span>
<el-divider style="margin: 5px 0;" /> <el-divider style="margin: .3125rem 0;" />
<el-form-item label="国标编码"> <el-form-item label="国标编码">
<SelectTable v-model:data="modelParam.basicData.val1" :fields="xmglFields" :tableData="dictData.GBDM" <SelectTable v-model:data="modelParam.basicData.val1" :fields="xmglFields" :tableData="dictData.GBDM"
label="label" value="value" objKey="value" width="140px" placeholder="国标编码" size="small" /> label="label" value="value" objKey="value" width="12.5rem" placeholder="国标编码" size="small" />
</el-form-item> </el-form-item>
<el-form-item label="外部代码2"> <el-form-item label="外部代码2">
<el-input v-model="modelParam.basicData.val2"></el-input> <el-input v-model="modelParam.basicData.val2" />
</el-form-item> </el-form-item>
<el-form-item label="外部代码3"> <el-form-item label="外部代码3">
<el-input v-model="modelParam.basicData.val3"></el-input> <el-input v-model="modelParam.basicData.val3" />
</el-form-item> </el-form-item>
<el-form-item label="外部代码4"> <el-form-item label="外部代码4">
<el-input v-model="modelParam.basicData.val4"></el-input> <el-input v-model="modelParam.basicData.val4" />
</el-form-item> </el-form-item>
<el-form-item label="外部代码5"> <el-form-item label="外部代码5">
<el-input v-model="modelParam.basicData.val5"></el-input> <el-input v-model="modelParam.basicData.val5" />
</el-form-item> </el-form-item>
</el-form> </el-form>
<MultiRef :refData="modelParam.basicData.dyckz" v-model:dialog-table-visible="mulitDialogTableVisible" <MultiRef :refData="modelParam.basicData.dyckz || ''" v-model:dialog-table-visible="mulitDialogTableVisible"
@closeWithReturn="closeWithReturnMultiRef" /> @closeWithReturn="closeWithReturnMultiRef" />
<CalcGuilde v-model="calcDialogTableVisible" :form-data="modelParam.basicData" :text="modelParam.basicData.jsgs" <CalcGuilde v-model="calcDialogTableVisible" :form-data="modelParam.basicData" :text="modelParam.basicData.jsgs"
@confirm="handleDialogConfirm" /> @confirm="handleDialogConfirm" />
@ -174,11 +176,12 @@ import SelectTable from '@/components/SelectTable/index.vue'
import Condition from './child/Condition.vue'; import Condition from './child/Condition.vue';
//@ts-ignore //@ts-ignore
import { getFirstLetter } from '@/utils/pinyin.js'; import { getFirstLetter } from '@/utils/pinyin.js';
import { ElMessage } from 'element-plus';
const modelParam = defineModel<any>() const modelParam = defineModel<any>()
const formRef = ref(); const formRef = ref();
const disabled = ref(true);
const mulitDialogTableVisible = ref(false) const mulitDialogTableVisible = ref(false)
const calcDialogTableVisible = ref(false) const calcDialogTableVisible = ref(false)
const conditionTabVisible = ref(false) const conditionTabVisible = ref(false)
@ -211,7 +214,10 @@ const dylxData = [
] ]
const rules = ref({ const rules = ref({
dylx: [{ required: true, message: '请选择打印形式', trigger: 'blur' }], xmgl: [{ required: true, message: '请输入项目类别', trigger: 'blur' }],
xmdh: [{ required: true, message: '请输入英文缩写', trigger: 'blur' }],
xmmc: [{ required: true, message: '请输入项目名称', trigger: 'blur' }],
yqdl: [{ required: true, message: '请选择仪器大类', trigger: 'change' }],
}) })
computed(() => { computed(() => {
@ -286,9 +292,7 @@ const updatedyckz = () => {
//多行参考值 //多行参考值
const multiRefClick = () => { const multiRefClick = () => {
if (modelParam.value.basicData.dyckz) {
mulitDialogTableVisible.value = true mulitDialogTableVisible.value = true
}
} }
const closeWithReturnMultiRef = (val: string) => { const closeWithReturnMultiRef = (val: string) => {
@ -350,22 +354,25 @@ defineExpose({
resetField: () => { resetField: () => {
formRef.value?.resetFields(); formRef.value?.resetFields();
}, },
changeDisabled: (val: any) => {
disabled.value = val;
}
}); });
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.basic_info {
height: 82vh;
overflow-y: auto;
}
.form-inline { .form-inline {
padding: 10px; padding: .625rem .625rem 0 .625rem;
background-color: #f5f7fa; background-color: #f5f7fa;
height: auto; height: auto;
.el-input { .el-input {
width: 150px; width: 12.5rem;
} }
.el-form-item { .el-form-item {
@ -376,8 +383,18 @@ defineExpose({
.text-span { .text-span {
font-weight: bold; font-weight: bold;
font-size: 14px; font-size: 14px;
color: #333; color: #1f6dd3;
display: block; display: block;
} }
.el-checkbox {
margin-right: .9375rem;
}
:deep(.el-form-item__error) {
display: none;
}
} }
</style> </style>

View File

@ -2,18 +2,26 @@
<!-- 多行参考值配置界面 --> <!-- 多行参考值配置界面 -->
<el-dialog v-model="dialogTableVisibleVal" @close="handleDialogClose" title="多行参考值" width="600px" align-center> <el-dialog v-model="dialogTableVisibleVal" @close="handleDialogClose" title="多行参考值" width="600px" align-center>
<el-form :model="formData" inline> <el-form :model="formData" inline>
<el-row :gutter="10">
<el-col :span="12">
<el-form-item prop="formData.refText"> <el-form-item prop="formData.refText">
<el-input v-model="formData.refText" type="textarea" autosize style="width: 400px;"></el-input> <el-input v-model="formData.refText" type="textarea" :rows="10" style="width: 280px;"></el-input>
</el-form-item> </el-form-item>
</el-col>
<el-col :span="12">
<el-form-item> <el-form-item>
<h3>多行参考值,每行作为一段:</h3> <div>多行参考值,每行作为一段:
<h3>如果系统使用标准性激素报告单,</h3> 如果系统使用标准性激素报告单,<br />
<h3>则第一行表示:男性</h3> 则第一行表示:男性<br />
<h3>第二行表示:女卵泡期</h3> 第二行表示:女卵泡期<br />
<h3>第三行表示:排卵期</h3> 第三行表示:排卵期<br />
<h3>第四行表示:黄体期</h3> 第四行表示:黄体期<br />
<h3>第五行表示:绝经期</h3> 第五行表示:绝经期</div>
</el-form-item> </el-form-item>
</el-col>
</el-row>
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
@ -26,11 +34,11 @@
<script setup lang="ts"> <script setup lang="ts">
const props = defineProps({ const props = defineProps({
dialogTableVisible:{ dialogTableVisible: {
type: Boolean, type: Boolean,
default: false default: false
}, },
refData:{ refData: {
type: String, type: String,
required: true, required: true,
default: '' default: ''
@ -39,20 +47,20 @@ const props = defineProps({
const emit = defineEmits(['closeWithReturn','update:dialogTableVisible']) const emit = defineEmits(['closeWithReturn', 'update:dialogTableVisible'])
const formData = ref<any>({ const formData = ref<any>({
refText: '' refText: ''
}); });
const dialogTableVisibleVal = ref(props.dialogTableVisible) const dialogTableVisibleVal = ref(props.dialogTableVisible)
const handClickOK = () =>{ const handClickOK = () => {
const refReturn = formData.value.refText.replace('\n','|') const refReturn = formData.value.refText.replace('\n', '|')
emit('closeWithReturn',refReturn) emit('closeWithReturn', refReturn)
dialogTableVisibleVal.value = false; dialogTableVisibleVal.value = false;
} }
const handCancel = () =>{ const handCancel = () => {
emit('update:dialogTableVisible', false); // 通知父组件关闭 emit('update:dialogTableVisible', false); // 通知父组件关闭
} }
@ -67,16 +75,15 @@ const initFormData = () => {
watch( watch(
()=> props.dialogTableVisible, () => props.dialogTableVisible,
(newVal)=>{ (newVal) => {
dialogTableVisibleVal.value = newVal dialogTableVisibleVal.value = newVal
if(newVal){ if (newVal) {
initFormData(); initFormData();
} }
},{ immediate: true } // 初始化时立即执行一次 }, { immediate: true } // 初始化时立即执行一次
) )
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss"></style>
</style>

View File

@ -30,8 +30,8 @@ const columns = ref([
]); ]);
const tableConfig = ref({ const tableConfig = ref({
border: true, // 边框 border: true, // 边框
height: '80vh', // 高度 height: '78vh', // 高度
highlightCurrentRow: true, // 高亮当前行 // highlightCurrentRow: true, // 高亮当前行
// cellStyle: cellStyleHd // cellStyle: cellStyleHd
}) })
@ -47,7 +47,7 @@ const emit = defineEmits(['refreshTabData'])
//序号最大值 //序号最大值
const maxXh = computed(() => { const maxXh = computed(() => {
return modelParam.value.commonDescriptionsData.length > 0 ? Math.max(...modelParam.value.commonDescriptionsData.map((item: any) => item.xh || 0)) : 0; return modelParam.value.commonDescriptionsData.length > 0 ? modelParam.value.commonDescriptionsData.length + 1 : 0;
}); });
const rowClick = (row: any) => { const rowClick = (row: any) => {
@ -59,7 +59,7 @@ const onAddClick = () => {
const newData: XmTextresultNew = { const newData: XmTextresultNew = {
xmid: modelParam.value.basicData.xmid, xmid: modelParam.value.basicData.xmid,
xmdh: modelParam.value.basicData.xmdh, xmdh: modelParam.value.basicData.xmdh,
xh: maxXh.value + 1 xh: maxXh.value
} }
modelParam.value.commonDescriptionsData.push(newData) modelParam.value.commonDescriptionsData.push(newData)
} }

View File

@ -1,8 +1,8 @@
<template> <template>
<!-- 知识库 --> <!-- 知识库 -->
<div> <div>
<CustomTable ref="tableRef" :data="dataList" :columns="columns" :enable-column-drag="true" @column-drag-end="handleColumnDragEnd" <CustomTable ref="tableRef" :data="dataList" :columns="columns" :enable-column-drag="true"
:config="tableConfig"/> @column-drag-end="handleColumnDragEnd" :config="tableConfig" />
</div> </div>
</template> </template>
@ -32,7 +32,7 @@ const columns = ref([
]); ]);
const tableConfig = ref({ const tableConfig = ref({
border: true, // 边框 border: true, // 边框
height: '87vh', // 高度 height: '81.5vh', // 高度
highlightCurrentRow: true, // 高亮当前行 highlightCurrentRow: true, // 高亮当前行
// cellStyle: cellStyleHd // cellStyle: cellStyleHd
}) })

View File

@ -8,7 +8,7 @@
<CustomTable ref="tableRef" :data="modelParam.userInstrData" :columns="columns" :enable-column-drag="true" <CustomTable ref="tableRef" :data="modelParam.userInstrData" :columns="columns" :enable-column-drag="true"
@column-drag-end="handleColumnDragEnd" :config="tableConfig" @row-click="onRowClick"> @column-drag-end="handleColumnDragEnd" :config="tableConfig" @row-click="onRowClick">
<template #yq="{ row }"> <template #yq="{ row }">
<YQSelectTable v-model:data="row.yq" placeholder="请输入仪器名称" /> <YQSelectTable v-model:data="row.yq" placeholder="请选择仪器名称" class="full-width-input" />
</template> </template>
<template #xs="{ row }"> <template #xs="{ row }">
<el-input v-model="row.xs" class="full-width-input" /> <el-input v-model="row.xs" class="full-width-input" />
@ -42,16 +42,16 @@ const modelParam = defineModel<any>()
const tableRef = ref<any>(); const tableRef = ref<any>();
const columns = ref([ const columns = ref([
{ prop: 'vsid', label: '对照编码', visible: false, align: 'center' }, { prop: 'vsid', label: '对照编码', visible: false, align: 'center' },
{ prop: 'yq', label: '仪器代号', visible: true, align: 'center', slot: 'yq', width: 150 }, { prop: 'yq', label: '仪器代号', visible: true, align: 'center', slot: 'yq', width: 200, showOverflowTooltip: false },
{ prop: 'xs', label: '调整系数', visible: true, align: 'center', slot: 'xs', width: 100 }, { prop: 'xs', label: '调整系数', visible: true, align: 'center', slot: 'xs', showOverflowTooltip: false },
{ prop: 'zkxm', label: '质控', visible: true, align: 'center', slot: 'zkxm', width: 40 }, { prop: 'zkxm', label: '质控', visible: true, align: 'center', slot: 'zkxm', width: 40 },
{ prop: 'ckxx', label: '参考下限', visible: true, align: 'center', slot: 'ckxx', width: 100 }, { prop: 'ckxx', label: '参考下限', visible: true, align: 'center', slot: 'ckxx', showOverflowTooltip: false },
{ prop: 'cksx', label: '参考上限', visible: true, align: 'center', slot: 'cksx', width: 100 }, { prop: 'cksx', label: '参考上限', visible: true, align: 'center', slot: 'cksx', showOverflowTooltip: false },
{ prop: 'dyckz', label: '打印参考值', visible: true, align: 'center', slot: 'dyckz', width: 100 }, { prop: 'dyckz', label: '打印参考值', visible: true, align: 'center', slot: 'dyckz', showOverflowTooltip: false },
]); ]);
const tableConfig = ref({ const tableConfig = ref({
border: true, // 边框 border: true, // 边框
height: '85vh', // 高度 height: '78vh', // 高度
highlightCurrentRow: true, // 高亮当前行 highlightCurrentRow: true, // 高亮当前行
// cellStyle: cellStyleHd // cellStyle: cellStyleHd
}) })

View File

@ -237,10 +237,7 @@ const handleQuery = () => {
// 拼接label并设置到显示值 // 拼接label并设置到显示值
selectShowValue.value = labels.join(',') selectShowValue.value = labels.join(',')
console.log('selectShowValue.value==>', selectShowValue.value);
emit('query', filteredParams) emit('query', filteredParams)
selectVisible.value = false; selectVisible.value = false;
} }