Compare commits

..

No commits in common. "72d91f981f3b73f5ebb6dd1ea784d09d2314ba14" and "3a8c371e9c6367f2f5761b305ff98a56694cfde0" have entirely different histories.

12 changed files with 92 additions and 156 deletions

View File

@ -1,5 +1,5 @@
<template>
<el-input v-model="input" :style="{'width': props.width+'px'}" clearable :disabled="disabled" ref="inputRef" @click="showPopo" @focus="focus"></el-input>
<el-input v-model="input" :style="{'width': props.width+'px'}" clearable :disabled="disabled" ref="inputRef" @click="showPopo"></el-input>
<el-popover placement="bottom-start" trigger="click" :width="props.width" :virtual-ref="inputRef" ref="popoverRef">
<div class="code-popo" v-if="props.list.length > 0">
<div class="code-item" v-for="item in props.list">
@ -50,10 +50,6 @@ const inputStr = (str: string,item:ListItem) => {
}
const inputRef = ref();
const emit=defineEmits(["focus"])
const focus = () => {
emit("focus", false)
}
</script>
<style scoped lang="scss">
.code-popo {

View File

@ -1,3 +1,4 @@
<template>
<el-input
ref="inputRef"
@ -10,13 +11,11 @@
@input="changeInput"
class="no-border-input"
:disabled="disabled"
@focus="focus"
>
</el-input>
<el-popover placement="bottom-start" trigger="click" :width="props.width" ref="popoverRef" :virtual-ref="inputRef"
:trigger-keys="[]">
<el-popover placement="bottom-start" trigger="click" :width="props.width" ref="popoverRef" :virtual-ref="inputRef" :trigger-keys="[]">
<div class="container">
<el-table
:data="searchList" style="width: 100%"
@ -36,13 +35,12 @@
</template>
<script setup lang="ts">import {ref, unref} from "vue";
import {post} from "@/utils/request.ts";
import {Plus} from "@element-plus/icons-vue";
import { post } from "@/utils/request.ts";
import { Plus } from "@element-plus/icons-vue";
const keyword = ref("");
const popoverRef = ref();
const inputRef = ref();
interface showConfig {
prop: string;
label: string;
@ -82,18 +80,18 @@ const changeInput = (inputStr: string) => {
if (!props.requestApi || props.requestApi === "") {
return;
}
post(props.requestApi, {keyword: keyword.value}).then((res: any) => {
post(props.requestApi, { keyword: keyword.value }).then((res: any) => {
searchList.value = res;
});
};
const emit = defineEmits(['selectedCallBack','focus']);
const emit = defineEmits(['selectedCallBack']);
const clickRow = (row: any) => {
emit('selectedCallBack', row);
popoverRef.value.hide();
keyword.value = ""
keyword.value=""
};
const beforeShow = () => {
@ -102,9 +100,7 @@ const beforeShow = () => {
}
};
const focus=()=>{
emit('focus',true)
}
</script>
<style scoped lang="scss">
@ -118,8 +114,7 @@ const focus=()=>{
border: none !important;
box-shadow: none !important;
}
&:hover {
&:hover{
border: 1px solid #409eff !important;
}
}

View File

@ -15,7 +15,7 @@
<div class="container">
<el-form :model="formDate" label-width="auto" ref="formRef">
<el-form-item label="主诉">
<PopoverInput :disabled="disabled" v-model="formDate.mainAppeal" :list="mainAppealList" @focus="focus"/>
<PopoverInput :disabled="disabled" v-model="formDate.mainAppeal" :list="mainAppealList"/>
</el-form-item>
<el-form-item label="诊断">
<DiagnosisSearchInput
@ -24,36 +24,34 @@
:request-api="diagnosisSearchApi"
:show-config="diagnosisShowConfig"
@selectedCallBack="diagnosisSelect"
:show-header="false"
@focus="focus"
>
:show-header="false">
</DiagnosisSearchInput>
</el-form-item>
<el-form-item label="现病史" v-if="!props.isShowFrom">
<el-form-item label="现病史">
<PopoverInput :disabled="disabled" v-model="formDate.nowMedicalHistory" :list="nowMedicalHistoryList"/>
</el-form-item>
<el-form-item label="既往史" v-if="!props.isShowFrom">
<el-form-item label="既往史">
<PopoverInput :disabled="disabled" v-model="formDate.beforeMedicalHistory" :list="beforeMedicalHistoryList"/>
</el-form-item>
<el-form-item label="过敏史" v-if="!props.isShowFrom">
<el-form-item label="过敏史">
<PopoverInput :disabled="disabled" v-model="formDate.allergyHistory" :list="allergyHistoryList"/>
</el-form-item>
<el-form-item label="体格检查" v-if="!props.isShowFrom">
<el-form-item label="体格检查">
<PhysiqueExamInuput :disabled="disabled" v-model="formDate.exam" :list="physiqueExamList"/>
</el-form-item>
<el-form-item label="望闻问切" v-if="modelType==1&&!props.isShowFrom">
<el-form-item label="望闻问切" v-if="modelType==1">
<PopoverInput :disabled="disabled" v-model="formDate.chinaAdjunctCheck" :list="chinaAdjunctCheckList"/>
</el-form-item>
<el-form-item label="治法" v-if="modelType==1&&!props.isShowFrom">
<el-form-item label="治法" v-if="modelType==1">
<el-input v-model="formDate.chinaDeal" :disabled="disabled"></el-input>
</el-form-item>
<el-form-item label="口腔检查" v-if="modelType==2&&!props.isShowFrom">
<el-form-item label="口腔检查" v-if="modelType==2">
<el-input :disabled="disabled" v-model="formDate.mouthCheck"></el-input>
</el-form-item>
<el-form-item label="辅助检查" v-if="(modelType==2 || modelType ==0)&&!props.isShowFrom">
<el-form-item label="辅助检查" v-if="modelType==2 || modelType ==0">
<el-input :disabled="disabled" v-model="formDate.adjunctCheck"></el-input>
</el-form-item>
<el-form-item label="处置" v-if="(modelType==0 || modelType ==2)&&!props.isShowFrom">
<el-form-item label="处置" v-if="modelType==0 || modelType ==2">
<el-input :disabled="disabled" v-model="formDate.deal"></el-input>
</el-form-item>
</el-form>
@ -62,7 +60,7 @@
</Panel>
</template>
<script setup lang="ts">
import {computed, nextTick, ref,defineEmits} from "vue";
import {computed, nextTick, ref} from "vue";
import {
mainAppealList,
nowMedicalHistoryList,
@ -79,10 +77,6 @@ const props = defineProps({
status: {
type: Number,
default: 0
},
isShowFrom:{
type: Boolean,
default: false
}
})
const disabled = computed(() => {
@ -120,10 +114,6 @@ const initDiagnosisSearch = (list:any,nList:any)=>{
diagnosisSearchRef.value?.init(list,nList);
})
}
const emit = defineEmits(['focus'])
const focus = (e:any)=>{
emit('focus',e)
}
defineExpose({initDiagnosisSearch})
</script>
<style scoped lang="scss">

View File

@ -1,6 +1,6 @@
<template>
<el-input v-model="keyword" style="width:100%;height: 100%" @input="changeInput" :disabled="disabled"
placeholder="诊断选择" ref="inputRef" @focus="focus"></el-input>
placeholder="诊断选择" ref="inputRef"></el-input>
<el-popover placement="bottom-start" trigger="click" :width="props.width" ref="popoverRef" @before-enter="beforeShow" :virtual-ref="inputRef" @hide ="afterShow">
@ -78,7 +78,7 @@ const changeInput = (inputStr: string) => {
searchList.value = res;
})
}
const emit = defineEmits(['selectedCallBack','focus'])
const emit = defineEmits(['selectedCallBack'])
const clickRow = (row: any) => {
selectList.value.push(row)
nameList.value.push(row.name)
@ -112,10 +112,6 @@ const init = (list: any, nList: any) => {
nameList.value = nList;
keyword.value = nameList.value.join(",") + ","
}
const focus = ()=>{
emit("focus",false)
}
defineExpose({init})
</script>
<style scoped lang="scss">

View File

@ -241,7 +241,7 @@ watch(() => props.status, () => {
}
&:hover {
background: rgba(#4D6DE4, 0.5);
background: rgba(#4D6DE4, 0.1);
}
.item_name {

View File

@ -5,6 +5,9 @@
<ul>
<li class="item" v-for="(item, index) in list" :key="index">
<div class="index">{{ index + 1 }}</div>
<div class="name">
<el-popover
placement="top-start"
@ -56,7 +59,6 @@
@selectedCallBack="itemSelect"
:placeholder="'请输入药材名称'"
:disabled="disabled"
@focus="focus"
>
</SearchInput>
</div>
@ -122,10 +124,6 @@ const selectUnit = (item: any, unit: any) => {
}
}
const sumPrice = ref(0)
const emit = defineEmits(['focus'])
const focus=(e:any)=>{
emit('focus',e)
}
watch(()=>list.value, (newList) => {
sumPrice.value = newList.reduce((total, item) => {
return total + (item.selectedNum || 0) * (item.selectedPrice || 0);

View File

@ -5,22 +5,7 @@
<ul>
<li class="item" v-for="(item, index) in list" :key="index">
<div class="index">{{ index + 1 }}</div>
<div class="name">
<el-popover width="485">
<template #reference>
{{ item.itemName }}
</template>
<div class="detail">
<div style="display: flex;justify-content: space-between">
<div>{{ item.itemName }}</div>
<div>{{ item.unitPrice }}/{{ item.unit }}</div>
</div>
<div>
<div> {{item.itemSocialCode}}</div>
</div>
</div>
</el-popover>
</div>
<div class="name">{{ item.itemName }}</div>
<div class="price">{{ item.unitPrice }}</div>
<div class="unit">
<div style="display: flex; align-items: center;">
@ -48,7 +33,6 @@
:placeholder="'请输入项目名称'"
:disabled="disabled"
style="height: 100%"
@focus="focus"
>
</SearchInput>
</div>
@ -59,7 +43,7 @@
</Panel>
</template>
<script setup lang="ts">
import {defineModel, computed,defineEmits} from "vue";
import {defineModel, computed} from "vue";
import Panel from "@/components/common/Panel.vue";
import {Close} from '@element-plus/icons-vue'
import SearchInput from "@/components/SearchInput.vue";
@ -99,10 +83,7 @@ const list = defineModel<any[]>({default: () => []});
const deleteItem = (id: any) => {
list.value = list.value.filter((item) => item.id !== id);
};
const emit = defineEmits(['focus'])
const focus=(e:any)=>{
emit('focus',e)
}
</script>
<style scoped lang="scss">
@ -135,7 +116,6 @@ const focus=(e:any)=>{
margin-left: 10px;
height: 100%;
line-height: 30px;
}
.code {

View File

@ -15,7 +15,6 @@ const wsStore = useWsStore();
const isReading = ref(false)
const socialCard: any = defineModel();
const ReadSocialCard = async (readType: string) => {
emit("changeLoading",true)
socialCard.value.lastUse = "CardDefault"
isReading.value = true;
let config_db: any = await post('common/config/getall');
@ -41,7 +40,6 @@ const ReadSocialCard = async (readType: string) => {
};
const reciceMessage = (response: Response) => {
emit('changeLoading',false)
if (socialCard.value.lastUse != "CardDefault") {
return;
}
@ -68,37 +66,24 @@ const reciceMessage = (response: Response) => {
cardSn: response.Data.card_sn ? response.Data.card_sn : "",
}
getInfoFor1101(params)
}
const emit = defineEmits(['socialCardUpdate', 'close','changeLoading'])
const loading = ref(false)
const emit = defineEmits(['socialCardUpdate', 'close'])
const getInfoFor1101 = (params: any) => {
emit('changeLoading',true)
ElMessage({
message: "正在读取中,请稍后......",
duration: 500,
type: 'info',
});
post("social/person/getCustomSocialInfo", {data: params},{catch_error: true}).then((res: any) => {
emit('changeLoading',false)
loading.value = true
post("social/person/getCustomSocialInfo", {data: params}).then((res: any) => {
socialCard.value.data = res;
socialCard.value.mdtrtCertType = params.mdtrtCertType;
socialCard.value.mdtrtCertNo = params.mdtrtCertNo;
ElMessage({
message: "读取成功",
type: 'success',
duration: 1000,
});
emit('socialCardUpdate', socialCard.value)
}).catch(()=>{
loading.value = false
}).finally(() => {
isReading.value = false;
emit('changeLoading',false)
ElMessage({
message: "读取失败",
duration: 1000,
type: 'error',
});
loading.value = false
})
}
@ -107,18 +92,28 @@ onMounted(async () => {
});
onUnmounted(() => {
wsStore.removeAllMessageCallback()
emit('changeLoading',false)
})
const close = () => {
ElMessageBox.confirm("退出识别", "提示", {
confirmButtonText: '确定',
cancelButtonText: '取消',
callback: (action: any) => {
if (action == "confirm") {
socialCard.value.data = null
emit('close')
}
if (action == "cancel") {
emit('socialCardUpdate', socialCard.value)
}
},
});
}
defineExpose({close})
</script>
<template>
<div class="card-default">
<div
class="empty">
<div v-loading="loading" class="empty">
<div class="btn-wrapper">
<div class="btn" @click="ReadSocialCard('03')" @keydown.enter.prevent tabindex="-1">医保卡</div>
<div class="btn" @click="ReadSocialCard('01')" @keydown.enter.prevent tabindex="-1">电子凭证</div>
@ -135,7 +130,6 @@ defineExpose({close})
height: 100%;
background: #FFFFFF;
border-radius: 8px;
.btn {
width: 100%;
height: 46px;
@ -147,20 +141,16 @@ defineExpose({close})
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
&:hover {
background: #4D6DE4;
color: #FFFFFF;
}
:last-child {
border-bottom: none;
border-radius: 0 0 8px 8px;
border-radius:0 0 8px 8px;
}
:first-child {
border-radius: 8px 8px 0 0;
border-radius:8px 8px 0 0;
}
}
}

View File

@ -4,7 +4,6 @@
<el-scrollbar>
<div style="padding:0 24px 24px">
<el-form
v-loading="loading"
:model="edit_data"
label-width="auto"
:rules="rules"
@ -17,6 +16,19 @@
:column="4"
style="margin-top: 20px"
>
<!-- <el-descriptions-item label="结算方式">-->
<!-- <el-form-item prop="gender">-->
<!-- <el-radio-group v-model="edit_data.type">-->
<!-- <el-radio value="1">医保</el-radio>-->
<!-- <el-radio value="2">自费</el-radio>-->
<!-- </el-radio-group>-->
<!-- </el-form-item>-->
<!-- </el-descriptions-item>-->
<el-descriptions-item label="姓名">
<el-form-item prop="name">
<el-input v-model="edit_data.name" placeholder="请输入姓名" clearable></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="性别">
<el-form-item prop="gender">
<el-radio-group v-model="edit_data.gender">
@ -25,12 +37,6 @@
</el-radio-group>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="姓名">
<el-form-item prop="name">
<el-input v-model="edit_data.name" placeholder="请输入姓名" clearable></el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="年龄">
<el-form-item prop="age">
<el-input v-model.number="edit_data.age" placeholder="请输入年龄"></el-input>
@ -146,8 +152,8 @@
</span>
</div>
<template #dropdown>
<CardDefault ref="cardDefaultRef" v-model="socialCard" @socialCardUpdate="socialCardUpdate"
@close="deleteCard" @changeLoading="changeLoading"/>
<CardDefault v-model="socialCard" @socialCardUpdate="socialCardUpdate"
@close="deleteCard"/>
</template>
</el-dropdown>
<div class="closeBtn" v-else @click="deleteCard" style="outline: none;">
@ -165,7 +171,7 @@
</template>
<script setup lang="ts">
import {nextTick, onMounted, ref} from 'vue'
import {onMounted, ref} from 'vue'
import {post} from '@/utils/request.ts'
import CardDefault from '@/components/registration/CardDefault.vue'
import {ElMessage, ElMessageBox} from "element-plus";
@ -306,9 +312,8 @@ const socialCardUpdate = (e: any) => {
tableData.value = e.data.insuinfo
edit_data.value.organizationDoctorId = props.doctorId
}
loading.value = false
}
const cardDefaultRef = ref<any>("")
const deleteCard = () => {
ElMessageBox.confirm("退出识别", "提示", {
confirmButtonText: '确定',
@ -317,9 +322,6 @@ const deleteCard = () => {
if (action == "confirm") {
isShowCard.value = true
edit_data.value = {}
nextTick(() => {
cardDefaultRef.value?.close()
})
}
},
});
@ -338,10 +340,6 @@ const list = () => {
sectionList.value = res
})
}
const loading = ref(false)
const changeLoading = (e: any) => {
loading.value = e
}
defineExpose({init})
</script>
<style scoped lang="scss">

View File

@ -5,14 +5,13 @@
@row-click="rowClick"
style="height: 100%"
>
<el-table-column prop="name" label="姓名" width="180">
<el-table-column prop="name" label="姓名" width="180"></el-table-column>
<el-table-column prop="gender" label="性别" width="180">
<template #default="scope">
<div style="display: flex;align-items: center;">
<img style="width: 25px;height: 25px;margin-right: 10px"
<img style="width: 25px;height: 25px"
:src="scope.row.gender === 1 ? '/public/static/images/member/man.png' :scope.row.gender === 2 ? '/public/static/images/member/women.png':'无'"
alt="" srcset="">
<span> {{ scope.row.name }}</span>
</div>
</template>
</el-table-column>
<el-table-column prop="phone" label="手机号" width="180"></el-table-column>

View File

@ -7,23 +7,22 @@
<el-scrollbar>
<div class="case">
<CaseDetail v-if="patientRegistration.status==3" v-model="formData" ></CaseDetail>
<Case ref="caseRef" v-else v-model="formData" :status="status" :isShowFrom="isShowFrom" @focus="focus"></Case>
<Case ref="caseRef" v-else v-model="formData" :status="status"></Case>
</div>
<div class="service-items">
<ServiceItemsDetail v-if="patientRegistration.status==3" v-model="itemList"></ServiceItemsDetail>
<ServiceItems v-else v-model="itemList" :status="status" @focus="focus"></ServiceItems>
<ServiceItems v-else v-model="itemList" :status="status"></ServiceItems>
</div>
<div class="pharmaceutical-consumables">
<PharmaceuticalConsumablesDetail v-if="patientRegistration.status==3"
v-model="goodsList" ></PharmaceuticalConsumablesDetail>
<PharmaceuticalConsumables v-else v-model="goodsList" :status="status" @focus="focus"></PharmaceuticalConsumables>
<PharmaceuticalConsumables v-else v-model="goodsList" :status="status"></PharmaceuticalConsumables>
</div>
</el-scrollbar>
<div class="bottom">
<Settlement v-model="totalAmount" @deleteItem="deleteItem" @save="save" :status="status"
<Settlement v-if="status!=1" v-model="totalAmount" @deleteItem="deleteItem" @save="save" :status="status"
@edit="edit"></Settlement>
</div>
</el-scrollbar>
</div>
<div class="right">
<div class="top">
@ -183,10 +182,6 @@ const getSeeDockerInfo = (newValue:any) => {
seeDockerInfo.value = res
})
}
const isShowFrom= ref<any>(false)
const focus=(e:any)=>{
isShowFrom.value=e
}
watch(() => registerId.value, (newValue) => {
if (!newValue) {
seeDockerInfo.value = {}

View File

@ -153,7 +153,6 @@ const openDialog = () => {
ItemEditRef.value?.init()
})
}
const loading= ref(true)
</script>
<style scoped lang="scss">
.container-wrapper {