diff --git a/src/api/platform/system/controller/region.ts b/src/api/platform/system/controller/region.ts index 0848a0e..0736a59 100644 --- a/src/api/platform/system/controller/region.ts +++ b/src/api/platform/system/controller/region.ts @@ -22,9 +22,16 @@ export const listRegion = (params?: Partial) => { return defHttp.get({ url: url, params }); }; -export const addRegion =(params:Partial) => defHttp.post({ url: Api.add,data:params }); +export const listRegionCascade = (params?: Partial) => defHttp.get({ url: Api.lazyList, params }).then(res => { + return res.map(item => { + const { children, ...result } = item; + return { ...result, isLeaf: !!!children }; + }); +}); -export const editRegion =(params:Partial) => defHttp.put({ url: Api.edit,data:params }); +export const addRegion = (params:Partial) => defHttp.post({ url: Api.add,data:params }); + +export const editRegion = (params:Partial) => defHttp.put({ url: Api.edit,data:params }); export const getRegion = (id: string) => defHttp.get>({ url: `${Api.get}/${id}` }); diff --git a/src/components/Form/src/BasicForm.vue b/src/components/Form/src/BasicForm.vue index d396c77..7608663 100644 --- a/src/components/Form/src/BasicForm.vue +++ b/src/components/Form/src/BasicForm.vue @@ -56,7 +56,6 @@ import { useDebounceFn } from '@vueuse/core'; import { basicProps } from './props'; import { useDesign } from '/@/hooks/web/useDesign'; - import { cloneDeep } from 'lodash-es'; export default defineComponent({ name: 'BasicForm', @@ -127,11 +126,9 @@ } } if (unref(getProps).showAdvancedButton) { - return cloneDeep( - schemas.filter((schema) => schema.component !== 'Divider') as FormSchema[], - ); + return schemas.filter((schema) => schema.component !== 'Divider') as FormSchema[]; } else { - return cloneDeep(schemas as FormSchema[]); + return schemas as FormSchema[]; } }); diff --git a/src/components/Form/src/components/ApiCascader.vue b/src/components/Form/src/components/ApiCascader.vue index d7565e2..7e869f7 100644 --- a/src/components/Form/src/components/ApiCascader.vue +++ b/src/components/Form/src/components/ApiCascader.vue @@ -95,10 +95,10 @@ if (next) { const value = next[valueField]; const item = { + isLeaf: isLeaf && typeof isLeaf === 'function' ? isLeaf(next) : false, ...omit(next, [labelField, valueField]), label: next[labelField], value: numberToString ? `${value}` : value, - isLeaf: isLeaf && typeof isLeaf === 'function' ? isLeaf(next) : false, }; const children = Reflect.get(next, childrenField); if (children) { diff --git a/src/views/common/doctor/DoctorModal.vue b/src/views/common/doctor/DoctorModal.vue index 6e9826b..c73498f 100644 --- a/src/views/common/doctor/DoctorModal.vue +++ b/src/views/common/doctor/DoctorModal.vue @@ -17,14 +17,16 @@ import { ref, unref } from 'vue'; import { BasicForm, useForm } from '/@/components/Form'; import { formSchema } from './doctor.data'; - import {addDoctor, delDoctor, getDoctor, editDoctor} from '/@/api/platform/common/controller/doctor'; + import { addDoctor, getDoctor, editDoctor} from '/@/api/platform/common/controller/doctor'; import { BasicModal, ModalProps, useModalInner } from '/@/components/Modal'; + import { listHospital } from '/@/api/platform/common/controller/hospital'; + import { listOrg } from '/@/api/platform/common/controller/org'; /** 通用变量统一声明区域 */ const tag = ref>(''); /** https://v3.cn.vuejs.org/api/options-data.html#emits */ const emit = defineEmits(['success', 'register']); - const [registerForm, { resetFields, setFieldsValue, validate, clearValidate, updateSchema }] = useForm({ + const [registerForm, { resetFields, setFieldsValue, validate, clearValidate, updateSchema, getFieldsValue }] = useForm({ labelWidth: 100, schemas: formSchema, showActionButtonGroup: false, @@ -48,6 +50,26 @@ await setFieldsValue(await getDoctor(id)); break; } + const model = getFieldsValue(); + await updateSchema([{ + field: 'orgType', + componentProps: { + onChange: (value: string) => { + setFieldsValue({ orgId: '' }); + updateSchema({ + field: 'orgId', + componentProps: { + api: ~~value == 1 ? listHospital : listOrg + } + }); + } + }, + }, { + field: 'orgId', + componentProps: { + api: ~~model?.orgType == 1 ? listHospital : listOrg + } + }]); // 尾部:设置处理后的最终配置数据 setModalProps(props); }); diff --git a/src/views/common/doctor/doctor.data.ts b/src/views/common/doctor/doctor.data.ts index cff0cb3..49b48f7 100644 --- a/src/views/common/doctor/doctor.data.ts +++ b/src/views/common/doctor/doctor.data.ts @@ -2,9 +2,6 @@ import { BasicColumn } from '/@/components/Table'; import { FormSchema } from '/@/components/Table'; import { h } from 'vue'; import { Tag } from 'ant-design-vue'; -import { listHospital } from '/@/api/platform/common/controller/hospital'; -import { listOrg } from '/@/api/platform/common/controller/org'; -import { listOffice } from '/@/api/platform/common/controller/office'; export const columns: BasicColumn[] = [ { @@ -193,17 +190,12 @@ export const formSchema: FormSchema[] = [ field: 'orgId', label: '所属组织', component: 'ApiSelect', - required: true, - renderComponentContent: ({ schema, values, model, field }) => { - const organType = model.orgType; - const dataApi = ~~organType === 1 ? listHospital : listOrg; - schema.componentProps = { - api: dataApi, - labelField: 'name', - valueField: 'id', - resultField: 'data' - }; - } + componentProps: { + resultField: 'data', + labelField: 'name', + valueField: 'id' + }, + required: true }, { field: 'status', diff --git a/src/views/common/hospital/index.vue b/src/views/common/hospital/index.vue index ebe24b5..3df90d2 100644 --- a/src/views/common/hospital/index.vue +++ b/src/views/common/hospital/index.vue @@ -4,9 +4,8 @@ @selection-change="handleSelectionChange" > diff --git a/src/views/common/office/index.vue b/src/views/common/office/index.vue index 3f8509d..8db20aa 100644 --- a/src/views/common/office/index.vue +++ b/src/views/common/office/index.vue @@ -4,9 +4,8 @@ @selection-change="handleSelectionChange" > diff --git a/src/views/common/org/index.vue b/src/views/common/org/index.vue index f4200d9..10ac72a 100644 --- a/src/views/common/org/index.vue +++ b/src/views/common/org/index.vue @@ -4,9 +4,8 @@ @selection-change="handleSelectionChange" >