| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <template>
- <div class="safety-platform-container">
- <header class="safety-platform-container__header">
- <BreadcrumbBack />
- <span class="breadcrumb-title">{{ headerTitle }}</span>
- </header>
- <main class="safety-platform-container__main">
- <component :is="dynamicComponent" :id="id" ref="dynamicComponentRef" />
- </main>
- <footer class="safety-platform-container__footer" v-if="operate">
- <el-button @click="router.back()">取消</el-button>
- <el-button type="primary" @click="submit">提交</el-button>
- </footer>
- <UploadLoading :form-loading="formLoading" v-if="formLoading" />
- </div>
- </template>
- <script lang="ts" setup>
- import { useRoute, useRouter } from 'vue-router';
- import { ref, computed, defineAsyncComponent } from 'vue';
- import { ElMessage } from 'element-plus';
- import UploadLoading from '@/components/UploadLoading.vue';
- import { AddAccidentInfoStruct, addVehicleInfo, updateVehicleInfo } from '@/api/traffic-accident';
- const router = useRouter();
- const route = useRoute();
- const operate = route.query.operate;
- const id = route.query.id;
- const formLoading = ref(false);
- const headerTitle = computed(() => {
- const title = '交通事故记录';
- if (operate === 'create') {
- return `创建${title}`;
- } else if (operate === 'edit') {
- return `编辑${title}`;
- }
- return '事故详情';
- });
- const dynamicComponent = computed(() => {
- if (operate === 'create' || operate === 'edit')
- return defineAsyncComponent(() => import('./components/ManageAccidentItem.vue'));
- return defineAsyncComponent(() => import('./components/ViewAccidentItem.vue'));
- });
- const dynamicComponentRef = ref();
- const createTaskManagementItemFunc = async (formData: AddAccidentInfoStruct) => {
- await addVehicleInfo(formData);
- };
- const editTaskManagementItemFunc = async (formData: AddAccidentInfoStruct) => {
- await updateVehicleInfo(formData);
- };
- const submit = async () => {
- if (!dynamicComponentRef.value) return;
- const res = await dynamicComponentRef.value.handleValidate();
- if (res) {
- const formData = dynamicComponentRef.value.getFormData();
- let message;
- try {
- formLoading.value = true;
- if (operate === 'create') {
- await createTaskManagementItemFunc(formData);
- message = '创建成功';
- } else if (operate === 'edit') {
- await editTaskManagementItemFunc(formData);
- message = '编辑成功';
- }
- ElMessage.success(message);
- // 重置表单状态,避免触发二次确认
- if (dynamicComponentRef.value && dynamicComponentRef.value.resetFormState) {
- dynamicComponentRef.value.resetFormState();
- }
- router.back();
- } finally {
- formLoading.value = false;
- }
- } else {
- console.log('不提交');
- }
- };
- </script>
- <style lang="scss" scoped>
- @use '@/styles/page-details-layout.scss' as *;
- .safety-platform-container__header {
- flex-direction: row !important;
- justify-content: flex-start !important;
- gap: 8px !important;
- }
- </style>
|