默认参数

This commit is contained in:
wyuu 2025-12-10 18:02:35 +08:00
parent 8ee0a90a5c
commit 04dd1d3f82
13 changed files with 159 additions and 182 deletions

View File

@ -33,6 +33,7 @@
"mitt": "^3.0.1", "mitt": "^3.0.1",
"nprogress": "0.2.0", "nprogress": "0.2.0",
"pinia": "2.1.7", "pinia": "2.1.7",
"pinia-plugin-persistedstate": "^4.0.0",
"pinyin-pro": "^3.26.0", "pinyin-pro": "^3.26.0",
"select2": "^4.1.0-rc.0", "select2": "^4.1.0-rc.0",
"socket.io-client": "^4.8.1", "socket.io-client": "^4.8.1",

View File

@ -19,7 +19,7 @@
<div class="select-table-container"> <div class="select-table-container">
<el-select ref="selectTable" v-model="selectShowValue" :placeholder="props.placeholder" :size="props.size" <el-select ref="selectTable" v-model="selectShowValue" :placeholder="props.placeholder" :size="props.size"
:style="{ width: props.width }" @visible-change="visibleChange" @clear="clearHandle" :clearable="props.clearable" :style="{ width: props.width }" @visible-change="visibleChange" @clear="clearHandle" :clearable="props.clearable"
:disabled="disabled"> :disabled="disabled" v-bind="$attrs">
<template #empty> <template #empty>
<div class="select-table-dropdown"> <div class="select-table-dropdown">
<div style="text-align: left;"> <div style="text-align: left;">
@ -61,7 +61,7 @@ const props = withDefaults(defineProps<Props>(), {
width: "100%", width: "100%",
dictType: '', dictType: '',
clearable: true, clearable: true,
objKey: '' objKey: 'label'
}); });

View File

@ -1,3 +1,5 @@
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
const store = createPinia() const store = createPinia()
store.use(piniaPluginPersistedstate) // 注册持久化插件
export default store export default store

View File

