123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- <template>
- <div style="height: 10%;display: flex">
- <el-button @click="copyClick">复制选中的值</el-button>
- <div class="describe">
- <div class="pat-info">
- <div>
- <test-describe front="姓名"
- :text="inspectionHeader?.ptnt_NAME"/>
- </div>
- <div>
- <test-describe front="性别"
- :text="filterSex(inspectionHeader?.ptnt_SEX)"/>
- </div>
- <div>
- <test-describe front="年龄"
- :text="inspectionHeader.ptnt_AGE + filterAgeUnit(inspectionHeader.ptnt_AGE_UNIT) "/>
- </div>
- <div>
- <test-describe front="住院号"
- :text="inspectionHeader.ptnt_NO"/>
- </div>
- <div>
- <test-describe front="科室"
- :text="inspectionHeader.dept_NAME"/>
- </div>
- <div>
- <test-describe front="床号"
- :text="inspectionHeader.ptnt_BED_NO"/>
- </div>
- <div>
- <test-describe front="标本类型"
- :text="inspectionHeader.smpl_NAME "/>
- </div>
- <div>
- <test-describe front="申请项目"
- :text="inspectionHeader?.aply_CNTN.substring(0, 13) + inspectionHeader.aply_CNTN.substring(13)"/>
- </div>
- </div>
- <div class="test-date">
- <div>
- <test-describe front="接收时间"
- :text="inspectionHeader.aply_DATE "/>
- </div>
- <div>
- <test-describe front="检验时间"
- :text="inspectionHeader.ordr_CREATE_DATE "/>
- </div>
- <div>
- <test-describe front="报告时间"
- :text="inspectionHeader.audt_TIME "/>
- </div>
- <div>
- <test-describe front="送检医生"
- :text="inspectionHeader.test_USR_NAME "/>
- </div>
- <div>
- <test-describe front="检验人"
- :text="inspectionHeader.ordr_USR_NAME "/>
- </div>
- <div>
- <test-describe front="审核人"
- :text="inspectionHeader.audt_USR_NAME "/>
- </div>
- </div>
- </div>
- </div>
- <div class="container">
- <el-auto-resizer>
- <template #default="{ height, width }">
- <div style="display: flex">
- <div class="sidebar">
- <xc-table-v3 :height="height"
- @row-click="sidebarRow"
- :data="sidebarList"
- :columns="sidebarColums"/>
- </div>
- <div class="main">
- <xc-table-v3 :height="height"
- ref="tableRef"
- :data="mainList"
- :columns="mainColums"/>
- </div>
- </div>
- </template>
- </el-auto-resizer>
- </div>
- </template>
- <script setup name='EmrTest' lang="tsx">
- // 查询检验
- import {getServerDateApi} from "@/api/public-api";
- import {queryInspectionDetail, queryInspectionsIndex} from '@/api/inspections'
- import {patInfo} from './emr-tools-store'
- import {onMounted, ref} from "vue";
- import XcTableV3 from "@/components/xiao-chan/xc-table-v3/XcTableV3.vue";
- import {XcColumn} from "@/components/xiao-chan/xc-table-v3/XcColumn";
- import {xcMessage} from '@/utils/xiaochan-element-plus'
- import TestDescribe from "@/components/zhu-yuan-yi-sheng/emr/auxiliary-tools/test-describe.vue";
- const emits = defineEmits(['close'])
- const sidebarList = ref()
- const mainList = ref()
- const tableRef = ref()
- const inspectionHeader = ref({
- aply_CNTN: ''
- })
- const query = async () => {
- const param = {
- type: 1,
- content: patInfo.value.inpatientNo,
- start: patInfo.value.admissDate,
- end: await getServerDateApi(),
- }
- queryInspectionsIndex(param).then((res) => {
- sidebarList.value = res
- })
- }
- const sidebarColums: XcColumn<any>[] = [
- {title: '名称', key: 'aply_CTNT'}
- ]
- const mainColums: XcColumn<any>[] = [
- {title: '选择', type: 'selection'},
- {title: '名称', key: 'itm_NAME'},
- {title: '结果', key: 'itm_SRC_VALUE'},
- {title: '单位', key: 'itm_UNIT'},
- {title: '说明', key: 'itm_ALERT'},
- {title: '参考值', key: 'range'},
- ]
- const sidebarRow = (row) => {
- tableRef.value.table().clearSelection()
- queryInspectionDetail(row.ordr_ID).then((res) => {
- mainList.value = res.inspectionItems
- inspectionHeader.value = res.inspectionHeader
- console.log(res)
- })
- }
- const copyClick = () => {
- let temp = tableRef.value.table().getSelectionRows()
- if (temp.length === 0) {
- xcMessage.error('请先选选择数据')
- }
- let data = ''
- temp.forEach(item => {
- data += `${item.itm_NAME} ${item.itm_VALUE} ${item.itm_UNIT} ${item.range}\n`
- })
- let copyData = {
- content: [{type: 'text', data}],
- plainText: data,
- }
- window.localStorage.setItem(
- "clipBoardData",
- JSON.stringify(copyData)
- )
- xcMessage.success('复制成功')
- emits('close')
- }
- function filterSex(val) {
- switch (val) {
- case '0':
- return '未填'
- case '1':
- return '男'
- case '2':
- return '女'
- case '3':
- return '未知'
- }
- return ''
- }
- function filterAgeUnit(val) {
- switch (val) {
- case '0':
- return '岁'
- case '1':
- return '月'
- case '2':
- return '天'
- case '3':
- return '时'
- }
- return ''
- }
- onMounted(() => {
- query()
- })
- </script>
- <style scoped lang="scss">
- .container {
- width: 100%;
- height: 90%;
- }
- .sidebar {
- width: 220px;
- }
- .main {
- width: 100%;
- height: 100%;
- }
- .describe {
- width: 100%;
- margin-left: 20px;
- font-size: 12px;
- .pat-info {
- display: flex;
- div {
- padding: 5px;
- }
- }
- .test-date {
- display: flex;
- div {
- padding: 5px;
- }
- }
- }
- </style>
|