382 lines
13 KiB
Plaintext
382 lines
13 KiB
Plaintext
<template>
|
||
<PageWrapper>
|
||
<div class="n-layout-page-header">
|
||
<a-card :bordered="false" title="高级表单">
|
||
当一次性提交大量数据时,可使用高级表单,根据自身情况选择是否使用 BasicForm
|
||
组件,以下布局支持自适应
|
||
</a-card>
|
||
</div>
|
||
<a-form
|
||
ref="formRef"
|
||
:labelCol="{ span: 5 }"
|
||
:model="formValue"
|
||
:rules="rules"
|
||
label-placement="left"
|
||
>
|
||
<a-card
|
||
:bordered="false"
|
||
class="mt-4 proCard"
|
||
title="预约信息"
|
||
:bodyStyle="{ padding: '30px 20px 20px' }"
|
||
>
|
||
<a-row :gutter="[16, 16]">
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="预约姓名" name="name">
|
||
<a-input v-model:value="formValue.name" placeholder="输入姓名" />
|
||
</a-form-item>
|
||
</a-col>
|
||
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="预约号码" name="mobile">
|
||
<a-input v-model:value="formValue.mobile" placeholder="电话号码" />
|
||
</a-form-item>
|
||
</a-col>
|
||
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="预约时间" name="datetime">
|
||
<a-date-picker class="w-full" v-model:value="formValue.datetime" type="datetime" />
|
||
</a-form-item>
|
||
</a-col>
|
||
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="预约医生" name="doctor">
|
||
<a-select
|
||
v-model:value="formValue.doctor"
|
||
:options="doctorList"
|
||
placeholder="请选择预约医生"
|
||
/>
|
||
</a-form-item>
|
||
</a-col>
|
||
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="预约事项" name="matter">
|
||
<a-select
|
||
v-model:value="formValue.matter"
|
||
:options="matterList"
|
||
multiple
|
||
placeholder="请选择预约事项"
|
||
/>
|
||
</a-form-item>
|
||
</a-col>
|
||
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="预约备注" name="remark">
|
||
<a-input v-model:value="formValue.remark" placeholder="请输入预约备注" />
|
||
</a-form-item>
|
||
</a-col>
|
||
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="预约备注" name="remark">
|
||
<a-input v-model:value="formValue.remark" placeholder="请输入预约备注" />
|
||
</a-form-item>
|
||
</a-col>
|
||
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="出生日期" name="dateBirth">
|
||
<a-date-picker class="w-full" v-model:value="formValue.dateBirth" type="datetime" />
|
||
</a-form-item>
|
||
</a-col>
|
||
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="性别" name="sex">
|
||
<a-radio-group v-model:value="formValue.sex" name="sex">
|
||
<a-space>
|
||
<a-radio :value="1">男</a-radio>
|
||
<a-radio :value="2">女</a-radio>
|
||
</a-space>
|
||
</a-radio-group>
|
||
</a-form-item>
|
||
</a-col>
|
||
|
||
<!-- <div style="margin-left: 80px">-->
|
||
<!-- <a-space>-->
|
||
<!-- <a-button type="primary" @click="formSubmit">提交预约</a-button>-->
|
||
<!-- <a-button @click="resetForm">重置</a-button>-->
|
||
<!-- </a-space>-->
|
||
<!-- </div>-->
|
||
</a-row>
|
||
</a-card>
|
||
|
||
<a-card
|
||
:bordered="false"
|
||
class="mt-4 proCard"
|
||
title="就诊信息"
|
||
:bodyStyle="{ padding: '30px 20px 20px' }"
|
||
>
|
||
<a-row :gutter="[16, 16]">
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="过敏史" name="allergiChistory">
|
||
<a-input v-model:value="formValue.allergiChistory" placeholder="请输入过敏史" />
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="既往史" name="pastHistory">
|
||
<a-input v-model:value="formValue.pastHistory" placeholder="请输入既往史" />
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="传染史" name="contagion">
|
||
<a-input v-model:value="formValue.contagion" placeholder="请输入传染史" />
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="身份证号" name="idNo">
|
||
<a-input v-model:value="formValue.idNo" placeholder="请输入身份证号" />
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="介绍人" name="introducer">
|
||
<a-input v-model:value="formValue.introducer" placeholder="请输入介绍人" />
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="就诊医生" name="seeDoctor">
|
||
<a-select
|
||
v-model:value="formValue.seeDoctor"
|
||
:options="doctorList"
|
||
placeholder="请选择就诊医生"
|
||
/>
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="初诊日期" name="firstDatetime">
|
||
<a-date-picker
|
||
class="w-full"
|
||
v-model:value="formValue.firstDatetime"
|
||
type="datetime"
|
||
/>
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="近次复诊" name="subsequent">
|
||
<a-date-picker class="w-full" v-model:value="formValue.subsequent" type="datetime" />
|
||
</a-form-item>
|
||
</a-col>
|
||
<!-- <a-col>-->
|
||
<!-- <a-form-item label="图片" name="img">-->
|
||
<!-- <BasicUpload-->
|
||
<!-- v-model:value="uploadList"-->
|
||
<!-- :action="`${uploadUrl}/v1.0/files`"-->
|
||
<!-- :data="{ type: 0 }"-->
|
||
<!-- :headers="uploadHeaders"-->
|
||
<!-- :height="100"-->
|
||
<!-- :width="100"-->
|
||
<!-- helpText="单个文件不超过20MB,最多只能上传10个文件"-->
|
||
<!-- name="files"-->
|
||
<!-- @uploadChange="uploadChange"-->
|
||
<!-- />-->
|
||
<!-- </a-form-item>-->
|
||
<!-- </a-col>-->
|
||
</a-row>
|
||
</a-card>
|
||
|
||
<a-card
|
||
:bordered="false"
|
||
class="mt-4 proCard"
|
||
title="就诊信息"
|
||
:bodyStyle="{ padding: '30px 20px 20px' }"
|
||
>
|
||
<a-row :gutter="[16, 16]">
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="过敏史" name="allergiChistory">
|
||
<a-input v-model:value="formValue.allergiChistory" placeholder="请输入过敏史" />
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="既往史" name="pastHistory">
|
||
<a-input v-model:value="formValue.pastHistory" placeholder="请输入既往史" />
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="传染史" name="contagion">
|
||
<a-input v-model:value="formValue.contagion" placeholder="请输入传染史" />
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="身份证号" name="idNo">
|
||
<a-input v-model:value="formValue.idNo" placeholder="请输入身份证号" />
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="介绍人" name="introducer">
|
||
<a-input v-model:value="formValue.introducer" placeholder="请输入介绍人" />
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="就诊医生" name="seeDoctor">
|
||
<a-select
|
||
v-model:value="formValue.seeDoctor"
|
||
:options="doctorList"
|
||
placeholder="请选择就诊医生"
|
||
/>
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="初诊日期" name="firstDatetime">
|
||
<a-date-picker
|
||
class="w-full"
|
||
v-model:value="formValue.firstDatetime"
|
||
type="datetime"
|
||
/>
|
||
</a-form-item>
|
||
</a-col>
|
||
<a-col :xs="24" :sm="24" :md="12" :lg="8" :xl="6">
|
||
<a-form-item label="近次复诊" name="subsequent">
|
||
<a-date-picker class="w-full" v-model:value="formValue.subsequent" type="datetime" />
|
||
</a-form-item>
|
||
</a-col>
|
||
<!-- <a-col>-->
|
||
<!-- <a-form-item label="图片" name="img">-->
|
||
<!-- <BasicUpload-->
|
||
<!-- v-model:value="uploadList"-->
|
||
<!-- :action="`${uploadUrl}/v1.0/files`"-->
|
||
<!-- :data="{ type: 0 }"-->
|
||
<!-- :headers="uploadHeaders"-->
|
||
<!-- :height="100"-->
|
||
<!-- :width="100"-->
|
||
<!-- helpText="单个文件不超过20MB,最多只能上传10个文件"-->
|
||
<!-- name="files"-->
|
||
<!-- @uploadChange="uploadChange"-->
|
||
<!-- />-->
|
||
<!-- </a-form-item>-->
|
||
<!-- </a-col>-->
|
||
</a-row>
|
||
</a-card>
|
||
</a-form>
|
||
<template #rightFooter>
|
||
<a-space>
|
||
<a-button @click="resetForm">重置</a-button>
|
||
<a-button type="primary" @click="formSubmit">提交</a-button>
|
||
</a-space>
|
||
</template>
|
||
</PageWrapper>
|
||
</template>
|
||
|
||
<script lang="ts" setup>
|
||
import { ref, unref, reactive } from 'vue';
|
||
import { PageWrapper } from '@/components/Page';
|
||
import { message } from 'ant-design-vue';
|
||
import { BasicUpload } from '@/components/Upload';
|
||
import { useGlobSetting } from '@/hooks/setting';
|
||
import { error } from '@/utils/log';
|
||
|
||
const globSetting = useGlobSetting();
|
||
|
||
const matterList = [
|
||
{
|
||
label: '种牙',
|
||
value: 1,
|
||
},
|
||
{
|
||
label: '补牙',
|
||
value: 2,
|
||
},
|
||
{
|
||
label: '根管',
|
||
value: 3,
|
||
},
|
||
];
|
||
|
||
const doctorList = [
|
||
{
|
||
label: '李医生',
|
||
value: 1,
|
||
},
|
||
{
|
||
label: '黄医生',
|
||
value: 2,
|
||
},
|
||
{
|
||
label: '张医生',
|
||
value: 3,
|
||
},
|
||
];
|
||
|
||
const rules = {
|
||
name: {
|
||
required: true,
|
||
message: '请输入预约姓名',
|
||
trigger: 'blur',
|
||
},
|
||
remark: {
|
||
required: true,
|
||
message: '请输入预约备注',
|
||
trigger: 'blur',
|
||
},
|
||
mobile: {
|
||
required: true,
|
||
message: '请输入预约电话号码',
|
||
trigger: ['input'],
|
||
},
|
||
datetime: {
|
||
required: true,
|
||
type: 'number',
|
||
message: '请选择预约时间',
|
||
trigger: ['blur', 'change'],
|
||
},
|
||
seeDoctor: {
|
||
required: true,
|
||
type: 'number',
|
||
message: '请选择就诊时间',
|
||
trigger: ['blur', 'change'],
|
||
},
|
||
firstDatetime: {
|
||
required: true,
|
||
type: 'number',
|
||
message: '请选择初诊时间',
|
||
trigger: ['blur', 'change'],
|
||
},
|
||
doctor: {
|
||
required: true,
|
||
type: 'number',
|
||
message: '请选择预约医生',
|
||
trigger: 'change',
|
||
},
|
||
};
|
||
|
||
const formRef: any = ref(null);
|
||
|
||
const { uploadUrl } = globSetting;
|
||
|
||
const defaultValueRef = () => ({
|
||
name: '',
|
||
mobile: '',
|
||
remark: '',
|
||
sex: 1,
|
||
matter: null,
|
||
doctor: null,
|
||
datetime: undefined,
|
||
});
|
||
|
||
let formValue = reactive(defaultValueRef());
|
||
const uploadList = ref([
|
||
'https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ.png',
|
||
]);
|
||
const uploadHeaders = reactive({
|
||
platform: 'miniPrograms',
|
||
timestamp: new Date().getTime(),
|
||
token: 'Q6fFCuhc1vkKn5JNFWaCLf6gRAc5n0LQHd08dSnG4qo=',
|
||
});
|
||
|
||
function formSubmit() {
|
||
formRef.value
|
||
.validate()
|
||
.then(() => {
|
||
message.success('验证成功');
|
||
})
|
||
.catch((error) => {
|
||
console.log('error', error);
|
||
message.error('验证失败,请填写完整信息');
|
||
});
|
||
}
|
||
|
||
function resetForm() {
|
||
formRef.value.resetFields();
|
||
formValue = Object.assign(unref(formValue), defaultValueRef());
|
||
}
|
||
|
||
function uploadChange(list: string[]) {
|
||
console.log(list);
|
||
}
|
||
</script>
|