FlowVue/src/views/applyregistration/applyform/ApplyformForm.vue
2024-07-11 19:46:39 +08:00

215 lines
7.1 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<Dialog :title="dialogTitle" v-model="dialogVisible">
<el-form
ref="formRef"
:model="formData"
:rules="formRules"
label-width="100px"
v-loading="formLoading"
>
<el-form-item label="登记单号" prop="regId">
<el-input v-model="formData.regId" placeholder="请输入登记单号" />
</el-form-item>
<el-form-item label="登记来源" prop="regSource">
<el-input v-model="formData.regSource" placeholder="请输入登记来源" />
</el-form-item>
<el-form-item label="检查ID" prop="examId">
<el-input v-model="formData.examId" placeholder="请输入检查ID" />
</el-form-item>
<el-form-item label="患者姓名" prop="pName">
<el-input v-model="formData.pName" placeholder="请输入患者姓名" />
</el-form-item>
<el-form-item label="性别" prop="gender">
<el-input v-model="formData.gender" placeholder="请输入性别" />
</el-form-item>
<el-form-item label="出生日期" prop="birthday">
<el-date-picker
v-model="formData.birthday"
type="date"
value-format="x"
placeholder="选择出生日期"
/>
</el-form-item>
<el-form-item label="检查日期" prop="examDate">
<el-date-picker
v-model="formData.examDate"
type="date"
value-format="x"
placeholder="选择检查日期"
/>
</el-form-item>
<el-form-item label="检查项目名称" prop="examItemName">
<el-input v-model="formData.examItemName" placeholder="请输入检查项目名称" />
</el-form-item>
<el-form-item label="检查设备ID" prop="deviceId">
<el-input v-model="formData.deviceId" placeholder="请输入检查设备ID" />
</el-form-item>
<el-form-item label="检查设备名称" prop="deviceName">
<el-input v-model="formData.deviceName" placeholder="请输入检查设备名称" />
</el-form-item>
<el-form-item label="患者联系电话" prop="contactTel">
<el-input v-model="formData.contactTel" placeholder="请输入患者联系电话" />
</el-form-item>
<el-form-item label="登记时间" prop="regDate">
<el-date-picker
v-model="formData.regDate"
type="date"
value-format="x"
placeholder="选择登记时间"
/>
</el-form-item>
<el-form-item label="分检时间" prop="sortDate">
<el-date-picker
v-model="formData.sortDate"
type="date"
value-format="x"
placeholder="选择分检时间"
/>
</el-form-item>
<el-form-item label="开单医生" prop="billgDoctor">
<el-input v-model="formData.billgDoctor" placeholder="请输入开单医生" />
</el-form-item>
<el-form-item label="检查状态" prop="examStatus">
<el-radio-group v-model="formData.examStatus">
<el-radio label="1">请选择字典生成</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="开单医生科室" prop="billDoctorDepartment">
<el-input v-model="formData.billDoctorDepartment" placeholder="请输入开单医生科室" />
</el-form-item>
<el-form-item label="此条记录的创建时间" prop="createDate">
<el-date-picker
v-model="formData.createDate"
type="date"
value-format="x"
placeholder="选择此条记录的创建时间"
/>
</el-form-item>
<el-form-item label="检查项目代码" prop="examItemCode">
<el-input v-model="formData.examItemCode" placeholder="请输入检查项目代码" />
</el-form-item>
<el-form-item label="机构ID" prop="orgId">
<el-input v-model="formData.orgId" placeholder="请输入机构ID" />
</el-form-item>
<el-form-item label="分检医生" prop="sortDoctor">
<el-input v-model="formData.sortDoctor" placeholder="请输入分检医生" />
</el-form-item>
</el-form>
<template #footer>
<el-button @click="submitForm" type="primary" :disabled="formLoading"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</template>
</Dialog>
</template>
<script setup lang="ts">
import { ApplyformApi, ApplyformVO } from '@/api/applyregistration/applyform'
/** 申请登记记录 表单 */
defineOptions({ name: 'ApplyformForm' })
const { t } = useI18n() // 国际化
const message = useMessage() // 消息弹窗
const dialogVisible = ref(false) // 弹窗的是否展示
const dialogTitle = ref('') // 弹窗的标题
const formLoading = ref(false) // 表单的加载中1修改时的数据加载2提交的按钮禁用
const formType = ref('') // 表单的类型create - 新增update - 修改
const formData = ref({
id: undefined,
regId: undefined,
regSource: undefined,
examId: undefined,
pName: undefined,
gender: undefined,
birthday: undefined,
examDate: undefined,
examItemName: undefined,
deviceId: undefined,
deviceName: undefined,
contactTel: undefined,
regDate: undefined,
sortDate: undefined,
billgDoctor: undefined,
examStatus: undefined,
billDoctorDepartment: undefined,
createDate: undefined,
examItemCode: undefined,
orgId: undefined,
sortDoctor: undefined,
})
const formRules = reactive({
})
const formRef = ref() // 表单 Ref
/** 打开弹窗 */
const open = async (type: string, id?: number) => {
dialogVisible.value = true
dialogTitle.value = t('action.' + type)
formType.value = type
resetForm()
// 修改时,设置数据
if (id) {
formLoading.value = true
try {
formData.value = await ApplyformApi.getApplyform(id)
} finally {
formLoading.value = false
}
}
}
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
/** 提交表单 */
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
const submitForm = async () => {
// 校验表单
await formRef.value.validate()
// 提交请求
formLoading.value = true
try {
const data = formData.value as unknown as ApplyformVO
if (formType.value === 'create') {
await ApplyformApi.createApplyform(data)
message.success(t('common.createSuccess'))
} else {
await ApplyformApi.updateApplyform(data)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
// 发送操作成功的事件
emit('success')
} finally {
formLoading.value = false
}
}
/** 重置表单 */
const resetForm = () => {
formData.value = {
id: undefined,
regId: undefined,
regSource: undefined,
examId: undefined,
pName: undefined,
gender: undefined,
birthday: undefined,
examDate: undefined,
examItemName: undefined,
deviceId: undefined,
deviceName: undefined,
contactTel: undefined,
regDate: undefined,
sortDate: undefined,
billgDoctor: undefined,
examStatus: undefined,
billDoctorDepartment: undefined,
createDate: undefined,
examItemCode: undefined,
orgId: undefined,
sortDoctor: undefined,
}
formRef.value?.resetFields()
}
</script>