123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- <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-combo-grid v-model="newAllergen.name"
- @rowClick="rowClick"
- row-key="code"
- :current-key="newAllergen.code"
- :query-data-func="methodAllergen">
- </xc-combo-grid>
- <!-- <el-button 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="Info"
- icon-color="red"
- title="确定要删除吗?"
- @confirm="clickRemoveAllergens(scope.$index, scope.row.id)">
- <template #reference>
- <el-button 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'
- import XcComboGrid from "@/components/xiao-chan/combo-grid/XcComboGrid.vue";
- const props = defineProps({
- patNo: '',
- })
- const emit = defineEmits(['close'])
- const windowSize = computed(() => {
- return store.state.app.windowSize
- })
- let 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 (val.length < 1) {
- return
- }
- if (allergenType === 0) {
- return getAllergens(val)
- } else {
- return getDrugInfo(val)
- }
- }
- const rowClick = (value) => {
- newAllergen.code = value.code
- newAllergen.name = value.name
- clickNewPatientAllergens()
- }
- /**
- *
- * @returns {IMessageHandle} 错误信息
- */
- 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
- })
- }
- /**
- * 删除数据
- * @param index 当前下标
- * @param id
- */
- 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
- })
- }
- })
- </script>
- <style scoped></style>
|