EditManagementDetail.vue 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <template>
  2. <div class="emergency-plan-container">
  3. <BasicForm ref="formRef" :formData="ruleFormData" :formConfig="ruleFormConfig" :formRules="formRules">
  4. <template #appendix>
  5. <UploadFiles
  6. label="上传附件"
  7. :maxCount="1"
  8. @uploadSuccess="handleUploadSuccess"
  9. :fileList="ruleFormData.uploadFile"
  10. />
  11. </template>
  12. </BasicForm>
  13. </div>
  14. </template>
  15. <script setup lang="ts">
  16. import { ref, onMounted } from 'vue';
  17. import BasicForm from '@/components/BasicForm.vue';
  18. import UploadFiles from '@/views/disaster/components/UploadFiles.vue';
  19. import { useFormConfigHook } from '@/hooks/useFormConfigHook';
  20. import { useEmergencyHook } from '@/views/emergency/src/hoos';
  21. import { useEmergencyPlanHook } from '../hook';
  22. import type { EditEmergencyPlaneForm } from '@/types/emergency-plan';
  23. import type { FileItem } from '@/views/disaster/types';
  24. import { queryEmergencyPlan } from '@/api/emergency-plan';
  25. import { PLAN_MANAGEMENT_FORM_CONFIG_EDIT, PLAN_MANAGEMENT_FORM_DATA_EDIT,PLAN_MANAGEMENT_FORM_RULES_EDIT } from '../config';
  26. const formRef = ref();
  27. const props = defineProps<{
  28. id: number;
  29. }>();
  30. const { ruleFormConfig, ruleFormData, formRules } = useFormConfigHook<EditEmergencyPlaneForm>(
  31. PLAN_MANAGEMENT_FORM_CONFIG_EDIT,
  32. PLAN_MANAGEMENT_FORM_DATA_EDIT,
  33. PLAN_MANAGEMENT_FORM_RULES_EDIT
  34. );
  35. const { getEmergencyEventDict, getEmergencyEvent, getApprovalList, approvalList } = useEmergencyHook();
  36. const { getPlanTypeDict, getPlanType } = useEmergencyPlanHook();
  37. const getPlanDetail = async () => {
  38. const res = await queryEmergencyPlan(props.id);
  39. for (const key in res) {
  40. ruleFormData[key] = res[key as keyof typeof res];
  41. ruleFormData.planTypeName = getPlanType(res.planType) || '';
  42. ruleFormData.eventTypeName = getEmergencyEvent(res.eventType) || '';
  43. ruleFormData.approvalTemplateName =
  44. approvalList.value?.find((item) => item.id === res.approvalTemplateId)?.templateName || '';
  45. ruleFormData.uploadFile = JSON.parse(res.appendix);
  46. }
  47. };
  48. const handleUploadSuccess = (fileList: FileItem[]) => {
  49. ruleFormData.uploadFile = fileList;
  50. };
  51. const handleValidate = async () => {
  52. if (!formRef.value) return;
  53. const validateResult = await formRef.value.validateForm();
  54. return validateResult;
  55. };
  56. const getFormData = () => {
  57. return ruleFormData;
  58. };
  59. onMounted(async () => {
  60. await getPlanTypeDict();
  61. await getEmergencyEventDict();
  62. await getApprovalList();
  63. getPlanDetail();
  64. });
  65. defineExpose({
  66. handleValidate,
  67. getFormData,
  68. });
  69. </script>
  70. <style lang="scss" scoped>
  71. @use '../styles/info.scss' as *;
  72. </style>