This commit is contained in:
ChenQiuYu 2025-04-28 17:08:57 +08:00
parent b774eb806b
commit 64932e298d
6 changed files with 182 additions and 147 deletions

View File

@ -1,71 +1,87 @@
<template> <template>
<div class="title" style="margin-top: 24px"> <Mask :is-show="isShow" width="800" title="挂号" @close="close" :show-footer="true">
<el-button type="primary">读卡</el-button> <div style="padding:0 24px 24px">
</div> <el-form
<el-form :model="edit_data"
:model="edit_data" label-width="auto"
label-width="auto" :rules="rules"
:rules="rules" ref="form"
ref="form" >
> <el-descriptions
<el-descriptions border
border direction="vertical"
direction="vertical" label-width="100"
label-width="100" :column="4"
:column="4" style="margin-top: 20px"
style="margin-top: 20px"
>
<el-descriptions-item label="名称">
<el-input v-model="edit_data.name" placeholder="请输入名称"></el-input>
</el-descriptions-item>
<el-descriptions-item label="性别">
<el-input v-model="edit_data.gender" placeholder="请输入性别"></el-input>
</el-descriptions-item>
<el-descriptions-item label="年龄">
<el-input v-model="edit_data.age" placeholder="请输入年龄"></el-input>
</el-descriptions-item>
<el-descriptions-item label="医生">
<el-select
v-model="edit_data.organizationDoctorId"
placeholder="请选择医生"
> >
<el-option <el-descriptions-item label="名称">
v-for="item in props.doctorList" <el-input v-model="edit_data.name" placeholder="请输入名称"></el-input>
:key="item.id" </el-descriptions-item>
:label="item.name" <el-descriptions-item label="性别">
:value="item.id" <el-select
> v-model="edit_data.gender"
</el-option> placeholder="请选择性别"
</el-select> >
</el-descriptions-item> <el-option
<el-descriptions-item label="手机号"> v-for="item in ['男','女']"
<el-input v-model="edit_data.phone" placeholder="手机号"></el-input> :key="item"
</el-descriptions-item> :label="item"
<el-descriptions-item label="就诊类型"> :value="item"
<el-select v-model="edit_data.visitType" placeholder="就诊类型"> ></el-option>
<el-option label="初诊" :value="0"></el-option> </el-select>
<el-option label="复诊" :value="1"></el-option> </el-descriptions-item>
</el-select> <el-descriptions-item label="年龄">
</el-descriptions-item> <el-input v-model="edit_data.age" placeholder="请输入年龄"></el-input>
<el-descriptions-item label="备注"> </el-descriptions-item>
<el-input v-model="edit_data.memo" placeholder="备注"></el-input> <el-descriptions-item label="医生">
</el-descriptions-item> <el-select
</el-descriptions> v-model="edit_data.organizationDoctorId"
<div class="content" style="margin-top: 24px"> placeholder="请选择医生"
<CardDefault v-model="socialCard" @socialCardUpdate="socialCardUpdate"/> >
<el-option
v-for="item in props.doctorList"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</el-descriptions-item>
<el-descriptions-item label="手机号">
<el-input v-model="edit_data.phone" placeholder="手机号"></el-input>
</el-descriptions-item>
<el-descriptions-item label="就诊类型">
<el-select v-model="edit_data.visitType" placeholder="就诊类型">
<el-option label="初诊" :value="0"></el-option>
<el-option label="复诊" :value="1"></el-option>
</el-select>
</el-descriptions-item>
<el-descriptions-item label="备注">
<el-input v-model="edit_data.memo" placeholder="备注"></el-input>
</el-descriptions-item>
</el-descriptions>
<div class="content" style="margin-top: 24px">
<CardDefault v-model="socialCard" @socialCardUpdate="socialCardUpdate"/>
</div>
</el-form>
</div> </div>
</el-form> <template #footer>
<div class="bottom_btn"> <div class="bottom_btn">
<el-button type="primary" @click="save">保存</el-button> <el-button type="primary" @click="save">保存</el-button>
<el-button @click="close">取消</el-button> <el-button @click="close">取消</el-button>
<el-button v-if="id" type="danger" @click="deleteDetail">删除</el-button> <el-button v-if="id" type="danger" @click="deleteDetail">删除</el-button>
</div> </div>
</template>
</Mask>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {onMounted, ref} from 'vue' import {onMounted, ref} from 'vue'
import {post} from '@/utils/request.ts' import {post} from '@/utils/request.ts'
import CardDefault from '@/components/registration/CardDefault.vue' import CardDefault from '@/components/registration/CardDefault.vue'
import {ElMessage} from "element-plus"; import {ElMessage} from "element-plus";
import Mask from "@/components/common/Mask.vue";
// //
interface Doctor { interface Doctor {
@ -103,9 +119,11 @@ const rules = ref<any>({
{required: true, message: '请输入规格', trigger: 'blur'}, {required: true, message: '请输入规格', trigger: 'blur'},
], ],
}) })
const isShow = ref(false)
const emit = defineEmits(['close']) const emit = defineEmits(['close'])
const close = () => { const close = () => {
emit('close', false) isShow.value = false
emit('close')
} }
const id = props.id const id = props.id
const save = () => { const save = () => {
@ -147,13 +165,16 @@ const socialCard: any = ref({
payInfo: {}, payInfo: {},
lastUse: null lastUse: null
}) })
onMounted(() => { const init = () => {
isShow.value = true
edit_data.value.organizationDoctorId = props.id
if (id) { if (id) {
post('registration/getById', {id}).then((res: any) => { post('registration/getById', {id}).then((res: any) => {
edit_data.value = res edit_data.value = res
}) })
} }
}) }
defineExpose({init})
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.title { .title {
@ -165,8 +186,10 @@ onMounted(() => {
} }
.bottom_btn { .bottom_btn {
right: 0; height: 100%;
position: absolute; display: flex;
bottom: 0; justify-content: flex-end;
align-items: center;
padding: 0 24px;
} }
</style> </style>

View File

@ -1,61 +1,65 @@
<template> <template>
<div> <Mask :is-show="isShow" @close="close" :title="props.id?'项目编辑':'项目新增'" :show-footer="true">
<div class="header" style="width: 100%;display: flex;justify-content: center;margin-bottom: 10px"> <div style="padding: 24px">
<el-button type="primary" style="margin-top:10px" round class="btn" @click="openCreateSearch" <div class="header" style="width: 100%;display: flex;justify-content: center;margin-bottom: 10px">
plain> <el-button type="primary" style="margin-top:10px" round class="btn" @click="openCreateSearch"
一键建档 plain>
</el-button> 一键建档
</el-button>
</div>
<el-form :model="form" label-width="auto">
<el-descriptions
:column="3"
direction="vertical"
border
>
<el-descriptions-item label="项目名称">
<el-form-item>
<el-input v-model="form.itemName"/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="单位">
<el-form-item>
<el-input v-model.number="form.unit" min="0">
<template #append></template>
</el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="医保码">
<el-form-item>
<el-input v-model="form.itemSocialCode"/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="原价">
<el-form-item>
<el-input v-model="form.purchaseUnitPrice">
<template #append>
<el-button text @click="imageURL"></el-button>
</template>
</el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="售价">
<el-form-item>
<el-input v-model="form.unitPrice">
<template #append>
<el-button type="text" @click="imageURL"></el-button>
</template>
</el-input>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
</el-form>
</div> </div>
<el-form :model="form" label-width="auto"> <template #footer>
<el-descriptions <div class="bottom">
:column="3"
direction="vertical"
border
>
<el-descriptions-item label="项目名称">
<el-form-item>
<el-input v-model="form.itemName"/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="单位">
<el-form-item>
<el-input v-model.number="form.unit" min="0">
<template #append></template>
</el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="医保码">
<el-form-item>
<el-input v-model="form.itemSocialCode"/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="原价">
<el-form-item>
<el-input v-model="form.purchaseUnitPrice">
<template #append>
<el-button text @click="imageURL"></el-button>
</template>
</el-input>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label="售价">
<el-form-item>
<el-input v-model="form.unitPrice">
<template #append>
<el-button type="text" @click="imageURL"></el-button>
</template>
</el-input>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
<div class="btn-group">
<el-button type="primary" @click="save()">保存</el-button> <el-button type="primary" @click="save()">保存</el-button>
<el-button @click="close">取消</el-button> <el-button @click="close">取消</el-button>
<el-button v-if="props.id" @click="deleteDetail" type="danger">删除</el-button> <el-button v-if="props.id" @click="deleteDetail" type="danger">删除</el-button>
</div> </div>
</el-form> </template>
</Mask>
</div>
<Search ref="createSearchRef" @confirm="createConfirm"/> <Search ref="createSearchRef" @confirm="createConfirm"/>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -63,6 +67,7 @@ import {defineProps, defineEmits, ref, nextTick, onMounted} from 'vue'
import {post} from "@/utils/request.ts"; import {post} from "@/utils/request.ts";
import Search from "./Search.vue"; import Search from "./Search.vue";
import {ElMessage} from "element-plus"; import {ElMessage} from "element-plus";
import Mask from "@/components/common/Mask.vue";
const props = defineProps({ const props = defineProps({
id: { id: {
@ -85,8 +90,10 @@ const form = ref<any>({
unitPrice: "", // unitPrice: "", //
purchaseUnitPrice: "" // purchaseUnitPrice: "" //
}) })
const isShow = ref<any>(false)
const emit = defineEmits(['close']) const emit = defineEmits(['close'])
const close = () => { const close = () => {
isShow.value = false
form.value = { form.value = {
itemName: "", // itemName: "", //
itemSocialCode: "", // itemSocialCode: "", //
@ -144,17 +151,24 @@ const deleteDetail = () => {
} }
onMounted(() => { onMounted(() => {
if (id) {
post("item/getItemById", {id}).then((res: any) => { })
const init = () => {
isShow.value = true
if (props.id) {
post("item/getItemById", {id:props.id}).then((res: any) => {
form.value = res form.value = res
}) })
} }
}) }
defineExpose({init})
</script> </script>
<style scoped> <style scoped>
.btn-group { .bottom {
height: 100%;
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
margin-top: 20px; align-items: center;
padding: 0 24px;
} }
</style> </style>

View File

@ -1,7 +1,7 @@
<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"> <div style="padding: 24px">
<el-form :model="userInfo" label-width="auto" :rules="rules" ref="ruleFormRef"> <el-form :model="userInfo" label-width="auto" :rules="rules" ref="ruleFormRef" style="width: 100%;height: 100%">
<el-descriptions <el-descriptions
title="基本信息" title="基本信息"
:column="3" :column="3"

View File

@ -11,7 +11,7 @@
<li :class="isShowNum==index?'active':''" v-for="(item, index) in roleList" :key="index" <li :class="isShowNum==index?'active':''" v-for="(item, index) in roleList" :key="index"
@click="isShowNum=index"> @click="isShowNum=index">
<span class="name" :class="isShowNum==index?'active_name':''">{{ item.name }}</span> <span class="name" :class="isShowNum==index?'active_name':''">{{ item.name }}</span>
<span class="btn" :class="isShowNum==index?'active_btn':''" @click="isShow=true">挂号</span> <span class="btn" :class="isShowNum==index?'active_btn':''" @click="openDialog(item)">挂号</span>
</li> </li>
</ul> </ul>
</div> </div>
@ -30,7 +30,9 @@
/> />
</div> </div>
<div class="list"> <div class="list">
<List :patientList="patientList" @rowClick="rowClick"></List> <el-scrollbar style="height: 100%">
<List :patientList="patientList" @rowClick="rowClick"></List>
</el-scrollbar>
</div> </div>
</div> </div>
<div class="bottom"> <div class="bottom">
@ -47,13 +49,11 @@
</div> </div>
</div> </div>
</div> </div>
<Mask :is-show="isShow" width="800" title="挂号" @close="close"> <Edit :id="id" ref="editRef" :doctorList="roleList" @close=" getPatientList"></Edit>
<Edit :id="id" :doctorList="roleList" @close="close"></Edit>
</Mask>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {onMounted, ref} from 'vue' import {nextTick, onMounted, ref} from 'vue'
import Picker from "@/components/Picker.vue"; import Picker from "@/components/Picker.vue";
import Mask from "@/components/common/Mask.vue"; import Mask from "@/components/common/Mask.vue";
import Edit from "@/components/registration/Edit.vue"; import Edit from "@/components/registration/Edit.vue";
@ -89,6 +89,7 @@ const getPatientList = () => {
endDate: selectedDate.value[1] endDate: selectedDate.value[1]
}).then((res: any) => { }).then((res: any) => {
patientList.value = res.list patientList.value = res.list
total.value = res.total_count
}) })
} }
const total = ref(0) const total = ref(0)
@ -100,12 +101,15 @@ const changePage = (page: any) => {
} }
const id = ref('') const id = ref('')
const rowClick = (row: any) => { const rowClick = (row: any) => {
isShow.value = true
id.value = row.id id.value = row.id
openDialog(row)
} }
const close = () => { const editRef = ref<any>('')
isShow.value = false const openDialog = (item: any) => {
getPatientList() id.value = item.id
nextTick(()=>{
editRef.value?.init()
})
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">

View File

@ -19,7 +19,7 @@
<div class="title-btn"> <div class="title-btn">
<el-button type="primary" @click="initData()">查询</el-button> <el-button type="primary" @click="initData()">查询</el-button>
<el-button type="primary" @click="resetSearch">重置</el-button> <el-button type="primary" @click="resetSearch">重置</el-button>
<el-button type="primary" :icon="Plus" @click="isShow=true">新建项目</el-button> <el-button type="primary" :icon="Plus" @click="openDialog">新建项目</el-button>
<el-button type="primary" @click="openSetMenu">组套</el-button> <el-button type="primary" @click="openSetMenu">组套</el-button>
</div> </div>
</div> </div>
@ -53,9 +53,7 @@
</div> </div>
</div> </div>
</div> </div>
<Mask :is-show="isShow" @close="initData()" :title="id?'项目编辑':'项目新增'"> <ItemEdit :id="id" ref="ItemEditRef" @close="initData()"></ItemEdit>
<ItemEdit :id="id" ref="ItemEditRef" @close="initData()"></ItemEdit>
</Mask>
<SetMenu ref="setMenuRef"></SetMenu> <SetMenu ref="setMenuRef"></SetMenu>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -117,11 +115,7 @@ const isShow = ref(false)
const ItemEditRef = ref<any>('') const ItemEditRef = ref<any>('')
const id = ref('') const id = ref('')
const rowClick = ((row: any) => { const rowClick = ((row: any) => {
isShow.value = true openDialog()
id.value = row.id
nextTick(() => {
ItemEditRef.value.init(row.id)
})
}) })
const tableData = ref<any>([]) const tableData = ref<any>([])
@ -153,6 +147,11 @@ const resetSearch = () => {
search.value = {} search.value = {}
initData() initData()
} }
const openDialog = () => {
nextTick(() => {
ItemEditRef.value?.init()
})
}
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.container-wrapper { .container-wrapper {

View File

@ -87,7 +87,7 @@ const isShow = ref(false)
const tableData = ref<any>([]); const tableData = ref<any>([]);
const memberEditRef = ref<any>(null) const memberEditRef = ref<any>(null)
const rowClick = (row: any) => { const rowClick = (row: any) => {
id.value = row.memberInfo.id id.value = String(row.memberInfo.id)
openDialog() openDialog()
} }
const openDialog= () => { const openDialog= () => {
@ -136,11 +136,6 @@ const init = (() => {
list() list()
}) })
}) })
const deleteDoctor = (row: any) => {
post('organization/member/list ', {id}).then((res: any) => {
init()
})
}
const sectionList = ref<any>([]); const sectionList = ref<any>([]);
const list = () => { const list = () => {
post('organization/section/allList').then((res: any) => { post('organization/section/allList').then((res: any) => {