|
|
@@ -12,7 +12,13 @@
|
|
|
</div>
|
|
|
<div>
|
|
|
<div class="name">演练实施</div>
|
|
|
- <DrillPlanExecuteForm v-if="drillData" :drill-data="drillData" />
|
|
|
+ <DrillPlanExecuteForm
|
|
|
+ v-if="drillData"
|
|
|
+ ref="drillPlanExecuteFormRef"
|
|
|
+ :ins-code="drillScopeDice[0].itemCode"
|
|
|
+ :drill-data="drillData"
|
|
|
+ style="margin-top: 20px"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
@@ -23,8 +29,18 @@
|
|
|
import { DrillPlanItemDetail } from '../types';
|
|
|
import { DRILL_VIEW_CONTENT } from '../constants';
|
|
|
import DrillPlanExecuteForm from './DrillPlanExecuteForm.vue';
|
|
|
- import { queryEmergencyDrillPlanDetail, queryEmergencyPlanDetail } from '@/api/emergency-drill/emergency-drill';
|
|
|
+ import {
|
|
|
+ queryEmergencyDrillPlanDetail,
|
|
|
+ queryEmergencyPlanDetail,
|
|
|
+ saveEmergencyDrillExecute,
|
|
|
+ submitEmergencyDrillExecute,
|
|
|
+ } from '@/api/emergency-drill/emergency-drill';
|
|
|
import { getAllApproval } from '@/api/approval/approval';
|
|
|
+ import type { FileItem } from '@/views/disaster/types';
|
|
|
+ import { uploadFileApi, UPLOAD_BIZ_TYPE } from '@/api/minio';
|
|
|
+ import { useEmergencyDrillHook } from '../hook';
|
|
|
+
|
|
|
+ const { drillScopeDice, getDrillScopeDict } = useEmergencyDrillHook();
|
|
|
|
|
|
const route = useRoute();
|
|
|
const id = route.query.id;
|
|
|
@@ -39,8 +55,10 @@
|
|
|
? drillData.value.responsibleDeptNameList!.replace(/^\[|\]$/g, '')
|
|
|
: undefined;
|
|
|
|
|
|
- const emergencyPlan = await queryEmergencyPlanDetail(drillData.value.emergencyPlanId);
|
|
|
- drillData.value.emergencyPlanFile = emergencyPlan.planName + emergencyPlan.appendix;
|
|
|
+ if (drillData.value.emergencyPlanId) {
|
|
|
+ const emergencyPlan = await queryEmergencyPlanDetail(drillData.value.emergencyPlanId);
|
|
|
+ drillData.value.emergencyPlanFile = emergencyPlan.planName + emergencyPlan.appendix;
|
|
|
+ }
|
|
|
|
|
|
const allApprovals = await getAllApproval();
|
|
|
drillData.value.approvalTemplateName = allApprovals.find(
|
|
|
@@ -51,9 +69,69 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ const drillPlanExecuteFormRef = ref();
|
|
|
+
|
|
|
+ const formatAttachmentList = async (data: FileItem[]) => {
|
|
|
+ if (!data || data.length === 0) return null;
|
|
|
+ const file = data[0];
|
|
|
+ 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,
|
|
|
+ };
|
|
|
+ };
|
|
|
+
|
|
|
+ async function executeSaveOrSubmit(mode: string) {
|
|
|
+ if (!drillPlanExecuteFormRef.value) return;
|
|
|
+ // drillPlanExecuteFormRef.value.handleClearValidate();
|
|
|
+ if (mode === 'submit') {
|
|
|
+ const res = await drillPlanExecuteFormRef.value.handleValidate();
|
|
|
+ if (!res) return;
|
|
|
+ }
|
|
|
+
|
|
|
+ const formData = drillPlanExecuteFormRef.value.getFormData();
|
|
|
+ let attachmentListRes;
|
|
|
+ if (typeof formData.drillScript === 'string') {
|
|
|
+ attachmentListRes = formData.drillScript;
|
|
|
+ } else if (!formData.drillScript || formData.drillScript.length === 0) {
|
|
|
+ attachmentListRes = null;
|
|
|
+ } else {
|
|
|
+ attachmentListRes = JSON.stringify(await formatAttachmentList(formData.drillScript));
|
|
|
+ }
|
|
|
+
|
|
|
+ const executeParams = {
|
|
|
+ drillPlanId: formData.drillPlanId,
|
|
|
+ drillTime: formData.drillTime,
|
|
|
+ drillLocation: formData.drillLocation,
|
|
|
+ personInChargeId: formData.personInChargeId,
|
|
|
+ drillDeptIdList: formData.drillDeptIdList,
|
|
|
+ drillScript: attachmentListRes,
|
|
|
+ };
|
|
|
+
|
|
|
+ if (mode === 'save') {
|
|
|
+ await saveEmergencyDrillExecute(executeParams);
|
|
|
+ } else {
|
|
|
+ await submitEmergencyDrillExecute(executeParams);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
onMounted(() => {
|
|
|
+ getDrillScopeDict();
|
|
|
getDrillData();
|
|
|
});
|
|
|
+
|
|
|
+ defineExpose({
|
|
|
+ executeSaveOrSubmit,
|
|
|
+ });
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|