dev
This commit is contained in:
parent
c0f4613829
commit
ccbad2bcaf
|
|
@ -2,5 +2,10 @@ export enum apiConfig{
|
||||||
/**
|
/**
|
||||||
* 用户操作
|
* 用户操作
|
||||||
*/
|
*/
|
||||||
"ManagerLogin"="manager/manager/login"//登录
|
"ManagerLogin"="manager/manager/login",//登录
|
||||||
|
/**
|
||||||
|
* 接诊操作
|
||||||
|
*/
|
||||||
|
"DoctorDetail" ="medical/record/getDetailByRegisId"//详情
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -8,12 +8,10 @@
|
||||||
<el-option label="中医模板" :value="1"/>
|
<el-option label="中医模板" :value="1"/>
|
||||||
<el-option label="口腔模板" :value="2"/>
|
<el-option label="口腔模板" :value="2"/>
|
||||||
</el-select>
|
</el-select>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
|
||||||
<el-form :model="formDate" label-width="auto" ref="formRef">
|
<el-form :model="formDate" label-width="auto" ref="formRef">
|
||||||
<el-descriptions
|
<el-descriptions
|
||||||
:column="1"
|
:column="1"
|
||||||
|
|
|
||||||
|
|
@ -5,23 +5,23 @@
|
||||||
<img class="avatar-image" src="/static/images/outpatient/profile-picture.png" alt="头像"/>
|
<img class="avatar-image" src="/static/images/outpatient/profile-picture.png" alt="头像"/>
|
||||||
<div class="avatar-info-wrapper">
|
<div class="avatar-info-wrapper">
|
||||||
<div class="avatar-info">
|
<div class="avatar-info">
|
||||||
<span class="avatar-info-name">{{ registerInfo.name }}</span>
|
<span class="avatar-info-name">{{ patientRegistration.name }}</span>
|
||||||
<span class="avatar-info-sex" style="margin: 0 16px">{{ registerInfo.sex }}</span>
|
<span class="avatar-info-sex" style="margin: 0 16px">{{ patientRegistration.gender }}</span>
|
||||||
<span class="avatar-info-age">{{ registerInfo.age }}</span>
|
<span class="avatar-info-age">{{ patientRegistration.age }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="avatar-info-phone-num">
|
<div class="avatar-info-phone-num">
|
||||||
<span class="avatar-info-phone">{{ registerInfo.certno }}</span>
|
<span class="avatar-info-phone">{{ patientRegistration.phone }}</span>
|
||||||
<span class="avatar-info-num">就诊次数:<i class="caret-num">{{ registerInfo.visitCount }}次</i></span>
|
<span class="avatar-info-num">就诊次数:<i class="caret-num">{{ patientRegistration.visitCount || 0 }}次</i></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="detail">
|
<div class="detail">
|
||||||
<div>挂号医生: <span class="detail-doctor">{{registerInfo.dockerName}}-{{registerInfo.dockerSection}}</span></div>
|
<div>挂号医生: <span class="detail-doctor">{{patientRegistration.dockerName}}-{{patientRegistration.dockerSection}}</span></div>
|
||||||
<div class="detail-middle">
|
<div class="detail-middle">
|
||||||
<div>费用类别: <span class="detail-doctor">医保</span></div>
|
<div>费用类别: <span class="detail-doctor">医保</span></div>
|
||||||
<div>医保卡剩余金额: <span class="detail-balance">756元</span></div>
|
<div>医保卡剩余金额: <span class="detail-balance">756元</span></div>
|
||||||
</div>
|
</div>
|
||||||
<div>上次就诊时间: <span class="detail-doctor">{{ registerInfo.lastVisitTime }}</span></div>
|
<div>上次就诊时间: <span class="detail-doctor">{{ patientRegistration.lastVisitTime }}</span></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Panel>
|
</Panel>
|
||||||
|
|
@ -30,14 +30,7 @@
|
||||||
import Panel from "@/components/common/Panel.vue";
|
import Panel from "@/components/common/Panel.vue";
|
||||||
import {post} from "@/utils/request.ts";
|
import {post} from "@/utils/request.ts";
|
||||||
import {ref} from "vue";
|
import {ref} from "vue";
|
||||||
const registerInfo = ref<any>({})
|
const patientRegistration=defineModel<any>()
|
||||||
const init = (registerId: any) => {
|
|
||||||
post("registration/getDetailById", {id: registerId}).then((res: any) => {
|
|
||||||
registerInfo.value = res
|
|
||||||
})
|
|
||||||
console.log('init')
|
|
||||||
}
|
|
||||||
defineExpose({init})
|
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.avatar {
|
.avatar {
|
||||||
|
|
|
||||||
|
|
@ -5,75 +5,23 @@
|
||||||
<ul>
|
<ul>
|
||||||
<li class="item" v-for="(item, index) in list" :key="index">
|
<li class="item" v-for="(item, index) in list" :key="index">
|
||||||
<span class="index">{{ index + 1 }}</span>
|
<span class="index">{{ index + 1 }}</span>
|
||||||
<span class="name">{{ item.projectName }}</span>
|
<span class="name">{{ item.name }}</span>
|
||||||
<span class="unit">{{}}</span>
|
<span class="unit">{{ item.selectedNum || 0 }}{{ item.selectedUnit }}</span>
|
||||||
<span class="price">¥{{ item.selectedPrice || '0' }}元</span>
|
<span class="price">¥{{ item.selectedPrice || '0' }}元</span>
|
||||||
<span class="delete">
|
|
||||||
<el-button type="text" @click="deleteItem(item.id)">
|
|
||||||
<el-icon><CircleClose/></el-icon>
|
|
||||||
</el-button>
|
|
||||||
</span>
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="search">
|
<div class="search">
|
||||||
<div class="search-input">
|
<span style="margin-left: 24px">合计</span>
|
||||||
<SearchInput
|
<span style="margin-right: 24px">¥{{ list.reduce((acc, cur) => acc + cur.selectedNum*cur.selectedPrice, 0) }}元</span>
|
||||||
:request-api="itemSearchApi"
|
|
||||||
:show-config="itemShowConfig"
|
|
||||||
@selectedCallBack="itemSelect"
|
|
||||||
:placeholder="'请输入药材名称'"
|
|
||||||
>
|
|
||||||
</SearchInput>
|
|
||||||
</div>
|
|
||||||
<span style="margin-right: 24px">¥{{ list.reduce((acc, cur) => acc + cur.unitPrice, 0) }}元</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Panel>
|
</Panel>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import Panel from "@/components/common/Panel.vue";
|
import Panel from "@/components/common/Panel.vue";
|
||||||
import SearchInput from "@/components/SearchInput.vue";
|
|
||||||
import {CircleClose} from "@element-plus/icons-vue";
|
|
||||||
|
|
||||||
|
|
||||||
const itemSearchApi = "goods/goods/search";
|
|
||||||
const itemShowConfig = [
|
|
||||||
{
|
|
||||||
label: "项目名称",
|
|
||||||
prop: "name",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "项目类型",
|
|
||||||
prop: "type",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "售价",
|
|
||||||
prop: "unitPrice",
|
|
||||||
},
|
|
||||||
]
|
|
||||||
const itemSelect = (row: any) => {
|
|
||||||
row.selectNum = 1
|
|
||||||
row.selectedUnit = row.packagingUnit
|
|
||||||
row.selectedPrice = row.unitPrice
|
|
||||||
list.value.push(row)
|
|
||||||
}
|
|
||||||
const deleteItem = (id: any) => {
|
|
||||||
list.value = list.value.filter((item) => item.id !== id);
|
|
||||||
};
|
|
||||||
const list = defineModel<any[]>({default: () => []});
|
const list = defineModel<any[]>({default: () => []});
|
||||||
|
|
||||||
|
|
||||||
const selectUnit = (item: any, unit: any) => {
|
|
||||||
item.selectedUnit = unit;
|
|
||||||
if (unit == item.packagingUnit) {
|
|
||||||
item.selectedPrice = item.unitPrice
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if (unit == item.minPackagingUnit) {
|
|
||||||
item.selectedPrice = item.disassemblyPrice
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
|
@ -149,10 +97,7 @@ const selectUnit = (item: any, unit: any) => {
|
||||||
border-top: 1px solid #EAEAEC;
|
border-top: 1px solid #EAEAEC;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
.search-input {
|
justify-content: space-between;
|
||||||
height: 100%;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -5,14 +5,17 @@
|
||||||
<ul>
|
<ul>
|
||||||
<li class="item" v-for="(item, index) in list" :key="index">
|
<li class="item" v-for="(item, index) in list" :key="index">
|
||||||
<span class="index">{{ index + 1 }}</span>
|
<span class="index">{{ index + 1 }}</span>
|
||||||
<span class="name">{{ item.projectName }}</span>
|
<span class="name">{{ item.name }}</span>
|
||||||
<span class="code">{{ item.projectSocialCode }}</span>
|
<span class="code">{{ item.socialCode }}</span>
|
||||||
<span class="price">¥{{ item.projectUnitPrice }}元</span>
|
<span class="unit">{{ item.unit }}</span>
|
||||||
|
<span class="price">¥{{ item.unitPrice }}元</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="search">
|
<div class="search">
|
||||||
<span style="margin-right: 24px">¥{{ list.reduce((acc, cur) => acc + cur.projectUnitPrice, 0) }}元</span></div>
|
<span style="margin-left: 24px">合计</span>
|
||||||
|
<span style="margin-right: 24px">¥{{ list.reduce((acc, cur) => acc + cur.unitPrice, 0) }}元</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Panel>
|
</Panel>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -21,9 +24,6 @@ import Panel from "@/components/common/Panel.vue";
|
||||||
import {onMounted} from "vue";
|
import {onMounted} from "vue";
|
||||||
|
|
||||||
const list = defineModel<any[]>({default: () => []});
|
const list = defineModel<any[]>({default: () => []});
|
||||||
onMounted(()=>{
|
|
||||||
console.log(list.value)
|
|
||||||
})
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
|
@ -62,6 +62,14 @@ onMounted(()=>{
|
||||||
height: 100%;
|
height: 100%;
|
||||||
line-height: 64px;
|
line-height: 64px;
|
||||||
}
|
}
|
||||||
|
.unit{
|
||||||
|
width: 60px;
|
||||||
|
margin-left: 10px;
|
||||||
|
border-right: 1px solid #EAEAEC;
|
||||||
|
height: 100%;
|
||||||
|
line-height: 64px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
.price{
|
.price{
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 200px;
|
width: 200px;
|
||||||
|
|
@ -83,10 +91,7 @@ onMounted(()=>{
|
||||||
border-top: 1px solid #EAEAEC;
|
border-top: 1px solid #EAEAEC;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
.search-input {
|
justify-content: space-between;
|
||||||
height: 100%;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -19,7 +19,6 @@ const totalAmount = defineModel<any>()
|
||||||
<div>总金额:<span class="text icon">¥</span><span class="text">{{ totalAmount || '0' }}</span></div>
|
<div>总金额:<span class="text icon">¥</span><span class="text">{{ totalAmount || '0' }}</span></div>
|
||||||
<div class="btn-group">
|
<div class="btn-group">
|
||||||
<el-button @click="deleteItem">取消接诊</el-button>
|
<el-button @click="deleteItem">取消接诊</el-button>
|
||||||
<el-button type="primary">保存并打印</el-button>
|
|
||||||
<el-button type="primary" @click="save">完成接诊</el-button>
|
<el-button type="primary" @click="save">完成接诊</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,17 @@
|
||||||
<div class="middle">
|
<div class="middle">
|
||||||
<el-scrollbar>
|
<el-scrollbar>
|
||||||
<div class="case">
|
<div class="case">
|
||||||
<Case v-model="formData"></Case>
|
<CaseDetail v-if="registerId&&formData" v-model="formData"></CaseDetail>
|
||||||
|
<Case v-else v-model="formData"></Case>
|
||||||
</div>
|
</div>
|
||||||
<div class="service-items">
|
<div class="service-items">
|
||||||
<ServiceItems v-model="itemList"></ServiceItems>
|
<ServiceItemsDetail v-if="registerId&&itemList" v-model="itemList"></ServiceItemsDetail>
|
||||||
|
<ServiceItems v-else v-model="itemList"></ServiceItems>
|
||||||
</div>
|
</div>
|
||||||
<div class="pharmaceutical-consumables">
|
<div class="pharmaceutical-consumables">
|
||||||
<PharmaceuticalConsumables v-model="goodsList"></PharmaceuticalConsumables>
|
<PharmaceuticalConsumablesDetail v-if="registerId&&goodsList"
|
||||||
|
v-model="goodsList"></PharmaceuticalConsumablesDetail>
|
||||||
|
<PharmaceuticalConsumables v-else v-model="goodsList"></PharmaceuticalConsumables>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
<Settlement v-model="totalAmount" @deleteItem="deleteItem" @save="save"></Settlement>
|
<Settlement v-model="totalAmount" @deleteItem="deleteItem" @save="save"></Settlement>
|
||||||
|
|
@ -21,7 +25,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<div class="top">
|
<div class="top">
|
||||||
<MedicalInformation ref="medicalInformationRef"></MedicalInformation>
|
<MedicalInformation v-model="patientRegistration" ref="medicalInformationRef"></MedicalInformation>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
<MedicalHistory ref="medicalHistoryRef"></MedicalHistory>
|
<MedicalHistory ref="medicalHistoryRef"></MedicalHistory>
|
||||||
|
|
@ -45,10 +49,10 @@ import {ElMessage} from "element-plus";
|
||||||
import ServiceItemsDetail from "@/components/outpatient/ServiceItemsDetail.vue";
|
import ServiceItemsDetail from "@/components/outpatient/ServiceItemsDetail.vue";
|
||||||
import PharmaceuticalConsumablesDetail from "@/components/outpatient/PharmaceuticalConsumablesDetail.vue";
|
import PharmaceuticalConsumablesDetail from "@/components/outpatient/PharmaceuticalConsumablesDetail.vue";
|
||||||
import CaseDetail from "@/components/outpatient/CaseDetail.vue";
|
import CaseDetail from "@/components/outpatient/CaseDetail.vue";
|
||||||
|
import {apiConfig} from "@/assets/config/apiConfig.ts";
|
||||||
|
|
||||||
const registerId = ref()
|
const registerId = ref()
|
||||||
const patientId = ref()
|
const patientId = ref()
|
||||||
const serviceList = ref([])
|
|
||||||
const itemList = ref([])
|
const itemList = ref([])
|
||||||
const goodsList = ref([])
|
const goodsList = ref([])
|
||||||
const formData = ref<any>({})
|
const formData = ref<any>({})
|
||||||
|
|
@ -81,7 +85,7 @@ const save = () => {
|
||||||
const totalAmount = ref(0)
|
const totalAmount = ref(0)
|
||||||
const medicalInformationRef = ref()
|
const medicalInformationRef = ref()
|
||||||
const medicalHistoryRef = ref()
|
const medicalHistoryRef = ref()
|
||||||
const showDetail = ref(false)
|
const patientRegistration= ref<any>({})
|
||||||
const getId = (item: any) => {
|
const getId = (item: any) => {
|
||||||
registerId.value = item.id
|
registerId.value = item.id
|
||||||
patientId.value = item.patientInfoId
|
patientId.value = item.patientInfoId
|
||||||
|
|
@ -96,12 +100,13 @@ const getId = (item: any) => {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (item.status == 3) {
|
if (item.status == 3) {
|
||||||
post('medical/record/getDetailByRegisId', {
|
post(apiConfig.DoctorDetail, {
|
||||||
regisId: item.id
|
regisId: item.id
|
||||||
}).then((res: any) => {
|
}).then((res: any) => {
|
||||||
formData.value = res
|
formData.value = res.diagnosisMedicalRecord
|
||||||
goodsList.value = res.goodsDetail
|
goodsList.value = res.goodsDetail
|
||||||
itemList.value = res.serviceDetail
|
itemList.value = res.itemDetail
|
||||||
|
patientRegistration.value=res.patientRegistration
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -114,26 +119,17 @@ const deleteItem = () => {
|
||||||
const getStatus = (e: any) => {
|
const getStatus = (e: any) => {
|
||||||
status.value = e
|
status.value = e
|
||||||
}
|
}
|
||||||
// 使用 watch 监听 serviceList 和 itemList 的变化
|
// 使用 watch 监听 goodsList 和 itemList 的变化
|
||||||
watch([serviceList, itemList], ([newServiceList, newItemList]) => {
|
watch([goodsList, itemList], ([newGoodsList, newItemList]) => {
|
||||||
const pharmaceuticalTotalAmount = newItemList.reduce((pre: any, cur: any) => {
|
const pharmaceuticalTotalAmount = newItemList.reduce((pre: any, cur: any) => {
|
||||||
return pre + cur.unitPrice
|
return pre + cur.unitPrice
|
||||||
}, 0);
|
}, 0);
|
||||||
|
|
||||||
const serviceTotalAmount = newServiceList.reduce((pre: any, cur: any) => {
|
const serviceTotalAmount = newGoodsList.reduce((pre: any, cur: any) => {
|
||||||
return pre + cur.unitPrice
|
return pre + cur.selectedNum * cur.selectedPrice
|
||||||
}, 0);
|
}, 0);
|
||||||
totalAmount.value = pharmaceuticalTotalAmount + serviceTotalAmount;
|
totalAmount.value = pharmaceuticalTotalAmount + serviceTotalAmount;
|
||||||
console.log(totalAmount.value)
|
|
||||||
}, {deep: true});
|
}, {deep: true});
|
||||||
const changeDetail = (flag: boolean) => {
|
|
||||||
showDetail.value = flag
|
|
||||||
if (!flag) {
|
|
||||||
formData.value = {}
|
|
||||||
goodsList.value = []
|
|
||||||
itemList.value = []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.container {
|
.container {
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,6 @@ function set_tab() {
|
||||||
post("social/directory/column_list", {type: current_tab.value})
|
post("social/directory/column_list", {type: current_tab.value})
|
||||||
.then((res: any) => {
|
.then((res: any) => {
|
||||||
column_list.value = res;
|
column_list.value = res;
|
||||||
console.log(column_list)
|
|
||||||
get_data_list();
|
get_data_list();
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -101,14 +100,14 @@ function get_data_list() {
|
||||||
isDownLoading.value = false;
|
isDownLoading.value = false;
|
||||||
total_page.value = res.total_page;
|
total_page.value = res.total_page;
|
||||||
tableData.value = res.list
|
tableData.value = res.list
|
||||||
// tableData.value.forEach((item: any) => {
|
tableData.value.forEach((item: any) => {
|
||||||
// if (item.enddate == null) {
|
if (item.enddate == null) {
|
||||||
// item.enddate = "长期有效"
|
item.enddate = "长期有效"
|
||||||
// }
|
}
|
||||||
// if (item.json.rx_flag) {
|
if (item.json.rx_flag) {
|
||||||
// item.json.rx_flag = item.json.rx_flag == 1 ? "是" : "否"
|
item.json.rx_flag = item.json.rx_flag == 1 ? "是" : "否"
|
||||||
// }
|
}
|
||||||
// })
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue