|
@@ -1,8 +1,11 @@
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
|
-import type { VxeFormListeners, VxeFormProps } from 'vxe-pc-ui';
|
|
|
|
|
|
|
+import type { VxeFormInstance, VxeFormListeners, VxeFormProps } from 'vxe-pc-ui';
|
|
|
|
|
+
|
|
|
import { useForm } from 'alova/client';
|
|
import { useForm } from 'alova/client';
|
|
|
|
|
+import { pageDiagnoseTypeMethod, pageMedicineMethod } from '@/request/api/care.api';
|
|
|
import { appendPatientMethod } from '@/request/api/patient.api';
|
|
import { appendPatientMethod } from '@/request/api/patient.api';
|
|
|
import { message as Message } from 'ant-design-vue/es/components';
|
|
import { message as Message } from 'ant-design-vue/es/components';
|
|
|
|
|
+import RemoteSelect from '@/libs/v-select-page/RemoteSelect.vue';
|
|
|
|
|
|
|
|
interface FormModel {}
|
|
interface FormModel {}
|
|
|
|
|
|
|
@@ -22,6 +25,7 @@ const {
|
|
|
emits('destroy', true);
|
|
emits('destroy', true);
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+const formRef = ref<VxeFormInstance<FormModel>>();
|
|
|
const formProps = reactive<VxeFormProps<FormModel>>({
|
|
const formProps = reactive<VxeFormProps<FormModel>>({
|
|
|
titleWidth: 100,
|
|
titleWidth: 100,
|
|
|
titleAlign: 'right',
|
|
titleAlign: 'right',
|
|
@@ -45,17 +49,22 @@ const formProps = reactive<VxeFormProps<FormModel>>({
|
|
|
},
|
|
},
|
|
|
},*/
|
|
},*/
|
|
|
// { field: 'age', title: '年龄', span: 24, itemRender: { name: 'VxeNumberInput', props: { min: 0, controls: false }, } },
|
|
// { field: 'age', title: '年龄', span: 24, itemRender: { name: 'VxeNumberInput', props: { min: 0, controls: false }, } },
|
|
|
- { field: 'disease', title: '疾病', span: 24, itemRender: { name: 'VxeInput' } },
|
|
|
|
|
- { field: 'symptom', title: '证型', span: 24, itemRender: { name: 'VxeInput' } },
|
|
|
|
|
- { field: 'date', title: '就诊日期', span: 24, itemRender: { name: 'VxeDatePicker', props: { type: 'datetime' } } },
|
|
|
|
|
|
|
+ { field: 'disease', title: '疾病', span: 24, slots: { default: 'disease-remote-select' } },
|
|
|
|
|
+ { field: 'symptom', title: '证型', span: 24, slots: { default: 'symptom-remote-select' } },
|
|
|
|
|
+ {
|
|
|
|
|
+ field: 'date',
|
|
|
|
|
+ title: '就诊日期',
|
|
|
|
|
+ span: 24,
|
|
|
|
|
+ itemRender: { name: 'VxeDatePicker', props: { type: 'date', endDate: Date.now() } },
|
|
|
|
|
+ },
|
|
|
{ field: 'department', title: '就诊科室', span: 24, itemRender: { name: 'VxeInput' } },
|
|
{ field: 'department', title: '就诊科室', span: 24, itemRender: { name: 'VxeInput' } },
|
|
|
{ field: 'doctor', title: '就诊医生', span: 24, itemRender: { name: 'VxeInput' } },
|
|
{ field: 'doctor', title: '就诊医生', span: 24, itemRender: { name: 'VxeInput' } },
|
|
|
{ align: 'center', span: 24, slots: { default: 'active' } },
|
|
{ align: 'center', span: 24, slots: { default: 'active' } },
|
|
|
],
|
|
],
|
|
|
rules: {
|
|
rules: {
|
|
|
name: [{ required: true, message: '请输入姓名' }],
|
|
name: [{ required: true, message: '请输入姓名' }],
|
|
|
- phone: [{ required: true, message: '请输入手机号码' }],
|
|
|
|
|
- cardno: [{ required: true, message: '请输入身份证号' }],
|
|
|
|
|
|
|
+ phone: [{ required: true, message: '请输入手机号码' }, { validator: 'ValidMobile' }],
|
|
|
|
|
+ cardno: [{ required: true, message: '请输入身份证号' }, { validator: 'ValidIdentityCard' }],
|
|
|
/*gender: [
|
|
/*gender: [
|
|
|
{ required: true, message: '请选择性别' },
|
|
{ required: true, message: '请选择性别' },
|
|
|
],
|
|
],
|
|
@@ -77,11 +86,17 @@ const formEmits: VxeFormListeners<FormModel> = {
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<template>
|
|
<template>
|
|
|
- <vxe-form :data="form" v-bind="formProps" v-on="formEmits">
|
|
|
|
|
|
|
+ <vxe-form ref="formRef" :data="form" v-bind="formProps" v-on="formEmits">
|
|
|
<template #active>
|
|
<template #active>
|
|
|
<vxe-button type="submit" status="primary" content="提交" :loading="submitting"></vxe-button>
|
|
<vxe-button type="submit" status="primary" content="提交" :loading="submitting"></vxe-button>
|
|
|
<vxe-button type="reset" content="重置" :disabled="submitting"></vxe-button>
|
|
<vxe-button type="reset" content="重置" :disabled="submitting"></vxe-button>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
+ <template #disease-remote-select="{ data, field }">
|
|
|
|
|
+ <RemoteSelect v-model:value="data[field]" :load="pageMedicineMethod" key-prop="name" @blur="formRef?.validateField(field)" @update:value="formRef?.validateField(field)" />
|
|
|
|
|
+ </template>
|
|
|
|
|
+ <template #symptom-remote-select="{ data, field }">
|
|
|
|
|
+ <RemoteSelect v-model:value="data[field]" :load="pageDiagnoseTypeMethod" key-prop="name" @blur="formRef?.validateField(field)" @update:value="formRef?.validateField(field)" />
|
|
|
|
|
+ </template>
|
|
|
</vxe-form>
|
|
</vxe-form>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|