From b660ad87e5423f43513b1845218d03ab0c0070be Mon Sep 17 00:00:00 2001 From: lichuanyang <1176537920@qq.com> Date: Fri, 13 Sep 2024 13:40:56 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=8A=E6=96=AD=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../diagnosisTemplate/index.ts | 13 +- .../DiagnosisTemplateForm.vue | 193 +++++++++++++----- .../diagnosisTemplate/index.vue | 89 ++++++-- 3 files changed, 224 insertions(+), 71 deletions(-) diff --git a/src/api/applyregistration/diagnosisTemplate/index.ts b/src/api/applyregistration/diagnosisTemplate/index.ts index c296ad3c..86305456 100644 --- a/src/api/applyregistration/diagnosisTemplate/index.ts +++ b/src/api/applyregistration/diagnosisTemplate/index.ts @@ -6,17 +6,20 @@ import request from '@/config/axios' */ export const DiagnosisTemplateApi = { /* 测试方法 */ - getOrgList: async () => { + getOrgList: async () => { return await request.get({ url: `/org/org/getlist` }) }, - getDoctorList: async () => { + getDoctorList: async () => { return await request.get({ url: `/doctor/getlist` }) }, - getPage: async (params: any) => { + getPage: async (params: any) => { return await request.get({ url: `/system/reporttemplate/page`, params }) }, - getAllList: async () => { - return await request.get({ url: `/system/reporttemplate/getlist` }) + getRootTree: async () => { + return await request.get({ url: `/system/reporttemplate/getroot` }) + }, + hasChildren: async (id: any) => { + return await request.get({ url: `/system/reporttemplate/hasChildren?id=`+ id }) }, get: async (id: any) => { return await request.get({ url: `/system/reporttemplate/get?id=`+ id }) diff --git a/src/views/applyregistration/diagnosisTemplate/DiagnosisTemplateForm.vue b/src/views/applyregistration/diagnosisTemplate/DiagnosisTemplateForm.vue index 76a13be1..6cd0506b 100644 --- a/src/views/applyregistration/diagnosisTemplate/DiagnosisTemplateForm.vue +++ b/src/views/applyregistration/diagnosisTemplate/DiagnosisTemplateForm.vue @@ -13,13 +13,15 @@ > - + - 节点 + +
节点
+
诊断模版
@@ -27,11 +29,31 @@
+ + + + + +
根节点
+
+ +
普通节点
+
+
+
+
+
- 公有 + +
公有
+
私有
@@ -91,22 +113,57 @@
- - + - - + /> + + + + + + + @@ -175,6 +232,8 @@ const emit = defineEmits(['success']) /** 组件引用 **/ const formRef = ref() +const parentTreeRef = ref() +const parentTreeRef_root = ref() /** 数据结构 **/ const message = useMessage() @@ -186,7 +245,7 @@ const formType = ref('') const orgList = ref([]) const doctorList = ref([]) const templateList = ref([]) -const parentTemplateInfo = ref() +const rootType = ref('') const templateLimitsType = ref('2') const dataType_disabled = ref(false) //表单核心 @@ -221,50 +280,70 @@ const resetForm = () => { updateTime: undefined, orgId: '' } - parentTemplateInfo.value = undefined + rootType.value = '' templateLimitsType.value = '2' formRef.value?.clearValidate() } const open = async (type: string, id?: number) => { - dialogVisible.value = true - dialogTitle.value = t('action.' + type) - formType.value = type - resetForm() - orgList.value = await DiagnosisTemplateApi.getOrgList() - doctorList.value = await DiagnosisTemplateApi.getDoctorList() - templateList.value = await DiagnosisTemplateApi.getAllList() - if (id) { + try { formLoading.value = true - try { - const data = await DiagnosisTemplateApi.get(id) - formData.value = data - if (data && !data.privateDoctorId) templateLimitsType.value = '1' - parentTemplateInfo.value = templateList.value?.find((item) => { - return item?.id && formData.value?.pid && item.id == formData.value.pid + dialogVisible.value = true + dialogTitle.value = t('action.' + type) + formType.value = type + resetForm() + orgList.value = await DiagnosisTemplateApi.getOrgList() + doctorList.value = await DiagnosisTemplateApi.getDoctorList() + const rootTree = await DiagnosisTemplateApi.getRootTree() + if (rootTree && Array.isArray(rootTree) && rootTree.length > 0) { + rootTree.forEach((item) => { + if (item) item.isFirstRoot = true }) - } finally { - formLoading.value = false } + templateList.value = rootTree + if (id) { + try { + const data = await DiagnosisTemplateApi.get(id) + formData.value = data + if (data && !data.privateDoctorId) templateLimitsType.value = '1' + if (data && data.dataType && data.dataType.trim() == '1') { + if (data.pid && data.pid.trim() == '0') rootType.value = '1' + else rootType.value = '0' + } + //老代码 + //if (data && data.dataType && data.dataType.trim() == '0') + //parentTemplateInfo.value = templateList.value?.find((item) => { + // return item?.id && formData.value?.pid && item.id == formData.value.pid + //}) + } finally { + } + } + dataType_disabled.value = true && !!formData.value?.id + } finally { + formLoading.value = false } - dataType_disabled.value = true && !!formData.value?.id } /****** 可参考内容 ******/ /** 组件事件 **/ -const pid_change = async (value: any) => { - formData.value.pid = value ? value.id : '' -} - const dataType_change = () => { + formData.value.pid = '' if (formData.value?.dataType == '1') { + rootType.value = '0' templateLimitsType.value = '2' formData.value.privateDoctorId = '' - formData.value.pid = '0' formData.value.examDescription = '' formData.value.diagResults = '' } else if (formData.value?.dataType == '0') { + rootType.value = '' + } +} + +const root_change = () => { + if (rootType.value == '0') { formData.value.pid = '' + } else if (rootType.value == '1') { + formData.value.pid = '0' } } @@ -286,22 +365,40 @@ const submitForm = async () => { return } if (data.dataType && data.dataType == '0') { - if (templateLimitsType.value == '2' && !data.privateDoctorId) { - await message.alertWarning('请选择医生') + if (!data.pid) { + await message.alertWarning('请选择上级节点') return } - if (!data.pid || !parentTemplateInfo.value) { - await message.alertWarning('请选择父节点') + if (templateLimitsType.value == '2' && !data.privateDoctorId) { + await message.alertWarning('请选择医生') return } if (templateLimitsType.value == '1') { data.privateDoctorId = '' } - if (parentTemplateInfo.value) { - data.examPart = parentTemplateInfo.value.examPart + if ( + parentTreeRef.value && + Array.isArray(parentTreeRef.value.getCheckedNodes()) && + parentTreeRef.value.getCheckedNodes().length > 0 + ) { + data.examPart = parentTreeRef.value.getCheckedNodes()[0].examPart } } else if (data.dataType && data.dataType == '1') { - data.examPart = data.templateName + if (rootType.value == '0') { + if (!data.pid) { + await message.alertWarning('请选择上级节点') + return + } + if ( + parentTreeRef_root.value && + Array.isArray(parentTreeRef_root.value.getCheckedNodes()) && + parentTreeRef_root.value.getCheckedNodes().length > 0 + ) { + data.examPart = parentTreeRef_root.value.getCheckedNodes()[0].examPart + } + } else if (rootType.value == '1') { + data.examPart = data.templateName + } } //更新 if (formType.value === 'create') { diff --git a/src/views/applyregistration/diagnosisTemplate/index.vue b/src/views/applyregistration/diagnosisTemplate/index.vue index 225b63c0..db32c6fe 100644 --- a/src/views/applyregistration/diagnosisTemplate/index.vue +++ b/src/views/applyregistration/diagnosisTemplate/index.vue @@ -8,7 +8,7 @@ label-width="78px" label-position="right" label-suffix="" - class="-mb-15px" + class="-mb-8px" > @@ -22,15 +22,34 @@ - - - 全部 - 公共 - 私有 + + + + + + + + + + + + 全部 + 公共 + 私有 - + + + - - - - + + + + + + + +