This commit is contained in:
jiangs 2025-12-23 15:16:14 +08:00
commit 26af0d1034
5 changed files with 227 additions and 159 deletions

View File

@ -146,4 +146,28 @@ export function delitemtdh(data?: Object) {
method: 'get', method: 'get',
params: data params: data
}); });
}
// 获取仪器参数
export function querydouble(data?: Object) {
return request({
url: '/xminfo/querydouble',
method: 'get',
params: data
});
}
// 保存仪器参数
export function savedouble(data?: Object) {
return request({
url: '/xminfo/savedouble',
method: 'post',
data
});
}
// 获取参数默认模板
export function querymbmc(data?: Object) {
return request({
url: '/xminfo/querymbmc',
method: 'get',
params: data
});
} }

View File

@ -171,13 +171,7 @@ service.interceptors.response.use(res => {
}) })
return Promise.reject('error'); return Promise.reject('error');
} else if (code === 1) { } else if (code === 1) {
//提示并失败 //提示并返回数据
ElNotification({
title: '提示',
message: msg,
type: 'error',
duration: 0,
})
return Promise.resolve(res.data) return Promise.resolve(res.data)
} else if (code === 4) { } else if (code === 4) {
//返回特定值,需要后续处理,表示当前操作需要处理后再调用,problemId是步骤关键参数,需要再次调用时引入 //返回特定值,需要后续处理,表示当前操作需要处理后再调用,problemId是步骤关键参数,需要再次调用时引入

View File

@ -1,159 +1,169 @@
<template> <template>
<!-- 参数列表 --> <!-- 参数列表 -->
<div> <div>
<el-row :gutter="10" class="table-toolbar"> <template v-if="paramsFlag">
<el-col :span="1.5"> <el-row :gutter="10" class="table-toolbar">
<el-button type="primary" plain icon="Check" @click="handleSave">保存</el-button> <el-col :span="1.5">
</el-col> <el-button type="primary" plain icon="Check" @click="handleSave">保存</el-button>
<el-col :span="1.5"> </el-col>
<!-- <el-col :span="1.5">
<el-button type="success" plain icon="Edit" @click="handleCancelEdit">取消修改</el-button> <el-button type="success" plain icon="Edit" @click="handleCancelEdit">取消修改</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="danger" plain icon="RefreshRight" @click="handleRestoreDefault">还原默认</el-button> <el-button type="danger" plain icon="RefreshRight" @click="handleRestoreDefault">还原默认</el-button>
</el-col> </el-col> -->
</el-row>
<el-form ref="form" :model="formData" :rules="rules" label-width="120px" class="form-inline" inline>
<div class="title">说明:公式中阴阳对照请用NC,PC表示</div>
<el-row>
<el-col :span="8">
<el-form-item label="测试波长" prop="csbc">
<el-select v-model="formData.csbc" style="width: 12rem;">
<el-option v-for="item in dzList" :key="item.lgph" :value="item.lgph" :label="item.bc" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" style="display: flex;">
<el-form-item label="参考波长" prop="ckbc">
<el-select v-model="formData.ckbc" style="width: 12rem;">
<el-option v-for="item in dzList" :key="item.lgph" :value="item.lgph" :label="item.bc" />
</el-select>
</el-form-item>
<el-button type="primary" @click="openDz">滤光片波长对照表</el-button>
</el-col>
<el-col :span="8">
<el-form-item label="阳性判断公式" prop="yxgs">
<el-input v-model="formData.yxgs" />
</el-form-item>
</el-col>
</el-row> </el-row>
<el-row> <el-form ref="form" :model="formData" :rules="rules" label-width="120px" class="form-inline" inline>
<el-col :span="8"> <div style="display: flex;">
<el-form-item label="上灰区" prop="shq"> <el-form-item label="项目" prop="xmdh">
<el-input v-model="formData.shq"> <SelectTable v-model:data="xmdh" :tableData="xmList" style="width: 12rem;" @getDataValue='getXmInfo' />
<template #append>% </template>
</el-input>
</el-form-item> </el-form-item>
</el-col> <div class="title">说明:公式中阴阳对照请用NC,PC表示</div>
<el-col :span="8"> </div>
<el-form-item label="下灰区" prop="xhq"> <el-row>
<el-input v-model="formData.xhq"> <el-col :span="8">
<template #append>% </template> <el-form-item label="测试波长" prop="csbc">
</el-input> <el-select v-model="formData.csbc" style="width: 12rem;">
</el-form-item> <el-option v-for="item in dzList" :key="item.lgph" :value="item.lgph" :label="item.bc" />
</el-col> </el-select>
<el-col :span="8"> </el-form-item>
<el-form-item label="阴性对照下限" prop="negxx"> </el-col>
<el-input v-model="formData.negxx" /> <el-col :span="8" style="display: flex;">
</el-form-item> <el-form-item label="参考波长" prop="ckbc">
</el-col> <el-select v-model="formData.ckbc" style="width: 12rem;">
</el-row> <el-option v-for="item in dzList" :key="item.lgph" :value="item.lgph" :label="item.bc" />
</el-select>
</el-form-item>
<el-button type="primary" @click="openDz">滤光片波长对照表</el-button>
</el-col>
<el-col :span="8">
<el-form-item label="阳性判断公式" prop="yxgs">
<el-input v-model="formData.yxgs" />
</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="阳性对照下限" prop="posxx"> <el-form-item label="上灰区" prop="shq">
<el-input v-model="formData.posxx" /> <el-input v-model="formData.shq">
</el-form-item> <template #append>% </template>
</el-col> </el-input>
<el-col :span="8"> </el-form-item>
<el-form-item label="阴性对照上限" prop="negsx"> </el-col>
<el-input v-model="formData.negsx" /> <el-col :span="8">
</el-form-item> <el-form-item label="下灰区" prop="xhq">
</el-col> <el-input v-model="formData.xhq">
<el-col :span="8"> <template #append>% </template>
<el-form-item label="阳性对照上限" prop="possx"> </el-input>
<el-input v-model="formData.possx" /> </el-form-item>
</el-form-item> </el-col>
</el-col> <el-col :span="8">
<el-col :span="6"> <el-form-item label="阴性对照下限" prop="negxx">
<el-input v-model="formData.negxx" />
</el-form-item>
</el-col>
</el-row>
</el-col> <el-row>
</el-row> <el-col :span="8">
<el-form-item label="阳性对照下限" prop="posxx">
<el-input v-model="formData.posxx" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="阴性对照上限" prop="negsx">
<el-input v-model="formData.negsx" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="阳性对照上限" prop="possx">
<el-input v-model="formData.possx" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-divider></el-divider> </el-col>
<el-row> </el-row>
<el-col :span="8">
<el-form-item label="项目性质" prop="xmxz">
<el-radio-group v-model="formData.xmxz">
<el-radio value="1">定性</el-radio>
<el-radio value="2">定量</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="移动模式" prop="ydfs">
<el-radio-group v-model="formData.ydfs">
<el-radio value="1">连续</el-radio>
<el-radio value="2">步进</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="测试模式" prop="csms"> <el-divider></el-divider>
<el-radio-group v-model="formData.csms"> <el-row>
<el-radio value="1">终点法</el-radio> <el-col :span="8">
<el-radio value="2">两点法</el-radio> <el-form-item label="项目性质" prop="xmxz">
</el-radio-group> <el-radio-group v-model="formData.xmxz">
</el-form-item> <el-radio value="1">定性</el-radio>
</el-col> <el-radio value="2">定量</el-radio>
</el-row> </el-radio-group>
<el-row> </el-form-item>
<el-col :span="8"> </el-col>
<el-form-item label="振板频率" prop="zbpl"> <el-col :span="8">
<el-radio-group v-model="formData.zbpl"> <el-form-item label="移动模式" prop="ydfs">
<el-radio value="1">高</el-radio> <el-radio-group v-model="formData.ydfs">
<el-radio value="2">中</el-radio> <el-radio value="1">连续</el-radio>
<el-radio value="3">低</el-radio> <el-radio value="2">步进</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="空白形式" prop="kbms">
<el-radio-group v-model="formData.kbms"> <el-form-item label="测试模式" prop="csms">
<el-radio value="1">空气</el-radio> <el-radio-group v-model="formData.csms">
<el-radio value="2">试剂</el-radio> <el-radio value="1">终点法</el-radio>
</el-radio-group> <el-radio value="2">两点法</el-radio>
</el-form-item> </el-radio-group>
</el-col> </el-form-item>
<el-col :span="8"> </el-col>
<el-form-item label="振板时间" prop="zbsj"> </el-row>
<el-input v-model="formData.zbsj"> <el-row>
<template #append>秒</template> <el-col :span="8">
</el-input> <el-form-item label="振板频率" prop="zbpl">
</el-form-item> <el-radio-group v-model="formData.zbpl">
</el-col> <el-radio value="1">高</el-radio>
</el-row> <el-radio value="2">中</el-radio>
<el-divider></el-divider> <el-radio value="3">低</el-radio>
<el-row> </el-radio-group>
<el-col :span="8"> </el-form-item>
<el-form-item label="默认模板" prop="mrmb"> </el-col>
<el-select v-model="formData.mrmb" style="width: 12rem;"> <el-col :span="8">
<!-- <el-option v-for="item in sjtableData" :key="item.sjph" :value="item.sjph" :label="item.sjph" /> --> <el-form-item label="空白形式" prop="kbms">
</el-select> <el-radio-group v-model="formData.kbms">
</el-form-item> <el-radio value="1">空气</el-radio>
</el-col> <el-radio value="2">试剂</el-radio>
<el-col :span="8" style="display: flex;"> </el-radio-group>
<el-form-item label="默认试剂" prop="mrsjph"> </el-form-item>
<el-select v-model="formData.mrsjph" style="width: 12rem;"> </el-col>
<el-option v-for="item in sjtableData" :key="item.sjph" :value="item.sjph" :label="item.sjph" /> <el-col :span="8">
</el-select> <el-form-item label="振板时间" prop="zbsj">
</el-form-item> <el-input v-model="formData.zbsj">
<el-button type="primary" @click="sjHandle">试剂维护</el-button> <template #append>秒</template>
</el-col> </el-input>
</el-row> </el-form-item>
</el-form> </el-col>
</el-row>
<el-divider></el-divider>
<el-row>
<el-col :span="8">
<el-form-item label="默认模板" prop="mrmb">
<el-select v-model="formData.mrmb" style="width: 12rem;">
<el-option v-for="item in mbList" :key="item.no" :value="item.no" :label="item.na" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" style="display: flex;">
<el-form-item label="默认试剂" prop="mrsjph">
<el-select v-model="formData.mrsjph" style="width: 12rem;">
<el-option v-for="item in sjtableData" :key="item.sjph" :value="item.sjph" :label="item.sjph" />
</el-select>
</el-form-item>
<el-button type="primary" @click="sjHandle">试剂维护</el-button>
</el-col>
</el-row>
</el-form>
</template>
<template v-else>
<el-empty :image-size="200" description="暂无参数配置" />
</template>
<!-- 波长对照表 --> <!-- 波长对照表 -->
<el-dialog v-model="dialogVisible" title="滤光波长对照表" draggable :close-on-click-modal="false" width="500px"> <el-dialog v-model="dialogVisible" title="滤光波长对照表" draggable :close-on-click-modal="false" width="500px">
@ -217,14 +227,16 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { queryFilter, addXmFilter, delXmFilter, addXmLot, delXmLot, queryXmLot, querySjcs } from '@/api/liswork/xtwh/ComOpt' import { queryFilter, addXmFilter, delXmFilter, addXmLot, delXmLot, queryXmLot, querySjcs, querydouble, savedouble, querymbmc } from '@/api/liswork/xtwh/ComOpt'
import { ElMessage } from 'element-plus'; import { ElMessage } from 'element-plus';
import { formatDict, dictData } from '@/hooks' import { formatDict, dictData } from '@/hooks'
import { get } from 'lodash'; import { queryXmInfo } from '@/api/liswork/work/LisWork';
const yq = defineModel<string>() const yq = defineModel<string>()
const dialogVisible = ref(false) const dialogVisible = ref(false)
const xmdh = ref('');
const formData = ref({ const formData = ref({
csbc: '', csbc: '',
ckbc: '', ckbc: '',
@ -242,7 +254,8 @@ const formData = ref({
kbms: '1', kbms: '1',
zbsj: '', zbsj: '',
mrmb: '', mrmb: '',
mrsjph: '' mrsjph: '',
xmdh: '',
}); });
const rules = ref({ const rules = ref({
csbc: [ csbc: [
@ -253,11 +266,18 @@ const rules = ref({
] ]
}); });
const paramsFlag = ref(true);
const form = ref(); const form = ref();
const handleSave = () => { const handleSave = () => {
form.value.validate((valid: boolean) => { form.value.validate((valid: boolean) => {
if (valid) { if (valid) {
console.log('submit!') savedouble(formData.value).then((res: any) => {
if (res.code == 0) {
ElMessage.success('保存成功!')
getXmInfo()
}
})
} }
}) })
} }
@ -310,6 +330,7 @@ interface sjList {
sjcs: string, sjph: string, yq: string, yxq: string, csff: string sjcs: string, sjph: string, yq: string, yxq: string, csff: string
} }
const sjShow = ref(false) const sjShow = ref(false)
const mbList = ref<Array<{ na: string, no: string }>>([])
const sjtableData = ref<sjList[]>([]) const sjtableData = ref<sjList[]>([])
const sjHandle = () => { const sjHandle = () => {
getSjList() getSjList()
@ -363,9 +384,38 @@ const getSjcjList = () => {
}) })
} }
const getXmInfo = () => {
querydouble({ yq: yq.value, xmdh: xmdh.value }).then((res: any) => {
paramsFlag.value = res.code == 1 ? false : true;
formData.value = res.data || {}
})
}
const xmList = ref<Array<{ label: string, value: string }>>([])
const getXmList = () => {
queryXmInfo({ yq: yq.value }).then((res: any) => {
xmList.value = res.data.map((item: any) => {
return {
label: item.xmmc,
value: item.xmdh,
}
})
})
};
onMounted(() => {
querymbmc().then((res: any) => {
mbList.value = res.data || []
})
});
watch(yq, (newVal) => { watch(yq, (newVal) => {
getDzList() if (newVal) {
getSjList() getXmInfo()
getDzList()
getSjList()
getXmList()
}
xmdh.value = ''
}, { }, {
immediate: true, immediate: true,
deep: true deep: true

View File

@ -18,9 +18,9 @@
<div class="table-row"> <div class="table-row">
<CustomTable ref="tableRef" :data="dataList" :columns="columns" :config="tableConfig" :enableRowDrag="true" <CustomTable ref="tableRef" :data="dataList" :columns="columns" :config="tableConfig" :enableRowDrag="true"
@row-drag-end="handleRowDragEnd" @row-click="handleRowClick"> @row-drag-end="handleRowDragEnd" @row-click="handleRowClick">
<template #dyxh="{ row }"> <!-- <template #dyxh="{ row }">
<el-input v-model="row.dyxh" class="full-width-input" /> <el-input v-model="row.dyxh" class="full-width-input" />
</template> </template> -->
</CustomTable> </CustomTable>
</div> </div>
</div> </div>
@ -44,7 +44,7 @@ const dataList = ref<DataItem[]>([]);
const columns = ref([ const columns = ref([
{ prop: 'xmid', label: '项目ID', visible: true, align: 'center' }, { prop: 'xmid', label: '项目ID', visible: true, align: 'center' },
{ prop: 'xmmc', label: '项目名称', visible: true, align: 'center' }, { prop: 'xmmc', label: '项目名称', visible: true, align: 'center' },
{ prop: 'dyxh', label: '排序', visible: true, align: 'center', slot: "dyxh" }, { prop: 'dyxh', label: '排序', visible: true, align: 'center', },
]); ]);
const tableConfig = ref({ const tableConfig = ref({
border: true, // 边框 border: true, // 边框

View File

@ -112,7 +112,7 @@ const tabList = [
{ key: 'SysSort', label: '项目排序', component: SysSort }, { key: 'SysSort', label: '项目排序', component: SysSort },
{ key: 'SysReport', label: '报告单设置', component: SysReport }, { key: 'SysReport', label: '报告单设置', component: SysReport },
] ]
const activeName = ref('SysChannel') const activeName = ref('SysParameter')
// 计算当前要渲染的组件 // 计算当前要渲染的组件
const currentComponent = computed(() => { const currentComponent = computed(() => {