|
|
@@ -0,0 +1,86 @@
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <BasicForm ref="basicFormRef" :formData="ruleFormData" :formRules="formRules" :formConfig="ruleFormConfig">
|
|
|
+ <template #drillImage>
|
|
|
+ <UploadImages
|
|
|
+ v-if="!uploadImgDisabled"
|
|
|
+ :maxCount="9"
|
|
|
+ ref="uploadImagesRef"
|
|
|
+ @uploadChange="handleUploadChange"
|
|
|
+ />
|
|
|
+ <ShowImages v-else :image-list="ruleFormData.drillImage" />
|
|
|
+ </template>
|
|
|
+ </BasicForm>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup lang="ts">
|
|
|
+ import BasicForm from '@/components/BasicForm.vue';
|
|
|
+ import UploadImages from '@/views/disaster/disaster-control/src/components/UploadImages.vue';
|
|
|
+ import ShowImages from './ShowImages.vue';
|
|
|
+ import { useFormConfigHook } from '@/hooks/useFormConfigHook';
|
|
|
+ import { DRILL_RECORD_FORM_CONFIG, DRILL_RECORD_FORM_RULES, DRILL_RECORD_FORM_DATA } from '../configs/plan/form';
|
|
|
+ import { DrillPlanRecord, DrillRecordRuleForm } from '../types';
|
|
|
+ import { ref } from 'vue';
|
|
|
+
|
|
|
+ const props = defineProps<{
|
|
|
+ drillRecord?: DrillPlanRecord;
|
|
|
+ }>();
|
|
|
+
|
|
|
+ const { ruleFormConfig, ruleFormData, formRules, cloneRuleFormData, beforeRouteLeave } =
|
|
|
+ useFormConfigHook<DrillRecordRuleForm>(
|
|
|
+ DRILL_RECORD_FORM_CONFIG,
|
|
|
+ props.drillRecord
|
|
|
+ ? {
|
|
|
+ participants: props.drillRecord.participants,
|
|
|
+ drillDescription: props.drillRecord.drillDescription,
|
|
|
+ drillImage: props.drillRecord.drillImage,
|
|
|
+ drillEffectAssess: props.drillRecord.drillEffectAssess,
|
|
|
+ }
|
|
|
+ : DRILL_RECORD_FORM_DATA,
|
|
|
+ DRILL_RECORD_FORM_RULES,
|
|
|
+ );
|
|
|
+
|
|
|
+ const handleUploadChange = (files: File[]) => {};
|
|
|
+
|
|
|
+ const basicFormRef = ref<typeof BasicForm>();
|
|
|
+
|
|
|
+ const FormValidate = async () => {
|
|
|
+ if (!basicFormRef.value) return;
|
|
|
+ const validateResult = await basicFormRef.value.validateForm();
|
|
|
+ return validateResult;
|
|
|
+ };
|
|
|
+
|
|
|
+ const FormClearValidate = () => {
|
|
|
+ if (!basicFormRef.value) return;
|
|
|
+ basicFormRef.value.clearValidate();
|
|
|
+ };
|
|
|
+
|
|
|
+ function getFormData() {
|
|
|
+ return ruleFormData;
|
|
|
+ }
|
|
|
+
|
|
|
+ const uploadImgDisabled = ref(false);
|
|
|
+ function disableFormInput() {
|
|
|
+ uploadImgDisabled.value = true;
|
|
|
+ ruleFormConfig.value.forEach((x) => {
|
|
|
+ if (x.componentProps) x.componentProps.disabled = true;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ function enableFormInput() {
|
|
|
+ uploadImgDisabled.value = false;
|
|
|
+ ruleFormConfig.value.forEach((x) => {
|
|
|
+ if (x.componentProps) x.componentProps.disabled = false;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ defineExpose({
|
|
|
+ FormValidate,
|
|
|
+ FormClearValidate,
|
|
|
+ getFormData,
|
|
|
+ disableFormInput,
|
|
|
+ enableFormInput,
|
|
|
+ });
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped></style>
|