@ -1,10 +1,16 @@
//公共状态管理 //公共状态管理
import { defineStore } from 'pinia' import { defineStore } from 'pinia'
// 定义配置对象接口
interface DefaultConfig {
defaultinstr?: string //默认仪器
lisgroupid?: string //默认分组id
[key: string]: any // 允许其他属性
}
export const useCommonStore = defineStore('commonStore', { export const useCommonStore = defineStore('commonStore', {
state: () => ({ state: () => ({
lxsrs: [] as string[], // 存储项目模板名称 lxsrs: [] as string[], // 存储项目模板名称
fingerprint: '',// 存储指纹信息 fingerprint: '',// 存储指纹信息
defaultConfig: {} as DefaultConfig, // 存储默认配置
}), }),
actions: { actions: {
setLxsrList(list: any[]) { setLxsrList(list: any[]) {
@ -14,5 +20,18 @@ export const useCommonStore = defineStore('commonStore', {
setFingerprint(fingerprint: string) { setFingerprint(fingerprint: string) {
this.fingerprint = fingerprint this.fingerprint = fingerprint
}, },
setDefaultConfig(config: DefaultConfig) {
this.defaultConfig = config
},
},
// 持久化配置
persist: {
// 指定要持久化的状态字段
paths: ['fingerprint', 'defaultConfig',],
// 可选配置:自定义存储键名(默认是store的id)
key: 'common_store',
// 可选配置:指定存储位置(默认是localStorage 也可以用sessionStorage)
storage: localStorage,
} }
}) })

15
src/types/pinia.d.ts vendored Normal file
View File

@ -0,0 +1,15 @@
import 'pinia'
declare module 'pinia' {
export interface DefineStoreOptionsBase<S, Store> {
// 允许在定义 store 时使用 persist 属性
persist?: boolean | PersistOptions
}
}
// 定义持久化配置的类型(根据插件实际参数调整)
interface PersistOptions {
paths?: string[]
key?: string
storage?: Storage
}

View File

@ -121,10 +121,6 @@ const handleOk = () => {
} }
onMounted(async () => {
await getDictData('XMGL', 'ITEMCLASS', 'YQDL', 'YQ');
})
</script> </script>
<style scoped lang="scss"></style> <style scoped lang="scss"></style>

View File

@ -416,7 +416,7 @@ const rowChange = async (row: any) => {
{ {
confirmButtonText: '保存', confirmButtonText: '保存',
cancelButtonText: '不保存', cancelButtonText: '不保存',
type: 'warning' type: 'warning',
} }
).then(() => { ).then(() => {
// 用户选择保存 // 用户选择保存
@ -434,6 +434,7 @@ const getInfo = async (row: any) => {
tableConfig.value.highlightCurrentRow = true 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)
res.data.xmInfoNew.xsws = res.data.xmInfoNew.xsws.toString()
selectDetailRow.value = res.data selectDetailRow.value = res.data
changeActiveTab() changeActiveTab()
initialModelParam.value = _.cloneDeep(modelParam.value); initialModelParam.value = _.cloneDeep(modelParam.value);
@ -460,7 +461,7 @@ const changeActiveTab = () => {
} }
onMounted(async () => { onMounted(async () => {
getDictData('XMGL', 'ITEMCLASS', 'YQDL'); getDictData('XMGL', 'ITEMCLASS', 'YQDL', 'UT', 'MD', 'GBDM', 'YQ');
getList() getList()
getYqConfig(); getYqConfig();
}) })

View File

@ -37,7 +37,7 @@ 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', showOverflowTooltip: false }, { prop: 'qz', label: '取值', visible: true, align: 'center', slot: 'qz', showOverflowTooltip: false },
{ prop: 'srm', label: '快速输入码', visible: true, align: 'center', slot: 'srm' }, { prop: 'srm', label: '快速输入码', visible: true, align: 'center', slot: 'srm', showOverflowTooltip: false },
{ prop: 'jgbz', label: '结果标志', visible: true, align: 'center', slot: 'jgbz', showOverflowTooltip: false } { prop: 'jgbz', label: '结果标志', visible: true, align: 'center', slot: 'jgbz', showOverflowTooltip: false }
]); ]);
const tableConfig = ref({ const tableConfig = ref({

View File

@ -1,169 +1,170 @@
<template> <template>
<!-- 基本资料 --> <!-- 基本资料 -->
<div class="basic_info"> <div class="basic_info">
<el-form ref="formRef" :model="modelParam.basicData" :rules="rules" size="small" class="form-inline" inline <el-form ref="formRef" :model="basicData" :rules="rules" size="small" class="form-inline" inline
label-width="6.25rem" label-position="right" :inline-message="false"> label-width="6.25rem" label-position="right" :inline-message="false">
<span class="text-span">基本参数:</span> <span class="text-span">基本参数:</span>
<el-divider style="margin: .3125rem 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="basicData.xmgl" :fields="xmglFields" :tableData="dictData.XMGL" label="label"
label="label" value="value" objKey="value" width="12.5rem" placeholder="" size="small" /> value="value" objKey="value" width="12.5rem" placeholder="" size="small" />
</el-form-item>
<el-form-item label="项目ID" prop="xmid">
<el-input disabled v-model="basicData.xmid" style="width:8.2rem;" />
</el-form-item>
<el-form-item prop="uflag">
<el-checkbox v-model="basicData.uflag" true-value="1" false-value="0">停用</el-checkbox>
</el-form-item> </el-form-item>
<el-form-item label="英文缩写" prop="xmdh"> <el-form-item label="英文缩写" prop="xmdh">
<el-input v-model="modelParam.basicData.xmdh" @input="xmdhInput" /> <el-input v-model="basicData.xmdh" @input="xmdhInput" />
</el-form-item>
<el-form-item label="项目名称" prop="xmmc">
<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="basicData.dw" :fields="xmglFields" :tableData="dictData.UT" label="label"
value="label" objKey="label" width="12.5rem" placeholder="" size="small" /> value="label" objKey="label" width="12.5rem" placeholder="" size="small" />
</el-form-item> </el-form-item>
<el-form-item label="项目名称" prop="xmmc">
<el-input v-model="basicData.xmmc" @change="xmmcChange" />
</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="basicData.xmlb" :fields="xmglFields" :tableData="xmlbData" label="label"
value="value" objKey="value" width="12.5rem" 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="basicData.mrz" :fields="xmglFields" :tableData="mrzData" label="label" value="value"
value="value" objKey="value" width="12.5rem" placeholder="" size="small" /> 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="basicData.yqdl" :fields="xmglFields" :tableData="dictData.YQDL" label="label"
label="label" value="value" objKey="value" width="12.5rem" placeholder="" size="small" /> value="value" objKey="value" width="12.5rem" placeholder="" size="small" />
</el-form-item> </el-form-item>
<el-form-item label="允许CV(%)" prop="qccv"> <el-form-item label="允许CV(%)" prop="qccv">
<el-input type="number" v-model="modelParam.basicData.qccv" /> <el-input type="number" v-model="basicData.qccv" />
</el-form-item> </el-form-item>
<el-form-item label="稀释倍数" prop="xsbs"> <el-form-item label="稀释倍数" prop="xsbs">
<el-input v-model="modelParam.basicData.xsbs" /> <el-input v-model="basicData.xsbs" />
</el-form-item> </el-form-item>
<el-form-item label="whonet编码" prop="whocode"> <el-form-item label="whonet编码" prop="whocode">
<el-input v-model="modelParam.basicData.whocode" /> <el-input v-model="basicData.whocode" />
</el-form-item> </el-form-item>
<el-form-item label="Gram" prop="germflag"> <el-form-item label="Gram" prop="germflag">
<el-input v-model="modelParam.basicData.germflag" /> <el-input v-model="basicData.germflag" />
</el-form-item> </el-form-item>
<el-form-item label="英文名称" prop="yymc"> <el-form-item label="英文名称" prop="yymc">
<el-input v-model="modelParam.basicData.yymc" /> <el-input v-model="basicData.yymc" />
</el-form-item> </el-form-item>
<el-form-item label="项目ID" prop="xmid">
<el-input disabled v-model="modelParam.basicData.xmid" />
</el-form-item>
<el-form-item label="知识库编码" prop="knowledge"> <el-form-item label="知识库编码" prop="knowledge">
<el-input v-model="modelParam.basicData.knowledge" /> <el-input v-model="basicData.knowledge" />
</el-form-item> </el-form-item>
<el-form-item label="小数保留位数" prop="xsws"> <el-form-item label="小数保留位数" prop="xsws">
<SelectTable v-model:data="modelParam.basicData.xsws" :fields="xmglFields" :tableData="xswsData" label="label" <SelectTable v-model:data="basicData.xsws" :fields="xmglFields" :tableData="xswsData" label="label"
value="value" objKey="value" width="12.5rem" placeholder="" size="small" /> value="value" objKey="value" width="12.5rem" placeholder="" size="small" />
</el-form-item> </el-form-item>
<el-form-item label="打印形式" prop="dylx"> <el-form-item label="打印形式" prop="dylx">
<SelectTable v-model:data="modelParam.basicData.dylx" :fields="xmglFields" :tableData="dylxData" label="label" <SelectTable v-model:data="basicData.dylx" :fields="xmglFields" :tableData="dylxData" label="label"
value="value" objKey="value" width="12.5rem" placeholder="" size="small" /> value="value" objKey="value" width="12.5rem" placeholder="" size="small" />
</el-form-item> </el-form-item>
<el-form-item label="总汇表代号" prop="zhbdh"> <el-form-item label="总汇表代号" prop="zhbdh">
<el-input v-model="modelParam.basicData.zhbdh" /> <el-input v-model="basicData.zhbdh" />
</el-form-item> </el-form-item>
<el-form-item label="报告单代号" prop="bgdh"> <el-form-item label="报告单代号" prop="bgdh">
<el-input v-model="modelParam.basicData.bgdh" /> <el-input v-model="basicData.bgdh" />
</el-form-item> </el-form-item>
<el-form-item label="价格" prop="jg"> <el-form-item label="价格" prop="jg">
<el-input type="number" v-model="modelParam.basicData.jg" /> <el-input type="number" v-model="basicData.jg" />
</el-form-item> </el-form-item>
<el-form-item label="助记符" prop="zjf"> <el-form-item label="助记符" prop="zjf">
<el-input v-model="modelParam.basicData.zjf" /> <el-input v-model="basicData.zjf" />
</el-form-item> </el-form-item>
<el-form-item label="测试方法" prop="csff"> <el-form-item label="测试方法" prop="csff">
<SelectTable v-model:data="modelParam.basicData.csff" :fields="xmglFields" :tableData="dictData.MD" <SelectTable v-model:data="basicData.csff" :fields="xmglFields" :tableData="dictData.MD" label="label"
label="label" value="value" objKey="value" width="12.5rem" placeholder="" size="small" /> value="value" objKey="value" width="12.5rem" placeholder="" size="small" />
</el-form-item> </el-form-item>
<el-form-item label="分组打印组号" prop="fzdyxh"> <el-form-item label="分组打印组号" prop="fzdyxh">
<el-input type="number" v-model="modelParam.basicData.fzdyxh" /> <el-input type="number" v-model="basicData.fzdyxh" />
</el-form-item> </el-form-item>
<el-form-item label="细菌项目类别" prop="itemclass"> <el-form-item label="细菌项目类别" prop="itemclass">
<SelectTable v-model:data="modelParam.basicData.itemclass" :fields="xmglFields" :tableData="dictData.ITEMCLASS" <SelectTable v-model:data="basicData.itemclass" :fields="xmglFields" :tableData="dictData.ITEMCLASS"
label="label" value="value" objKey="value" width="12.5rem" placeholder="" size="small" /> label="label" value="value" objKey="value" width="12.5rem" placeholder="" size="small" />
</el-form-item> </el-form-item>
<el-form-item prop="uflag">
<el-checkbox value="uflag">停用</el-checkbox>
</el-form-item>
<span class="text-span">结果参考值计算:</span> <span class="text-span">结果参考值计算:</span>
<el-divider style="margin: .3125rem 0;" /> <el-divider style="margin: .3125rem 0;" />
<el-form-item label="参考下限" prop="ckxx"> <el-form-item label="参考下限" prop="ckxx">
<el-input v-model="modelParam.basicData.ckxx" @input="updatedyckz" /> <el-input v-model="basicData.ckxx" @input="updatedyckz" />
</el-form-item> </el-form-item>
<el-form-item label="参考上限" prop="cksx"> <el-form-item label="参考上限" prop="cksx">
<el-input v-model="modelParam.basicData.cksx" @input="updatedyckz" /> <el-input v-model="basicData.cksx" @input="updatedyckz" />
</el-form-item> </el-form-item>
<el-form-item label="参考值" prop="dyckz"> <el-form-item label="参考值" prop="dyckz">
<el-input v-model="modelParam.basicData.dyckz" /> <el-input v-model="basicData.dyckz" />
<el-button type="primary" class="ml5" @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"> <el-form-item label="公式" prop="jsgs">
<el-input v-model="modelParam.basicData.jsgs" /> <el-input v-model="basicData.jsgs" />
<el-button v-show="modelParam.basicData.jsxm === 'Y'" type="primary" class="ml5" <el-button v-show="basicData.jsxm === 'Y'" type="primary" class="ml5" @click="calcGuildeClick">向导...</el-button>
@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="basicData.ygxb" true-value="Y" false-value="N"></el-checkbox>
<el-checkbox label="与年龄有关" v-model="ygnlCheck"></el-checkbox> <el-checkbox label="与年龄有关" v-model="basicData.ygnl" true-value="Y" false-value="N"></el-checkbox>
<el-checkbox label="与标本有关" v-model="ygbbCheck"></el-checkbox> <el-checkbox label="与标本有关" v-model="basicData.ygbb" true-value="Y" false-value="N"></el-checkbox>
<el-checkbox label="与生理周期有关" v-model="ygzqCheck"></el-checkbox> <el-checkbox label="与生理周期有关" v-model="basicData.ygzq" true-value="Y" false-value="N"></el-checkbox>
<el-checkbox label="与诊断有关" v-model="ygzdCheck"></el-checkbox> <el-checkbox label="与诊断有关" v-model="basicData.ygzd" true-value="Y" false-value="N"></el-checkbox>
<el-checkbox label="计算项目" v-model="jsxmCheck"></el-checkbox> <el-checkbox label="计算项目" v-model="basicData.jsxm" true-value="Y" false-value="N"></el-checkbox>
</el-form-item> </el-form-item>
<span class="text-span">医学审核条件:</span> <span class="text-span">医学审核条件:</span>
<el-divider style="margin: .3125rem 0;" /> <el-divider style="margin: .3125rem 0;" />
<el-form-item label="项目结果不可能大于" prop="sjx" label-width="8.75rem"> <el-form-item label="项目结果不可能大于" prop="sjx" label-width="8.75rem">
<el-input v-model="modelParam.basicData.sjx" style="width:10rem" /> <el-input v-model="basicData.sjx" style="width:10rem" />
</el-form-item> </el-form-item>
<el-form-item label="不可能小于" prop="xjx" label-width="7rem"> <el-form-item label="不可能小于" prop="xjx" label-width="7rem">
<el-input v-model="modelParam.basicData.xjx" style="width:10rem" /> <el-input v-model="basicData.xjx" style="width:10rem" />
</el-form-item> </el-form-item>
<el-form-item label="病人两次检验结果在" prop="jgjg" label-width="8.75rem"> <el-form-item label="病人两次检验结果在" prop="jgjg" label-width="8.75rem">
<el-input v-model="modelParam.basicData.jgjg" style="width:10rem" /> <el-input v-model="basicData.jgjg" style="width:10rem" />
</el-form-item> </el-form-item>
<!--计算属性--> <!--计算属性-->
<el-form-item label="天内不可能相差" prop="cp_jgz" label-width="7rem"> <el-form-item label="天内不可能相差" prop="jgz" label-width="7rem">
<el-input v-model="modelParam.basicData.cp_jgz" style="width:10rem" /> <el-input v-model="basicData.jgz" style="width:10rem">
<template #append v-if="basicData.jgbz == '2'">%</template>
</el-input>
</el-form-item> </el-form-item>
<!--报警条件--> <!--报警条件-->
<span class="text-span">报警条件</span> <span class="text-span">报警条件</span>
<el-divider style="margin: .3125rem 0;" /> <el-divider style="margin: .3125rem 0;" />
<el-form-item label="危急值"> <el-form-item label="危急值">
<el-input placeholder="上限极值" v-model="modelParam.basicData.hlimt" /> &nbsp; <el-input placeholder="上限极值" v-model="basicData.hlimit" /> &nbsp;
<el-input placeholder="下限极值" v-model="modelParam.basicData.llimit" /> <el-input placeholder="下限极值" v-model="basicData.llimit" />
<el-button type="primary" class="ml5" @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" />&nbsp; <el-input placeholder="上限极值" v-model="basicData.redoxx" />&nbsp;
<el-input placeholder="下限极值" v-model="modelParam.basicData.redosx" /> <el-input placeholder="下限极值" v-model="basicData.redosx" />
</el-form-item> </el-form-item>
<span class="text-span">其他参数</span> <span class="text-span">其他参数</span>
<el-divider style="margin: .3125rem 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="basicData.val1" :fields="xmglFields" :tableData="dictData.GBDM" label="label"
label="label" value="value" objKey="value" width="12.5rem" placeholder="国标编码" size="small" /> 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 v-model="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 v-model="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 v-model="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 v-model="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="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="basicData" :text="basicData.jsgs"
@confirm="handleDialogConfirm" /> @confirm="handleDialogConfirm" />
<Condition v-model="conditionTabVisible" :form-data="modelParam.basicData" /> <Condition v-model="conditionTabVisible" :form-data="basicData" />
</div> </div>
</template> </template>
@ -178,10 +179,20 @@ import Condition from './child/Condition.vue';
import { getFirstLetter } from '@/utils/pinyin.js'; import { getFirstLetter } from '@/utils/pinyin.js';
import { ElMessage } from 'element-plus'; import { ElMessage } from 'element-plus';
const modelParam = defineModel<any>()
const modelParam = defineModel<any>();
// 解构basicData 响应数据
const basicData = computed({
get() {
return modelParam.value.basicData;
},
set(newVal) {
modelParam.value.basicData = newVal;
}
});
const formRef = ref(); const formRef = ref();
const mulitDialogTableVisible = ref(false) const mulitDialogTableVisible = ref(false)
const calcDialogTableVisible = ref(false) const calcDialogTableVisible = ref(false)
const conditionTabVisible = ref(false) const conditionTabVisible = ref(false)
@ -218,75 +229,11 @@ const rules = ref({
xmdh: [{ required: true, message: '请输入英文缩写', trigger: 'blur' }], xmdh: [{ required: true, message: '请输入英文缩写', trigger: 'blur' }],
xmmc: [{ required: true, message: '请输入项目名称', trigger: 'blur' }], xmmc: [{ required: true, message: '请输入项目名称', trigger: 'blur' }],
yqdl: [{ required: true, message: '请选择仪器大类', trigger: 'change' }], yqdl: [{ required: true, message: '请选择仪器大类', trigger: 'change' }],
}) dylx: [{ required: true, message: '请选择仪打印方式', trigger: 'change' }],
computed(() => {
switch (modelParam.value.basicData.jgbz) {
case '1':
modelParam.value.basicData.cp_jgz = modelParam.value.basicData.jgz;
break;
case '2':
modelParam.value.basicData.cp_jgz = modelParam.value.basicData.jgz + '%';
break;
}
});
const jsxmCheck = computed({
get() {
return modelParam.value.basicData.jsxm === 'Y'
},
set(checked: boolean) {
modelParam.value.basicData.jsxm = checked ? 'Y' : 'N';
}
})
const ygzqCheck = computed({
get() {
return modelParam.value.basicData.ygzq === 'Y'
},
set(checked: boolean) {
modelParam.value.basicData.ygzq = checked ? 'Y' : 'N';
}
})
const ygzdCheck = computed({
get() {
return modelParam.value.basicData.ygzd === 'Y'
},
set(checked: boolean) {
modelParam.value.basicData.ygzd = checked ? 'Y' : 'N';
}
})
const ygbbCheck = computed({
get() {
return modelParam.value.basicData.ygbb === 'Y'
},
set(checked: boolean) {
modelParam.value.basicData.ygbb = checked ? 'Y' : 'N';
}
})
const ygnlCheck = computed({
get() {
return modelParam.value.basicData.ygnl === 'Y'
},
set(checked: boolean) {
modelParam.value.basicData.ygnl = checked ? 'Y' : 'N';
}
})
const ygxbCheck = computed({
get() {
return modelParam.value.basicData.ygxb === 'Y'
},
set(checked: boolean) {
modelParam.value.basicData.ygxb = checked ? 'Y' : 'N';
}
}) })
const updatedyckz = () => { const updatedyckz = () => {
modelParam.value.basicData.dyckz = !modelParam.value.basicData.ckxx && !modelParam.value.basicData.cksx ? '' : `${modelParam.value.basicData.ckxx}--${modelParam.value.basicData.cksx}`; basicData.value.dyckz = !basicData.value.ckxx && !basicData.value.cksx ? '' : `${basicData.value.ckxx}--${basicData.value.cksx}`;
} }
@ -296,47 +243,39 @@ const multiRefClick = () => {
} }
const closeWithReturnMultiRef = (val: string) => { const closeWithReturnMultiRef = (val: string) => {
modelParam.value.basicData.dyckz = val; basicData.value.dyckz = val;
mulitDialogTableVisible.value = false; mulitDialogTableVisible.value = false;
} }
const handleDialogConfirm = (val: string) => { const handleDialogConfirm = (val: string) => {
modelParam.value.basicData.jsgs = val; basicData.value.jsgs = val;
calcDialogTableVisible.value = false calcDialogTableVisible.value = false
} }
//计算向导 //计算向导
const calcGuildeClick = () => { const calcGuildeClick = () => {
if (modelParam.value.basicData.jsxm) { if (basicData.value.jsxm) {
calcDialogTableVisible.value = true calcDialogTableVisible.value = true
} }
} }
//危急值特定条件 //危急值特定条件
const conditionClick = () => { const conditionClick = () => {
if (modelParam.value.basicData.xmid) { if (basicData.value.xmid) {
conditionTabVisible.value = true conditionTabVisible.value = true
} }
} }
const xmdhInput = (val: string) => { const xmdhInput = (val: string) => {
modelParam.value.basicData.zhbdh = val; basicData.value.zhbdh = val;
modelParam.value.basicData.bgdh = val; basicData.value.bgdh = val;
} }
const xmmcChange = (val: string) => { const xmmcChange = (val: string) => {
modelParam.value.basicData.zjf = getFirstLetter(val); basicData.value.zjf = getFirstLetter(val);
} }
onActivated(async () => {
await getDictData('XMGL', 'UT', 'YQDL', 'MD', 'ITEMCLASS', 'GBDM');
})
// 暴露验证方法(关键步骤) // 暴露验证方法(关键步骤)
defineExpose({ defineExpose({
// 封装表单验证方法,返回 Promise // 封装表单验证方法,返回 Promise

View File

@ -34,7 +34,7 @@
import CustomTable from '@/components/elTable/index.vue' import CustomTable from '@/components/elTable/index.vue'
import { XmInfoVs } from '@/types'; import { XmInfoVs } from '@/types';
import YQSelectTable from '@/components/SelectTable/YQSelectTable/index.vue' import YQSelectTable from '@/components/SelectTable/YQSelectTable/index.vue'
import { ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import { deleteXmInfoVs } from '@/api/liswork/labItem/labItemApi'; import { deleteXmInfoVs } from '@/api/liswork/labItem/labItemApi';
@ -80,17 +80,17 @@ const onClickAdd = () => {
modelParam.value.userInstrData.push(newData) modelParam.value.userInstrData.push(newData)
} }
const onClickDel = async () => { const onClickDel = () => {
if (selectRow.value) { if (!selectRow.value.vsid) return ElMessage.warning('请选择要删除的行!')
await ElMessageBox.confirm('是否要删除选中的数据?', 'Warning', ElMessageBox.confirm('是否要删除选中的数据?', '警告',
{ {
confirmButtonText: '确认', confirmButtonText: '确认',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning', type: 'warning',
}); }).then(async () => {
await deleteXmInfoVs({ vsid: selectRow.value.vsid || 0 }) await deleteXmInfoVs({ vsid: selectRow.value.vsid || 0 })
emit('refreshTabData', modelParam.value.basicData) emit('refreshTabData', modelParam.value.basicData)
} })
} }
const onRowClick = (row: any) => { const onRowClick = (row: any) => {

View File

@ -273,10 +273,10 @@ const CellStyleHd = ({ row, column, rowIndex, columnIndex }: {
rowIndex: number; rowIndex: number;
columnIndex: number; columnIndex: number;
}) => { }) => {
if (column.label == "细菌/结果" && (row.alarm_flag ?? "").trim().length > 0) { if (column.label == "细菌/结果" && row.alarm_flag) {
return { background: '#f00 !important', color: '#FFF' }; return { background: '#f00 !important', color: '#FFF' };
} }
if (column.label == "危急值" && (row.alarm_flag ?? "").trim().length > 0) { if (column.label == "危急值" && row.alarm_flag) {
return { background: '#f00 !important', color: '#FFF' }; return { background: '#f00 !important', color: '#FFF' };
} }

View File

@ -147,17 +147,18 @@ import PatientQueryForm from '@/components/selectSearch/index.vue'
import BatchCode from './components/batchCode.vue'; import BatchCode from './components/batchCode.vue';
// @ts-ignore // @ts-ignore
import { listUser } from '@/api/system/user.js' import { listUser } from '@/api/system/user.js'
const mbStore = useCommonStore();
const aotuSize = classCom.useAutoSize(); const aotuSize = classCom.useAutoSize();
import { initWebSocket, sendWebSocketMessage, closeWebSocket, getWebSocketState } from '@/utils/webSocket'; import { initWebSocket, sendWebSocketMessage, closeWebSocket, getWebSocketState } from '@/utils/webSocket';
import dayjs from 'dayjs';
const previewShow = ref(false); const previewShow = ref(false);
const lbFlag = ref(false); const lbFlag = ref(false);
const queryParams = ref({ const queryParams = ref({
jyrq: '2025-08-20', jyrq: dayjs().format('YYYY-MM-DD'), //'2025-08-20'
yq: '46',
ybh: '1', ybh: '1',
instrGroup: '02', instrGroup: mbStore.defaultConfig.lisgroupid,
yq: mbStore.defaultConfig.defaultinstr,
problemId: 0, problemId: 0,
days: 0, days: 0,
yhdh: '' yhdh: ''
@ -302,13 +303,14 @@ const handleinstrGroupChange = (val: any) => {
// labPat.value = {} // labPat.value = {}
getYqConfig() getYqConfig()
} }
const mbStore = useCommonStore();
const yqHandleChange = (val: any) => { const yqHandleChange = (val: any) => {
labResuts.value = [] labResuts.value = []
labPat.value = {} labPat.value = {}
mbStore.setLxsrList([]); mbStore.setLxsrList([]);
getSysList() getSysList()
fetchlabPatList() fetchlabPatList()
sendMessage()
} }
const instrGroupFields = ref([ const instrGroupFields = ref([
{ prop: 'zddh', label: '代号', width: 80, enablePinyinSearch: true }, { prop: 'zddh', label: '代号', width: 80, enablePinyinSearch: true },
@ -320,8 +322,6 @@ const loadinstrGroupOptions = () => {
getComDicts({ zdlb: 'GROUP' }).then((res: any) => { getComDicts({ zdlb: 'GROUP' }).then((res: any) => {
instrGroupOptions.value = res.data instrGroupOptions.value = res.data
instrGroupOptions.value.push({ zddh: 'ALL', zdmc: '所有仪器' }) instrGroupOptions.value.push({ zddh: 'ALL', zdmc: '所有仪器' })
queryParams.value.instrGroup = '02'
queryParams.value.yq = '46'
getYqConfig() getYqConfig()
}); });
} }
@ -349,7 +349,6 @@ const resultsHandle = (flag: boolean) => {
} }
fetchLabResults() fetchLabResults()
} }
const highlightRowIndex = ref(-1) const highlightRowIndex = ref(-1)
const labPatListRef = ref() const labPatListRef = ref()
//样本列表点击切换样本信息,同步载入左边样本信息表单和中间结果表单 //样本列表点击切换样本信息,同步载入左边样本信息表单和中间结果表单
@ -604,6 +603,7 @@ const fetchlabPatList = () => {
selectJob(res.data[0]) selectJob(res.data[0])
getTotals() getTotals()
} else { } else {
handleCreate()
ybs.value = 0 ybs.value = 0
ws.value = 0 ws.value = 0
wjs.value = 0 wjs.value = 0

View File

@ -108,7 +108,8 @@ import Cookies from "js-cookie";
import { encrypt, decrypt } from "@/utils/jsencrypt"; import { encrypt, decrypt } from "@/utils/jsencrypt";
import useUserStore from '@/store/modules/user'; import useUserStore from '@/store/modules/user';
import FloatingLines from '@/components/Ballpit/index.vue'; import FloatingLines from '@/components/Ballpit/index.vue';
import { useCommonStore } from '@/store/modules/commonStore'
const mbStore = useCommonStore();
// 初始化响应式变量 // 初始化响应式变量
const activeName = ref('first'); const activeName = ref('first');
const userStore = useUserStore(); const userStore = useUserStore();
@ -218,6 +219,7 @@ const Localconfig = (localid) => {
getLocalconfig({ localid }).then(res => { getLocalconfig({ localid }).then(res => {
if (res) { if (res) {
const { localconfig, hosplist, oem: oemData } = res; const { localconfig, hosplist, oem: oemData } = res;
mbStore.setDefaultConfig(localconfig)
// 修复:赋值oem数据,显示动态标题 // 修复:赋值oem数据,显示动态标题
if (oemData) oem.value = oemData; if (oemData) oem.value = oemData;
// console.log('oemData', oemData); // console.log('oemData', oemData);
@ -231,6 +233,8 @@ const Localconfig = (localid) => {
} }
getCookie(); getCookie();
} }
} }
}).catch(err => { }).catch(err => {
console.error("获取本地配置失败:", err); console.error("获取本地配置失败:", err);