仪器参数
This commit is contained in:
parent
4d3c05c762
commit
dbf6cfcd8b
@ -74,4 +74,28 @@ export function delXmFilter(data?: Object) {
|
||||
method: 'get',
|
||||
params: data
|
||||
});
|
||||
}
|
||||
// 获取试剂维护数据
|
||||
export function queryXmLot(data?: Object) {
|
||||
return request({
|
||||
url: '/xminfo/queryXmLot',
|
||||
method: 'get',
|
||||
params: data
|
||||
});
|
||||
}
|
||||
// 新增试剂维护数据
|
||||
export function addXmLot(data?: Object) {
|
||||
return request({
|
||||
url: '/xminfo/addXmLot',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
// 删除试剂维护数据
|
||||
export function delXmLot(data?: Object) {
|
||||
return request({
|
||||
url: '/xminfo/delXmLot',
|
||||
method: 'get',
|
||||
params: data
|
||||
});
|
||||
}
|
||||
@ -258,6 +258,10 @@
|
||||
// .el-table__body tr.hover-row>td {
|
||||
// background-color: #a4beef !important;
|
||||
// }
|
||||
|
||||
.el-table__empty-block {
|
||||
width: 100% !important;
|
||||
}
|
||||
}
|
||||
|
||||
.el-table--border {
|
||||
|
||||
@ -44,8 +44,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, onMounted, watch, nextTick, toRaw } from "vue";
|
||||
// @ts-ignore
|
||||
import { getFirstLetter } from '@/utils/pinyin.js';
|
||||
import { getFirstLetter } from '@/utils/pinyin';
|
||||
import { ElEmpty } from 'element-plus';
|
||||
// @ts-ignore
|
||||
import { comDict } from '@/utils/dict'
|
||||
|
||||
@ -369,11 +369,9 @@ defineExpose({
|
||||
|
||||
<style scoped lang="scss">
|
||||
.custom-table-wrapper {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 只在拖拽手柄上显示移动光标
|
||||
:deep(.el-table-header-cell .cell) {
|
||||
cursor: move;
|
||||
|
||||
@ -18,8 +18,7 @@
|
||||
<script setup lang="ts">
|
||||
import { ref, computed, watch, onMounted } from 'vue';
|
||||
import { queryXmInfo } from '@/api/liswork/work/LisWork'
|
||||
// @ts-ignore
|
||||
import { getFirstLetter } from '@/utils/pinyin.js'; // 引入拼音处理工具
|
||||
import { getFirstLetter } from '@/utils/pinyin'; // 引入拼音处理工具
|
||||
// 组件参数
|
||||
const props = defineProps({
|
||||
modelValue: { type: [String, Number], default: '' },
|
||||
|
||||
@ -15,8 +15,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
import { onMounted, ref, watch, computed, reactive, toRaw } from 'vue';
|
||||
// @ts-ignore
|
||||
import { getFirstLetter } from '@/utils/pinyin.js';
|
||||
import { getFirstLetter } from '@/utils/pinyin';
|
||||
|
||||
|
||||
interface Props {
|
||||
|
||||
@ -9,7 +9,7 @@ const instrOptions = ref<{ yq: string; yqmc: string }[]>([]);
|
||||
|
||||
export const getYqData = (data?: any) => {
|
||||
// 避免重复请求
|
||||
if (instrOptions.value.length > 0) return;
|
||||
// if (instrOptions.value.length > 0) return;
|
||||
getGroupInstrdList(data).then((res: any) => {
|
||||
if (res.code == 0) {
|
||||
instrOptions.value = res.data.map((item: any) => ({
|
||||
|
||||
@ -70,6 +70,12 @@ import ImagePreview from "@/components/ImagePreview"
|
||||
import TreeSelect from '@/components/TreeSelect'
|
||||
// 字典标签组件
|
||||
import DictTag from '@/components/DictTag'
|
||||
// elTable表格组件
|
||||
import CustomTable from '@/components/elTable'
|
||||
// vxeTable 组件
|
||||
import VxeTable from '@/components/vxeTable'
|
||||
// 下拉框表格组件
|
||||
import SelectTable from '@/components/SelectTable'
|
||||
import print from 'vue3-print-nb';
|
||||
import Vue3SeamlessScroll from 'vue3-seamless-scroll' // 引入插件
|
||||
const app = createApp(App)
|
||||
@ -94,6 +100,9 @@ app.component('ImageUpload', ImageUpload)
|
||||
app.component('ImagePreview', ImagePreview)
|
||||
app.component('RightToolbar', RightToolbar)
|
||||
app.component('Editor', Editor)
|
||||
app.component('CustomTable', CustomTable)
|
||||
app.component('VxeTable', VxeTable)
|
||||
app.component('SelectTable', SelectTable)
|
||||
|
||||
//VUE3标准方法注入全局方法
|
||||
app.provide('comDict', comDict);
|
||||
|
||||
@ -1,43 +0,0 @@
|
||||
// pinyin.js - 拼音转换工具
|
||||
// src/utils/pinyin-utils.js
|
||||
import { pinyin } from 'pinyin-pro';
|
||||
|
||||
/**
|
||||
* 获取文本的拼音首字母
|
||||
* @param {string} text - 要转换的文本
|
||||
* @returns {string} - 拼音首字母字符串
|
||||
*/
|
||||
export function getFirstLetter(text) {
|
||||
if (!text) return '';
|
||||
|
||||
// 获取拼音(不带音调,数组形式)
|
||||
const pinyinArray = pinyin(text, { toneType: "none", type: "array" });
|
||||
|
||||
// 提取每个拼音的首字母并连接
|
||||
return pinyinArray.map(word => word.charAt(0)).join('');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文本的拼音全拼
|
||||
* @param {string} text - 要转换的文本
|
||||
* @returns {string} - 拼音全拼字符串
|
||||
*/
|
||||
export function getFullPinyin(text) {
|
||||
if (!text) return '';
|
||||
|
||||
// 获取拼音(不带音调,字符串形式)
|
||||
return pinyin(text, { toneType: "none" }).replace(/\s+/g, '');
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理选项数据,添加拼音和首字母属性
|
||||
* @param {Array} options - 原始选项数组,每个元素包含id和text属性
|
||||
* @returns {Array} - 处理后的选项数组,每个元素包含pinyin和firstLetters属性
|
||||
*/
|
||||
export function processOptions(options) {
|
||||
return options.map(option => ({
|
||||
...option,
|
||||
pinyin: getFullPinyin(option.text),
|
||||
firstLetters: getFirstLetter(option.text)
|
||||
}));
|
||||
}
|
||||
60
src/utils/pinyin.ts
Normal file
60
src/utils/pinyin.ts
Normal file
@ -0,0 +1,60 @@
|
||||
// pinyin.ts - 拼音转换工具
|
||||
// src/utils/pinyin-utils.ts
|
||||
import {
|
||||
pinyin
|
||||
} from 'pinyin-pro';
|
||||
|
||||
/**
|
||||
* 获取文本的拼音首字母
|
||||
* @param {string} text - 要转换的文本
|
||||
* @returns {string} - 拼音首字母字符串
|
||||
*/
|
||||
export function getFirstLetter(text: string): string {
|
||||
if (!text) return '';
|
||||
|
||||
// 获取拼音(不带音调,数组形式)
|
||||
const pinyinArray = pinyin(text, {
|
||||
toneType: "none",
|
||||
type: "array"
|
||||
}) as string[];
|
||||
|
||||
// 提取每个拼音的首字母并连接
|
||||
return pinyinArray.map(word => word.charAt(0)).join('');
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文本的拼音全拼
|
||||
* @param {string} text - 要转换的文本
|
||||
* @returns {string} - 拼音全拼字符串
|
||||
*/
|
||||
export function getFullPinyin(text: string): string {
|
||||
if (!text) return '';
|
||||
|
||||
// 获取拼音(不带音调,字符串形式)
|
||||
return pinyin(text, {
|
||||
toneType: "none"
|
||||
}).replace(/\s+/g, '');
|
||||
}
|
||||
|
||||
interface Option {
|
||||
id: string | number;
|
||||
text: string;
|
||||
}
|
||||
|
||||
interface ProcessedOption extends Option {
|
||||
pinyin: string;
|
||||
firstLetters: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理选项数据,添加拼音和首字母属性
|
||||
* @param {Option[]} options - 原始选项数组,每个元素包含id和text属性
|
||||
* @returns {ProcessedOption[]} - 处理后的选项数组,每个元素包含pinyin和firstLetters属性
|
||||
*/
|
||||
export function processOptions(options: Option[]): ProcessedOption[] {
|
||||
return options.map(option => ({
|
||||
...option,
|
||||
pinyin: getFullPinyin(option.text),
|
||||
firstLetters: getFirstLetter(option.text)
|
||||
}));
|
||||
}
|
||||
@ -9,7 +9,7 @@
|
||||
clearable value="value" objKey="value" width="200px" placeholder="项目类别" />
|
||||
</el-form-item>
|
||||
<el-form-item label="快速查找" prop="inputcode">
|
||||
<el-input placeholder="快速查找" v-model="formData.inputcode" style="width: 200px;"></el-input>
|
||||
<el-input placeholder="快速查找" v-model="formData.inputcode" clearable style="width: 200px;"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="细菌标志" prop="itemclass">
|
||||
<SelectTable v-model:data="formData.itemclass" :fields="xmglFields" :tableData="dictData.ITEMCLASS"
|
||||
@ -58,8 +58,8 @@
|
||||
</div>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="onClose">取 消</el-button>
|
||||
<el-button type="primary" @click="handleOk">确 定</el-button>
|
||||
<el-button @click="onClose">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
@ -186,7 +186,12 @@ const handleOk = () => {
|
||||
})
|
||||
} else if (formData.value.queryDylx == '2') {
|
||||
let arr = []
|
||||
arr = selecRows.value.map((item: any) => { return item.vsid })
|
||||
arr = selecRows.value.map((item: any) => {
|
||||
return {
|
||||
yq: formData.value.yq,
|
||||
xmid: item.xmid,
|
||||
}
|
||||
})
|
||||
delBatch(arr).then((res: any) => {
|
||||
if (res.code == 0) {
|
||||
ElMessage.success('操作成功!')
|
||||
|
||||
@ -50,29 +50,31 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- 表格区域-->
|
||||
<CustomTable ref="tableRef" :data="dataList" :columns="columns" :enable-column-drag="true"
|
||||
@column-drag-end="handleColumnDragEnd" :config="tableConfig" @row-click="rowChange">
|
||||
<template #xmgl="{ row }">
|
||||
{{ formatDict(row.xmgl, 'XMGL') }}
|
||||
</template>
|
||||
<template #xmlb="{ row }">
|
||||
{{ xmlbObj[row.xmlb] }}
|
||||
</template>
|
||||
<template #jsxm="{ row }">
|
||||
{{ row.jsxm === 'Y' ? '是' : '否' }}
|
||||
</template>
|
||||
<template #uflag="{ row }">
|
||||
{{ row.uflag === '0' ? '否' : '是' }}
|
||||
</template>
|
||||
<template #yqdl="{ row }">
|
||||
{{ formatDict(row.yqdl, 'YQDL') }}
|
||||
</template>
|
||||
</CustomTable>
|
||||
<div>
|
||||
<CustomTable ref="tableRef" :data="dataList" :columns="columns" :enable-column-drag="true"
|
||||
@column-drag-end="handleColumnDragEnd" :config="tableConfig" @row-click="rowChange">
|
||||
<template #xmgl="{ row }">
|
||||
{{ formatDict(row.xmgl, 'XMGL') }}
|
||||
</template>
|
||||
<template #xmlb="{ row }">
|
||||
{{ xmlbObj[row.xmlb] }}
|
||||
</template>
|
||||
<template #jsxm="{ row }">
|
||||
{{ row.jsxm === 'Y' ? '是' : '否' }}
|
||||
</template>
|
||||
<template #uflag="{ row }">
|
||||
{{ row.uflag === '0' ? '否' : '是' }}
|
||||
</template>
|
||||
<template #yqdl="{ row }">
|
||||
{{ formatDict(row.yqdl, 'YQDL') }}
|
||||
</template>
|
||||
</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 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>
|
||||
</div>
|
||||
</el-col>
|
||||
<!-- 右侧区域-->
|
||||
@ -96,9 +98,6 @@ import UseInstr from './tab/useInstr.vue'
|
||||
import Knowledge from './tab/knowledge.vue'
|
||||
import CommonDescriptions from './tab/commonDescriptions.vue'
|
||||
import CustomTable from '@/components/elTable/index.vue'
|
||||
import Sort from './tab/sort.vue'
|
||||
import Parameter from './tab/parameter.vue';
|
||||
import ChannelNumber from './tab/channelNumber.vue';
|
||||
import ReferenceValueDetails from './tab/referenceValueDetails.vue';
|
||||
import { queryXmInfoNewService, queryXmInfoNewDetailService, saveDataService, deleteXmInfoService } from '@/api/liswork/labItem/labItemApi';
|
||||
import SelectTable from '@/components/SelectTable/index.vue'
|
||||
@ -150,10 +149,7 @@ const tabList = ref([
|
||||
{ label: '常用取值', value: 'CommonlyValues' },
|
||||
{ label: '使用仪器', value: 'UseInstr' },
|
||||
{ label: '知识库', value: 'Knowledge' },
|
||||
//{ label: '整体排序', value: 'Sort' },
|
||||
{ label: '常见描述', value: 'CommonDescriptions' },
|
||||
// { label: '参数', value: 7 },
|
||||
// { label: '通道号', value: 8 },
|
||||
{ label: '参考值明细', value: 'ReferenceValueDetails' },
|
||||
]);
|
||||
const activeTab = ref('Basic')
|
||||
@ -162,7 +158,6 @@ const activeTabMap = {
|
||||
CommonlyValues,
|
||||
UseInstr,
|
||||
Knowledge,
|
||||
Sort,
|
||||
CommonDescriptions,
|
||||
ReferenceValueDetails
|
||||
}
|
||||
@ -230,7 +225,7 @@ const hasUnsavedChanges = ref(false);
|
||||
// 保存初始数据快照用于比较
|
||||
const initialModelParam = ref<any>(null);
|
||||
const batchInstrVsModel = ref<any>({
|
||||
visible: true
|
||||
visible: false
|
||||
})
|
||||
|
||||
|
||||
|
||||
@ -175,8 +175,7 @@ import MultiRef from './child/MultiRef.vue';
|
||||
import CalcGuilde from './child/CalcGuilde.vue';
|
||||
import SelectTable from '@/components/SelectTable/index.vue'
|
||||
import Condition from './child/Condition.vue';
|
||||
//@ts-ignore
|
||||
import { getFirstLetter } from '@/utils/pinyin.js';
|
||||
import { getFirstLetter } from '@/utils/pinyin';
|
||||
import { ElMessage } from 'element-plus';
|
||||
|
||||
|
||||
|
||||
@ -5,11 +5,12 @@
|
||||
<el-row class="input-text">
|
||||
<el-input type="textarea" v-model="inputText"></el-input>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="12">
|
||||
<el-input v-model="searchKey" ref="searchInput" size="small" placeholder="快速搜索(支持简拼)" class="mb10" clearable
|
||||
<el-input v-model="searchKey" ref="searchInput" size="small" placeholder="快速搜索(支持简拼)" class="mb5" clearable
|
||||
@clear="filterDataHandle" @input="filterDataHandle" />
|
||||
<CustomTable ref="tableRefs" :data="filterData" :columns="columns" :config="tableConfig" @row-click="rowHandle"
|
||||
<VxeTable ref="tableRefs" :data="filterData" :columns="columns" class="mytable-style"
|
||||
:scrollYConfig="{ enabled: true, rSize: 30, height: '350', }" @current-change="rowHandle"
|
||||
:enableColumnDrag="true" @column-drag-end="handleColumnDragEnd" />
|
||||
</el-col>
|
||||
<el-col :span="12" class="right">
|
||||
@ -38,10 +39,9 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import CustomTable from '@/components/elTable/index.vue'
|
||||
import VxeTable from '@/components/vxeTable/index.vue'
|
||||
import { queryXmInfoNew } from '@/api/liswork/labItem/labItemApi'
|
||||
// @ts-ignore
|
||||
import { getFirstLetter } from '@/utils/pinyin.js';
|
||||
import { getFirstLetter } from '@/utils/pinyin';
|
||||
|
||||
|
||||
const props = defineProps({
|
||||
@ -61,19 +61,10 @@ const tableRefs = ref()
|
||||
const emit = defineEmits(['update:model-value', 'confirm'])
|
||||
|
||||
const columns = ref([
|
||||
{ prop: 'xmdh', label: '项目代号', align: 'center', visible: true, width: 100 },
|
||||
{ prop: 'xmmc', label: '项目名称', align: 'center', visible: true, width: 180 }
|
||||
{ field: 'xmdh', title: '项目代号', align: 'center', resizable: true, width: 100 },
|
||||
{ field: 'xmmc', title: '项目名称', resizable: true, }
|
||||
])
|
||||
// 表格配置
|
||||
const tableConfig = ref(
|
||||
{
|
||||
// stripe: true, // 斑马纹
|
||||
border: true, // 边框
|
||||
height: '350', // 高度
|
||||
highlightCurrentRow: true, // 高亮当前行
|
||||
fit: true
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
//向外暴露数据
|
||||
defineExpose({ inputText })
|
||||
@ -97,6 +88,7 @@ const rowHandle = (row: any) => {
|
||||
}
|
||||
|
||||
const onClose = () => {
|
||||
searchKey.value = ''
|
||||
emit('update:model-value', false)
|
||||
}
|
||||
|
||||
@ -197,7 +189,6 @@ const filterDataHandle = () => {
|
||||
});
|
||||
|
||||
if (filterData.value.length > 0) {
|
||||
tableRefs.value.setScrollTop(0)
|
||||
tableRefs.value.setCurrentRow(filterData.value[0]);
|
||||
}
|
||||
};
|
||||
|
||||
@ -20,8 +20,10 @@
|
||||
</el-row>
|
||||
<el-row class="row-down">
|
||||
<el-col :span="12">
|
||||
<VxeTable ref="tableRefs" :data="tableDataDown" :columns="columnsDown" class="mytable-style"
|
||||
:scrollYConfig="{ enabled: true, rSize: 30, height: '400', }" @current-change="rowHandleDown"
|
||||
<el-input v-model="searchKey" ref="searchInput" size="small" placeholder="快速搜索(支持简拼)" class="mb5" clearable
|
||||
@clear="filterDataHandle" @input="filterDataHandle" />
|
||||
<VxeTable ref="tableRefs" :data="filterData" :columns="columnsDown" class="mytable-style"
|
||||
:scrollYConfig="{ enabled: true, rSize: 30, height: '380', }" @current-change="rowHandleDown"
|
||||
:enableColumnDrag="true" @column-drag-end="handleColumnDragEnd" />
|
||||
</el-col>
|
||||
<el-col :span="12" class="rigth-col">
|
||||
@ -48,7 +50,7 @@ import VxeTable from '@/components/vxeTable/index.vue'
|
||||
import { queryXmInfoNew, queryXmAlarmdetailNew, addXmAlarmdetailNew, delXmAlarmdetailNew } from '@/api/liswork/labItem/labItemApi'
|
||||
import { XmAlarmdetailNew } from '@/types'
|
||||
import { ElMessageBox, ElMessage } from 'element-plus'
|
||||
|
||||
import { getFirstLetter } from '@/utils/pinyin';
|
||||
|
||||
const columnsUp = ref([
|
||||
{ prop: 'seq', label: '序号', align: 'center', visible: true, width: 50 },
|
||||
@ -57,12 +59,17 @@ const columnsUp = ref([
|
||||
])
|
||||
|
||||
const columnsDown = ref([
|
||||
{ field: 'xmdh', title: '项目代号', align: 'center', visible: true, width: 100, resizable: true },
|
||||
{ field: 'xmmc', title: '项目名称', align: 'center', visible: true, width: 220, resizable: true }
|
||||
{ field: 'xmdh', title: '项目代号', align: 'center', width: 100, resizable: true },
|
||||
{ field: 'xmmc', title: '项目名称', resizable: true }
|
||||
])
|
||||
|
||||
const currentIndex = ref(0)
|
||||
const searchKey = ref('');
|
||||
const filterData = ref<{ [key: string]: any; pinyinMap: Record<string, string> }[]>([]);
|
||||
const tableData = ref()
|
||||
const inputText = ref('')
|
||||
const tableRefs = ref()
|
||||
const tableDataUp = ref<Array<XmAlarmdetailNew>>([])
|
||||
const tableDataDown = ref([])
|
||||
const tableDataDown = ref<{ [key: string]: any; pinyinMap: Record<string, string> }[]>([])
|
||||
const selectRowUp = ref<XmAlarmdetailNew>({
|
||||
xmid: 0,
|
||||
seq: 0,
|
||||
@ -117,12 +124,59 @@ const onOpen = async () => {
|
||||
tableDataUp.value = res.data;
|
||||
if (!tableDataDown.value.length) {
|
||||
let res = await queryXmInfoNew(props.formData.xmgl);
|
||||
tableDataDown.value = res.data;
|
||||
tableDataDown.value = processTableData(res.data)
|
||||
filterData.value = [...tableDataDown.value]
|
||||
}
|
||||
}
|
||||
|
||||
// 预处理数据:生成拼音信息
|
||||
const processTableData = (data: object[]) => {
|
||||
return data.map((item: any) => {
|
||||
const pinyinMap: Record<string, string> = {};
|
||||
// 处理label字段拼音
|
||||
if (item.xmmc) {
|
||||
pinyinMap.xmmc = getFirstLetter(item.xmmc).toLowerCase();
|
||||
}
|
||||
if (item.xmdh) {
|
||||
pinyinMap.xmdh = getFirstLetter(item.xmdh).toLowerCase();
|
||||
}
|
||||
|
||||
return { ...item, pinyinMap };
|
||||
});
|
||||
};
|
||||
|
||||
// 搜索过滤逻辑
|
||||
const filterDataHandle = () => {
|
||||
const key = searchKey.value.trim().toLowerCase();
|
||||
|
||||
if (!key) {
|
||||
// 空搜索时显示全部预处理数据
|
||||
filterData.value = [...tableDataDown.value];
|
||||
return;
|
||||
} else {
|
||||
currentIndex.value = 0
|
||||
}
|
||||
|
||||
filterData.value = tableDataDown.value.filter((item: any) => {
|
||||
// 1. 原文本匹配
|
||||
const matchLabel = item.xmmc?.toString().toLowerCase().includes(key);
|
||||
const matchValue = item.xmdh?.toString().toLowerCase().includes(key);
|
||||
|
||||
// 2. 拼音匹配
|
||||
const matchLabelPinyin = item.pinyinMap.xmmc?.includes(key);
|
||||
const matchValuePinyin = item.pinyinMap.xmdh?.includes(key);
|
||||
|
||||
return matchLabel || matchValue || matchLabelPinyin || matchValuePinyin;
|
||||
});
|
||||
|
||||
if (filterData.value.length > 0) {
|
||||
tableRefs.value.setCurrentRow(filterData.value[0]);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
const onClose = () => {
|
||||
searchKey.value = ''
|
||||
tableDataUp.value = []
|
||||
selectRowUp.value = { xmid: 0, seq: 0, samplecondition: '', resultcondition: '' }
|
||||
}
|
||||
|
||||
@ -1,49 +0,0 @@
|
||||
<!--通道号-->
|
||||
<template>
|
||||
<div>
|
||||
<el-row>
|
||||
<span>说明:“通道号”又称“接口代号”,是指仪器向电脑传送结果时项目的标识符,接口代号对于一个仪器不可重复。</span>
|
||||
</el-row>
|
||||
<div class="modifyClass">
|
||||
<el-button type="primary" @click="">增加</el-button>
|
||||
<el-button type="primary" @click="">删除</el-button>
|
||||
</div>
|
||||
<CustomTable ref="tableRef" :data="dataList" :columns="columns" :enable-column-drag="true" @column-drag-end="handleColumnDragEnd"
|
||||
:config="tableConfig"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
import CustomTable from '@/components/elTable/index.vue'
|
||||
|
||||
const props = defineProps({
|
||||
// 是否显示
|
||||
visible: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
default: false
|
||||
}
|
||||
});
|
||||
|
||||
const tableRef = ref<any>(null);
|
||||
const dataList = ref();
|
||||
const columns = ref([
|
||||
{ prop: 'tdh', label: '通道号', visible: true, align: 'center', width: 100 },
|
||||
{ prop: 'yq', label: '仪器', visible: true, align: 'center', width: 200 },
|
||||
{ prop: 'xmdh', label: '英文缩写', visible: true, align: 'center', width: 200 }
|
||||
]);
|
||||
const tableConfig = ref({
|
||||
border: true, // 边框
|
||||
height: '76vh', // 高度
|
||||
highlightCurrentRow: true, // 高亮当前行
|
||||
// cellStyle: cellStyleHd
|
||||
})
|
||||
|
||||
|
||||
//退拽属性
|
||||
const handleColumnDragEnd = (data: any) => {
|
||||
// 更新列配置
|
||||
columns.value = data.columns;
|
||||
}
|
||||
</script>
|
||||
@ -1,51 +0,0 @@
|
||||
<template>
|
||||
<!-- 整体排序 -->
|
||||
<div>
|
||||
<div class="modifyClass">
|
||||
<el-button type="primary" @click="">首位</el-button>
|
||||
<el-button type="primary" @click="">↑上移</el-button>
|
||||
<el-button type="primary" @click="">↓下移</el-button>
|
||||
<el-button type="primary" @click="">末位</el-button>
|
||||
</div>
|
||||
<CustomTable ref="tableRef" :data="dataList" :columns="columns" :enable-column-drag="true" @column-drag-end="handleColumnDragEnd"
|
||||
:config="tableConfig"/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<script setup lang="ts">
|
||||
import CustomTable from '@/components/elTable/index.vue'
|
||||
import { ref } from 'vue';
|
||||
|
||||
const props = defineProps({
|
||||
dataList: {
|
||||
type: Array,
|
||||
default: []
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
const tableRef = ref<any>(null);
|
||||
const dataList = ref();
|
||||
const columns = ref([
|
||||
{ prop: 'xmgl', label: '项目类别', visible: true, align: 'center', width: 200 },
|
||||
{ prop: 'xmid', label: '项目ID', visible: true, align: 'center', width: 100 },
|
||||
{ prop: 'xmdh', label: '英文缩写', visible: true, align: 'center', width: 100 },
|
||||
{ prop: 'xmmc', label: '项目名称,', visible: true, align: 'center', width: 100 },
|
||||
{ prop: 'dyxh', label: '整体排序,', visible: true, align: 'center', width: 100 },
|
||||
{ prop: 'fzdyxh', label: '分组打印序号,', visible: true, align: 'center', width: 100 },
|
||||
]);
|
||||
const tableConfig = ref({
|
||||
border: true, // 边框
|
||||
height: '80vh', // 高度
|
||||
highlightCurrentRow: true, // 高亮当前行
|
||||
// cellStyle: cellStyleHd
|
||||
})
|
||||
|
||||
|
||||
//退拽属性
|
||||
const handleColumnDragEnd = (data: any) => {
|
||||
// 更新列配置
|
||||
columns.value = data.columns;
|
||||
}
|
||||
</script>
|
||||
@ -18,7 +18,7 @@
|
||||
<script setup>
|
||||
import { ref, computed, watch, onMounted } from 'vue';
|
||||
import { getmedgroupList } from '@/api/liswork/micro/index';
|
||||
import { getFirstLetter } from '@/utils/pinyin.js'; // 引入拼音处理工具
|
||||
import { getFirstLetter } from '@/utils/pinyin'; // 引入拼音处理工具
|
||||
// 组件参数
|
||||
const props = defineProps({
|
||||
modelValue: { type: [String, Number], default: '' },
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
<script setup>
|
||||
import { ref, computed, watch, onMounted } from 'vue';
|
||||
import { getmeddictList } from '@/api/liswork/micro/index';
|
||||
import { getFirstLetter } from '@/utils/pinyin.js'; // 引入拼音处理工具
|
||||
import { getFirstLetter } from '@/utils/pinyin'; // 引入拼音处理工具
|
||||
// 组件参数
|
||||
const props = defineProps({
|
||||
modelValue: { type: [String, Number], default: '' },
|
||||
|
||||
@ -18,8 +18,7 @@
|
||||
<script setup lang="ts">
|
||||
import { ref, computed, watch, onMounted } from 'vue';
|
||||
import { getbactmediumList } from '@/api/liswork/micro/index';
|
||||
// @ts-ignore
|
||||
import { getFirstLetter } from '@/utils/pinyin.js'; // 引入拼音处理工具
|
||||
import { getFirstLetter } from '@/utils/pinyin'; // 引入拼音处理工具
|
||||
// 组件参数
|
||||
const props = defineProps({
|
||||
modelValue: { type: [String, Number], default: '' },
|
||||
|
||||
@ -37,7 +37,7 @@
|
||||
import { ref, computed, watch, onMounted } from 'vue';
|
||||
import { Loading, ArrowDown } from '@element-plus/icons-vue';
|
||||
|
||||
import { getFirstLetter } from '@/utils/pinyin.js'; // 引入拼音处理工具
|
||||
import { getFirstLetter } from '@/utils/pinyin'; // 引入拼音处理工具
|
||||
// 组件参数
|
||||
const props = defineProps({
|
||||
modelValue: { type: [String, Number], default: '' },
|
||||
|
||||
@ -38,7 +38,7 @@
|
||||
|
||||
<script setup>
|
||||
import { ref, computed, watch, onMounted } from 'vue';
|
||||
import { getFirstLetter } from '@/utils/pinyin.js'; // 拼音处理工具
|
||||
import { getFirstLetter } from '@/utils/pinyin'; // 拼音处理工具
|
||||
|
||||
// 组件参数
|
||||
const props = defineProps({
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
//import { ref, computed, watch, defineProps, defineEmits } from 'vue';
|
||||
import Select2 from 'vue3-select2-component';
|
||||
import 'select2/dist/css/select2.min.css';
|
||||
import { processOptions } from '@/utils/pinyin.js'; // 引入拼音处理工具
|
||||
import { processOptions } from '@/utils/pinyin'; // 引入拼音处理工具
|
||||
|
||||
// 定义组件props
|
||||
const props = defineProps({
|
||||
|
||||
@ -0,0 +1,84 @@
|
||||
<template>
|
||||
<!-- 通道号配置 -->
|
||||
<div class="table-container">
|
||||
<el-row :gutter="10" class="table-toolbar">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Check" @click="handleSave">保存</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" plain icon="Edit" @click="addItem">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="Delete" @click="delItem">删除</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="Delete" @click="allClear">清除所有项目接口号</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="10" class="table-row">
|
||||
<el-col :span="12" class="table-box">
|
||||
<el-table :data="tableData" height="100%" border highlight-current-row>
|
||||
<el-table-column label="通道号" align="center">
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.channel" placeholder="请输入通道号" class="full-width-input" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<div class="tips">
|
||||
说明:
|
||||
“通道号”又称“接口代号”,是指仪器向电脑传送结果时项目的
|
||||
标识符
|
||||
接口代号对于一个仪器不可重复。
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
|
||||
const tableData = ref<Array<{ channel: string }>>([]);
|
||||
const handleSave = () => {
|
||||
};
|
||||
|
||||
const addItem = () => {
|
||||
tableData.value.push({ channel: '' })
|
||||
};
|
||||
|
||||
const delItem = () => {
|
||||
}
|
||||
|
||||
const allClear = () => {
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.table-container {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.table-toolbar {
|
||||
margin-bottom: 8px;
|
||||
height: 36px;
|
||||
line-height: 36px;
|
||||
}
|
||||
|
||||
.tips {
|
||||
font-family: SourceHanSansCN, SourceHanSansCN;
|
||||
font-size: 16px;
|
||||
color: #409eff;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.table-row {
|
||||
height: calc(100% - 45px);
|
||||
|
||||
.table-box {
|
||||
height: 100%;
|
||||
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -75,8 +75,7 @@
|
||||
<script setup lang="ts">
|
||||
import { ElMessage, ElTree, TreeNode, ElMessageBox, ElBadge } from 'element-plus'
|
||||
import { paramList, paramTree, getdef, updateParam } from '@/api/liswork/xtwh/ComOpt'
|
||||
// @ts-ignore
|
||||
import { getFirstLetter } from '@/utils/pinyin.js'
|
||||
import { getFirstLetter } from '@/utils/pinyin'
|
||||
// @ts-ignore
|
||||
import DynamicInput from "@/views/liswork/xtwh/localconfig/components/DynamicInput.vue"
|
||||
const emits = defineEmits(['updateTree'])
|
||||
@ -92,7 +91,7 @@ interface RegDictItem {
|
||||
remark: string
|
||||
}
|
||||
// 列表相关
|
||||
const optiontype= ref<string>("SYSTEM")
|
||||
const optiontype = ref<string>("SYSTEM")
|
||||
const menuname = ref<string>("系统全局")
|
||||
const regdictList = ref<RegDictItem[]>([])
|
||||
const originRegdictList = ref<RegDictItem[]>([])
|
||||
@ -124,7 +123,7 @@ const tableData3 = computed<RegDictItem[]>(() => {
|
||||
const getList = async (): Promise<void> => {
|
||||
loading.value = true
|
||||
try {
|
||||
const response = await paramList({ yq: yq.value,optiontype:optiontype.value })
|
||||
const response = await paramList({ yq: yq.value, optiontype: optiontype.value })
|
||||
regdictList.value = JSON.parse(JSON.stringify(response.data))
|
||||
originRegdictList.value = JSON.parse(JSON.stringify(response.data))
|
||||
total.value = response.data.length
|
||||
@ -187,7 +186,7 @@ const handleRestoreDefault = async (): Promise<void> => {
|
||||
).then(async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const res = await getdef({optiontype:optiontype.value })
|
||||
const res = await getdef({ optiontype: optiontype.value })
|
||||
regdictList.value = JSON.parse(JSON.stringify(res.data))
|
||||
originRegdictList.value = JSON.parse(JSON.stringify(res.data))
|
||||
total.value = res.data.length
|
||||
@ -75,8 +75,7 @@
|
||||
<script setup lang="ts">
|
||||
import { ElMessage, ElTree, TreeNode, ElMessageBox, ElBadge } from 'element-plus'
|
||||
import { paramList, paramTree, getdef, updateParam } from '@/api/liswork/xtwh/ComOpt'
|
||||
// @ts-ignore
|
||||
import { getFirstLetter } from '@/utils/pinyin.js'
|
||||
import { getFirstLetter } from '@/utils/pinyin'
|
||||
// @ts-ignore
|
||||
import DynamicInput from "@/views/liswork/xtwh/localconfig/components/DynamicInput.vue"
|
||||
const emits = defineEmits(['updateTree'])
|
||||
@ -92,7 +91,7 @@ interface RegDictItem {
|
||||
remark: string
|
||||
}
|
||||
// 列表相关
|
||||
const optiontype= ref<string>("INPUT")
|
||||
const optiontype = ref<string>("INPUT")
|
||||
const menuname = ref<string>("界面设定")
|
||||
const regdictList = ref<RegDictItem[]>([])
|
||||
const originRegdictList = ref<RegDictItem[]>([])
|
||||
@ -124,7 +123,7 @@ const tableData3 = computed<RegDictItem[]>(() => {
|
||||
const getList = async (): Promise<void> => {
|
||||
loading.value = true
|
||||
try {
|
||||
const response = await paramList({ yq: yq.value,optiontype:optiontype.value })
|
||||
const response = await paramList({ yq: yq.value, optiontype: optiontype.value })
|
||||
regdictList.value = JSON.parse(JSON.stringify(response.data))
|
||||
originRegdictList.value = JSON.parse(JSON.stringify(response.data))
|
||||
total.value = response.data.length
|
||||
@ -187,7 +186,7 @@ const handleRestoreDefault = async (): Promise<void> => {
|
||||
).then(async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const res = await getdef({optiontype:optiontype.value })
|
||||
const res = await getdef({ optiontype: optiontype.value })
|
||||
regdictList.value = JSON.parse(JSON.stringify(res.data))
|
||||
originRegdictList.value = JSON.parse(JSON.stringify(res.data))
|
||||
total.value = res.data.length
|
||||
@ -1,4 +1,5 @@
|
||||
<template>
|
||||
<!-- 参数列表 -->
|
||||
<div>
|
||||
<el-row :gutter="10" class="table-toolbar">
|
||||
<el-col :span="1.5">
|
||||
@ -138,14 +139,18 @@
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="默认模板" prop="mrmb">
|
||||
<el-input v-model="formData.mrmb" />
|
||||
<el-select v-model="formData.mrmb" 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-col>
|
||||
<el-col :span="8" style="display: flex;">
|
||||
<el-form-item label="默认试剂" prop="mrsjph">
|
||||
<el-input v-model="formData.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="">试剂维护</el-button>
|
||||
<el-button type="primary" @click="sjHandle">试剂维护</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
@ -173,13 +178,51 @@
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-dialog>
|
||||
|
||||
|
||||
<!-- 试剂维护 -->
|
||||
<el-dialog v-model="sjShow" title="试剂维护" draggable :close-on-click-modal="false" width="700px">
|
||||
<div class="mb5">
|
||||
<el-button type="primary" @click="sjsavaItem">保存</el-button>
|
||||
<el-button type="primary" @click="sjaddItem">新增</el-button>
|
||||
<el-button type="danger" @click="sjdelItem">删除</el-button>
|
||||
</div>
|
||||
<el-table :data="sjtableData" height="400px" border highlight-current-row @row-click="sjRowClick">
|
||||
<el-table-column label="试剂批号" prop="sjph" width="120">
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.sjph" class="full-width-input" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="厂商" prop="sjcs">
|
||||
<template #default="scope">
|
||||
<el-select v-model="scope.row.sjcs" class="full-width-input">
|
||||
<el-option label="请选择" value="" />
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="有效期" prop="yxq">
|
||||
<template #default="scope">
|
||||
<el-date-picker v-model="scope.row.yxq" type="datetime" placeholder="0000:00:00 00:00"
|
||||
format="YYYY-MM-DD HH:mm" value-format="YYYY-MM-DD HH:mm" style="width:100%" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="方法" prop="csff">
|
||||
<template #default="scope">
|
||||
<el-select v-model="scope.row.csff" class="full-width-input">
|
||||
<el-option label="请选择" value="" />
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { queryFilter, addXmFilter, delXmFilter } from '@/api/liswork/xtwh/ComOpt'
|
||||
import { queryFilter, addXmFilter, delXmFilter, addXmLot, delXmLot, queryXmLot } from '@/api/liswork/xtwh/ComOpt'
|
||||
import { ElMessage } from 'element-plus';
|
||||
import { get } from 'lodash';
|
||||
|
||||
|
||||
const yq = defineModel<string>()
|
||||
|
||||
const dialogVisible = ref(false)
|
||||
@ -264,6 +307,43 @@ const delItem = () => {
|
||||
dzList.value = dzList.value.filter(item => item.lgph != selectRow.value.lgph)
|
||||
selectRow.value = null
|
||||
}
|
||||
|
||||
interface sjList {
|
||||
sjcs: string, sjph: string, yq: string, yxq: string, csff: string
|
||||
}
|
||||
const sjShow = ref(false)
|
||||
const sjtableData = ref<sjList[]>([])
|
||||
const sjHandle = () => {
|
||||
sjShow.value = true
|
||||
getSjList()
|
||||
}
|
||||
|
||||
const sjRowClick = (row: any) => {
|
||||
selectRow.value = row
|
||||
}
|
||||
const getSjList = () => {
|
||||
selectRow.value = null
|
||||
queryXmLot().then((res: any) => {
|
||||
sjtableData.value = res.data
|
||||
})
|
||||
}
|
||||
|
||||
const sjsavaItem = () => {
|
||||
|
||||
}
|
||||
const sjaddItem = () => {
|
||||
sjtableData.value.push({
|
||||
sjcs: '',
|
||||
sjph: '',
|
||||
yq: '',
|
||||
yxq: '',
|
||||
csff: ''
|
||||
})
|
||||
}
|
||||
const sjdelItem = () => {
|
||||
|
||||
}
|
||||
|
||||
watch(yq, (newVal) => {
|
||||
getDzList()
|
||||
}, { immediate: true })
|
||||
86
src/views/liswork/xtwh/comopt/components/sysSort/index.vue
Normal file
86
src/views/liswork/xtwh/comopt/components/sysSort/index.vue
Normal file
@ -0,0 +1,86 @@
|
||||
<template>
|
||||
<!-- 整体排序 -->
|
||||
<div class="sort_box">
|
||||
<el-row :gutter="10" class="table-toolbar">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" @click="">首位</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" icon="top" @click="">上移</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" icon="bottom" @click="">下移</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" @click="">末位</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div class="table-row">
|
||||
<CustomTable ref="tableRef" :data="dataList" :columns="columns" :enable-column-drag="true"
|
||||
@column-drag-end="handleColumnDragEnd" :config="tableConfig" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
|
||||
const props = defineProps({
|
||||
dataList: {
|
||||
type: Array,
|
||||
default: []
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
const tableRef = ref<any>(null);
|
||||
const dataList = ref([]);
|
||||
const columns = ref([
|
||||
{ prop: 'xmgl', label: '项目类别', visible: true, align: 'center', },
|
||||
{ prop: 'xmid', label: '项目ID', visible: true, align: 'center', },
|
||||
{ prop: 'xmdh', label: '英文缩写', visible: true, align: 'center', },
|
||||
{ prop: 'xmmc', label: '项目名称', visible: true, align: 'center', },
|
||||
{ prop: 'dyxh', label: '整体排序', visible: true, align: 'center', },
|
||||
{ prop: 'fzdyxh', label: '分组打印序号', visible: true, align: 'center', },
|
||||
]);
|
||||
const tableConfig = ref({
|
||||
border: true, // 边框
|
||||
height: '100%', // 高度
|
||||
highlightCurrentRow: true, // 高亮当前行
|
||||
})
|
||||
|
||||
|
||||
//退拽属性
|
||||
const handleColumnDragEnd = (data: any) => {
|
||||
// 更新列配置
|
||||
columns.value = data.columns;
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.sort_box {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.table-toolbar {
|
||||
margin-bottom: 8px;
|
||||
height: 36px;
|
||||
line-height: 36px;
|
||||
}
|
||||
|
||||
.tips {
|
||||
font-family: SourceHanSansCN, SourceHanSansCN;
|
||||
font-size: 16px;
|
||||
color: #409eff;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.table-row {
|
||||
height: calc(100% - 45px);
|
||||
|
||||
.table-box {
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@ -43,13 +43,14 @@
|
||||
import { ref, watch, nextTick, computed } from 'vue'
|
||||
import { ElMessage, ElTree, TreeNode, ElMessageBox, ElBadge } from 'element-plus'
|
||||
import { paramList, paramTree, getdef, updateParam } from '@/api/liswork/xtwh/ComOpt'
|
||||
// @ts-ignore
|
||||
import { getFirstLetter } from '@/utils/pinyin.js'
|
||||
import { getFirstLetter } from '@/utils/pinyin'
|
||||
|
||||
import SysGlobal from './components/sysGlobal.vue'
|
||||
import SysInput from './components/sysInput.vue'
|
||||
import SysReport from './components/sysReport.vue'
|
||||
import SysParameter from './components/sysParameter.vue'
|
||||
import SysGlobal from './components/sysGlobal/index.vue'
|
||||
import SysInput from './components/sysInput/index.vue'
|
||||
import SysReport from './components/sysReport/index.vue'
|
||||
import SysParameter from './components/sysParameter/index.vue'
|
||||
import SysChannel from './components/sysChannel/index.vue'
|
||||
import SysSort from './components/sysSort/index.vue'
|
||||
|
||||
// ========== TypeScript 类型定义 ==========
|
||||
interface InstrTreeNode {
|
||||
@ -107,6 +108,8 @@ const tabList = [
|
||||
{ key: 'SysGlobal', label: '全局设定', component: SysGlobal },
|
||||
{ key: 'SysInput', label: '界面设定', component: SysInput },
|
||||
{ key: 'SysParameter', label: '参数', component: SysParameter },
|
||||
{ key: 'SysChannel', label: '通道号', component: SysChannel },
|
||||
{ key: 'SysSort', label: '整体排序', component: SysSort },
|
||||
{ key: 'SysReport', label: '报告单设置', component: SysReport },
|
||||
]
|
||||
const activeName = ref('SysParameter')
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
<script setup>
|
||||
import { ref, computed, watch, onMounted } from 'vue';
|
||||
import { queryPatList } from "@/api/mzcx/cydj.js";
|
||||
import { getFirstLetter } from '@/utils/pinyin.js'; // 引入拼音处理工具
|
||||
import { getFirstLetter } from '@/utils/pinyin'; // 引入拼音处理工具
|
||||
// 组件参数
|
||||
const props = defineProps({
|
||||
pidValue: { type: [String, Number], default: '' },
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user