|
@@ -0,0 +1,135 @@
|
|
|
+<template>
|
|
|
+ <el-dialog v-model="dialog" title="患者过敏源信息" @closed="emit('close')">
|
|
|
+ <el-radio-group v-model="allergenType" @change="typeChangeClear()">
|
|
|
+ <el-radio-button :label="0">过敏源</el-radio-button>
|
|
|
+ <el-radio-button :label="1">本院药品</el-radio-button>
|
|
|
+ </el-radio-group>
|
|
|
+ <xc-select v-model="newAllergen" :data="allergenData" remote @method="methodAllergen"/>
|
|
|
+ <el-button icon="el-icon-plus" type="primary" @click="clickNewPatientAllergens">添加</el-button>
|
|
|
+ <el-table :data="patientAllergenData.data" :height="windowSize.h - 400">
|
|
|
+ <el-table-column label="编码" prop="allergenCode"></el-table-column>
|
|
|
+ <el-table-column label="名称" prop="allergenName"></el-table-column>
|
|
|
+ <el-table-column label="来源" prop="type">
|
|
|
+ <template #default="scope">
|
|
|
+ <span v-if="scope.row.type === 0">
|
|
|
+ 过敏源
|
|
|
+ </span>
|
|
|
+ <span v-else>
|
|
|
+ 本院药品
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column>
|
|
|
+ <template #default="scope">
|
|
|
+ <el-popconfirm
|
|
|
+ cancel-button-text="取消"
|
|
|
+ confirm-button-text="确定"
|
|
|
+ icon="el-icon-info"
|
|
|
+ icon-color="red"
|
|
|
+ title="确定要删除吗?"
|
|
|
+ @confirm="clickRemoveAllergens(scope.$index, scope.row.id)">
|
|
|
+ <template #reference>
|
|
|
+ <el-button icon="el-icon-delete" type="danger">删除</el-button>
|
|
|
+ </template>
|
|
|
+ </el-popconfirm>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </el-dialog>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script name="AllergenEntry" setup>
|
|
|
+import {stringNotBlank} from "@/utils/blank-utils";
|
|
|
+import {
|
|
|
+ getAllergens,
|
|
|
+ getDrugInfo,
|
|
|
+ getPatientAllergens,
|
|
|
+ newPatientAllergens,
|
|
|
+ removePatientAllergens
|
|
|
+} from "@/api/public-api";
|
|
|
+import store from '@/store'
|
|
|
+import {ElMessage} from "element-plus";
|
|
|
+
|
|
|
+const props = defineProps({
|
|
|
+ patNo: '',
|
|
|
+})
|
|
|
+const emit = defineEmits(['close'])
|
|
|
+
|
|
|
+const windowSize = computed(() => {
|
|
|
+ return store.state.app.windowSize
|
|
|
+})
|
|
|
+const newAllergen = $ref({
|
|
|
+ code: '',
|
|
|
+ name: '',
|
|
|
+})
|
|
|
+let allergenData = $ref([])
|
|
|
+let allergenType = $ref(0)
|
|
|
+
|
|
|
+const dialog = ref(true)
|
|
|
+let patNo = $ref('')
|
|
|
+let patientAllergenData = $ref({
|
|
|
+ data: [],
|
|
|
+ currentPage: 1,
|
|
|
+ sizePage: 10,
|
|
|
+ total: 0
|
|
|
+})
|
|
|
+
|
|
|
+const methodAllergen = (val) => {
|
|
|
+ if (allergenType === 0) {
|
|
|
+ getAllergens(val).then((res) => {
|
|
|
+ allergenData = res
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ getDrugInfo(val).then((res) => {
|
|
|
+ allergenData = res
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const clickNewPatientAllergens = () => {
|
|
|
+ if (newAllergen.code === '') {
|
|
|
+ return ElMessage.error('请先选择数据')
|
|
|
+ }
|
|
|
+ if (typeof patientAllergenData.data.find(item => item.allergenCode === newAllergen.code) !== 'undefined') {
|
|
|
+ return ElMessage.error('无法录入相同的过敏源')
|
|
|
+ }
|
|
|
+ newPatientAllergens(patNo, newAllergen.code, allergenType).then((res) => {
|
|
|
+ patientAllergenData.data.push({
|
|
|
+ id: res,
|
|
|
+ allergenCode: newAllergen.code,
|
|
|
+ allergenName: newAllergen.name,
|
|
|
+ type: allergenType
|
|
|
+ })
|
|
|
+ patientAllergenData.total = patientAllergenData.data.length
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+const clickRemoveAllergens = (index, id) => {
|
|
|
+ removePatientAllergens(id).then((res) => {
|
|
|
+ patientAllergenData.data.splice(index, 1)
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+const typeChangeClear = () => {
|
|
|
+ newAllergen.code = '';
|
|
|
+ newAllergen.name = '';
|
|
|
+ allergenData = []
|
|
|
+}
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ patNo = props.patNo
|
|
|
+ if (stringNotBlank(patNo)) {
|
|
|
+ getPatientAllergens(patNo).then((res) => {
|
|
|
+ patientAllergenData.data = res
|
|
|
+ patientAllergenData.total = patientAllergenData.data.length
|
|
|
+ console.log(res);
|
|
|
+ })
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
+
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+
|
|
|
+</style>
|