|
@@ -91,9 +91,21 @@
|
|
|
<div class="disaster-information--line"></div>
|
|
<div class="disaster-information--line"></div>
|
|
|
<span>整改处理</span>
|
|
<span>整改处理</span>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ <BasicForm ref="basicFormRef" :formData="ruleFormData" :formRules="formRules" :formConfig="ruleFormConfig">
|
|
|
|
|
+ <template #fixImages>
|
|
|
|
|
+ <UploadImages @uploadSuccess="handleUploadImageSuccess" />
|
|
|
|
|
+ </template>
|
|
|
|
|
+ <template #fixMaterials>
|
|
|
|
|
+ <Upload label="上传文件" @uploadSuccess="handleUploadFileSuccess" />
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </BasicForm>
|
|
|
</section>
|
|
</section>
|
|
|
</main>
|
|
</main>
|
|
|
- <footer class="disaster-precaution-container__footer"> </footer>
|
|
|
|
|
|
|
+ <footer class="disaster-precaution-container__footer">
|
|
|
|
|
+ <el-button @click="router.back()">取消</el-button>
|
|
|
|
|
+ <el-button type="primary" v-if="isShowNextSubmit">提交,并处置下一条</el-button>
|
|
|
|
|
+ <el-button type="primary" @click="handleSubmit">提交</el-button>
|
|
|
|
|
+ </footer>
|
|
|
<UploadLoading :form-loading="formLoading" v-if="formLoading" />
|
|
<UploadLoading :form-loading="formLoading" v-if="formLoading" />
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
@@ -102,25 +114,113 @@
|
|
|
import BackIcon from 'assets/svg/back.svg';
|
|
import BackIcon from 'assets/svg/back.svg';
|
|
|
import { useRoute, useRouter } from 'vue-router';
|
|
import { useRoute, useRouter } from 'vue-router';
|
|
|
import UploadLoading from '@/components/UploadLoading.vue';
|
|
import UploadLoading from '@/components/UploadLoading.vue';
|
|
|
|
|
+ import BasicForm from '@/components/BasicForm.vue';
|
|
|
|
|
+ import UploadImages from './src/components/UploadImages.vue';
|
|
|
|
|
+ import Upload from '@/views/disaster/components/Upload.vue';
|
|
|
import { ref, onMounted } from 'vue';
|
|
import { ref, onMounted } from 'vue';
|
|
|
import { useDisasterControlHook } from './src/hook';
|
|
import { useDisasterControlHook } from './src/hook';
|
|
|
- import type { disasterReportRecordDetailListResponse } from '@/types/disaster-control';
|
|
|
|
|
|
|
+ import { useFormConfigHook } from '@/hooks/useFormConfigHook';
|
|
|
|
|
+ import { useUserInfoHook } from '@/views/disaster/hooks/userInfo';
|
|
|
|
|
+ import { createDisposalRectification } from '@/api/disaster-control';
|
|
|
|
|
+ import { uploadFileApi, UPLOAD_BIZ_TYPE } from '@/api/minio';
|
|
|
|
|
+ import type { FileItem } from '@/views/disaster/types';
|
|
|
|
|
+ import type { disasterReportRecordDetailListResponse, DisposalRectificationFormData } from '@/types/disaster-control';
|
|
|
|
|
+ import {
|
|
|
|
|
+ DISPOSAL_RECTIFICATION_FORM_CONFIG,
|
|
|
|
|
+ DISPOSAL_RECTIFICATION_FORM_DATA,
|
|
|
|
|
+ DISPOSAL_RECTIFICATION_FORM_RULES,
|
|
|
|
|
+ } from './src/config';
|
|
|
|
|
+ import { ElMessage } from 'element-plus';
|
|
|
|
|
+
|
|
|
|
|
+ const basicFormRef = ref<InstanceType<typeof BasicForm>>();
|
|
|
|
|
|
|
|
const LossReportItemFormData = ref<disasterReportRecordDetailListResponse>();
|
|
const LossReportItemFormData = ref<disasterReportRecordDetailListResponse>();
|
|
|
const { getLossReportItem, getSafetyLevel, getSafetyLevelDict } = useDisasterControlHook();
|
|
const { getLossReportItem, getSafetyLevel, getSafetyLevelDict } = useDisasterControlHook();
|
|
|
|
|
+ const { realname, id: userId } = useUserInfoHook();
|
|
|
|
|
|
|
|
const router = useRouter();
|
|
const router = useRouter();
|
|
|
const route = useRoute();
|
|
const route = useRoute();
|
|
|
const id = Number(route.params.id);
|
|
const id = Number(route.params.id);
|
|
|
const handleTaskId = Number(route.query.handleTaskId);
|
|
const handleTaskId = Number(route.query.handleTaskId);
|
|
|
|
|
+ const fixTaskId = Number(route.query.fixTaskId);
|
|
|
const formLoading = ref(false);
|
|
const formLoading = ref(false);
|
|
|
const getLossReportItemData = async () => {
|
|
const getLossReportItemData = async () => {
|
|
|
const res = await getLossReportItem(handleTaskId, id);
|
|
const res = await getLossReportItem(handleTaskId, id);
|
|
|
LossReportItemFormData.value = res;
|
|
LossReportItemFormData.value = res;
|
|
|
};
|
|
};
|
|
|
|
|
+ const { ruleFormConfig, ruleFormData, formRules, cloneRuleFormData, beforeRouteLeave } =
|
|
|
|
|
+ useFormConfigHook<DisposalRectificationFormData>(
|
|
|
|
|
+ DISPOSAL_RECTIFICATION_FORM_CONFIG,
|
|
|
|
|
+ DISPOSAL_RECTIFICATION_FORM_DATA,
|
|
|
|
|
+ DISPOSAL_RECTIFICATION_FORM_RULES,
|
|
|
|
|
+ );
|
|
|
|
|
+ const rectificationIds = ref<number[]>([]);
|
|
|
|
|
+ const isShowNextSubmit = ref(false);
|
|
|
|
|
+ const handleUploadImageSuccess = (files: File[]) => {
|
|
|
|
|
+ ruleFormData.uploadImages = files;
|
|
|
|
|
+ };
|
|
|
|
|
+ const handleUploadFileSuccess = (files: FileItem[]) => {
|
|
|
|
|
+ ruleFormData.uploadFiles = files;
|
|
|
|
|
+ };
|
|
|
|
|
+ const formatImageList = async (file: File) => {
|
|
|
|
|
+ if (!file) return file;
|
|
|
|
|
+ const fileName = file.name;
|
|
|
|
|
+ const res = await uploadFileApi({ bizType: UPLOAD_BIZ_TYPE.ATTACHMENT, fileName, file });
|
|
|
|
|
+ return res.url;
|
|
|
|
|
+ };
|
|
|
|
|
+ const formatFileList = async (file: FileItem) => {
|
|
|
|
|
+ if (!file.file) return file;
|
|
|
|
|
+ const fileName = file.fileName;
|
|
|
|
|
+ const res = await uploadFileApi({ bizType: UPLOAD_BIZ_TYPE.ATTACHMENT, fileName, file: file.file });
|
|
|
|
|
+ const fileType = file.fileType;
|
|
|
|
|
+ const fileSize = file.fileSize;
|
|
|
|
|
+ const fileId = file.fileId;
|
|
|
|
|
+ const fileUrl = res.url;
|
|
|
|
|
+ return {
|
|
|
|
|
+ fileName,
|
|
|
|
|
+ fileType,
|
|
|
|
|
+ fileSize,
|
|
|
|
|
+ fileUrl,
|
|
|
|
|
+ fileId,
|
|
|
|
|
+ };
|
|
|
|
|
+ };
|
|
|
|
|
+ const handleSubmit = async () => {
|
|
|
|
|
+ if (!basicFormRef.value) return;
|
|
|
|
|
+ const validateResult = await basicFormRef.value.validateForm();
|
|
|
|
|
+ if (!validateResult) return;
|
|
|
|
|
+ formLoading.value = true;
|
|
|
|
|
+ try {
|
|
|
|
|
+ const imagesListRes: string[] = await Promise.all(
|
|
|
|
|
+ (ruleFormData.uploadImages || []).map((item) => formatImageList(item)),
|
|
|
|
|
+ );
|
|
|
|
|
+ const fileListRes: FileItem[] = await Promise.all(
|
|
|
|
|
+ (ruleFormData.uploadFiles || []).map((item) => formatFileList(item)),
|
|
|
|
|
+ );
|
|
|
|
|
+ const imagesListString = JSON.stringify(imagesListRes);
|
|
|
|
|
+ const fileListString = JSON.stringify(fileListRes);
|
|
|
|
|
+ ruleFormData.fixImages = imagesListString;
|
|
|
|
|
+ ruleFormData.fixMaterials = fileListString;
|
|
|
|
|
+ await createDisposalRectification({
|
|
|
|
|
+ fixTaskId,
|
|
|
|
|
+ ...ruleFormData,
|
|
|
|
|
+ });
|
|
|
|
|
+ ElMessage.success('提交成功');
|
|
|
|
|
+ cloneRuleFormData();
|
|
|
|
|
+ router.back();
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ formLoading.value = false;
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
|
|
|
+ ruleFormData.createdBy = userId;
|
|
|
|
|
+ ruleFormData.createdByName = realname;
|
|
|
|
|
+ cloneRuleFormData();
|
|
|
|
|
+ beforeRouteLeave();
|
|
|
getLossReportItemData();
|
|
getLossReportItemData();
|
|
|
getSafetyLevelDict();
|
|
getSafetyLevelDict();
|
|
|
|
|
+ const sessionRectificationIds = sessionStorage.getItem('rectificationIds') || '[]';
|
|
|
|
|
+ rectificationIds.value = JSON.parse(sessionRectificationIds);
|
|
|
|
|
+ isShowNextSubmit.value = rectificationIds.value.length > 1 && rectificationIds.value.includes(id);
|
|
|
});
|
|
});
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
@@ -133,4 +233,7 @@
|
|
|
flex-direction: column !important;
|
|
flex-direction: column !important;
|
|
|
gap: 30px !important;
|
|
gap: 30px !important;
|
|
|
}
|
|
}
|
|
|
|
|
+ :deep(.el-date-editor) {
|
|
|
|
|
+ --el-date-editor-width: 100%;
|
|
|
|
|
+ }
|
|
|
</style>
|
|
</style>
|