Compare commits

...

2 Commits

Author SHA1 Message Date
LiJianZhao 8d1da786ca Merge branch 'main' of ssh://git.jizhiweb.cn:2222/clinic-v2/web
# Conflicts:
#	src/assets/config/apiConfig.ts
2025-05-08 11:47:52 +08:00
LiJianZhao 1e1e2e21cf dev 2025-05-08 11:47:33 +08:00
6 changed files with 90 additions and 106 deletions

View File

@ -12,4 +12,11 @@ export enum apiConfig{
"RegistrationDetail" ="medical/record/getDetailByRegisId",//详情 "RegistrationDetail" ="medical/record/getDetailByRegisId",//详情
"RegistrationList" ="registration/getListByType",//患者列表 "RegistrationList" ="registration/getListByType",//患者列表
/**
*
*/
"OrganizationMemberSave"="organization/member/save",//添加 编辑成员信息
"organizationMemberSearch"="organization/member/search",//搜索成员
"OrganizationSectionAllList"="organization/section/allList",//获取所有科室列表
"OrganizationSectionListByMemberId"="organization/section/listByMemberId",//获取当前成员所属科室列表
} }

View File

@ -55,9 +55,10 @@
<el-select <el-select
v-model="edit_data.organizationDoctorId" v-model="edit_data.organizationDoctorId"
placeholder="请选择医生" placeholder="请选择医生"
@change="getSectionList"
> >
<el-option <el-option
v-for="item in props.doctorList" v-for="item in doctorList"
:key="item.id" :key="item.id"
:label="item.name" :label="item.name"
:value="item.id" :value="item.id"
@ -151,7 +152,7 @@
<div class="bottom-right"> <div class="bottom-right">
<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&&edit_data.status==1" type="danger" @click="deleteDetail">退号</el-button> <el-button v-if="edit_data.status==1" type="danger" @click="deleteDetail">退号</el-button>
</div> </div>
</div> </div>
</template> </template>
@ -159,7 +160,7 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {nextTick, onMounted, ref} from 'vue' import {nextTick, onMounted, ref, watch} 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, ElMessageBox} from "element-plus"; import {ElMessage, ElMessageBox} from "element-plus";
@ -168,6 +169,7 @@ import psnCertTypes from "@/assets/config/directory/psnCertTypes.json"
import {getKey} from "@/utils/discrotyUtil.ts"; import {getKey} from "@/utils/discrotyUtil.ts";
import insutypes from "@/assets/config/directory/insutypes.json" import insutypes from "@/assets/config/directory/insutypes.json"
import depts from "@/assets/config/directory/depts.json"; import depts from "@/assets/config/directory/depts.json";
import {apiConfig} from "@/assets/config/apiConfig.ts";
// //
@ -176,21 +178,6 @@ interface Doctor {
name: string; // name: string; //
} }
// Props
const props = defineProps({
id: {
type: Number,
default: ''
},
doctorList: {
type: Array as () => Doctor[], //
default: () => []
},
doctorId: {
type: String,
default: ''
}
})
const certTypeList = ref<any>(Object.entries(psnCertTypes).map(([id, name]) => ({id, name}))); const certTypeList = ref<any>(Object.entries(psnCertTypes).map(([id, name]) => ({id, name})));
const edit_data = ref<any>({}) const edit_data = ref<any>({})
const rules = ref<any>({ const rules = ref<any>({
@ -240,7 +227,7 @@ const save = () => {
} }
form.value.validate((v: any) => { form.value.validate((v: any) => {
if (v) { if (v) {
if (id.value) { if (edit_data.value.id) {
post('registration/edit', { post('registration/edit', {
data: data, mdtrtCertNo: socialCard.value.mdtrtCertNo, data: data, mdtrtCertNo: socialCard.value.mdtrtCertNo,
mdtrtCertType: socialCard.value.mdtrtCertType mdtrtCertType: socialCard.value.mdtrtCertType
@ -264,28 +251,36 @@ const save = () => {
} }
const deleteDetail = () => { const deleteDetail = () => {
post('registration/delete', {id: id.value}).then(() => { post('registration/delete', {id: edit_data.value.id}).then(() => {
ElMessage.success('删除成功') ElMessage.success('删除成功')
close() close()
}) })
} }
const doctorList = ref<any>([])
const getDoctorList = () => {
let query = {
role: 1
}
post('organization/member/search', {query: query}).then((res: any) => {
doctorList.value = res
})
}
const socialCard: any = ref({ const socialCard: any = ref({
data: null, data: null,
payInfo: {}, payInfo: {},
lastUse: null lastUse: null
}) })
const id = ref<any>(null) const init = (doctorId: any,id: any) => {
const init = () => {
isShow.value = true isShow.value = true
list() edit_data.value.organizationDoctorId = doctorId
edit_data.value.organizationDoctorId = props.doctorId if (id) {
id.value = props.id post('registration/getById', {id: id}).then((res: any) => {
if (id.value) {
post('registration/getById', {id: id.value}).then((res: any) => {
edit_data.value = res edit_data.value = res
}) })
} }
getSectionList()
getDoctorList()
} }
const isShowCard = ref<any>(true) const isShowCard = ref<any>(true)
const tableData = ref<any>([]) const tableData = ref<any>([])
@ -300,7 +295,6 @@ const socialCardUpdate = (e: any) => {
edit_data.value.certNo = e.data.baseinfo.certno edit_data.value.certNo = e.data.baseinfo.certno
edit_data.value.age = Math.floor(e.data.baseinfo.age) edit_data.value.age = Math.floor(e.data.baseinfo.age)
tableData.value = e.data.insuinfo tableData.value = e.data.insuinfo
edit_data.value.organizationDoctorId = props.doctorId
} }
loading.value = false loading.value = false
} }
@ -330,8 +324,9 @@ const hide = () => {
showBtn.value = false showBtn.value = false
} }
const sectionList = ref<any>([]) const sectionList = ref<any>([])
const list = () => { const getSectionList = () => {
post('organization/section/allList').then((res: any) => { debugger
post(apiConfig.OrganizationSectionListByMemberId,{memberId:edit_data.value.organizationDoctorId}).then((res: any) => {
sectionList.value = res sectionList.value = res
}) })
} }

View File

@ -40,10 +40,10 @@
placeholder="选择性别" placeholder="选择性别"
> >
<el-option <el-option
v-for="item in ['男', '女']" v-for="item in ganderOptions"
:key="item" :key="item.value"
:label="item" :label="item.label"
:value="item" :value="item.value"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -82,8 +82,9 @@
<el-descriptions-item label="科室"> <el-descriptions-item label="科室">
<el-form-item> <el-form-item>
<el-select <el-select
v-model="memberInfo.sectionId" v-model="sectionIds"
placeholder="选择科室" placeholder="选择科室"
multiple
> >
<el-option <el-option
v-for="item in sectionList" v-for="item in sectionList"
@ -118,7 +119,7 @@
<div class="bottom"> <div class="bottom">
<el-button type="primary" @click="save()">保存</el-button> <el-button type="primary" @click="save()">保存</el-button>
<el-button @click="exit">取消</el-button> <el-button @click="exit">取消</el-button>
<el-button v-if="props.id" type="danger" @click="deleteDetail">删除</el-button> <el-button v-if="memberInfo.id" type="danger" @click="deleteDetail">删除</el-button>
</div> </div>
</template> </template>
</Mask> </Mask>
@ -131,13 +132,18 @@ import {loadConfig} from "@/utils/config.ts";
import UpLoad from "@/components/UpLoad.vue"; import UpLoad from "@/components/UpLoad.vue";
import {ElMessage} from 'element-plus' import {ElMessage} from 'element-plus'
import Mask from "@/components/common/Mask.vue"; import Mask from "@/components/common/Mask.vue";
import {apiConfig} from "@/assets/config/apiConfig.ts";
const ganderOptions = [
{
label: '男',
value: '1'
},
{
label: '女',
value: '2'
}
const props = defineProps({ ]
id: {
type: String,
default: ''
},
})
const roleList = [ const roleList = [
{ {
value: 1, value: 1,
@ -203,41 +209,38 @@ const emit = defineEmits(['close'])
const exit = () => { const exit = () => {
memberInfo.value = {} memberInfo.value = {}
userInfo.value = {} userInfo.value = {}
sectionIds.value = []
isShow.value = false isShow.value = false
emit('close') emit('close')
} }
const sectionIds = ref<any>([])
const ruleFormRef = ref<any>('') const ruleFormRef = ref<any>('')
const save = () => { const save = () => {
let form = { let form = {
memberInfo: memberInfo.value, memberInfo: memberInfo.value,
userInfo: userInfo.value, userInfo: userInfo.value,
sectionIds: sectionIds.value
} }
ruleFormRef.value.validate((valid: any) => { ruleFormRef.value.validate((valid: any) => {
if (valid) { if (valid) {
if (props.id) { post(apiConfig.OrganizationMemberSave, {data: form}).then(() => {
post("organization/member/edit", {data: form}).then(() => { exit()
exit() ElMessage.success('已修改')
ElMessage.success('已修改') })
})
} else {
post("organization/member/add", {data: form}).then(() => {
exit()
ElMessage.success('已添加')
})
}
} }
}) })
} }
const uploadRef = ref<any>('') const uploadRef = ref<any>('')
const getById = () => { const getById = (id:any) => {
memberInfo.value = {} memberInfo.value = {}
userInfo.value = {} userInfo.value = {}
post("organization/member/getById", {id: props.id}).then((res: any) => { post("organization/member/getById", {id: id}).then((res: any) => {
memberInfo.value = res.memberInfo memberInfo.value = res.memberInfo
if (res.userInfo) { if (res.userInfo) {
userInfo.value = res.userInfo userInfo.value = res.userInfo
} }
sectionIds.value = res.sectionIds
if (memberInfo.value.electronicSignature) { if (memberInfo.value.electronicSignature) {
uploadRef.value?.getImageUrl(memberInfo.value.electronicSignature) uploadRef.value?.getImageUrl(memberInfo.value.electronicSignature)
} }
@ -257,15 +260,15 @@ const list = () => {
}) })
} }
const deleteDetail = () => { const deleteDetail = () => {
post("organization/member/delete", {id: props.id}).then(() => { post("organization/member/delete", {id: memberInfo.value.id}).then(() => {
exit() exit()
ElMessage.error('已删除'); ElMessage.error('已删除');
}) })
} }
const init = () => { const init = (id: any) => {
isShow.value = true isShow.value = true
if (props.id) { if (id) {
getById() getById(id)
} }
} }
defineExpose({init}) defineExpose({init})

View File

@ -1,4 +1,4 @@
<template> <template xmlns="http://www.w3.org/1999/html">
<div class="container"> <div class="container">
<div class="left"> <div class="left">
<chargeQueue @clickItem="clickItem" ref="chargeQueueRef"></ChargeQueue> <chargeQueue @clickItem="clickItem" ref="chargeQueueRef"></ChargeQueue>
@ -26,14 +26,19 @@
</div> </div>
<div class="doctor"> <div class="doctor">
医生 医生
<el-cascader <el-select
v-model="formData.doctorId" v-model="formData.doctorId"
:options="sectionDoctorOption"
:props="props"
@change="handleChange" @change="handleChange"
clearable clearable
size="large" size="large">
/> <el-option
v-for="item in doctorList"
:key="item.id"
:label="item.name"
:value="item.id"
>
</el-option>
</el-select>
</div> </div>
@ -89,6 +94,7 @@ import {getKey} from "@/utils/discrotyUtil.ts";
import antys from "@/assets/config/directory/antys.json" import antys from "@/assets/config/directory/antys.json"
import RecordsLog from "@/components/charge/RecordsLog.vue"; import RecordsLog from "@/components/charge/RecordsLog.vue";
import PatientCard from "@/components/charge/PatientCard.vue"; import PatientCard from "@/components/charge/PatientCard.vue";
import {apiConfig} from "@/assets/config/apiConfig.ts";
const socialCard = ref<any>({payInfo: {}}) const socialCard = ref<any>({payInfo: {}})
const formData = ref<any>({ const formData = ref<any>({
@ -192,38 +198,13 @@ const handleChange = (value: any) => {
} }
const cardTypeList = ref<any>(Object.entries(psnCertTypes).map(([id, name]) => ({id, name}))) const cardTypeList = ref<any>(Object.entries(psnCertTypes).map(([id, name]) => ({id, name})))
const sectionList = ref<any>([])
const doctorList = ref<any>([]) const doctorList = ref<any>([])
const sectionDoctorOption = ref<any>('') const sectionDoctorOption = ref<any>('')
const list = () => { const list = () => {
post('organization/section/allList').then((res: any) => { post(apiConfig.organizationMemberSearch, {query: {role: 1}}).then((res: any) => {
sectionList.value = res
post('organization/member/search', {query: {role: 1}}).then((res: any) => {
doctorList.value = res doctorList.value = res
nextTick(() => {
generateOptions()
})
}) })
})
} }
const generateOptions = () => {
if (!sectionList.value || !doctorList.value) return [];
sectionDoctorOption.value = sectionList.value.map((section: any) => {
console.log(section)
//
const doctors = doctorList.value.filter((doc: any) => doc.sectionId === section.id);
console.log(doctors)
return {
value: section.id,
label: section.name,
children: doctors.map((doc: any) => ({
value: doc.id,
label: doc.name,
})),
};
});
};
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">

View File

@ -19,7 +19,7 @@
<li v-for="(item, index) in roleList" :key="index" <li v-for="(item, index) in roleList" :key="index"
@click="openDialog(item,index)" :class="{active:isShowNum==index}" > @click="openDialog(item,index)" :class="{active:isShowNum==index}" >
<span class="name">{{ item.name }}</span> <span class="name">{{ item.name }}</span>
<span class="section_name">{{ item.sectionName }}</span> <span class="section_name">{{ item.sectionNames }}</span>
<span class="btn">挂号</span> <span class="btn">挂号</span>
</li> </li>
</ul> </ul>
@ -63,7 +63,7 @@
</Panel> </Panel>
</div> </div>
</div> </div>
<Edit ref="editRef" :id="id" :doctor-id="doctorId" :doctorList="roleList" @close="getPatientList"></Edit> <Edit ref="editRef" @close="getPatientList"></Edit>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -76,6 +76,7 @@ import {post} from "@/utils/request";
import {formatDate, getToday, formatDateArray} from "@/utils/dateUtils.ts"; import {formatDate, getToday, formatDateArray} from "@/utils/dateUtils.ts";
import Calendar from "@/components/common/Calendar.vue"; import Calendar from "@/components/common/Calendar.vue";
import Panel from "@/components/common/Panel.vue"; import Panel from "@/components/common/Panel.vue";
import {apiConfig} from "@/assets/config/apiConfig.ts";
const isShowNum = ref(-1) const isShowNum = ref(-1)
const roleList = ref<any>([]) const roleList = ref<any>([])
@ -91,7 +92,7 @@ const initDoctor = () => {
keyword: keyword.value, keyword: keyword.value,
role: 1 role: 1
} }
post('organization/member/search', {query: query}).then((res: any) => { post(apiConfig.organizationMemberSearch, {query: query}).then((res: any) => {
roleList.value = res roleList.value = res
}) })
} }
@ -121,19 +122,17 @@ const changePage = (page: any) => {
getPatientList() getPatientList()
} }
const id = ref<any>('') const id = ref<any>('')
const doctorId = ref<any>('')
const rowClick = (row: any) => { const rowClick = (row: any) => {
id.value = row.id id.value = row.id
nextTick(() => { nextTick(() => {
editRef.value?.init() editRef.value?.init(row.organizationDoctorId,row.id)
}) })
} }
const editRef = ref<any>('') const editRef = ref<any>('')
const openDialog = (item: any,index: any) => { const openDialog = (item: any,index: any) => {
isShowNum.value=index isShowNum.value=index
doctorId.value = item.id
nextTick(() => { nextTick(() => {
editRef.value?.init() editRef.value?.init(item.id,null)
}) })
} }
const close = () => { const close = () => {

View File

@ -27,7 +27,7 @@
<div class="title-btn"> <div class="title-btn">
<el-button type="primary" @click="init()">查询</el-button> <el-button type="primary" @click="init()">查询</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="openDialog">新增</el-button> <el-button type="primary" :icon="Plus" @click="openDialog(null)">新增</el-button>
</div> </div>
</div> </div>
@ -72,7 +72,7 @@
/> />
</div> </div>
</div> </div>
<MemberEdit :id="id" ref="memberEditRef" @close="init()"></MemberEdit> <MemberEdit ref="memberEditRef" @close="init()"></MemberEdit>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -81,18 +81,17 @@ import MemberEdit from "@/components/settings/MemberEdit.vue";
import {post} from "@/utils/request.ts"; import {post} from "@/utils/request.ts";
import {formatDate} from "@/utils/dateUtils.ts"; import {formatDate} from "@/utils/dateUtils.ts";
import {Plus} from "@element-plus/icons-vue"; import {Plus} from "@element-plus/icons-vue";
import {apiConfig} from "@/assets/config/apiConfig.ts";
const id = ref<any>("")
const isShow = ref(false) 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 = String(row.memberInfo.id) openDialog(row.memberInfo.id)
openDialog()
} }
const openDialog= () => { const openDialog= (id:any) => {
nextTick(() => { nextTick(() => {
memberEditRef.value?.init() memberEditRef.value?.init(id)
}) })
} }
const roleList = [ const roleList = [
@ -138,7 +137,7 @@ const init = (() => {
}) })
const sectionList = ref<any>([]); const sectionList = ref<any>([]);
const list = () => { const list = () => {
post('organization/section/allList').then((res: any) => { post(apiConfig.OrganizationSectionAllList).then((res: any) => {
sectionList.value = res sectionList.value = res
}) })
} }