dev
This commit is contained in:
parent
5caab6347d
commit
bdb62f0399
|
|
@ -1,21 +1,20 @@
|
||||||
|
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<el-popover placement="bottom-start" trigger="click" :width="props.width" >
|
<el-popover placement="bottom-start" trigger="click" :width="props.width">
|
||||||
<template #reference>
|
<template #reference>
|
||||||
<el-input v-model="input" :style="{'width': props.width+'px'}" clearable></el-input>
|
<el-input v-model="input" :style="{'width': props.width+'px'}" clearable :disabled="disabled"></el-input>
|
||||||
</template>
|
</template>
|
||||||
<div class="code-popo" v-if="props.list.length > 0">
|
<div class="code-popo" v-if="props.list.length > 0">
|
||||||
<div class="code-item" v-for="item in props.list" >
|
<div class="code-item" v-for="item in props.list">
|
||||||
<div class="code-item-name" v-for="subItem in item" @click="inputStr(subItem)">
|
<div class="code-item-name" v-for="subItem in item" @click="inputStr(subItem)">
|
||||||
{{subItem}}
|
{{ subItem }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-popover>
|
</el-popover>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import {ref} from "vue";
|
import {ref} from "vue";
|
||||||
|
|
||||||
const input = defineModel<string | null>();
|
const input = defineModel<string | null>();
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
list: {
|
list: {
|
||||||
|
|
@ -25,35 +24,43 @@ const props = defineProps({
|
||||||
width: {
|
width: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: 1000
|
default: 1000
|
||||||
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
const inputStr = (str: string) => {
|
const inputStr = (str: string) => {
|
||||||
let strList = input.value?input.value.split(","):[];
|
let strList = input.value ? input.value.split(",") : [];
|
||||||
strList.push(str);
|
strList.push(str);
|
||||||
input.value = strList.join(",");
|
input.value = strList.join(",");
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.code-popo{
|
.code-popo {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
.code-item{
|
|
||||||
|
.code-item {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
padding: 5px 0;
|
padding: 5px 0;
|
||||||
border-bottom: 1px solid #DDDDDD;
|
border-bottom: 1px solid #DDDDDD;
|
||||||
.code-item-name{
|
|
||||||
|
.code-item-name {
|
||||||
float: left;
|
float: left;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
&:hover{
|
|
||||||
|
&:hover {
|
||||||
color: #000;
|
color: #000;
|
||||||
}
|
}
|
||||||
&:after{
|
|
||||||
|
&:after {
|
||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
clearable
|
clearable
|
||||||
@input="changeInput"
|
@input="changeInput"
|
||||||
class="no-border-input"
|
class="no-border-input"
|
||||||
|
:disabled="disabled"
|
||||||
>
|
>
|
||||||
</el-input>
|
</el-input>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -63,6 +64,10 @@ const props = defineProps({
|
||||||
placeholder: {
|
placeholder: {
|
||||||
type: String,
|
type: String,
|
||||||
default: ""
|
default: ""
|
||||||
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,8 +18,8 @@ const {
|
||||||
|
|
||||||
_isShow.value = isShow == null ? false : isShow;
|
_isShow.value = isShow == null ? false : isShow;
|
||||||
_showFooter.value = showFooter == null ? false : showFooter;
|
_showFooter.value = showFooter == null ? false : showFooter;
|
||||||
_width.value = width == null ? 1200 : width;
|
_width.value = width == null ? 1200 : Number(width);
|
||||||
_height.value = height == null ? 800 : height;
|
_height.value = height == null ? 800 : Number(height);
|
||||||
_close.value = close == null ? true : close;
|
_close.value = close == null ? true : close;
|
||||||
|
|
||||||
watch(() => isShow, (newVal) => {
|
watch(() => isShow, (newVal) => {
|
||||||
|
|
@ -45,9 +45,7 @@ const closeBtn = () => {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content" >
|
<div class="content" >
|
||||||
<el-scrollbar style="height:100%;margin-top: 0">
|
|
||||||
<slot></slot>
|
<slot></slot>
|
||||||
</el-scrollbar>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="footer" v-if="_showFooter">
|
<div class="footer" v-if="_showFooter">
|
||||||
<slot name="footer"></slot>
|
<slot name="footer"></slot>
|
||||||
|
|
|
||||||
|
|
@ -1,346 +1,355 @@
|
||||||
<template>
|
<template>
|
||||||
<Mask :is-show="isShow" :height="900" @close="exit" title="新增" :show-footer="true">
|
<Mask :is-show="isShow" :height="900" @close="exit" title="新增" :show-footer="true">
|
||||||
<div class="header">
|
<template #default>
|
||||||
<el-button type="primary" style="margin-top: 10px" round class="btn" @click="openCreateSearch" v-if="_type!=0"
|
<el-scrollbar>
|
||||||
plain>
|
<div class="header">
|
||||||
一键建档
|
<el-button type="primary" style="margin-top: 10px" round class="btn" @click="openCreateSearch" v-if="_type!=0"
|
||||||
</el-button>
|
plain>
|
||||||
</div>
|
一键建档
|
||||||
<div class="common-layout">
|
</el-button>
|
||||||
<el-container>
|
</div>
|
||||||
<el-aside width="800px">
|
<div class="common-layout">
|
||||||
<div class="body">
|
<el-container>
|
||||||
<el-form ref="formRef"
|
<el-aside width="800px">
|
||||||
:model="edit_data"
|
<div class="body">
|
||||||
:rules="rules" style="width: 100%">
|
<el-form ref="formRef"
|
||||||
<el-descriptions title="基础" border direction="vertical">
|
:model="edit_data"
|
||||||
<el-descriptions-item label="名称">
|
:rules="rules" style="width: 100%">
|
||||||
<el-form-item label="" prop="name" class="form-item">
|
<el-descriptions title="基础" border direction="vertical">
|
||||||
<el-input v-model="edit_data.name"/>
|
<el-descriptions-item label="名称">
|
||||||
</el-form-item>
|
<el-form-item label="" prop="name" class="form-item">
|
||||||
</el-descriptions-item>
|
<el-input v-model="edit_data.name"/>
|
||||||
<el-descriptions-item label="类型" style="display: flex">
|
</el-form-item>
|
||||||
<el-form-item label="" prop="cateId" class="form-item">
|
</el-descriptions-item>
|
||||||
<el-select v-model="edit_data.cateId" placeholder="请选择" style="width: 70%">
|
<el-descriptions-item label="类型" style="display: flex">
|
||||||
<el-option
|
<el-form-item label="" prop="cateId" class="form-item">
|
||||||
v-for="item in cate_list"
|
<el-select v-model="edit_data.cateId" placeholder="请选择" style="width: 70%">
|
||||||
:key="item.id"
|
<el-option
|
||||||
:label="item.name"
|
v-for="item in cate_list"
|
||||||
:value="item.id">
|
:key="item.id"
|
||||||
</el-option>
|
:label="item.name"
|
||||||
</el-select>
|
:value="item.id">
|
||||||
<el-button @click="showCateEdit(true)">
|
</el-option>
|
||||||
<el-icon>
|
</el-select>
|
||||||
<Setting/>
|
<el-button @click="showCateEdit(true)">
|
||||||
</el-icon>
|
<el-icon>
|
||||||
</el-button>
|
<Setting/>
|
||||||
</el-form-item>
|
</el-icon>
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="进口|国产" v-if="_type==1306">
|
<el-descriptions-item label="进口|国产" v-if="_type==1306">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="edit_data.extra.maintainCate"
|
v-model="edit_data.extra.maintainCate"
|
||||||
placeholder="进口|国产"
|
placeholder="进口|国产"
|
||||||
clearable
|
clearable
|
||||||
style="width: 240px"
|
style="width: 240px"
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item in imported"
|
|
||||||
:key="item.label"
|
|
||||||
:label="item.label"
|
|
||||||
:value="item.label"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="批准文号" v-if="_type==1301">
|
|
||||||
<el-form-item lable="" prop="approvalCode" class="form-item">
|
|
||||||
<el-input v-model="edit_data.approvalCode" class="input">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-descriptions-item>
|
|
||||||
|
|
||||||
<el-descriptions-item label="进价参考">
|
|
||||||
<el-form-item label="" prop="purchaseUnitPrice" class="form-item">
|
|
||||||
<el-input v-model.number="edit_data.purchaseUnitPrice">
|
|
||||||
<template #append>元</template>
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-descriptions-item>
|
|
||||||
|
|
||||||
<el-descriptions-item label="生产企业" v-if="_type!=1302">
|
|
||||||
<el-form-item label="" prop="producer" class="form-item">
|
|
||||||
<el-input v-model="edit_data.producer"/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-descriptions-item>
|
|
||||||
|
|
||||||
|
|
||||||
<el-descriptions-item label="注册证名称" v-if="_type==1306">
|
|
||||||
<el-form-item>
|
|
||||||
<el-input v-model="edit_data.extra.registrationCertificateName" class="input">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-descriptions-item>
|
|
||||||
|
|
||||||
<el-descriptions-item label="条形码">
|
|
||||||
<el-form-item>
|
|
||||||
<el-input v-model="edit_data.barcode"/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="规格" v-if="_type==1302||_type==1306||_type==0">
|
|
||||||
<el-form-item>
|
|
||||||
<el-input v-model="edit_data.medicineDosageNum" class="input">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="最小制剂数量|单位" v-if="_type==1301">
|
|
||||||
<el-form-item>
|
|
||||||
<div class="unit-item">
|
|
||||||
<el-input ref="medicineDosageRef" v-model="edit_data.medicineDosageNum" class="input"
|
|
||||||
style="width: 200px;">
|
|
||||||
</el-input>
|
|
||||||
<el-popover
|
|
||||||
placement="bottom"
|
|
||||||
title="Title"
|
|
||||||
:width="200"
|
|
||||||
trigger="click"
|
|
||||||
>
|
>
|
||||||
<template #reference>
|
<el-option
|
||||||
<div class="unit">{{ edit_data.medicineDosageUnit }}</div>
|
v-for="item in imported"
|
||||||
</template>
|
:key="item.label"
|
||||||
<UnitSelector :units="dosageUnitList" v-model="edit_data.medicineDosageUnit"></UnitSelector>
|
:label="item.label"
|
||||||
</el-popover>
|
:value="item.label"
|
||||||
</div>
|
/>
|
||||||
</el-form-item>
|
</el-select>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="最小包装数量|单位">
|
<el-descriptions-item label="批准文号" v-if="_type==1301">
|
||||||
<el-form-item>
|
<el-form-item lable="" prop="approvalCode" class="form-item">
|
||||||
<div class="unit-item">
|
<el-input v-model="edit_data.approvalCode" class="input">
|
||||||
<el-input ref="minPackagingRef" v-model="edit_data.minPackagingNumber" type="number" class="input"
|
</el-input>
|
||||||
style="width: 200px;">
|
</el-form-item>
|
||||||
</el-input>
|
</el-descriptions-item>
|
||||||
<el-popover
|
|
||||||
placement="bottom"
|
<el-descriptions-item label="进价参考">
|
||||||
title="Title"
|
<el-form-item label="" prop="purchaseUnitPrice" class="form-item">
|
||||||
:width="200"
|
<el-input v-model.number="edit_data.purchaseUnitPrice">
|
||||||
trigger="click"
|
<template #append>元</template>
|
||||||
>
|
</el-input>
|
||||||
<template #reference>
|
</el-form-item>
|
||||||
<div class="unit">{{ edit_data.minPackagingUnit }}</div>
|
</el-descriptions-item>
|
||||||
</template>
|
|
||||||
<UnitSelector :units="packagingUnit" v-model="edit_data.minPackagingUnit"></UnitSelector>
|
<el-descriptions-item label="生产企业" v-if="_type!=1302">
|
||||||
</el-popover>
|
<el-form-item label="" prop="producer" class="form-item">
|
||||||
</div>
|
<el-input v-model="edit_data.producer"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
|
||||||
</el-descriptions-item>
|
<el-descriptions-item label="注册证名称" v-if="_type==1306">
|
||||||
<el-descriptions-item label="包装单位">
|
<el-form-item>
|
||||||
<el-form-item>
|
<el-input v-model="edit_data.extra.registrationCertificateName" class="input">
|
||||||
<div class="unit-item">
|
</el-input>
|
||||||
<el-popover
|
</el-form-item>
|
||||||
placement="bottom"
|
</el-descriptions-item>
|
||||||
title="Title"
|
|
||||||
:width="200"
|
|
||||||
trigger="click"
|
|
||||||
>
|
|
||||||
<template #reference>
|
|
||||||
<div class="unit" style="width: 232px">{{ edit_data.packagingUnit }}</div>
|
|
||||||
</template>
|
|
||||||
<UnitSelector :units="packagingUnit" v-model="edit_data.packagingUnit"></UnitSelector>
|
|
||||||
</el-popover>
|
|
||||||
</div>
|
|
||||||
</el-form-item>
|
|
||||||
|
|
||||||
</el-descriptions-item>
|
|
||||||
<!-- <el-descriptions-item :label="_type==1301?'国药准字':'国械注准'" v-if="_type==1301 || _type==1306">-->
|
|
||||||
<!-- <el-input v-model="edit_data.approvalCode"/>-->
|
|
||||||
<!-- </el-descriptions-item>-->
|
|
||||||
<el-descriptions-item label="注册剂型" v-if="_type==1301">
|
|
||||||
<el-form-item>
|
|
||||||
<el-input v-model="edit_data.extra.regType" class="input">
|
|
||||||
</el-input>
|
|
||||||
</el-form-item>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="药品标识码">
|
|
||||||
<el-form-item>
|
|
||||||
<el-popover
|
|
||||||
:visible="showPopover"
|
|
||||||
placement="bottom"
|
|
||||||
:width="200"
|
|
||||||
id="code-pop"
|
|
||||||
class="code-popo"
|
|
||||||
>
|
|
||||||
<div style="color: #6c6b6b;font-size: 12px">已关联({{ idCodeList ? idCodeList.length : 0 }})</div>
|
|
||||||
<Divider/>
|
|
||||||
<div class="item">
|
|
||||||
<div v-for="(item,index) in idCodeList" :key="index">
|
|
||||||
<div class="remove">
|
|
||||||
<el-icon @click="removeIdCode(item)" id="code-remove">
|
|
||||||
<Close/>
|
|
||||||
</el-icon>
|
|
||||||
</div>
|
|
||||||
<div style="width: 70%" class="text">
|
|
||||||
{{ item }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
<el-descriptions-item label="条形码">
|
||||||
|
<el-form-item>
|
||||||
|
<el-input v-model="edit_data.barcode"/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="规格" v-if="_type==1302||_type==1306||_type==0">
|
||||||
|
<el-form-item>
|
||||||
|
<el-input v-model="edit_data.medicineDosageNum" class="input">
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="最小制剂数量|单位" v-if="_type==1301">
|
||||||
|
<el-form-item>
|
||||||
|
<div class="unit-item">
|
||||||
|
<el-input ref="medicineDosageRef" v-model="edit_data.medicineDosageNum" class="input"
|
||||||
|
style="width: 200px;">
|
||||||
|
</el-input>
|
||||||
|
<el-popover
|
||||||
|
placement="bottom"
|
||||||
|
title="Title"
|
||||||
|
:width="200"
|
||||||
|
trigger="click"
|
||||||
|
>
|
||||||
|
<template #reference>
|
||||||
|
<div class="unit">{{ edit_data.medicineDosageUnit }}</div>
|
||||||
|
</template>
|
||||||
|
<UnitSelector :units="dosageUnitList" v-model="edit_data.medicineDosageUnit"></UnitSelector>
|
||||||
|
</el-popover>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="最小包装数量|单位">
|
||||||
|
<el-form-item>
|
||||||
|
<div class="unit-item">
|
||||||
|
<el-input ref="minPackagingRef" v-model="edit_data.minPackagingNumber" type="number"
|
||||||
|
class="input"
|
||||||
|
style="width: 200px;">
|
||||||
|
</el-input>
|
||||||
|
<el-popover
|
||||||
|
placement="bottom"
|
||||||
|
title="Title"
|
||||||
|
:width="200"
|
||||||
|
trigger="click"
|
||||||
|
>
|
||||||
|
<template #reference>
|
||||||
|
<div class="unit">{{ edit_data.minPackagingUnit }}</div>
|
||||||
|
</template>
|
||||||
|
<UnitSelector :units="packagingUnit" v-model="edit_data.minPackagingUnit"></UnitSelector>
|
||||||
|
</el-popover>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
<template #reference>
|
|
||||||
<el-input v-model="idCode" id="code-input" @keydown.enter="addIdCode"
|
</el-descriptions-item>
|
||||||
@click="clickIdCodeInput"></el-input>
|
<el-descriptions-item label="包装单位">
|
||||||
</template>
|
<el-form-item>
|
||||||
</el-popover>
|
<div class="unit-item">
|
||||||
</el-form-item>
|
<el-popover
|
||||||
</el-descriptions-item>
|
placement="bottom"
|
||||||
<el-descriptions-item label="标签">
|
title="Title"
|
||||||
<el-form-item>
|
:width="200"
|
||||||
<el-input-tag
|
trigger="click"
|
||||||
draggable
|
>
|
||||||
v-model="edit_data.tags"
|
<template #reference>
|
||||||
class="input"
|
<div class="unit" style="width: 232px">{{ edit_data.packagingUnit }}</div>
|
||||||
|
</template>
|
||||||
|
<UnitSelector :units="packagingUnit" v-model="edit_data.packagingUnit"></UnitSelector>
|
||||||
|
</el-popover>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
</el-descriptions-item>
|
||||||
|
<!-- <el-descriptions-item :label="_type==1301?'国药准字':'国械注准'" v-if="_type==1301 || _type==1306">-->
|
||||||
|
<!-- <el-input v-model="edit_data.approvalCode"/>-->
|
||||||
|
<!-- </el-descriptions-item>-->
|
||||||
|
<el-descriptions-item label="注册剂型" v-if="_type==1301">
|
||||||
|
<el-form-item>
|
||||||
|
<el-input v-model="edit_data.extra.regType" class="input">
|
||||||
|
</el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="药品标识码">
|
||||||
|
<el-form-item>
|
||||||
|
<el-popover
|
||||||
|
:visible="showPopover"
|
||||||
|
placement="bottom"
|
||||||
|
:width="200"
|
||||||
|
id="code-pop"
|
||||||
|
class="code-popo"
|
||||||
|
>
|
||||||
|
<div style="color: #6c6b6b;font-size: 12px">已关联({{
|
||||||
|
idCodeList ? idCodeList.length : 0
|
||||||
|
}})
|
||||||
|
</div>
|
||||||
|
<Divider/>
|
||||||
|
<div class="item">
|
||||||
|
<div v-for="(item,index) in idCodeList" :key="index">
|
||||||
|
<div class="remove">
|
||||||
|
<el-icon @click="removeIdCode(item)" id="code-remove">
|
||||||
|
<Close/>
|
||||||
|
</el-icon>
|
||||||
|
</div>
|
||||||
|
<div style="width: 70%" class="text">
|
||||||
|
{{ item }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<template #reference>
|
||||||
|
<el-input v-model="idCode" id="code-input" @keydown.enter="addIdCode"
|
||||||
|
@click="clickIdCodeInput"></el-input>
|
||||||
|
</template>
|
||||||
|
</el-popover>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="标签">
|
||||||
|
<el-form-item>
|
||||||
|
<el-input-tag
|
||||||
|
draggable
|
||||||
|
v-model="edit_data.tags"
|
||||||
|
class="input"
|
||||||
|
>
|
||||||
|
</el-input-tag>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="备注">
|
||||||
|
<el-form-item>
|
||||||
|
<el-input v-model="edit_data.remark" class="input"/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
<el-descriptions title="扩展" border style="margin-top: 20px" direction="vertical">
|
||||||
|
<el-descriptions-item label="养护分类">
|
||||||
|
<el-select
|
||||||
|
v-model="edit_data.extra.maintainCate"
|
||||||
|
placeholder="选择养护分类"
|
||||||
|
clearable
|
||||||
|
style="width: 240px"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in maintainOptions"
|
||||||
|
:key="item.label"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.label"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="储存条件">
|
||||||
|
<el-select
|
||||||
|
v-model="edit_data.extra.storageConditions"
|
||||||
|
placeholder="选择养护分类"
|
||||||
|
clearable
|
||||||
|
style="width: 240px;"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in storageConditionsOptions"
|
||||||
|
:key="item.label"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.label"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="保质期">
|
||||||
|
<el-input v-model="edit_data.expiryTime" type="number">
|
||||||
|
<template #append>月</template>
|
||||||
|
</el-input>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="柜号">
|
||||||
|
<el-input v-model="edit_data.extra.cabinetNumber">
|
||||||
|
</el-input>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="用法用量" v-if="_type==1301">
|
||||||
|
<el-input v-model="edit_data.extra.usage">
|
||||||
|
</el-input>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="处方药/OTC" v-if="_type==1301">
|
||||||
|
<el-select
|
||||||
|
v-model="edit_data.extra.drugCategory"
|
||||||
|
placeholder="选择药品分类"
|
||||||
|
clearable
|
||||||
|
style="width: 240px"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in drugCategoryOptions"
|
||||||
|
:key="item.label"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.label"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="精麻毒放" v-if="_type==1301">
|
||||||
|
<el-input v-model="edit_data.extra.JMDF"></el-input>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="抗菌药物" v-if="_type==1301">
|
||||||
|
<el-input v-model="edit_data.extra.isAntibacterialAgents"></el-input>
|
||||||
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item label="基药" v-if="_type==1301">
|
||||||
|
<el-input v-model="edit_data.extra.baseMedicine"></el-input>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="医疗器械分类" v-if="_type==1306">
|
||||||
|
<el-input v-model="edit_data.extra.instrumentCategroy"></el-input>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="上市许可持有人">
|
||||||
|
<el-input v-model="edit_data.extra.authorizationMaster"></el-input>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="批准文号有效期" v-if="_type==1306">
|
||||||
|
<el-input v-model="edit_data.extra.approvalNumberExpirDate"></el-input>
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</el-aside>
|
||||||
|
<el-aside width="350px" style="border-left: 1px #ddd solid">
|
||||||
|
<el-form style="width: 100%;" label-width="100px">
|
||||||
|
<el-descriptions title="定价" border direction="vertical" :column="2" style="margin-left: 5px">
|
||||||
|
<el-descriptions-item label="定价模式" width="180">
|
||||||
|
<el-select v-model="edit_data.pricingModel" placeholder="请选择">
|
||||||
|
<el-option
|
||||||
|
v-for="item in pricingModelOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value">
|
||||||
|
</el-option>
|
||||||
|
|
||||||
|
</el-select>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="加成率" v-if="edit_data.pricingModel==1">
|
||||||
|
<el-input v-model="edit_data.makeUp" type="number">
|
||||||
|
<template #append>%</template>
|
||||||
|
</el-input>
|
||||||
|
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="零售价格" v-if="edit_data.pricingModel==2">
|
||||||
|
<el-input v-model="edit_data.unitPrice" type="number"
|
||||||
>
|
>
|
||||||
</el-input-tag>
|
<template #prefix>¥</template>
|
||||||
</el-form-item>
|
<template #append>/{{ edit_data.packagingUnit }}</template>
|
||||||
</el-descriptions-item>
|
</el-input>
|
||||||
<el-descriptions-item label="备注">
|
</el-descriptions-item>
|
||||||
<el-form-item>
|
|
||||||
<el-input v-model="edit_data.remark" class="input"/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-descriptions-item>
|
|
||||||
</el-descriptions>
|
|
||||||
<el-descriptions title="扩展" border style="margin-top: 20px" direction="vertical">
|
|
||||||
<el-descriptions-item label="养护分类">
|
|
||||||
<el-select
|
|
||||||
v-model="edit_data.extra.maintainCate"
|
|
||||||
placeholder="选择养护分类"
|
|
||||||
clearable
|
|
||||||
style="width: 240px"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item in maintainOptions"
|
|
||||||
:key="item.label"
|
|
||||||
:label="item.label"
|
|
||||||
:value="item.label"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="储存条件">
|
|
||||||
<el-select
|
|
||||||
v-model="edit_data.extra.storageConditions"
|
|
||||||
placeholder="选择养护分类"
|
|
||||||
clearable
|
|
||||||
style="width: 240px;"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item in storageConditionsOptions"
|
|
||||||
:key="item.label"
|
|
||||||
:label="item.label"
|
|
||||||
:value="item.label"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="保质期">
|
|
||||||
<el-input v-model="edit_data.expiryTime" type="number">
|
|
||||||
<template #append>月</template>
|
|
||||||
</el-input>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="柜号">
|
|
||||||
<el-input v-model="edit_data.extra.cabinetNumber">
|
|
||||||
</el-input>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="用法用量" v-if="_type==1301">
|
|
||||||
<el-input v-model="edit_data.extra.usage">
|
|
||||||
</el-input>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="处方药/OTC" v-if="_type==1301">
|
|
||||||
<el-select
|
|
||||||
v-model="edit_data.extra.drugCategory"
|
|
||||||
placeholder="选择药品分类"
|
|
||||||
clearable
|
|
||||||
style="width: 240px"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item in drugCategoryOptions"
|
|
||||||
:key="item.label"
|
|
||||||
:label="item.label"
|
|
||||||
:value="item.label"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="精麻毒放" v-if="_type==1301">
|
|
||||||
<el-input v-model="edit_data.extra.JMDF"></el-input>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="抗菌药物" v-if="_type==1301">
|
|
||||||
<el-input v-model="edit_data.extra.isAntibacterialAgents"></el-input>
|
|
||||||
</el-descriptions-item>
|
|
||||||
|
|
||||||
<el-descriptions-item label="基药" v-if="_type==1301">
|
<el-descriptions-item>
|
||||||
<el-input v-model="edit_data.extra.baseMedicine"></el-input>
|
<template #label>
|
||||||
</el-descriptions-item>
|
<el-checkbox v-model="edit_data.trdnFlag" label="是否允许拆零" size="large"/>
|
||||||
<el-descriptions-item label="医疗器械分类" v-if="_type==1306">
|
</template>
|
||||||
<el-input v-model="edit_data.extra.instrumentCategroy"></el-input>
|
<el-input v-model="edit_data.disassemblyPrice" type="number" :disabled="!edit_data.trdnFlag">
|
||||||
</el-descriptions-item>
|
<template #prefix>¥</template>
|
||||||
<el-descriptions-item label="上市许可持有人">
|
<template #append>/{{ edit_data.minPackagingUnit }}</template>
|
||||||
<el-input v-model="edit_data.extra.authorizationMaster"></el-input>
|
</el-input>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="批准文号有效期" v-if="_type==1306">
|
</el-descriptions>
|
||||||
<el-input v-model="edit_data.extra.approvalNumberExpirDate"></el-input>
|
<el-descriptions title="医保" border direction="vertical" :column="1" style="margin-left: 5px">
|
||||||
</el-descriptions-item>
|
<el-descriptions-item label="医保对码">
|
||||||
</el-descriptions>
|
<SocialInfo v-model="edit_data.hilistCode" v-if="edit_data.hilistCode"
|
||||||
|
@openSearch="openContrastCodeSearch"></SocialInfo>
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
</el-form>
|
||||||
|
</el-aside>
|
||||||
|
</el-container>
|
||||||
|
</div>
|
||||||
|
</el-scrollbar>
|
||||||
|
</template>
|
||||||
|
|
||||||
</el-form>
|
|
||||||
</div>
|
|
||||||
</el-aside>
|
|
||||||
<el-aside width="350px" style="border-left: 1px #ddd solid">
|
|
||||||
<el-form style="width: 100%;" label-width="100px">
|
|
||||||
<el-descriptions title="定价" border direction="vertical" :column="2" style="margin-left: 5px">
|
|
||||||
<el-descriptions-item label="定价模式" width="180">
|
|
||||||
<el-select v-model="edit_data.pricingModel" placeholder="请选择">
|
|
||||||
<el-option
|
|
||||||
v-for="item in pricingModelOptions"
|
|
||||||
:key="item.value"
|
|
||||||
:label="item.label"
|
|
||||||
:value="item.value">
|
|
||||||
</el-option>
|
|
||||||
|
|
||||||
</el-select>
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="加成率" v-if="edit_data.pricingModel==1">
|
|
||||||
<el-input v-model="edit_data.makeUp" type="number">
|
|
||||||
<template #append>%</template>
|
|
||||||
</el-input>
|
|
||||||
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item label="零售价格" v-if="edit_data.pricingModel==2">
|
|
||||||
<el-input v-model="edit_data.unitPrice" type="number"
|
|
||||||
>
|
|
||||||
<template #prefix>¥</template>
|
|
||||||
<template #append>/{{ edit_data.packagingUnit }}</template>
|
|
||||||
</el-input>
|
|
||||||
</el-descriptions-item>
|
|
||||||
|
|
||||||
<el-descriptions-item>
|
|
||||||
<template #label>
|
|
||||||
<el-checkbox v-model="edit_data.trdnFlag" label="是否允许拆零" size="large"/>
|
|
||||||
</template>
|
|
||||||
<el-input v-model="edit_data.disassemblyPrice" type="number" :disabled="!edit_data.trdnFlag">
|
|
||||||
<template #prefix>¥</template>
|
|
||||||
<template #append>/{{ edit_data.minPackagingUnit }}</template>
|
|
||||||
</el-input>
|
|
||||||
</el-descriptions-item>
|
|
||||||
</el-descriptions>
|
|
||||||
<el-descriptions title="医保" border direction="vertical" :column="1" style="margin-left: 5px">
|
|
||||||
<el-descriptions-item label="医保对码">
|
|
||||||
<SocialInfo v-model="edit_data.hilistCode" v-if="edit_data.hilistCode"
|
|
||||||
@openSearch="openContrastCodeSearch"></SocialInfo>
|
|
||||||
</el-descriptions-item>
|
|
||||||
</el-descriptions>
|
|
||||||
</el-form>
|
|
||||||
</el-aside>
|
|
||||||
</el-container>
|
|
||||||
</div>
|
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<el-button @click="returnInit" type="primary" v-if="edit_data.id != null">医保库存重新初始化</el-button>
|
<el-button @click="returnInit" type="primary" v-if="edit_data.id != null">医保库存重新初始化</el-button>
|
||||||
|
|
|
||||||
|
|
@ -15,10 +15,11 @@
|
||||||
<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-form-item label="主诉">
|
<el-form-item label="主诉">
|
||||||
<PopoverInput v-model="formDate.mainAppeal" :list="mainAppealList"/>
|
<PopoverInput :disabled="disabled" v-model="formDate.mainAppeal" :list="mainAppealList"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="诊断">
|
<el-form-item label="诊断">
|
||||||
<DiagnosisSearchInput
|
<DiagnosisSearchInput
|
||||||
|
:disabled="disabled"
|
||||||
:request-api="diagnosisSearchApi"
|
:request-api="diagnosisSearchApi"
|
||||||
:show-config="diagnosisShowConfig"
|
:show-config="diagnosisShowConfig"
|
||||||
@selectedCallBack="diagnosisSelect"
|
@selectedCallBack="diagnosisSelect"
|
||||||
|
|
@ -26,31 +27,31 @@
|
||||||
</DiagnosisSearchInput>
|
</DiagnosisSearchInput>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="现病史">
|
<el-form-item label="现病史">
|
||||||
<PopoverInput v-model="formDate.nowMedicalHistory" :list="nowMedicalHistoryList"/>
|
<PopoverInput :disabled="disabled" v-model="formDate.nowMedicalHistory" :list="nowMedicalHistoryList"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="既往史">
|
<el-form-item label="既往史">
|
||||||
<PopoverInput v-model="formDate.beforeMedicalHistory" :list="beforeMedicalHistoryList"/>
|
<PopoverInput :disabled="disabled" v-model="formDate.beforeMedicalHistory" :list="beforeMedicalHistoryList"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="过敏史">
|
<el-form-item label="过敏史">
|
||||||
<PopoverInput v-model="formDate.allergyHistory" :list="allergyHistoryList"/>
|
<PopoverInput :disabled="disabled" v-model="formDate.allergyHistory" :list="allergyHistoryList"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="体格检查">
|
<el-form-item label="体格检查">
|
||||||
<PhysiqueExamInuput v-model="formDate.exam" :list="physiqueExamList"/>
|
<PhysiqueExamInuput :disabled="disabled" v-model="formDate.exam" :list="physiqueExamList"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="望闻问切" v-if="modelType==1">
|
<el-form-item label="望闻问切" v-if="modelType==1">
|
||||||
<PopoverInput v-model="formDate.chinaAdjunctCheck" :list="chinaAdjunctCheckList"/>
|
<PopoverInput :disabled="disabled" v-model="formDate.chinaAdjunctCheck" :list="chinaAdjunctCheckList"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="治法" v-if="modelType==1">
|
<el-form-item label="治法" v-if="modelType==1">
|
||||||
<el-input v-model="formDate.chinaDeal"></el-input>
|
<el-input v-model="formDate.chinaDeal" :disabled="disabled"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="口腔检查" v-if="modelType==2">
|
<el-form-item label="口腔检查" v-if="modelType==2">
|
||||||
<el-input v-model="formDate.mouthCheck"></el-input>
|
<el-input :disabled="disabled" v-model="formDate.mouthCheck"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="辅助检查" v-if="modelType==2 || modelType ==0">
|
<el-form-item label="辅助检查" v-if="modelType==2 || modelType ==0">
|
||||||
<el-input v-model="formDate.adjunctCheck"></el-input>
|
<el-input :disabled="disabled" v-model="formDate.adjunctCheck"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="处置" v-if="modelType==0 || modelType ==2">
|
<el-form-item label="处置" v-if="modelType==0 || modelType ==2">
|
||||||
<el-input v-model="formDate.deal"></el-input>
|
<el-input :disabled="disabled" v-model="formDate.deal"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -58,7 +59,7 @@
|
||||||
</Panel>
|
</Panel>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import {ref} from "vue";
|
import {computed, ref} from "vue";
|
||||||
import {
|
import {
|
||||||
mainAppealList,
|
mainAppealList,
|
||||||
nowMedicalHistoryList,
|
nowMedicalHistoryList,
|
||||||
|
|
@ -71,6 +72,17 @@ import PopoverInput from "@/components/PopoverInput.vue";
|
||||||
import DiagnosisSearchInput from "@/components/outpatient/DiagnosisSearchInput.vue";
|
import DiagnosisSearchInput from "@/components/outpatient/DiagnosisSearchInput.vue";
|
||||||
import PhysiqueExamInuput from "@/components/outpatient/PhysiqueExamInuput.vue";
|
import PhysiqueExamInuput from "@/components/outpatient/PhysiqueExamInuput.vue";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
status: {
|
||||||
|
type: Number,
|
||||||
|
default: 0
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const disabled = computed(() => {
|
||||||
|
if(props.status === 1){
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
})
|
||||||
const formDate = defineModel<any>();
|
const formDate = defineModel<any>();
|
||||||
const modelType = ref(0)
|
const modelType = ref(0)
|
||||||
|
|
||||||
|
|
@ -95,6 +107,7 @@ const diagnosisSelect = (list: any) => {
|
||||||
formDate.value.diagnosisDetail = JSON.stringify(list)
|
formDate.value.diagnosisDetail = JSON.stringify(list)
|
||||||
formDate.value.diagnosisSummary = diagnosisNames
|
formDate.value.diagnosisSummary = diagnosisNames
|
||||||
}
|
}
|
||||||
|
defineExpose({diagnosisSelect})
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.content {
|
.content {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
<template>
|
<template>
|
||||||
<el-popover placement="bottom-start" trigger="click" :width="props.width" ref="popoverRef" @before-enter="beforeShow">
|
<el-popover placement="bottom-start" trigger="click" :width="props.width" ref="popoverRef" @before-enter="beforeShow">
|
||||||
<template #reference>
|
<template #reference>
|
||||||
<el-input v-model="keyword" :style="{'width': props.width+'px'}" @input="changeInput" placeholder="诊断选择"></el-input>
|
<el-input v-model="keyword" :style="{'width': props.width+'px'}" @input="changeInput" :disabled="disabled"
|
||||||
|
placeholder="诊断选择"></el-input>
|
||||||
</template>
|
</template>
|
||||||
<div class="container" v-if="searchList.length > 0">
|
<div class="container" v-if="searchList.length > 0">
|
||||||
<el-table :data="searchList" style="width: 100%" @row-click="clickRow" :show-header="props.showHeader"
|
<el-table :data="searchList" style="width: 100%" @row-click="clickRow" :show-header="props.showHeader"
|
||||||
|
|
@ -16,7 +17,7 @@
|
||||||
import {ref, watch} from "vue";
|
import {ref, watch} from "vue";
|
||||||
import {post} from "@/utils/request.ts";
|
import {post} from "@/utils/request.ts";
|
||||||
|
|
||||||
const keyword =ref("");
|
const keyword = ref("");
|
||||||
const popoverRef = ref();
|
const popoverRef = ref();
|
||||||
|
|
||||||
interface showConfig {
|
interface showConfig {
|
||||||
|
|
@ -40,6 +41,10 @@ const props = defineProps({
|
||||||
showHeader: {
|
showHeader: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: true
|
default: true
|
||||||
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
@ -84,14 +89,13 @@ const beforeShow = () => {
|
||||||
}
|
}
|
||||||
const selectList = ref<any>()
|
const selectList = ref<any>()
|
||||||
const nameList = ref<any>([]);
|
const nameList = ref<any>([]);
|
||||||
watch(selectList, (newVal,oldVal ) => {
|
watch(selectList, (newVal, oldVal) => {
|
||||||
emit('selectedCallBack',newVal)
|
emit('selectedCallBack', newVal)
|
||||||
},{deep:true});
|
}, {deep: true});
|
||||||
const init = (list:any,nList:any) => {
|
const init = (list: any, nList: any) => {
|
||||||
selectList.value = list;
|
selectList.value = list;
|
||||||
nameList.value = nList;
|
nameList.value = nList;
|
||||||
keyword.value = nameList.value.join(",") + ","
|
keyword.value = nameList.value.join(",") + ","
|
||||||
|
|
||||||
}
|
}
|
||||||
defineExpose({init})
|
defineExpose({init})
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,9 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="disease-detail">
|
<div class="disease-detail">
|
||||||
<div class="top">
|
|
||||||
<span>复制全部医嘱</span>
|
|
||||||
<span>复制病例</span>
|
|
||||||
</div>
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="content-title">
|
<div class="content-title">
|
||||||
<div class="name">病例</div>
|
<div class="name">病例</div>
|
||||||
<button class="btn">复制</button>
|
<button class="btn" @click="copy">复制</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="content-middle">
|
<div class="content-middle">
|
||||||
<p>主诉:{{ detailObj.diagnosisMedicalRecord.mainAppeal }}</p>
|
<p>主诉:{{ detailObj.diagnosisMedicalRecord.mainAppeal }}</p>
|
||||||
|
|
@ -16,21 +12,28 @@
|
||||||
<p>体查:{{ detailObj.diagnosisMedicalRecord.exam }}</p>
|
<p>体查:{{ detailObj.diagnosisMedicalRecord.exam }}</p>
|
||||||
<p>复查:{{ detailObj.diagnosisMedicalRecord.allergy }}</p>
|
<p>复查:{{ detailObj.diagnosisMedicalRecord.allergy }}</p>
|
||||||
<p>过敏:{{ detailObj.diagnosisMedicalRecord.allergyHistory }}</p>
|
<p>过敏:{{ detailObj.diagnosisMedicalRecord.allergyHistory }}</p>
|
||||||
<p>诊断:{{ detailObj.diagnosisMedicalRecord.pastMedicalHistory }}</p>
|
<p>诊断:{{ detailObj.diagnosisMedicalRecord.diagnosisSummary}}</p>
|
||||||
<p>处置:{{ detailObj.diagnosisMedicalRecord.treatment }}</p>
|
<p>处置:{{ detailObj.diagnosisMedicalRecord.treatment }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="content-title">
|
<div class="content-title">
|
||||||
<div class="name">服务项目</div>
|
<div class="name">服务项目</div>
|
||||||
<button class="btn">复制</button>
|
<button class="btn" @click="copyItem">复制</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="content-middle">
|
<div class="content-middle">
|
||||||
<div class="item" v-for="item in detailObj.itemDetail">
|
<div class="item" v-for="item in detailObj.itemDetail">
|
||||||
<div class="name">{{item.name}}</div>
|
<el-tooltip
|
||||||
|
class="box-item"
|
||||||
|
effect="dark"
|
||||||
|
:content="item.itemName"
|
||||||
|
placement="bottom-start"
|
||||||
|
>
|
||||||
|
<div class="name">{{ item.itemName }}</div>
|
||||||
|
</el-tooltip>
|
||||||
<div class="price">
|
<div class="price">
|
||||||
<div class="price-left">{{item.unit}}</div>
|
<div class="price-left">{{ item.selectedNum || 0 }}{{ item.selectedUnit }}</div>
|
||||||
<div class="price-right">¥{{item.unitPrice}}</div>
|
<div class="price-right">¥{{ item.unitPrice }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -38,14 +41,21 @@
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="content-title">
|
<div class="content-title">
|
||||||
<div class="name">药品耗材</div>
|
<div class="name">药品耗材</div>
|
||||||
<button class="btn">复制</button>
|
<button class="btn" @click="copyGoods">复制</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="content-middle">
|
<div class="content-middle">
|
||||||
<div class="item" v-for="item in detailObj.goodsDetail">
|
<div class="item" v-for="item in detailObj.goodsDetail">
|
||||||
<div class="name">{{item.name}}</div>
|
<el-tooltip
|
||||||
|
class="box-item"
|
||||||
|
effect="dark"
|
||||||
|
:content="item.name"
|
||||||
|
placement="bottom-start"
|
||||||
|
>
|
||||||
|
<div class="name">{{ item.name }}</div>
|
||||||
|
</el-tooltip>
|
||||||
<div class="price">
|
<div class="price">
|
||||||
<div class="price-left">{{ item.selectedNum || 0 }}{{ item.selectedUnit }}</div>
|
<div class="price-left">{{ item.selectedNum || 0 }}{{ item.selectedUnit }}</div>
|
||||||
<div class="price-right">¥{{item.selectedPrice}}</div>
|
<div class="price-right">¥{{ item.selectedPrice }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -55,7 +65,7 @@
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="name">合计</div>
|
<div class="name">合计</div>
|
||||||
<div class="price">
|
<div class="price">
|
||||||
<div class="price-right">¥{{sumPrice}}</div>
|
<div class="price-right">¥{{ sumPrice }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -68,12 +78,22 @@ import {ref, defineProps, onMounted} from 'vue'
|
||||||
const {detail} = defineProps(['detail']);
|
const {detail} = defineProps(['detail']);
|
||||||
const detailObj = ref<any>(detail)
|
const detailObj = ref<any>(detail)
|
||||||
const sumPrice = ref(0)
|
const sumPrice = ref(0)
|
||||||
onMounted(()=>{
|
const emit = defineEmits(['copy', 'copyItem', 'copyGoods'])
|
||||||
|
const copy = () => {
|
||||||
|
emit('copy', detailObj.value)
|
||||||
|
}
|
||||||
|
const copyItem = () => {
|
||||||
|
emit('copyItem', detailObj.value)
|
||||||
|
}
|
||||||
|
const copyGoods = () => {
|
||||||
|
emit('copyGoods', detailObj.value)
|
||||||
|
}
|
||||||
|
onMounted(() => {
|
||||||
const pharmaceuticalTotalAmount = detailObj.value.itemDetail.reduce((pre: any, cur: any) => {
|
const pharmaceuticalTotalAmount = detailObj.value.itemDetail.reduce((pre: any, cur: any) => {
|
||||||
return pre + cur.unitPrice
|
return pre + cur.selectedNum * cur.selectedPrice
|
||||||
}, 0);
|
}, 0);
|
||||||
|
|
||||||
const serviceTotalAmount =detailObj.value.goodsDetail.reduce((pre: any, cur: any) => {
|
const serviceTotalAmount = detailObj.value.goodsDetail.reduce((pre: any, cur: any) => {
|
||||||
return pre + cur.selectedNum * cur.selectedPrice
|
return pre + cur.selectedNum * cur.selectedPrice
|
||||||
}, 0);
|
}, 0);
|
||||||
sumPrice.value = pharmaceuticalTotalAmount + serviceTotalAmount;
|
sumPrice.value = pharmaceuticalTotalAmount + serviceTotalAmount;
|
||||||
|
|
@ -114,7 +134,6 @@ onMounted(()=>{
|
||||||
.name {
|
.name {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
color: #333333;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
|
|
@ -139,9 +158,17 @@ onMounted(()=>{
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
.price{
|
.name{
|
||||||
|
white-space: nowrap; /* 防止文本换行 */
|
||||||
|
overflow: hidden; /* 隐藏溢出的文本 */
|
||||||
|
text-overflow: ellipsis; /* 显示省略号 */
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.price {
|
||||||
display: flex;
|
display: flex;
|
||||||
.price-left{
|
|
||||||
|
.price-left {
|
||||||
margin-right: 38px;
|
margin-right: 38px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<div>
|
<div>
|
||||||
<DiseaseDetails :detail="item"></DiseaseDetails>
|
<DiseaseDetails :detail="item" @copy="copy" @copyItem="copyItem" @copyGoods="copyGoods"></DiseaseDetails>
|
||||||
</div>
|
</div>
|
||||||
</el-collapse-item>
|
</el-collapse-item>
|
||||||
</el-collapse>
|
</el-collapse>
|
||||||
|
|
@ -41,6 +41,16 @@ const init = (patientId: any) => {
|
||||||
const clearList = () => {
|
const clearList = () => {
|
||||||
list.value = []
|
list.value = []
|
||||||
}
|
}
|
||||||
|
const emit = defineEmits(['copy','copyItem','copyGoods'])
|
||||||
|
const copy = (item: any) => {
|
||||||
|
emit('copy', item)
|
||||||
|
}
|
||||||
|
const copyItem = (item: any) => {
|
||||||
|
emit('copyItem', item)
|
||||||
|
}
|
||||||
|
const copyGoods = (item: any) => {
|
||||||
|
emit('copyGoods', item)
|
||||||
|
}
|
||||||
defineExpose({init,clearList})
|
defineExpose({init,clearList})
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,7 @@ import Panel from "@/components/common/Panel.vue";
|
||||||
import {post} from "@/utils/request.ts";
|
import {post} from "@/utils/request.ts";
|
||||||
import {formatTime} from "@/utils/dateUtils.ts";
|
import {formatTime} from "@/utils/dateUtils.ts";
|
||||||
import {apiConfig} from "@/assets/config/apiConfig.ts";
|
import {apiConfig} from "@/assets/config/apiConfig.ts";
|
||||||
|
import {ElMessageBox} from "element-plus";
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
status: {
|
status: {
|
||||||
|
|
@ -82,7 +83,9 @@ const statusList = ref<any>([
|
||||||
num: 0
|
num: 0
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
|
const itemId=defineModel()
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
curItem.value = itemId
|
||||||
initStatusList()
|
initStatusList()
|
||||||
init()
|
init()
|
||||||
})
|
})
|
||||||
|
|
@ -126,8 +129,8 @@ const clickLi = (item: any) => {
|
||||||
curItem.value = item
|
curItem.value = item
|
||||||
emit('getId', item)
|
emit('getId', item)
|
||||||
}
|
}
|
||||||
|
|
||||||
watch(() => props.status, () => {
|
watch(() => props.status, () => {
|
||||||
curItem.value = ''
|
|
||||||
initStatusList()
|
initStatusList()
|
||||||
init() // 重新初始化数据
|
init() // 重新初始化数据
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@
|
||||||
:show-config="itemShowConfig"
|
:show-config="itemShowConfig"
|
||||||
@selectedCallBack="itemSelect"
|
@selectedCallBack="itemSelect"
|
||||||
:placeholder="'请输入药材名称'"
|
:placeholder="'请输入药材名称'"
|
||||||
|
:disabled="disabled"
|
||||||
>
|
>
|
||||||
</SearchInput>
|
</SearchInput>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -51,9 +52,19 @@
|
||||||
import Panel from "@/components/common/Panel.vue";
|
import Panel from "@/components/common/Panel.vue";
|
||||||
import SearchInput from "@/components/SearchInput.vue";
|
import SearchInput from "@/components/SearchInput.vue";
|
||||||
import {CircleClose} from "@element-plus/icons-vue";
|
import {CircleClose} from "@element-plus/icons-vue";
|
||||||
import {watch,ref} from "vue";
|
import {watch, ref, computed} from "vue";
|
||||||
|
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
status: {
|
||||||
|
type: Number,
|
||||||
|
default: 0
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const disabled=computed(()=>{
|
||||||
|
if(props.status === 1){
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
})
|
||||||
const itemSearchApi = "goods/goods/search";
|
const itemSearchApi = "goods/goods/search";
|
||||||
const itemShowConfig = [
|
const itemShowConfig = [
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<el-popover placement="bottom-start" trigger="click" :width="props.width">
|
<el-popover placement="bottom-start" trigger="click" :width="props.width">
|
||||||
<template #reference>
|
<template #reference>
|
||||||
<el-input v-model="input" :style="{'width': props.width+'px'}" clearable></el-input>
|
<el-input v-model="input" :style="{'width': props.width+'px'}" clearable :disabled="disabled"></el-input>
|
||||||
</template>
|
</template>
|
||||||
<el-tabs v-model="tabName" class="demo-tabs">
|
<el-tabs v-model="tabName" class="demo-tabs">
|
||||||
<el-tab-pane v-for="item in props.list" :label="item.name" :name="item.name">
|
<el-tab-pane v-for="item in props.list" :label="item.name" :name="item.name">
|
||||||
|
|
@ -41,6 +41,10 @@ const props = defineProps({
|
||||||
width: {
|
width: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: 1000
|
default: 1000
|
||||||
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@
|
||||||
:show-config="serviceShowConfig"
|
:show-config="serviceShowConfig"
|
||||||
@selectedCallBack="serviceSelect"
|
@selectedCallBack="serviceSelect"
|
||||||
:placeholder="'请输入项目名称'"
|
:placeholder="'请输入项目名称'"
|
||||||
|
:disabled="disabled"
|
||||||
>
|
>
|
||||||
</SearchInput>
|
</SearchInput>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -35,10 +36,22 @@
|
||||||
</Panel>
|
</Panel>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import {defineModel, computed} from "vue";
|
||||||
import Panel from "@/components/common/Panel.vue";
|
import Panel from "@/components/common/Panel.vue";
|
||||||
import {CircleClose} from '@element-plus/icons-vue'
|
import {CircleClose} from '@element-plus/icons-vue'
|
||||||
import SearchInput from "@/components/SearchInput.vue";
|
import SearchInput from "@/components/SearchInput.vue";
|
||||||
|
|
||||||
|
const props=defineProps({
|
||||||
|
status: {
|
||||||
|
type: Number,
|
||||||
|
default: 0
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const disabled = computed(() => {
|
||||||
|
if(props.status === 1){
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
})
|
||||||
const serviceSearchApi = "item/search";
|
const serviceSearchApi = "item/search";
|
||||||
const serviceShowConfig = [
|
const serviceShowConfig = [
|
||||||
{
|
{
|
||||||
|
|
@ -63,6 +76,7 @@ const list = defineModel<any[]>({default: () => []});
|
||||||
const deleteItem = (id: any) => {
|
const deleteItem = (id: any) => {
|
||||||
list.value = list.value.filter((item) => item.id !== id);
|
list.value = list.value.filter((item) => item.id !== id);
|
||||||
};
|
};
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,111 @@
|
||||||
|
<template>
|
||||||
|
<Mask :top="100" :width="400" :height="400" :is-show="show">
|
||||||
|
<CloseBtn @click="close"></CloseBtn>
|
||||||
|
<el-card>
|
||||||
|
<template #header>
|
||||||
|
<span>添加用户</span>
|
||||||
|
</template>
|
||||||
|
<div>
|
||||||
|
<el-form
|
||||||
|
:model="userInfo"
|
||||||
|
ref="formDataRef"
|
||||||
|
:rules="rules"
|
||||||
|
label-width="80px"
|
||||||
|
>
|
||||||
|
<el-form-item label="姓名" prop="name">
|
||||||
|
<el-input v-model="userInfo.name"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="用户名" prop="username">
|
||||||
|
<el-input v-model="userInfo.username"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="密码" prop="password">
|
||||||
|
<el-input v-model="userInfo.password"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="人员类型" prop="type">
|
||||||
|
<el-select v-model="userInfo.type">
|
||||||
|
<el-option
|
||||||
|
v-for="item in personType"
|
||||||
|
:key="item.key"
|
||||||
|
:label="item.value"
|
||||||
|
:value="item.key"
|
||||||
|
>
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-button type="primary" @click="save">保存</el-button>
|
||||||
|
<el-button @click="close">取消</el-button>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</Mask>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import Mask from "@/components/Mask.vue";
|
||||||
|
import {type PropType, ref} from "vue";
|
||||||
|
import CloseBtn from "@/components/CloseBtn.vue";
|
||||||
|
import {post} from "@/utils/request.ts";
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
saveCallback: {
|
||||||
|
type: Function as PropType<(args?: any) => void>,
|
||||||
|
default: () => {}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const personType = ref<any>([
|
||||||
|
{
|
||||||
|
key: "0",
|
||||||
|
value: "普通用户",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "1",
|
||||||
|
value: "管理员",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "2",
|
||||||
|
value: "医师",
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
const show = ref<boolean>(false);
|
||||||
|
const userInfo = ref<any>({})
|
||||||
|
const formDataRef = ref();
|
||||||
|
const open = () => {
|
||||||
|
show.value = true;
|
||||||
|
};
|
||||||
|
const close = () => {
|
||||||
|
show.value = false;
|
||||||
|
props.saveCallback();
|
||||||
|
};
|
||||||
|
defineExpose({open})
|
||||||
|
|
||||||
|
const rules = {
|
||||||
|
name: [
|
||||||
|
{required: true, message: "请输入姓名", trigger: 'blur'}
|
||||||
|
],
|
||||||
|
username: [
|
||||||
|
{required: true, message: "请输入用户名", trigger: 'blur'}
|
||||||
|
],
|
||||||
|
password: [
|
||||||
|
{required: true, message: "请输入密码", trigger: 'blur'}
|
||||||
|
],
|
||||||
|
type: [
|
||||||
|
{required: true, message: "请输入人员类型", trigger: 'blur'}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
const save = () => {
|
||||||
|
formDataRef.value?.validate((valid: boolean) => {
|
||||||
|
if (!valid) {
|
||||||
|
console.log("表单验证失败");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 如果验证通过,发送请求
|
||||||
|
post("setting/user/save", {userInfo: userInfo.value}).then((res: any) => {
|
||||||
|
formDataRef.value?.resetFields();
|
||||||
|
close()
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<style scoped lang="scss">
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
<template>
|
||||||
|
<CloseBtn @click="close"></CloseBtn>
|
||||||
|
<el-form
|
||||||
|
:model="form"
|
||||||
|
>
|
||||||
|
<el-descriptions
|
||||||
|
:column="3"
|
||||||
|
border
|
||||||
|
title="详情"
|
||||||
|
direction="vertical"
|
||||||
|
label-width="20"
|
||||||
|
>
|
||||||
|
<el-descriptions-item label="名称">
|
||||||
|
<div>{{ form.name }}</div>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="编码">
|
||||||
|
<div>{{ form.code }}</div>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="状态">
|
||||||
|
<div>{{ form.status }}</div>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="创建时间">
|
||||||
|
<div>{{ form.create_time }}</div>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="状态">
|
||||||
|
<div>{{ form.status }}</div>
|
||||||
|
</el-descriptions-item>
|
||||||
|
<el-descriptions-item label="创建时间">
|
||||||
|
<div>{{ form.create_time }}</div>
|
||||||
|
</el-descriptions-item>
|
||||||
|
</el-descriptions>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import {reactive,defineEmits} from "vue";
|
||||||
|
import {ElDescriptionsItem} from "element-plus";
|
||||||
|
import CloseBtn from "@/components/CloseBtn.vue";
|
||||||
|
|
||||||
|
const form= reactive({
|
||||||
|
name: '1',
|
||||||
|
code: '2',
|
||||||
|
status: '3',
|
||||||
|
create_time: '4',
|
||||||
|
})
|
||||||
|
const emit = defineEmits(['close'])
|
||||||
|
const close = () => {
|
||||||
|
emit('close')
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped lang="scss">
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
@ -1,56 +1,59 @@
|
||||||
<template>
|
<template>
|
||||||
<Mask :is-show="isShow" @close="close" :title="props.id?'项目编辑':'项目新增'" :show-footer="true">
|
<Mask :is-show="isShow" width="400" height="550" @close="close" :title="props.id?'项目编辑':'项目新增'"
|
||||||
<div style="padding: 24px">
|
:show-footer="true">
|
||||||
<div class="header" style="width: 100%;display: flex;justify-content: center;margin-bottom: 10px">
|
<template #default>
|
||||||
<el-button type="primary" style="margin-top:10px" round class="btn" @click="openCreateSearch"
|
<el-scrollbar>
|
||||||
plain>
|
<div style="padding: 0 24px">
|
||||||
一键建档
|
<div class="header" style="width: 100%;display: flex;justify-content: center;margin-bottom: 10px">
|
||||||
</el-button>
|
<el-button type="primary" style="margin-top:10px" round class="btn" @click="openCreateSearch"
|
||||||
</div>
|
plain>
|
||||||
<el-form :model="form" label-width="auto">
|
一键建档
|
||||||
<el-descriptions
|
</el-button>
|
||||||
:column="3"
|
</div>
|
||||||
direction="vertical"
|
<el-form :model="form" label-width="auto" :rules="formRules">
|
||||||
border
|
<el-descriptions
|
||||||
>
|
:column="2"
|
||||||
<el-descriptions-item label="项目名称">
|
direction="vertical"
|
||||||
<el-form-item>
|
border
|
||||||
<el-input v-model="form.itemName"/>
|
>
|
||||||
</el-form-item>
|
<el-descriptions-item label="项目名称">
|
||||||
</el-descriptions-item>
|
<el-form-item>
|
||||||
<el-descriptions-item label="单位">
|
<el-input v-model="form.itemName"/>
|
||||||
<el-form-item>
|
</el-form-item>
|
||||||
<el-input v-model.number="form.unit" min="0">
|
</el-descriptions-item>
|
||||||
<template #append>次</template>
|
<el-descriptions-item label="单位">
|
||||||
</el-input>
|
<el-form-item prop="unit">
|
||||||
</el-form-item>
|
<el-input v-model.number="form.unit" min="0">
|
||||||
</el-descriptions-item>
|
<template #append>次</template>
|
||||||
<el-descriptions-item label="医保码">
|
</el-input>
|
||||||
<el-form-item>
|
</el-form-item>
|
||||||
<el-input v-model="form.itemSocialCode"/>
|
</el-descriptions-item>
|
||||||
</el-form-item>
|
<el-descriptions-item label="原价">
|
||||||
</el-descriptions-item>
|
<el-form-item>
|
||||||
<el-descriptions-item label="原价">
|
<el-input v-model="form.purchaseUnitPrice">
|
||||||
<el-form-item>
|
<template #prefix>
|
||||||
<el-input v-model="form.purchaseUnitPrice">
|
¥
|
||||||
<template #append>
|
</template>
|
||||||
<el-button text @click="imageURL">¥</el-button>
|
</el-input>
|
||||||
</template>
|
</el-form-item>
|
||||||
</el-input>
|
</el-descriptions-item>
|
||||||
</el-form-item>
|
<el-descriptions-item label="售价">
|
||||||
</el-descriptions-item>
|
<el-form-item>
|
||||||
<el-descriptions-item label="售价">
|
<el-input v-model="form.unitPrice">
|
||||||
<el-form-item>
|
<template #prefix>¥</template>
|
||||||
<el-input v-model="form.unitPrice">
|
</el-input>
|
||||||
<template #append>
|
</el-form-item>
|
||||||
<el-button type="text" @click="imageURL">¥</el-button>
|
</el-descriptions-item>
|
||||||
</template>
|
<el-descriptions-item label="医保码">
|
||||||
</el-input>
|
<el-form-item>
|
||||||
</el-form-item>
|
<el-input v-model="form.itemSocialCode"/>
|
||||||
</el-descriptions-item>
|
</el-form-item>
|
||||||
</el-descriptions>
|
</el-descriptions-item>
|
||||||
</el-form>
|
</el-descriptions>
|
||||||
</div>
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</el-scrollbar>
|
||||||
|
</template>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
<el-button type="primary" @click="save()">保存</el-button>
|
<el-button type="primary" @click="save()">保存</el-button>
|
||||||
|
|
@ -155,11 +158,21 @@ onMounted(() => {
|
||||||
const init = () => {
|
const init = () => {
|
||||||
isShow.value = true
|
isShow.value = true
|
||||||
if (props.id) {
|
if (props.id) {
|
||||||
post("item/getItemById", {id:props.id}).then((res: any) => {
|
post("item/getItemById", {id: props.id}).then((res: any) => {
|
||||||
form.value = res
|
form.value = res
|
||||||
|
form.value.unit = Number(res.unit)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const formRules = {
|
||||||
|
itemName: [
|
||||||
|
{required: true, message: '请输入项目名称', trigger: 'blur'},
|
||||||
|
],
|
||||||
|
unit: [
|
||||||
|
{required: true, message: '请输入单位', trigger: 'blur'},
|
||||||
|
{type: 'number', message: '单位必须为数字值'}
|
||||||
|
],
|
||||||
|
}
|
||||||
defineExpose({init})
|
defineExpose({init})
|
||||||
</script>
|
</script>
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
|
||||||
|
|
@ -1,122 +1,124 @@
|
||||||
<template>
|
<template>
|
||||||
<Mask :is-show="isShow" @close="exit" :width="800" :height="600" title="成员管理" :show-footer="true">
|
<Mask :is-show="isShow" @close="exit" :width="800" :height="600" title="成员管理" :show-footer="true">
|
||||||
<div style="padding: 24px">
|
<el-scrollbar>
|
||||||
<el-form :model="userInfo" label-width="auto" :rules="rules" ref="ruleFormRef" style="width: 100%;height: 100%">
|
<div style="padding: 24px">
|
||||||
<el-descriptions
|
<el-form :model="userInfo" label-width="auto" :rules="rules" ref="ruleFormRef" style="width: 100%;height: 100%">
|
||||||
title="基本信息"
|
<el-descriptions
|
||||||
:column="3"
|
title="基本信息"
|
||||||
direction="vertical"
|
:column="3"
|
||||||
border
|
direction="vertical"
|
||||||
>
|
border
|
||||||
<el-descriptions-item label="账号">
|
>
|
||||||
<el-form-item prop="username">
|
<el-descriptions-item label="账号">
|
||||||
<el-input v-model="userInfo.username"/>
|
<el-form-item prop="username">
|
||||||
</el-form-item>
|
<el-input v-model="userInfo.username"/>
|
||||||
</el-descriptions-item>
|
</el-form-item>
|
||||||
<el-descriptions-item label="密码">
|
</el-descriptions-item>
|
||||||
<el-form-item prop="password">
|
<el-descriptions-item label="密码">
|
||||||
<el-input v-model="userInfo.password" show-password/>
|
<el-form-item prop="password">
|
||||||
</el-form-item>
|
<el-input v-model="userInfo.password" show-password/>
|
||||||
</el-descriptions-item>
|
</el-form-item>
|
||||||
<el-descriptions-item label="用户名">
|
</el-descriptions-item>
|
||||||
<el-form-item>
|
<el-descriptions-item label="用户名">
|
||||||
<el-input v-model="userInfo.name"/>
|
<el-form-item>
|
||||||
</el-form-item>
|
<el-input v-model="userInfo.name"/>
|
||||||
</el-descriptions-item>
|
</el-form-item>
|
||||||
</el-descriptions>
|
</el-descriptions-item>
|
||||||
</el-form>
|
</el-descriptions>
|
||||||
<el-form :model="memberInfo" label-width="auto">
|
</el-form>
|
||||||
<el-descriptions
|
<el-form :model="memberInfo" label-width="auto">
|
||||||
title="扩展信息"
|
<el-descriptions
|
||||||
:column="3"
|
title="扩展信息"
|
||||||
direction="vertical"
|
:column="3"
|
||||||
border
|
direction="vertical"
|
||||||
>
|
border
|
||||||
<el-descriptions-item label="姓名">
|
>
|
||||||
<el-form-item>
|
<el-descriptions-item label="姓名">
|
||||||
<el-input v-model="memberInfo.name"/>
|
<el-form-item>
|
||||||
</el-form-item>
|
<el-input v-model="memberInfo.name"/>
|
||||||
</el-descriptions-item>
|
</el-form-item>
|
||||||
<el-descriptions-item label="性别">
|
</el-descriptions-item>
|
||||||
<el-form-item>
|
<el-descriptions-item label="性别">
|
||||||
<el-select
|
<el-form-item>
|
||||||
v-model="memberInfo.gender"
|
<el-select
|
||||||
placeholder="选择性别"
|
v-model="memberInfo.gender"
|
||||||
>
|
placeholder="选择性别"
|
||||||
<el-option
|
>
|
||||||
v-for="item in ['男', '女']"
|
<el-option
|
||||||
:key="item"
|
v-for="item in ['男', '女']"
|
||||||
:label="item"
|
:key="item"
|
||||||
:value="item"
|
:label="item"
|
||||||
/>
|
:value="item"
|
||||||
</el-select>
|
/>
|
||||||
</el-form-item>
|
</el-select>
|
||||||
</el-descriptions-item>
|
</el-form-item>
|
||||||
<el-descriptions-item label="年龄">
|
</el-descriptions-item>
|
||||||
<el-form-item>
|
<el-descriptions-item label="年龄">
|
||||||
<el-input v-model="memberInfo.age"/>
|
<el-form-item>
|
||||||
</el-form-item>
|
<el-input v-model="memberInfo.age"/>
|
||||||
</el-descriptions-item>
|
</el-form-item>
|
||||||
<el-descriptions-item label="手机号">
|
</el-descriptions-item>
|
||||||
<el-form-item>
|
<el-descriptions-item label="手机号">
|
||||||
<el-input v-model="memberInfo.tel"/>
|
<el-form-item>
|
||||||
</el-form-item>
|
<el-input v-model="memberInfo.tel"/>
|
||||||
</el-descriptions-item>
|
</el-form-item>
|
||||||
<el-descriptions-item label="角色">
|
</el-descriptions-item>
|
||||||
<el-form-item>
|
<el-descriptions-item label="角色">
|
||||||
<el-select
|
<el-form-item>
|
||||||
v-model="memberInfo.role"
|
<el-select
|
||||||
placeholder="选择角色"
|
v-model="memberInfo.role"
|
||||||
size="large"
|
placeholder="选择角色"
|
||||||
>
|
size="large"
|
||||||
<el-option
|
>
|
||||||
v-for="item in roleList"
|
<el-option
|
||||||
:key="item.value"
|
v-for="item in roleList"
|
||||||
:label="item.label"
|
:key="item.value"
|
||||||
:value="item.value"
|
:label="item.label"
|
||||||
/>
|
:value="item.value"
|
||||||
</el-select>
|
/>
|
||||||
</el-form-item>
|
</el-select>
|
||||||
</el-descriptions-item>
|
</el-form-item>
|
||||||
<el-descriptions-item label="身份证号">
|
</el-descriptions-item>
|
||||||
<el-form-item>
|
<el-descriptions-item label="身份证号">
|
||||||
<el-input v-model="memberInfo.idCardNumber"/>
|
<el-form-item>
|
||||||
</el-form-item>
|
<el-input v-model="memberInfo.idCardNumber"/>
|
||||||
</el-descriptions-item>
|
</el-form-item>
|
||||||
<el-descriptions-item label="科室">
|
</el-descriptions-item>
|
||||||
<el-form-item>
|
<el-descriptions-item label="科室">
|
||||||
<el-select
|
<el-form-item>
|
||||||
v-model="memberInfo.sectionId"
|
<el-select
|
||||||
placeholder="选择科室"
|
v-model="memberInfo.sectionId"
|
||||||
>
|
placeholder="选择科室"
|
||||||
<el-option
|
>
|
||||||
v-for="item in sectionList"
|
<el-option
|
||||||
:key="item.id"
|
v-for="item in sectionList"
|
||||||
:label="item.name"
|
:key="item.id"
|
||||||
:value="item.id"
|
:label="item.name"
|
||||||
/>
|
:value="item.id"
|
||||||
</el-select>
|
/>
|
||||||
</el-form-item>
|
</el-select>
|
||||||
</el-descriptions-item>
|
</el-form-item>
|
||||||
<el-descriptions-item label="医保人员代码">
|
</el-descriptions-item>
|
||||||
<el-form-item>
|
<el-descriptions-item label="医保人员代码">
|
||||||
<el-input v-model="memberInfo.socialMemberCode"/>
|
<el-form-item>
|
||||||
</el-form-item>
|
<el-input v-model="memberInfo.socialMemberCode"/>
|
||||||
</el-descriptions-item>
|
</el-form-item>
|
||||||
<el-descriptions-item label="备注">
|
</el-descriptions-item>
|
||||||
<el-form-item>
|
<el-descriptions-item label="备注">
|
||||||
<el-input v-model="memberInfo.memo"/>
|
<el-form-item>
|
||||||
</el-form-item>
|
<el-input v-model="memberInfo.memo"/>
|
||||||
</el-descriptions-item>
|
</el-form-item>
|
||||||
<el-descriptions-item label="电子签名">
|
</el-descriptions-item>
|
||||||
<el-form-item>
|
<el-descriptions-item label="电子签名">
|
||||||
<UpLoad v-model="uploadURL" ref="uploadRef"
|
<el-form-item>
|
||||||
@uploadSuccess="(url)=>{memberInfo.electronicSignature=url}"></UpLoad>
|
<UpLoad v-model="uploadURL" ref="uploadRef"
|
||||||
</el-form-item>
|
@uploadSuccess="(url)=>{memberInfo.electronicSignature=url}"></UpLoad>
|
||||||
</el-descriptions-item>
|
</el-form-item>
|
||||||
</el-descriptions>
|
</el-descriptions-item>
|
||||||
</el-form>
|
</el-descriptions>
|
||||||
</div>
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</el-scrollbar>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
<el-button type="primary" @click="save()">保存</el-button>
|
<el-button type="primary" @click="save()">保存</el-button>
|
||||||
|
|
@ -267,7 +269,7 @@ const deleteDetail = () => {
|
||||||
}
|
}
|
||||||
const init = () => {
|
const init = () => {
|
||||||
isShow.value = true
|
isShow.value = true
|
||||||
if(props.id){
|
if (props.id) {
|
||||||
getById()
|
getById()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<Mask :width="800" :height="600" :is-show="show" :top="100" @close="close" title="药品" :show-footer="true">
|
<Mask :width="800" :height="600" :is-show="show" :top="100" @close="close" title="药品" :show-footer="true">
|
||||||
<div class="search_content_wrapper">
|
<div class="search_content_wrapper" style="padding: 24px">
|
||||||
<div class="search_wrapper">
|
<div class="search_wrapper">
|
||||||
<span>项目名称:</span>
|
<span>项目名称:</span>
|
||||||
<el-input
|
<el-input
|
||||||
|
|
@ -8,8 +8,9 @@
|
||||||
v-model="keyword"
|
v-model="keyword"
|
||||||
placeholder="请输入药品名称或者编号"
|
placeholder="请输入药品名称或者编号"
|
||||||
@keydown.enter="search_social"
|
@keydown.enter="search_social"
|
||||||
clearable/>
|
clearable
|
||||||
<button @click="search_social">搜索</button>
|
/>
|
||||||
|
<el-button type="primary" @click="search_social">搜索</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="search_result">
|
<div class="search_result">
|
||||||
|
|
||||||
|
|
@ -86,14 +87,16 @@ let change_page = (page: number) => {
|
||||||
// })
|
// })
|
||||||
const change_current_search_data_index = (val: any) => {
|
const change_current_search_data_index = (val: any) => {
|
||||||
current_search_data = JSON.parse(JSON.stringify(val));
|
current_search_data = JSON.parse(JSON.stringify(val));
|
||||||
console.log(current_search_data.id)
|
// console.log(current_search_data.id)
|
||||||
// proos.changeData(current_search_data)
|
// proos.changeData(current_search_data)
|
||||||
}
|
}
|
||||||
const init = (_name: string) => {
|
const init = (_name: string) => {
|
||||||
keyword.value = _name;
|
keyword.value = _name;
|
||||||
show.value = true;
|
show.value = true;
|
||||||
// init_search_data()
|
if(_name != ''){
|
||||||
// search_social()
|
init_search_data()
|
||||||
|
search_social()
|
||||||
|
}
|
||||||
};
|
};
|
||||||
defineExpose({init});
|
defineExpose({init});
|
||||||
|
|
||||||
|
|
@ -108,7 +111,7 @@ function init_search_data() {
|
||||||
}
|
}
|
||||||
|
|
||||||
let confirm = () => {
|
let confirm = () => {
|
||||||
let jsondata = current_search_data.json;
|
let jsondata = current_search_data;
|
||||||
let data = {
|
let data = {
|
||||||
id: null,
|
id: null,
|
||||||
type: null,
|
type: null,
|
||||||
|
|
@ -130,13 +133,10 @@ let confirm = () => {
|
||||||
regType: jsondata.reg_type,
|
regType: jsondata.reg_type,
|
||||||
approvalNumber: jsondata.approval_number,
|
approvalNumber: jsondata.approval_number,
|
||||||
category: jsondata.category
|
category: jsondata.category
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log("data", data)
|
|
||||||
emit('confirm', data)
|
emit('confirm', data)
|
||||||
show.value = false;
|
close()
|
||||||
|
|
||||||
}
|
}
|
||||||
let isloading = ref(false);
|
let isloading = ref(false);
|
||||||
|
|
@ -172,6 +172,7 @@ let search_social = () => {
|
||||||
}
|
}
|
||||||
const close = () => {
|
const close = () => {
|
||||||
show.value = false;
|
show.value = false;
|
||||||
|
// search_result.value = {}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
|
@ -185,11 +186,8 @@ const close = () => {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
margin: auto;
|
|
||||||
margin-top: 24px;
|
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: 10px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.search_wrapper {
|
.search_wrapper {
|
||||||
|
|
@ -232,11 +230,15 @@ const close = () => {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 400px;
|
height: 400px;
|
||||||
}
|
}
|
||||||
.bottom{
|
|
||||||
|
.bottom {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 0 24px;
|
padding: 0 24px;
|
||||||
}
|
}
|
||||||
|
:deep(.el-input__wrapper){
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -1,114 +1,118 @@
|
||||||
<template>
|
<template>
|
||||||
<Mask :is-show="isShow" @close="exit" :height="570" :title="props.id?'编辑':'新增'" :show-footer="true">
|
<Mask :is-show="isShow" @close="exit" :height="570" :title="props.id?'编辑':'新增'" :show-footer="true">
|
||||||
<div style="padding: 24px">
|
<template #default>
|
||||||
<el-form :model="form" label-width="auto">
|
<el-scrollbar>
|
||||||
<el-descriptions
|
<div style="padding: 24px">
|
||||||
:column="4"
|
<el-form :model="form" label-width="auto">
|
||||||
direction="vertical"
|
<el-descriptions
|
||||||
border
|
:column="4"
|
||||||
>
|
direction="vertical"
|
||||||
<el-descriptions-item label="科室名称">
|
border
|
||||||
<el-form-item>
|
>
|
||||||
<el-input v-model="form.name"/>
|
<el-descriptions-item label="科室名称">
|
||||||
</el-form-item>
|
<el-form-item>
|
||||||
</el-descriptions-item>
|
<el-input v-model="form.name"/>
|
||||||
<el-descriptions-item label="科室类别">
|
</el-form-item>
|
||||||
<el-form-item>
|
</el-descriptions-item>
|
||||||
<el-cascader :props="{ checkStrictly: true }" v-model="form.caty" :options="options"/>
|
<el-descriptions-item label="科室类别">
|
||||||
</el-form-item>
|
<el-form-item>
|
||||||
</el-descriptions-item>
|
<el-cascader :props="{ checkStrictly: true }" v-model="form.caty" :options="options"/>
|
||||||
<el-descriptions-item label="开始日期">
|
</el-form-item>
|
||||||
<el-form-item>
|
</el-descriptions-item>
|
||||||
<div class="demo-date-picker">
|
<el-descriptions-item label="开始日期">
|
||||||
<el-date-picker
|
<el-form-item>
|
||||||
v-model="form.beginDate"
|
<div class="demo-date-picker">
|
||||||
type="date"
|
<el-date-picker
|
||||||
placeholder="请选择开始日期"
|
v-model="form.beginDate"
|
||||||
/>
|
type="date"
|
||||||
</div>
|
placeholder="请选择开始日期"
|
||||||
</el-form-item>
|
/>
|
||||||
</el-descriptions-item>
|
</div>
|
||||||
<el-descriptions-item label="结束日期">
|
</el-form-item>
|
||||||
<el-form-item>
|
</el-descriptions-item>
|
||||||
<div class="demo-date-picker">
|
<el-descriptions-item label="结束日期">
|
||||||
<el-date-picker
|
<el-form-item>
|
||||||
v-model="form.endDate"
|
<div class="demo-date-picker">
|
||||||
type="date"
|
<el-date-picker
|
||||||
placeholder="请选择结束日期"
|
v-model="form.endDate"
|
||||||
/>
|
type="date"
|
||||||
</div>
|
placeholder="请选择结束日期"
|
||||||
</el-form-item>
|
/>
|
||||||
</el-descriptions-item>
|
</div>
|
||||||
<el-descriptions-item label="成立时间">
|
</el-form-item>
|
||||||
<el-form-item>
|
</el-descriptions-item>
|
||||||
<div class="demo-date-picker">
|
<el-descriptions-item label="成立时间">
|
||||||
<el-date-picker
|
<el-form-item>
|
||||||
v-model="form.creationDate"
|
<div class="demo-date-picker">
|
||||||
type="date"
|
<el-date-picker
|
||||||
placeholder="请选择成立时间"
|
v-model="form.creationDate"
|
||||||
:default-value="new Date(2010, 9, 1)"
|
type="date"
|
||||||
/>
|
placeholder="请选择成立时间"
|
||||||
</div>
|
:default-value="new Date(2010, 9, 1)"
|
||||||
</el-form-item>
|
/>
|
||||||
</el-descriptions-item>
|
</div>
|
||||||
<el-descriptions-item label="简介">
|
</el-form-item>
|
||||||
<el-form-item>
|
</el-descriptions-item>
|
||||||
<el-input v-model="form.info" type="text" :show-word-limit="true" :clearable="true" :size="'large'"/>
|
<el-descriptions-item label="简介">
|
||||||
</el-form-item>
|
<el-form-item>
|
||||||
</el-descriptions-item>
|
<el-input v-model="form.info" type="text" :show-word-limit="true" :clearable="true" :size="'large'"/>
|
||||||
<el-descriptions-item label="负责人姓名">
|
</el-form-item>
|
||||||
<el-form-item>
|
</el-descriptions-item>
|
||||||
<el-input v-model="form.resperName"/>
|
<el-descriptions-item label="负责人姓名">
|
||||||
</el-form-item>
|
<el-form-item>
|
||||||
</el-descriptions-item>
|
<el-input v-model="form.resperName"/>
|
||||||
<el-descriptions-item label="负责人电话">
|
</el-form-item>
|
||||||
<el-form-item>
|
</el-descriptions-item>
|
||||||
<el-input v-model="form.resperTel"/>
|
<el-descriptions-item label="负责人电话">
|
||||||
</el-form-item>
|
<el-form-item>
|
||||||
</el-descriptions-item>
|
<el-input v-model="form.resperTel"/>
|
||||||
<el-descriptions-item label="医疗服务范围">
|
</el-form-item>
|
||||||
<el-form-item>
|
</el-descriptions-item>
|
||||||
<el-input v-model="form.medServScp"/>
|
<el-descriptions-item label="医疗服务范围">
|
||||||
</el-form-item>
|
<el-form-item>
|
||||||
</el-descriptions-item>
|
<el-input v-model="form.medServScp"/>
|
||||||
<el-descriptions-item label="批准床位数">
|
</el-form-item>
|
||||||
<el-form-item>
|
</el-descriptions-item>
|
||||||
<el-input v-model="form.bedCnt" type="number"/>
|
<el-descriptions-item label="批准床位数">
|
||||||
</el-form-item>
|
<el-form-item>
|
||||||
</el-descriptions-item>
|
<el-input v-model="form.bedCnt" type="number"/>
|
||||||
<el-descriptions-item label="医保认可床位数量">
|
</el-form-item>
|
||||||
<el-form-item>
|
</el-descriptions-item>
|
||||||
<el-input v-model.number="form.socialBedCnt" type="number"/>
|
<el-descriptions-item label="医保认可床位数量">
|
||||||
</el-form-item>
|
<el-form-item>
|
||||||
</el-descriptions-item>
|
<el-input v-model.number="form.socialBedCnt" type="number"/>
|
||||||
<el-descriptions-item label="医师人数">
|
</el-form-item>
|
||||||
<el-form-item>
|
</el-descriptions-item>
|
||||||
<el-input v-model.number="form.drPsncnt" type="number"/>
|
<el-descriptions-item label="医师人数">
|
||||||
</el-form-item>
|
<el-form-item>
|
||||||
</el-descriptions-item>
|
<el-input v-model.number="form.drPsncnt" type="number"/>
|
||||||
<el-descriptions-item label="药师人数">
|
</el-form-item>
|
||||||
<el-form-item>
|
</el-descriptions-item>
|
||||||
<el-input v-model.number="form.pharPsncnt" type="number"/>
|
<el-descriptions-item label="药师人数">
|
||||||
</el-form-item>
|
<el-form-item>
|
||||||
</el-descriptions-item>
|
<el-input v-model.number="form.pharPsncnt" type="number"/>
|
||||||
<el-descriptions-item label="护士人数">
|
</el-form-item>
|
||||||
<el-form-item>
|
</el-descriptions-item>
|
||||||
<el-input v-model.number="form.nursPsncnt" type="number"/>
|
<el-descriptions-item label="护士人数">
|
||||||
</el-form-item>
|
<el-form-item>
|
||||||
</el-descriptions-item>
|
<el-input v-model.number="form.nursPsncnt" type="number"/>
|
||||||
<el-descriptions-item label="技术人员人数">
|
</el-form-item>
|
||||||
<el-form-item>
|
</el-descriptions-item>
|
||||||
<el-input v-model.number="form.tecnPsncnt" type="number"/>
|
<el-descriptions-item label="技术人员人数">
|
||||||
</el-form-item>
|
<el-form-item>
|
||||||
</el-descriptions-item>
|
<el-input v-model.number="form.tecnPsncnt" type="number"/>
|
||||||
<el-descriptions-item label="备注">
|
</el-form-item>
|
||||||
<el-form-item>
|
</el-descriptions-item>
|
||||||
<el-input v-model="form.memo" type="text" :show-word-limit="true" :clearable="true"/>
|
<el-descriptions-item label="备注">
|
||||||
</el-form-item>
|
<el-form-item>
|
||||||
</el-descriptions-item>
|
<el-input v-model="form.memo" type="text" :show-word-limit="true" :clearable="true"/>
|
||||||
</el-descriptions>
|
</el-form-item>
|
||||||
</el-form>
|
</el-descriptions-item>
|
||||||
</div>
|
</el-descriptions>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</el-scrollbar>
|
||||||
|
</template>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
<el-button type="primary" @click="save()">保存</el-button>
|
<el-button type="primary" @click="save()">保存</el-button>
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,22 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<MedicalQueue :status="status" @getId="getId" @getStatus="getStatus"></MedicalQueue>
|
<MedicalQueue v-model="itemId" :status="status" @getId="getId" @getStatus="getStatus"></MedicalQueue>
|
||||||
</div>
|
</div>
|
||||||
<div class="middle">
|
<div class="middle">
|
||||||
<el-scrollbar>
|
<el-scrollbar>
|
||||||
<div class="case">
|
<div class="case">
|
||||||
<CaseDetail v-if="patientRegistration.status==3" v-model="formData"></CaseDetail>
|
<CaseDetail v-if="patientRegistration.status==3" v-model="formData" ></CaseDetail>
|
||||||
<Case v-else v-model="formData"></Case>
|
<Case ref="caseRef" v-else v-model="formData" :status="status"></Case>
|
||||||
</div>
|
</div>
|
||||||
<div class="service-items">
|
<div class="service-items">
|
||||||
<ServiceItemsDetail v-if="patientRegistration.status==3" v-model="itemList"></ServiceItemsDetail>
|
<ServiceItemsDetail v-if="patientRegistration.status==3" v-model="itemList"></ServiceItemsDetail>
|
||||||
<ServiceItems v-else v-model="itemList"></ServiceItems>
|
<ServiceItems v-else v-model="itemList" :status="status"></ServiceItems>
|
||||||
</div>
|
</div>
|
||||||
<div class="pharmaceutical-consumables">
|
<div class="pharmaceutical-consumables">
|
||||||
<PharmaceuticalConsumablesDetail v-if="patientRegistration.status==3"
|
<PharmaceuticalConsumablesDetail v-if="patientRegistration.status==3"
|
||||||
v-model="goodsList"></PharmaceuticalConsumablesDetail>
|
v-model="goodsList" ></PharmaceuticalConsumablesDetail>
|
||||||
<PharmaceuticalConsumables v-else v-model="goodsList"></PharmaceuticalConsumables>
|
<PharmaceuticalConsumables v-else v-model="goodsList" :status="status"></PharmaceuticalConsumables>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
<Settlement v-if="status!=1" v-model="totalAmount" @deleteItem="deleteItem" @save="save" :status="status"
|
<Settlement v-if="status!=1" v-model="totalAmount" @deleteItem="deleteItem" @save="save" :status="status"
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
<MedicalInformation v-model="patientRegistration" 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" @copy="copyForm" @copyItem="copyItemList" @copyGoods="copyGoodsList"></MedicalHistory>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -94,20 +94,22 @@ const medicalHistoryRef = ref()
|
||||||
const patientRegistration = ref<any>({})
|
const patientRegistration = ref<any>({})
|
||||||
const getId = (item: any) => {
|
const getId = (item: any) => {
|
||||||
registerId.value = item.id
|
registerId.value = item.id
|
||||||
|
itemId.value = item.id
|
||||||
patientId.value = item.patientInfoId
|
patientId.value = item.patientInfoId
|
||||||
status.value = item.status
|
status.value = item.status
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
medicalHistoryRef.value?.init(patientId.value);
|
medicalHistoryRef.value?.init(patientId.value);
|
||||||
})
|
})
|
||||||
if (item.status == 1) {
|
if (item.status == 1) {
|
||||||
ElMessageBox.alert(`您将要接诊${item.name}`, '提示', {
|
ElMessageBox.confirm(`您将要接诊${item.name}`, "提示", {
|
||||||
confirmButtonText: '确定',
|
confirmButtonText: '确定',
|
||||||
cancelButtonText: '取消',
|
cancelButtonText: '取消',
|
||||||
showClose: true,
|
callback: (action: any) => {
|
||||||
callback: (action: Action) => {
|
if (action == "confirm") {
|
||||||
post('registration/changeStatus', {id: item.id, status: 2}).then((res: any) => {
|
post('registration/changeStatus', {id: item.id, status: 2}).then((res: any) => {
|
||||||
status.value = 2
|
status.value = 2
|
||||||
})
|
})
|
||||||
|
}
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -138,6 +140,7 @@ const getStatus = (e: any) => {
|
||||||
medicalHistoryRef.value?.clearList();
|
medicalHistoryRef.value?.clearList();
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
const itemId = ref<any>('')
|
||||||
const edit = () => {
|
const edit = () => {
|
||||||
post('registration/changeStatus', {id: registerId.value, status: 2}).then((res: any) => {
|
post('registration/changeStatus', {id: registerId.value, status: 2}).then((res: any) => {
|
||||||
status.value = 2
|
status.value = 2
|
||||||
|
|
@ -153,6 +156,21 @@ watch([() => goodsList.value, itemList], ([newGoodsList, newItemList]) => {
|
||||||
}, 0);
|
}, 0);
|
||||||
totalAmount.value = pharmaceuticalTotalAmount + serviceTotalAmount;
|
totalAmount.value = pharmaceuticalTotalAmount + serviceTotalAmount;
|
||||||
}, {deep: true});
|
}, {deep: true});
|
||||||
|
const caseRef= ref<any>("")
|
||||||
|
const copyForm=(item:any) => {
|
||||||
|
formData.value = item.diagnosisMedicalRecord
|
||||||
|
const diagnosisNames =JSON.parse(item.diagnosisMedicalRecord.diagnosisDetail)
|
||||||
|
nextTick(()=>{
|
||||||
|
caseRef.value?.diagnosisSelect(diagnosisNames)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const copyItemList=(item:any) => {
|
||||||
|
console.log(item)
|
||||||
|
itemList.value = item.itemDetail
|
||||||
|
}
|
||||||
|
const copyGoodsList=(item:any) => {
|
||||||
|
goodsList.value = item.goodsDetail
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.container {
|
.container {
|
||||||
|
|
|
||||||
|
|
@ -113,8 +113,9 @@ const handleSelect = (item: any) => {
|
||||||
}
|
}
|
||||||
const isShow = ref(false)
|
const isShow = ref(false)
|
||||||
const ItemEditRef = ref<any>('')
|
const ItemEditRef = ref<any>('')
|
||||||
const id = ref('')
|
const id = ref<any>('')
|
||||||
const rowClick = ((row: any) => {
|
const rowClick = ((row: any) => {
|
||||||
|
id.value = row.id
|
||||||
openDialog()
|
openDialog()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,94 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="container-wrapper">
|
<div class="container-wrapper" style="padding: 24px">
|
||||||
log
|
<div class="title">操作日志</div>
|
||||||
|
<div class="content">
|
||||||
|
<el-table
|
||||||
|
:data="tableData"
|
||||||
|
style="width: 100%"
|
||||||
|
:default-sort="{prop: 'id', order: 'descending'}"
|
||||||
|
@row-click="rowClick"
|
||||||
|
>
|
||||||
|
<el-table-column prop="id" label="ID"></el-table-column>
|
||||||
|
<el-table-column prop="username" label="用户名"></el-table-column>
|
||||||
|
<el-table-column prop="operation" label="操作"></el-table-column>
|
||||||
|
<el-table-column prop="time" label="时间"></el-table-column>
|
||||||
|
<el-table-column prop="method" label="方法"></el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="pagination">
|
||||||
|
<el-pagination
|
||||||
|
background
|
||||||
|
layout="prev, pager, next"
|
||||||
|
:current-page="currentPage"
|
||||||
|
:page-size="pageSize"
|
||||||
|
:total="total"
|
||||||
|
@current-change="handleCurrentChange"
|
||||||
|
></el-pagination>
|
||||||
|
</div>
|
||||||
|
<Mask :is-show="isShow" :width="800" :height="500">
|
||||||
|
<Detail @close="isShow = false"/>
|
||||||
|
</Mask>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import {onMounted, ref} from 'vue'
|
||||||
|
import {post} from '@/utils/request.ts'
|
||||||
|
import Mask from "@/components/Mask.vue";
|
||||||
|
import Detail from "@/components/settings/Detail.vue";
|
||||||
|
const tableData = ref<any>([
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
username: 'admin',
|
||||||
|
operation: '新增用户',
|
||||||
|
time: '2021-01-01 00:00:00',
|
||||||
|
}
|
||||||
|
])
|
||||||
|
onMounted(()=>{
|
||||||
|
init()
|
||||||
|
})
|
||||||
|
const init=()=>{
|
||||||
|
const params = {
|
||||||
|
currentPage: currentPage.value,
|
||||||
|
pageSize: pageSize.value,
|
||||||
|
}
|
||||||
|
// post("",{params:params}).then((res:any)=>{
|
||||||
|
// tableData.value=res
|
||||||
|
// })
|
||||||
|
}
|
||||||
|
const currentPage = ref(1)
|
||||||
|
const pageSize = ref(20)
|
||||||
|
const total = ref(0)
|
||||||
|
const handleCurrentChange = (val: any) => {
|
||||||
|
currentPage.value = val
|
||||||
|
}
|
||||||
|
const isShow = ref(false)
|
||||||
|
const rowClick=(row:any)=>{
|
||||||
|
isShow.value=true
|
||||||
|
console.log(row,'ROW')
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
.container-wrapper{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
.title{
|
||||||
|
font-size: 20px;
|
||||||
|
height: 60px;
|
||||||
|
line-height: 60px;
|
||||||
|
background: #fff;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
.content{
|
||||||
|
flex: 1;
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
.pagination{
|
||||||
|
height: 60px;
|
||||||
|
background: #fff;
|
||||||
|
border-top: 1px solid #ebeef5;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
@ -1,69 +1,81 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="container-wrapper">
|
<div class="container-wrapper" style="padding: 24px">
|
||||||
<el-button @click="sendMessage">发送消息 </el-button>
|
<el-form ref="ruleFormRef" style="max-width: 600px" :model="tableDate" label-width="auto"
|
||||||
<el-button @click="getarry">拉配置 </el-button>
|
class="demo-ruleForm" status-icon>
|
||||||
<el-button @click="getNetwork">拿ip</el-button>
|
<el-form-item label="打印机名称" prop="common_name">
|
||||||
|
<el-select v-model="printConfig.printName" >
|
||||||
|
<el-option v-for="item in tableDate" :label="item" :value="item">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="打印类型" prop="common_sortName">
|
||||||
|
<el-select v-model="printConfig.pageType">
|
||||||
|
<el-option v-for="item in pageTypes" :label="item.label" :value="item.value">
|
||||||
|
</el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-button type="primary" @click="save">保存</el-button>
|
||||||
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
||||||
import {getKey} from "@/utils/discrotyUtil.ts";
|
|
||||||
import gends from "@/assets/config/directory/gends.json";
|
|
||||||
import natys from "@/assets/config/directory/antys.json";
|
|
||||||
import psnCertTypes from "@/assets/config/directory/psnCertTypes.json";
|
|
||||||
import insutypes from "@/assets/config/directory/insutypes.json";
|
|
||||||
import {onMounted, onUnmounted, ref} from "vue";
|
import {onMounted, onUnmounted, ref} from "vue";
|
||||||
import {ElMessage} from "element-plus";
|
|
||||||
import {post} from "@/utils/request.ts";
|
import {post} from "@/utils/request.ts";
|
||||||
import type {Request, Response} from "@/utils/ws.ts";
|
|
||||||
import {useWsStore} from "@/stores/wsStore.ts";
|
import {useWsStore} from "@/stores/wsStore.ts";
|
||||||
|
import type {Request, Response} from "@/utils/ws.ts";
|
||||||
|
import {ElMessage} from "element-plus";
|
||||||
|
|
||||||
|
const pageTypes = [
|
||||||
|
{
|
||||||
|
label: "80小票打印机",
|
||||||
|
value: "80"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "58小票打印机",
|
||||||
|
value: "58"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
const printConfig= ref<any>({
|
||||||
|
printName:"",
|
||||||
|
pageType:""
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
const save = () => {
|
||||||
|
post("common/config/savePrinter", {printConfig:printConfig.value}).then((res:any)=>{
|
||||||
|
ElMessage.success("保存成功")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const getPrintConfig = () => {
|
||||||
|
post("common/config/getPrintConfig").then((res:any)=>{
|
||||||
|
printConfig.value.printName=res.printName
|
||||||
|
printConfig.value.pageType=res.pageType
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const tableDate = ref<any>([])
|
||||||
const wsStore = useWsStore();
|
const wsStore = useWsStore();
|
||||||
const isReading = ref(false)
|
|
||||||
const ReadSocialCard = async (readType: string) => {
|
|
||||||
isReading.value = true;
|
let request: Request = {
|
||||||
let data: any = {}
|
type: "getPrintList",
|
||||||
data.key ="111111111111";
|
config: null,
|
||||||
data.val="哈哈哈哈122222222222222";
|
data: null
|
||||||
let request: Request = {
|
|
||||||
type: "Config/set",
|
|
||||||
config: {},
|
|
||||||
data: data
|
|
||||||
}
|
|
||||||
wsStore.sendMessage(request);
|
|
||||||
};
|
|
||||||
const sendMessage = () => {
|
|
||||||
ReadSocialCard("CardDefault");
|
|
||||||
}
|
}
|
||||||
|
wsStore.sendMessage(request);
|
||||||
const reciceMessage = (response: Response) => {
|
const reciceMessage = (response: Response) => {
|
||||||
console.log(response);
|
tableDate.value = response.Data;
|
||||||
}
|
getPrintConfig()
|
||||||
const getarry = () => {
|
|
||||||
let data: any = {}
|
|
||||||
let request: Request = {
|
|
||||||
type: "Config/getAll",
|
|
||||||
config: {},
|
|
||||||
data: data
|
|
||||||
}
|
|
||||||
wsStore.sendMessage(request);
|
|
||||||
}
|
|
||||||
const getNetwork = () => {
|
|
||||||
let data: any = {}
|
|
||||||
let request: Request = {
|
|
||||||
type: "getNetwork",
|
|
||||||
config: {},
|
|
||||||
data: data
|
|
||||||
}
|
|
||||||
wsStore.sendMessage(request);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
wsStore.setMessageCallback(reciceMessage)
|
wsStore.setMessageCallback(reciceMessage)
|
||||||
});
|
})
|
||||||
onUnmounted(() => {
|
onUnmounted(() => {
|
||||||
wsStore.removeAllMessageCallback()
|
wsStore.removeAllMessageCallback()
|
||||||
})
|
})
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
Loading…
Reference in New Issue