Jelajahi Sumber

救援资源管理:人防工程管理的首页、新增、修改、查看界面和接口调试;水利工程管理的首页、新增、修改、查看界面和接口调试;

zhangyihao 9 bulan lalu
induk
melakukan
d3dabef99a

+ 28 - 0
src/api/comprehensiveGuarantee/reliefResourceManagement/airRaidShelters.ts

@@ -0,0 +1,28 @@
+import request from '@/utils/request';
+export function getairRaids(params) {
+  return request({
+    url: '/api/resource_provison/emergency/defense_projects/',
+    method: 'get',
+    params: params
+  });
+}
+export function getairRaid(id) {
+  return request({
+    url: `/api/resource_provison/emergency/defense_projects/${id}`,
+    method: 'get'
+  });
+}
+export function uploadairRaid(id, project) {
+  return request({
+    url: '/api/resource_provison/emergency/defense_projects/' + id,
+    method: 'put',
+    data: project
+  });
+}
+export function addairRaid(projects) {
+  return request({
+    url: '/api/resource_provison/emergency/defense_projects/',
+    method: 'post',
+    data: projects
+  });
+}

+ 28 - 0
src/api/comprehensiveGuarantee/reliefResourceManagement/hydraulicEngineering.ts

@@ -0,0 +1,28 @@
+import request from '@/utils/request';
+export function getHydraulics(params) {
+  return request({
+    url: '/api/resource_provison/emergency/projects/',
+    method: 'get',
+    params: params
+  });
+}
+export function getHydraulic(id) {
+  return request({
+    url: `/api/resource_provison/emergency/projects/${id}`,
+    method: 'get'
+  });
+}
+export function uploadHydraulic(id, project) {
+  return request({
+    url: '/api/resource_provison/emergency/projects/' + id,
+    method: 'put',
+    data: project
+  });
+}
+export function addHydraulic(project_ids) {
+  return request({
+    url: '/api/resource_provison/emergency/projects/',
+    method: 'post',
+    data: project_ids
+  });
+}

+ 187 - 0
src/views/comprehensiveGuarantee/reliefResourceManagement/airRaidShelters.vue

@@ -0,0 +1,187 @@
+<template>
+  <div class="app-container">
+    <div v-show="!airRaidSheltersAddState.show && !airRaidSheltersEditState.show && !airRaidSheltersViewState.show">
+      <h1>人防工程管理</h1>
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <el-button type="primary" icon="Plus" @click="handleAdd">录入</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button type="primary" icon="Plus" @click="handleAdds">批量导入</el-button>
+        </el-col>
+      </el-row>
+      <!-- 表格组件 -->
+      <el-table ref="multipleTable" v-loading="loading" :data="tableData" style="width: 100%" :max-height="400">
+        <el-table-column label="id" align="center" prop="id" fixed="left" />
+        <el-table-column label="工程名称" align="center" prop="gcmc" fixed="left" />
+        <el-table-column label="建设单位" align="center" prop="jsdw" />
+        <el-table-column label="维护单位" align="center" prop="whdw" />
+        <el-table-column label="人防专业监理工程师" align="center" prop="rfzyjlgcs" />
+        <el-table-column label="建设地点" align="center" prop="jsdd" />
+        <el-table-column label="操作方式" align="center" prop="cd_operation" />
+        <el-table-column label="应建人防地下室面积(m³)" align="center" prop="yjrfdxsmj" />
+        <el-table-column label="实建人防地下室面积(m³)" align="center" prop="sjrfdxsmj" />
+        <el-table-column label="更新时间" align="center" prop="cs_time" />
+        <el-table-column label="新增时间" align="center" prop="add_time" />
+        <el-table-column label="监理单位" align="center" prop="jldw" />
+        <el-table-column label="建设单位统一社会信用代码" align="center" prop="jsdwdm" />
+        <el-table-column label="开工时间" align="center" prop="kgsj" />
+        <el-table-column label="审图单位" align="center" prop="stdw" />
+        <el-table-column label="批次号" align="center" prop="cd_batch" />
+        <el-table-column label="人防设计单位单位统一社会信用代码" align="center" prop="rfsjdwdm" />
+        <el-table-column label="人防设计单位" align="center" prop="rfsjdw" />
+        <el-table-column label="掩蔽人数" align="center" prop="ybrs" />
+        <el-table-column label="审图单位统一社会信用代码" align="center" prop="stdwdm" />
+        <el-table-column label="维护单位统一社会信用代码" align="center" prop="whdwdm" />
+        <el-table-column label="监理单位统一社会信用代码" align="center" prop="jldwdm" />
+        <el-table-column label="人防总监理工程师" align="center" prop="rfzjlgcs" />
+        <el-table-column label="竣工时间" align="center" prop="jgsj" />
+        <el-table-column label="人防防护设备单位" align="center" prop="rffhsbdw" />
+        <el-table-column label="人防防护设备单位统一社会信用代码" align="center" prop="rffhsbdwdm" />
+        <el-table-column label="经度" align="center" prop="longitude" />
+        <el-table-column label="维度" align="center" prop="latitude" />
+        <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="200">
+          <template #default="scope">
+            <el-text class="common-btn-text-primary" @click="handleView(scope.row)">查看</el-text>
+            <el-text class="common-btn-text-primary" @click="handleUpdate(scope.row)">修改</el-text>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        v-show="total > 0"
+        v-model:page="queryParams.page"
+        v-model:limit="queryParams.pageSize"
+        :total="total"
+        @pagination="fetchAirRaidSheltersData"
+      />
+    </div>
+    <AirRaidSheltersAdd v-if="airRaidSheltersAddState.show" @close="handleCancel" @refresh="fetchAirRaidSheltersData" />
+    <AirRaidSheltersEdit
+      v-if="airRaidSheltersEditState.show"
+      :event-id="airRaidSheltersEditState.eventId"
+      @close="handleCancel"
+      @refresh="fetchAirRaidSheltersData"
+    />
+    <AirRaidSheltersView v-if="airRaidSheltersViewState.show" :event-id="airRaidSheltersViewState.eventId" @close="handleCancel" />
+  </div>
+</template>
+
+<script setup lang="ts">
+import { onMounted, reactive, ref, toRefs } from 'vue';
+import { ElTable, ElTableColumn, ElButton, ElText } from 'element-plus';
+import { ComponentInternalInstance, getCurrentInstance } from 'vue';
+import { getairRaids } from '@/api/comprehensiveGuarantee/reliefResourceManagement/airRaidShelters';
+import Pagination from '@/components/Pagination/index.vue';
+import AirRaidSheltersAdd from './airRaidSheltersAdd.vue';
+import AirRaidSheltersEdit from './airRaidSheltersEdit.vue';
+import AirRaidSheltersView from './airRaidSheltersView.vue';
+const loading = ref(true);
+const showSearch = ref(true);
+const multiple = ref(true);
+const ids = ref<Array<number | string>>([]);
+const single = ref(true);
+const total = ref(0);
+const tableData = ref<any[]>([]);
+const selectedRow = ref<any | null>(null);
+
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+
+const initFormData = reactive({
+  id: '',
+  gcmc: '',
+  jsdw: '',
+  whdw: '',
+  rfzyjlgcs: '',
+  jsdd: '',
+  cd_operation: '',
+  yjrfdxsmj: '',
+  sjrfdxsmj: '',
+  cs_time: '',
+  add_time: '',
+  jldw: '',
+  jsdwdm: '',
+  kgsj: '',
+  stdw: '',
+  cd_batch: '',
+  rfsjdwdm: '',
+  rfsjdw: '',
+  ybrs: '',
+  stdwdm: '',
+  whdwdm: '',
+  jldwdm: '',
+  rfzjlgcs: '',
+  jgsj: '',
+  rffhsbdw: '',
+  rffhsbdwdm: '',
+  longitude: '',
+  latitude: ''
+});
+
+const data = reactive({
+  form: { ...initFormData },
+  queryParams: {
+    page: 1,
+    pageSize: 10
+  }
+});
+
+const { queryParams, form } = toRefs(data);
+
+const fetchAirRaidSheltersData = async () => {
+  try {
+    loading.value = true;
+    const response = await getairRaids(queryParams.value);
+    if (response.code === 200) {
+      tableData.value = response.data;
+      total.value = response.data.length;
+    } else {
+      console.error('获取数据失败:', response.msg);
+    }
+  } catch (error) {
+    console.error('请求数据时发生错误:', error);
+  } finally {
+    loading.value = false;
+  }
+};
+
+let airRaidSheltersViewState = reactive({
+  show: false,
+  eventId: ''
+});
+
+let airRaidSheltersEditState = reactive({
+  show: false,
+  eventId: ''
+});
+let airRaidSheltersAddState = reactive({
+  show: false
+});
+const handleAdd = () => {
+  airRaidSheltersAddState.show = true;
+};
+
+const handleView = (row: any) => {
+  airRaidSheltersViewState.eventId = row.id;
+  airRaidSheltersViewState.show = true;
+};
+
+const handleUpdate = (row: any) => {
+  airRaidSheltersEditState.eventId = row.id;
+  airRaidSheltersEditState.show = true;
+};
+
+const handleCancel = () => {
+  airRaidSheltersViewState.show = false;
+  airRaidSheltersEditState.show = false;
+  airRaidSheltersAddState.show = false;
+};
+onMounted(() => {
+  fetchAirRaidSheltersData();
+});
+</script>
+
+<style scoped>
+.app-container {
+  overflow-x: auto; /* 当内容溢出时允许水平滚动 */
+}
+</style>

+ 280 - 0
src/views/comprehensiveGuarantee/reliefResourceManagement/airRaidSheltersAdd.vue

@@ -0,0 +1,280 @@
+<template>
+  <div class="common-dialog">
+    <div class="common-dialog-content">
+      <div class="common-dialog-title-box">
+        <h3 class="common-dialog-title">新增人防工程</h3>
+      </div>
+      <div class="common-dialog-box">
+        <el-form ref="form" :model="formData" :rules="rules" label-width="auto">
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="工程名称:" prop="gcmc">
+                <el-input v-model="formData.gcmc" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="建设单位:" prop="jsdw">
+                <el-input v-model="formData.jsdw" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="维护单位:" prop="whdw">
+                <el-input v-model="formData.whdw" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="人防专业监理工程师:" prop="rfzyjlgcs">
+                <el-input v-model="formData.rfzyjlgcs" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="建设地点:" prop="jsdd">
+                <el-input v-model="formData.jsdd" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="操作方式:" prop="cd_operation">
+                <el-input v-model="formData.cd_operation" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="应建人防地下室面积:" prop="yjrfdxsmj">
+                <el-input v-model="formData.yjrfdxsmj" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="实建人防地下室面积:" prop="sjrfdxsmj">
+                <el-input v-model="formData.sjrfdxsmj" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="更新时间:" prop="cs_time">
+                <el-input v-model="formData.cs_time" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="新增时间:" prop="add_time">
+                <el-input v-model="formData.add_time" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="监理单位:" prop="jldw">
+                <el-input v-model="formData.jldw" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="建设单位统一社会信用代码:" prop="jsdwdm">
+                <el-input v-model="formData.jsdwdm" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="开工时间:" prop="kgsj">
+                <el-input v-model="formData.kgsj" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="审图单位:" prop="stdw">
+                <el-input v-model="formData.stdw" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="批次号:" prop="cd_batch">
+                <el-input v-model="formData.cd_batch" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="人防设计单位单位统一社会信用代码:" prop="rfsjdwdm">
+                <el-input v-model="formData.rfsjdwdm" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="人防设计单位:" prop="rfsjdw">
+                <el-input v-model="formData.rfsjdw" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="掩蔽人数:" prop="ybrs">
+                <el-input v-model="formData.ybrs" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="审图单位统一社会信用代码:" prop="stdwdm">
+                <el-input v-model="formData.stdwdm" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="维护单位统一社会信用代码:" prop="whdwdm">
+                <el-input v-model="formData.whdwdm" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="监理单位统一社会信用代码:" prop="jldwdm">
+                <el-input v-model="formData.jldwdm" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="人防总监理工程师:" prop="rfzjlgcs">
+                <el-input v-model="formData.rfzjlgcs" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="竣工时间:" prop="jgsj">
+                <el-input v-model="formData.jgsj" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="人防防护设备单位:" prop="rffhsbdw">
+                <el-input v-model="formData.rffhsbdw" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="20">
+              <el-form-item label="人防防护设备单位统一社会信用代码:" prop="rffhsbdw">
+                <el-input v-model="formData.rffhsbdw" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="经度:" prop="longitude">
+                <el-input v-model="formData.longitude" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="维度:" prop="latitude">
+                <el-input v-model="formData.latitude" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+        <div class="common-dialog-footer">
+          <el-button @click="closeDialog">取消</el-button>
+          <el-button type="primary" @click="submitForm">确定</el-button>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref } from 'vue';
+import { ElMessage } from 'element-plus';
+import { useRouter } from 'vue-router';
+import { addairRaid } from '@/api/comprehensiveGuarantee/reliefResourceManagement/airRaidShelters';
+
+const emits = defineEmits(['close']);
+
+const formData = ref({
+  id: '',
+  gcmc: '',
+  jsdw: '',
+  whdw: '',
+  rfzyjlgcs: '',
+  jsdd: '',
+  cd_operation: '',
+  yjrfdxsmj: '',
+  sjrfdxsmj: '',
+  cs_time: '',
+  add_time: '',
+  jldw: '',
+  jsdwdm: '',
+  kgsj: '',
+  stdw: '',
+  cd_batch: '',
+  rfsjdwdm: '',
+  rfsjdw: '',
+  ybrs: '',
+  stdwdm: '',
+  whdwdm: '',
+  jldwdm: '',
+  rfzjlgcs: '',
+  jgsj: '',
+  rffhsbdw: '',
+  rffhsbdwdm: '',
+  longitude: '',
+  latitude: ''
+});
+
+const rules = ref({
+  gcmc: [{ required: true, message: '工程名称不能为空', trigger: 'blur' }],
+  jsdw: [{ required: true, message: '建设单位不能为空', trigger: 'blur' }],
+  whdw: [{ required: true, message: '维护单位不能为空', trigger: 'blur' }],
+  rfzyjlgcs: [{ required: true, message: '人防专业监理工程师不能为空', trigger: 'blur' }],
+  jsdd: [{ required: true, message: '建设地点不能为空', trigger: 'blur' }],
+  cd_operation: [{ required: true, message: '操作方式不能为空', trigger: 'blur' }],
+  yjrfdxsmj: [{ required: true, message: '应建人防地下室面积不能为空', trigger: 'blur' }],
+  sjrfdxsmj: [{ required: true, message: '实建人防地下室面积不能为空', trigger: 'blur' }],
+  cs_time: [{ required: true, message: '更新时间不能为空', trigger: 'blur' }],
+  add_time: [{ required: true, message: '新增时间不能为空', trigger: 'blur' }],
+  jldw: [{ required: true, message: '监理单位不能为空', trigger: 'blur' }],
+  jsdwdm: [{ required: true, message: '建设单位统一社会信用代码不能为空', trigger: 'blur' }],
+  kgsj: [{ required: true, message: '开工时间不能为空', trigger: 'blur' }],
+  stdw: [{ required: true, message: '审图单位不能为空', trigger: 'blur' }],
+  cd_batch: [{ required: true, message: '批次号不能为空', trigger: 'blur' }],
+  rfsjdwdm: [{ required: true, message: '人防设计单位单位统一社会信用代码不能为空', trigger: 'blur' }],
+  rfsjdw: [{ required: true, message: '人防设计单位不能为空', trigger: 'blur' }],
+  ybrs: [{ required: true, message: '掩蔽人数不能为空', trigger: 'blur' }],
+  stdwdm: [{ required: true, message: '审图单位统一社会信用代码不能为空', trigger: 'blur' }],
+  whdwdm: [{ required: true, message: '维护单位统一社会信用代码不能为空', trigger: 'blur' }],
+  jldwdm: [{ required: true, message: '监理单位统一社会信用代码不能为空', trigger: 'blur' }],
+  rfzjlgcs: [{ required: true, message: '人防总监理工程师不能为空', trigger: 'blur' }],
+  jgsj: [{ required: true, message: '竣工时间不能为空', trigger: 'blur' }],
+  rffhsbdw: [{ required: true, message: '人防防护设备单位不能为空', trigger: 'blur' }],
+  rffhsbdwdm: [{ required: true, message: '人防防护设备单位统一社会信用代码不能为空', trigger: 'blur' }],
+  longitude: [{ required: true, message: '经度不能为空', trigger: 'blur' }],
+  latitude: [{ required: true, message: '维度不能为空', trigger: 'blur' }]
+});
+
+const form = ref(null); // 定义 form 变量
+
+const closeDialog = () => {
+  emits('close');
+};
+
+const router = useRouter();
+
+// 提交表单
+const submitForm = async () => {
+  try {
+    await form.value.validate();
+    const payload = {
+      projects: [formData.value]
+    };
+    const response = await addairRaid(payload);
+    if (response.code === 200) {
+      ElMessage.success('提交成功');
+      closeDialog();
+      emits('refresh');
+    } else {
+      ElMessage.error(response.msg || '提交失败,请稍后再试');
+    }
+  } catch (error) {
+    ElMessage.error('表单验证失败,请检查输入');
+  }
+};
+</script>
+
+<style scoped></style>

+ 250 - 0
src/views/comprehensiveGuarantee/reliefResourceManagement/airRaidSheltersEdit.vue

@@ -0,0 +1,250 @@
+<template>
+  <div class="common-dialog">
+    <div class="common-dialog-content">
+      <div class="common-dialog-title-box">
+        <h3 class="common-dialog-title">编辑</h3>
+      </div>
+      <div class="common-dialog-box">
+        <el-form ref="form" :model="formData" label-width="auto">
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="工程名称:" prop="gcmc">
+                <el-input v-model="formData.gcmc" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="建设单位:" prop="jsdw">
+                <el-input v-model="formData.jsdw" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="维护单位:" prop="whdw">
+                <el-input v-model="formData.whdw" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="人防专业监理工程师:" prop="rfzyjlgcs">
+                <el-input v-model="formData.rfzyjlgcs" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="建设地点:" prop="jsdd">
+                <el-input v-model="formData.jsdd" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="操作方式:" prop="cd_operation">
+                <el-input v-model="formData.cd_operation" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="应建人防地下室面积:" prop="yjrfdxsmj">
+                <el-input v-model="formData.yjrfdxsmj" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="实建人防地下室面积:" prop="sjrfdxsmj">
+                <el-input v-model="formData.sjrfdxsmj" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="更新时间:" prop="cs_time">
+                <el-input v-model="formData.cs_time" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="新增时间:" prop="add_time">
+                <el-input v-model="formData.add_time" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="监理单位:" prop="jldw">
+                <el-input v-model="formData.jldw" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="建设单位统一社会信用代码:" prop="jsdwdm">
+                <el-input v-model="formData.jsdwdm" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="开工时间:" prop="kgsj">
+                <el-input v-model="formData.kgsj" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="审图单位:" prop="stdw">
+                <el-input v-model="formData.stdw" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="批次号:" prop="cd_batch">
+                <el-input v-model="formData.cd_batch" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="人防设计单位单位统一社会信用代码:" prop="rfsjdwdm">
+                <el-input v-model="formData.rfsjdwdm" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="人防设计单位:" prop="rfsjdw">
+                <el-input v-model="formData.rfsjdw" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="掩蔽人数:" prop="ybrs">
+                <el-input v-model="formData.ybrs" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="审图单位统一社会信用代码:" prop="stdwdm">
+                <el-input v-model="formData.stdwdm" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="维护单位统一社会信用代码:" prop="whdwdm">
+                <el-input v-model="formData.whdwdm" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="监理单位统一社会信用代码:" prop="jldwdm">
+                <el-input v-model="formData.jldwdm" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="人防总监理工程师:" prop="rfzjlgcs">
+                <el-input v-model="formData.rfzjlgcs" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="竣工时间:" prop="jgsj">
+                <el-input v-model="formData.jgsj" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="人防防护设备单位:" prop="rffhsbdw">
+                <el-input v-model="formData.rffhsbdw" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="20">
+              <el-form-item label="人防防护设备单位统一社会信用代码:" prop="rffhsbdw">
+                <el-input v-model="formData.rffhsbdw" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="经度:" prop="longitude">
+                <el-input v-model="formData.longitude" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="维度:" prop="latitude">
+                <el-input v-model="formData.latitude" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+        <div class="common-dialog-footer">
+          <el-button type="primary" @click="submitForm">确定</el-button>
+          <el-button @click="closeDialog">取消</el-button>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref, onMounted } from 'vue';
+import { ElMessage } from 'element-plus';
+import { getairRaid, uploadairRaid } from '@/api/comprehensiveGuarantee/reliefResourceManagement/airRaidShelters';
+
+const emits = defineEmits(['close']);
+const props = defineProps<{
+  eventId: string | number;
+}>();
+
+const formData = ref({
+  id: '',
+  gcmc: '',
+  jsdw: '',
+  whdw: '',
+  rfzyjlgcs: '',
+  jsdd: '',
+  cd_operation: '',
+  yjrfdxsmj: '',
+  sjrfdxsmj: '',
+  cs_time: '',
+  add_time: '',
+  jldw: '',
+  jsdwdm: '',
+  kgsj: '',
+  stdw: '',
+  cd_batch: '',
+  rfsjdwdm: '',
+  rfsjdw: '',
+  ybrs: '',
+  stdwdm: '',
+  whdwdm: '',
+  jldwdm: '',
+  rfzjlgcs: '',
+  jgsj: '',
+  rffhsbdw: '',
+  rffhsbdwdm: '',
+  longitude: '',
+  latitude: ''
+});
+
+const closeDialog = () => {
+  emits('close');
+};
+
+const fetchairRaidData = async () => {
+  const response = await getairRaid(props.eventId);
+  if (response.code === 200) {
+    formData.value = response.project;
+  } else {
+    ElMessage.error('未找到相关数据');
+  }
+};
+const submitForm = async () => {
+  const response = await uploadairRaid(props.eventId, formData.value);
+  if (response.code === 200) {
+    ElMessage.success('提交成功');
+    closeDialog();
+    emits('refresh');
+  } else {
+    ElMessage.error(response.msg);
+  }
+};
+onMounted(() => {
+  fetchairRaidData();
+});
+</script>
+
+<style scoped></style>

+ 239 - 0
src/views/comprehensiveGuarantee/reliefResourceManagement/airRaidSheltersView.vue

@@ -0,0 +1,239 @@
+<template>
+  <div class="common-dialog">
+    <div class="common-dialog-content">
+      <div class="common-dialog-title-box">
+        <h3 class="common-dialog-title">查看详情</h3>
+      </div>
+      <div class="common-dialog-box">
+        <el-form ref="form" :model="formData" label-width="auto">
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="工程名称:" prop="gcmc">
+                <el-input v-model="formData.gcmc" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="建设单位:" prop="jsdw">
+                <el-input v-model="formData.jsdw" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="维护单位:" prop="whdw">
+                <el-input v-model="formData.whdw" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="人防专业监理工程师:" prop="rfzyjlgcs">
+                <el-input v-model="formData.rfzyjlgcs" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="建设地点:" prop="jsdd">
+                <el-input v-model="formData.jsdd" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="操作方式:" prop="cd_operation">
+                <el-input v-model="formData.cd_operation" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="应建人防地下室面积:" prop="yjrfdxsmj">
+                <el-input v-model="formData.yjrfdxsmj" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="实建人防地下室面积:" prop="sjrfdxsmj">
+                <el-input v-model="formData.sjrfdxsmj" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="更新时间:" prop="cs_time">
+                <el-input v-model="formData.cs_time" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="新增时间:" prop="add_time">
+                <el-input v-model="formData.add_time" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="监理单位:" prop="jldw">
+                <el-input v-model="formData.jldw" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="建设单位统一社会信用代码:" prop="jsdwdm">
+                <el-input v-model="formData.jsdwdm" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="开工时间:" prop="kgsj">
+                <el-input v-model="formData.kgsj" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="审图单位:" prop="stdw">
+                <el-input v-model="formData.stdw" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="批次号:" prop="cd_batch">
+                <el-input v-model="formData.cd_batch" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="人防设计单位单位统一社会信用代码:" prop="rfsjdwdm">
+                <el-input v-model="formData.rfsjdwdm" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="人防设计单位:" prop="rfsjdw">
+                <el-input v-model="formData.rfsjdw" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="掩蔽人数:" prop="ybrs">
+                <el-input v-model="formData.ybrs" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="审图单位统一社会信用代码:" prop="stdwdm">
+                <el-input v-model="formData.stdwdm" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="维护单位统一社会信用代码:" prop="whdwdm">
+                <el-input v-model="formData.whdwdm" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="监理单位统一社会信用代码:" prop="jldwdm">
+                <el-input v-model="formData.jldwdm" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="人防总监理工程师:" prop="rfzjlgcs">
+                <el-input v-model="formData.rfzjlgcs" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="竣工时间:" prop="jgsj">
+                <el-input v-model="formData.jgsj" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="人防防护设备单位:" prop="rffhsbdw">
+                <el-input v-model="formData.rffhsbdw" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="20">
+              <el-form-item label="人防防护设备单位统一社会信用代码:" prop="rffhsbdw">
+                <el-input v-model="formData.rffhsbdw" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="经度:" prop="longitude">
+                <el-input v-model="formData.longitude" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="维度:" prop="latitude">
+                <el-input v-model="formData.latitude" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+        <div class="common-dialog-footer">
+          <el-button type="primary" @click="closeDialog">返回</el-button>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref, onMounted } from 'vue';
+import { ElMessage } from 'element-plus';
+import { getairRaid } from '@/api/comprehensiveGuarantee/reliefResourceManagement/airRaidShelters';
+
+const emits = defineEmits(['close']);
+const props = defineProps<{
+  eventId: string | number;
+}>();
+
+const formData = ref({
+  id: '',
+  gcmc: '',
+  jsdw: '',
+  whdw: '',
+  rfzyjlgcs: '',
+  jsdd: '',
+  cd_operation: '',
+  yjrfdxsmj: '',
+  sjrfdxsmj: '',
+  cs_time: '',
+  add_time: '',
+  jldw: '',
+  jsdwdm: '',
+  kgsj: '',
+  stdw: '',
+  cd_batch: '',
+  rfsjdwdm: '',
+  rfsjdw: '',
+  ybrs: '',
+  stdwdm: '',
+  whdwdm: '',
+  jldwdm: '',
+  rfzjlgcs: '',
+  jgsj: '',
+  rffhsbdw: '',
+  rffhsbdwdm: '',
+  longitude: '',
+  latitude: ''
+});
+
+const closeDialog = () => {
+  emits('close');
+};
+
+const fetchairRaidData = async () => {
+  const response = await getairRaid(props.eventId);
+  if (response.code === 200) {
+    formData.value = response.project;
+  } else {
+    ElMessage.error('未找到相关数据');
+  }
+};
+onMounted(() => {
+  fetchairRaidData();
+});
+</script>
+
+<style scoped></style>

+ 173 - 0
src/views/comprehensiveGuarantee/reliefResourceManagement/hydraulicEngineering.vue

@@ -0,0 +1,173 @@
+<template>
+  <div class="app-container">
+    <div v-show="!hydraulicEngineeringAddState.show && !hydraulicEngineeringEditState.show && !hydraulicEngineeringViewState.show">
+      <h1>水利工程管理</h1>
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <el-button type="primary" icon="Plus" @click="handleAdd">录入</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          <el-button type="primary" icon="Plus" @click="handleAdds">批量导入</el-button>
+        </el-col>
+      </el-row>
+      <!-- 表格组件 -->
+      <el-table ref="multipleTable" v-loading="loading" :data="tableData" style="width: 100%" :max-height="400">
+        <el-table-column label="id" align="center" prop="id" fixed="left" />
+        <el-table-column label="水利设施和水利工程名称" align="center" prop="slsshslgcmc" fixed="left" />
+        <el-table-column label="建设单位名称" align="center" prop="jsdwmc" />
+        <el-table-column label="水利设施和水利工程地点" align="center" prop="slsshslgcdd" />
+        <el-table-column label="建设单位证件类型" align="center" prop="jsdwzjlx" />
+        <el-table-column label="联系方式" align="center" prop="lxfs" />
+        <el-table-column label="数据提供部门统一社会信用代码" align="center" prop="sjtgbmtyshxydm" />
+        <el-table-column label="监督管理机关编码" align="center" prop="jdgljgbm" />
+        <el-table-column label="插入时间" align="center" prop="cd_time" />
+        <el-table-column label="数据提供部门名称" align="center" prop="sjtgbmmc" />
+        <el-table-column label="灌溉面积" align="center" prop="ggmj" />
+        <el-table-column label="数据提供部门行政区划代码" align="center" prop="sjtgbmxzqhdm" />
+        <el-table-column label="建设单位证件号码" align="center" prop="jsdwzjhm" />
+        <el-table-column label="水利设施和水利工程所在地行政区划代码" align="center" prop="xzqhdm" />
+        <el-table-column label="占地面积" align="center" prop="zdmj" />
+        <el-table-column label="ETL时间" align="center" prop="etl_time" />
+        <el-table-column label="建设时间" align="center" prop="jssj" />
+        <el-table-column label="数据批次号" align="center" prop="cd_batch" />
+        <el-table-column label="监督管理机关" align="center" prop="jdgljg" />
+        <el-table-column label="经度" align="center" prop="longitude" />
+        <el-table-column label="维度" align="center" prop="latitude" />
+        <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="200">
+          <template #default="scope">
+            <el-text class="common-btn-text-primary" @click="handleView(scope.row)">查看</el-text>
+            <el-text class="common-btn-text-primary" @click="handleUpdate(scope.row)">修改</el-text>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        v-show="total > 0"
+        v-model:page="queryParams.page"
+        v-model:limit="queryParams.pageSize"
+        :total="total"
+        @pagination="fetchHydraulicData"
+      />
+    </div>
+    <HydraulicEngineeringAdd v-if="hydraulicEngineeringAddState.show" @close="handleCancel" @refresh="fetchHydraulicData" />
+    <HydraulicEngineeringEdit
+      v-if="hydraulicEngineeringEditState.show"
+      :event-id="hydraulicEngineeringEditState.eventId"
+      @close="handleCancel"
+      @refresh="fetchHydraulicData"
+    />
+    <HydraulicEngineeringView v-if="hydraulicEngineeringViewState.show" :event-id="hydraulicEngineeringViewState.eventId" @close="handleCancel" />
+  </div>
+</template>
+
+<script setup lang="ts">
+import { onMounted, reactive, ref, toRefs } from 'vue';
+import { ElTable, ElTableColumn, ElButton, ElText } from 'element-plus';
+import { ComponentInternalInstance, getCurrentInstance } from 'vue';
+import { getHydraulics } from '@/api/comprehensiveGuarantee/reliefResourceManagement/hydraulicEngineering';
+import Pagination from '@/components/Pagination/index.vue';
+import HydraulicEngineeringAdd from './hydraulicEngineeringAdd.vue';
+import HydraulicEngineeringEdit from './hydraulicEngineeringEdit.vue';
+import HydraulicEngineeringView from './hydraulicEngineeringView.vue';
+const loading = ref(true);
+const showSearch = ref(true);
+const multiple = ref(true);
+const ids = ref<Array<number | string>>([]);
+const single = ref(true);
+const total = ref(0);
+const tableData = ref<any[]>([]);
+const selectedRow = ref<any | null>(null);
+
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+
+const initFormData = reactive({
+  id: '',
+  slsshslgcmc: '',
+  jsdwmc: '',
+  slsshslgcdd: '',
+  jsdwzjlx: '',
+  lxfs: '',
+  sjtgbmtyshxydm: '',
+  jdgljgbm: '',
+  cd_time: '',
+  sjtgbmmc: '',
+  ggmj: '',
+  sjtgbmxzqhdm: '',
+  jsdwzjhm: '',
+  xzqhdm: '',
+  zdmj: '',
+  etl_time: '',
+  jssj: '',
+  cd_batch: '',
+  jdgljg: '',
+  longitude: '',
+  latitude: ''
+});
+
+const data = reactive({
+  form: { ...initFormData },
+  queryParams: {
+    page: 1,
+    pageSize: 10
+  }
+});
+
+const { queryParams, form } = toRefs(data);
+
+const fetchHydraulicData = async () => {
+  try {
+    loading.value = true;
+    const response = await getHydraulics(queryParams.value);
+    if (response.code === 200) {
+      tableData.value = response.data;
+      total.value = response.data.length;
+    } else {
+      console.error('获取数据失败:', response.msg);
+    }
+  } catch (error) {
+    console.error('请求数据时发生错误:', error);
+  } finally {
+    loading.value = false;
+  }
+};
+
+let hydraulicEngineeringViewState = reactive({
+  show: false,
+  eventId: ''
+});
+
+let hydraulicEngineeringEditState = reactive({
+  show: false,
+  eventId: ''
+});
+let hydraulicEngineeringAddState = reactive({
+  show: false
+});
+const handleAdd = () => {
+  hydraulicEngineeringAddState.show = true;
+};
+
+const handleView = (row: any) => {
+  hydraulicEngineeringViewState.eventId = row.id;
+  hydraulicEngineeringViewState.show = true;
+};
+
+const handleUpdate = (row: any) => {
+  hydraulicEngineeringEditState.eventId = row.id;
+  hydraulicEngineeringEditState.show = true;
+};
+
+const handleCancel = () => {
+  hydraulicEngineeringViewState.show = false;
+  hydraulicEngineeringEditState.show = false;
+  hydraulicEngineeringAddState.show = false;
+};
+onMounted(() => {
+  fetchHydraulicData();
+});
+</script>
+
+<style scoped>
+.app-container {
+  overflow-x: auto; /* 当内容溢出时允许水平滚动 */
+}
+</style>

+ 223 - 0
src/views/comprehensiveGuarantee/reliefResourceManagement/hydraulicEngineeringAdd.vue

@@ -0,0 +1,223 @@
+<template>
+  <div class="common-dialog">
+    <div class="common-dialog-content">
+      <div class="common-dialog-title-box">
+        <h3 class="common-dialog-title">新增水利工程</h3>
+      </div>
+      <div class="common-dialog-box">
+        <el-form ref="form" :model="formData" :rules="rules" label-width="auto">
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="水利设施和水利工程名称:" prop="slsshslgcmc">
+                <el-input v-model="formData.slsshslgcmc" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="建设单位名称:" prop="jsdwmc">
+                <el-input v-model="formData.jsdwmc" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="水利设施和水利工程地点:" prop="slsshslgcdd">
+                <el-input v-model="formData.slsshslgcdd" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="建设单位证件类型:" prop="jsdwzjlx">
+                <el-input v-model="formData.jsdwzjlx" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="联系方式:" prop="lxfs">
+                <el-input v-model="formData.lxfs" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="数据提供部门统一社会信用代码:" prop="sjtgbmtyshxydm">
+                <el-input v-model="formData.sjtgbmtyshxydm" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="监督管理机关编码:" prop="jdgljgbm">
+                <el-input v-model="formData.jdgljgbm" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="插入时间:" prop="cd_time">
+                <el-input v-model="formData.cd_time" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="数据提供部门名称:" prop="sjtgbmmc">
+                <el-input v-model="formData.sjtgbmmc" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="灌溉面积:" prop="ggmj">
+                <el-input v-model="formData.ggmj" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="数据提供部门行政区划代码:" prop="sjtgbmxzqhdm">
+                <el-input v-model="formData.sjtgbmxzqhdm" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="建设单位证件号码:" prop="jsdwzjhm">
+                <el-input v-model="formData.jsdwzjhm" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="水利设施和水利工程所在地行政区划代码:" prop="xzqhdm">
+                <el-input v-model="formData.xzqhdm" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="占地面积:" prop="zdmj">
+                <el-input v-model="formData.zdmj" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="ETL时间:" prop="etl_time">
+                <el-input v-model="formData.etl_time" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="建设时间:" prop="jssj">
+                <el-input v-model="formData.jssj" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="数据批次号:" prop="cd_batch">
+                <el-input v-model="formData.cd_batch" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="监督管理机关:" prop="jdgljg">
+                <el-input v-model="formData.jdgljg" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="经度:" prop="longitude">
+                <el-input v-model="formData.longitude" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="维度:" prop="latitude">
+                <el-input v-model="formData.latitude" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+        <div class="common-dialog-footer">
+          <el-button @click="closeDialog">取消</el-button>
+          <el-button type="primary" @click="submitForm">确定</el-button>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref } from 'vue';
+import { ElMessage } from 'element-plus';
+import { useRouter } from 'vue-router';
+import { addHydraulic } from '@/api/comprehensiveGuarantee/reliefResourceManagement/hydraulicEngineering';
+
+const emits = defineEmits(['close']);
+
+const formData = ref({
+  id: '',
+  slsshslgcmc: '',
+  jsdwmc: '',
+  slsshslgcdd: '',
+  jsdwzjlx: '',
+  lxfs: '',
+  sjtgbmtyshxydm: '',
+  jdgljgbm: '',
+  cd_time: '',
+  sjtgbmmc: '',
+  ggmj: '',
+  sjtgbmxzqhdm: '',
+  jsdwzjhm: '',
+  xzqhdm: '',
+  zdmj: '',
+  etl_time: '',
+  jssj: '',
+  cd_batch: '',
+  jdgljg: '',
+  longitude: '',
+  latitude: ''
+});
+
+const rules = ref({
+  gcmc: [{ required: true, message: '水利设施和水利工程名称不能为空', trigger: 'blur' }],
+  jsdw: [{ required: true, message: '建设单位名称不能为空', trigger: 'blur' }],
+  whdw: [{ required: true, message: '水利设施和水利工程地点不能为空', trigger: 'blur' }],
+  rfzyjlgcs: [{ required: true, message: '建设单位证件类型不能为空', trigger: 'blur' }],
+  jsdd: [{ required: true, message: '联系方式不能为空', trigger: 'blur' }],
+  cd_operation: [{ required: true, message: '数据提供部门统一社会信用代码不能为空', trigger: 'blur' }],
+  yjrfdxsmj: [{ required: true, message: '监督管理机关编码不能为空', trigger: 'blur' }],
+  sjrfdxsmj: [{ required: true, message: '插入时间不能为空', trigger: 'blur' }],
+  cs_time: [{ required: true, message: '数据提供部门名称不能为空', trigger: 'blur' }],
+  add_time: [{ required: true, message: '灌溉面积不能为空', trigger: 'blur' }],
+  jldw: [{ required: true, message: '数据提供部门行政区划代码不能为空', trigger: 'blur' }],
+  jsdwdm: [{ required: true, message: '建设单位证件号码不能为空', trigger: 'blur' }],
+  kgsj: [{ required: true, message: '水利设施和水利工程所在地行政区划代码不能为空', trigger: 'blur' }],
+  stdw: [{ required: true, message: '占地面积不能为空', trigger: 'blur' }],
+  cd_batch: [{ required: true, message: 'ETL时间不能为空', trigger: 'blur' }],
+  rfsjdwdm: [{ required: true, message: '建设时间不能为空', trigger: 'blur' }],
+  rfsjdw: [{ required: true, message: '数据批次号不能为空', trigger: 'blur' }],
+  ybrs: [{ required: true, message: '监督管理机关不能为空', trigger: 'blur' }],
+  longitude: [{ required: true, message: '经度不能为空', trigger: 'blur' }],
+  latitude: [{ required: true, message: '维度不能为空', trigger: 'blur' }]
+});
+
+const form = ref(null); // 定义 form 变量
+
+const closeDialog = () => {
+  emits('close');
+};
+
+const router = useRouter();
+
+// 提交表单
+const submitForm = async () => {
+  try {
+    await form.value.validate();
+    const payload = {
+      project_ids: [formData.value]
+    };
+    const response = await addHydraulic(payload);
+    if (response.code === 200) {
+      ElMessage.success('提交成功');
+      closeDialog();
+      emits('refresh');
+    } else {
+      ElMessage.error(response.msg || '提交失败,请稍后再试');
+    }
+  } catch (error) {
+    ElMessage.error('表单验证失败,请检查输入');
+  }
+};
+</script>
+
+<style scoped></style>

+ 201 - 0
src/views/comprehensiveGuarantee/reliefResourceManagement/hydraulicEngineeringEdit.vue

@@ -0,0 +1,201 @@
+<template>
+  <div class="common-dialog">
+    <div class="common-dialog-content">
+      <div class="common-dialog-title-box">
+        <h3 class="common-dialog-title">编辑</h3>
+      </div>
+      <div class="common-dialog-box">
+        <el-form ref="form" :model="formData" label-width="auto">
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="水利设施和水利工程名称:" prop="slsshslgcmc">
+                <el-input v-model="formData.slsshslgcmc" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="建设单位名称:" prop="jsdwmc">
+                <el-input v-model="formData.jsdwmc" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="水利设施和水利工程地点:" prop="slsshslgcdd">
+                <el-input v-model="formData.slsshslgcdd" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="建设单位证件类型:" prop="jsdwzjlx">
+                <el-input v-model="formData.jsdwzjlx" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="联系方式:" prop="lxfs">
+                <el-input v-model="formData.lxfs" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="数据提供部门统一社会信用代码:" prop="sjtgbmtyshxydm">
+                <el-input v-model="formData.sjtgbmtyshxydm" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="监督管理机关编码:" prop="jdgljgbm">
+                <el-input v-model="formData.jdgljgbm" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="插入时间:" prop="cd_time">
+                <el-input v-model="formData.cd_time" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="数据提供部门名称:" prop="sjtgbmmc">
+                <el-input v-model="formData.sjtgbmmc" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="灌溉面积:" prop="ggmj">
+                <el-input v-model="formData.ggmj" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="数据提供部门行政区划代码:" prop="sjtgbmxzqhdm">
+                <el-input v-model="formData.sjtgbmxzqhdm" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="建设单位证件号码:" prop="jsdwzjhm">
+                <el-input v-model="formData.jsdwzjhm" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="水利设施和水利工程所在地行政区划代码:" prop="xzqhdm">
+                <el-input v-model="formData.xzqhdm" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="占地面积:" prop="zdmj">
+                <el-input v-model="formData.zdmj" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="ETL时间:" prop="etl_time">
+                <el-input v-model="formData.etl_time" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="建设时间:" prop="jssj">
+                <el-input v-model="formData.jssj" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="数据批次号:" prop="cd_batch">
+                <el-input v-model="formData.cd_batch" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="监督管理机关:" prop="jdgljg">
+                <el-input v-model="formData.jdgljg" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="经度:" prop="longitude">
+                <el-input v-model="formData.longitude" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="维度:" prop="latitude">
+                <el-input v-model="formData.latitude" style="width: 468px !important" />
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+        <div class="common-dialog-footer">
+          <el-button type="primary" @click="submitForm">确定</el-button>
+          <el-button @click="closeDialog">取消</el-button>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref, onMounted } from 'vue';
+import { ElMessage } from 'element-plus';
+import { getHydraulic, uploadHydraulic } from '@/api/comprehensiveGuarantee/reliefResourceManagement/hydraulicEngineering';
+
+const emits = defineEmits(['close']);
+const props = defineProps<{
+  eventId: string | number;
+}>();
+
+const formData = ref({
+  id: '',
+  slsshslgcmc: '',
+  jsdwmc: '',
+  slsshslgcdd: '',
+  jsdwzjlx: '',
+  lxfs: '',
+  sjtgbmtyshxydm: '',
+  jdgljgbm: '',
+  cd_time: '',
+  sjtgbmmc: '',
+  ggmj: '',
+  sjtgbmxzqhdm: '',
+  jsdwzjhm: '',
+  xzqhdm: '',
+  zdmj: '',
+  etl_time: '',
+  jssj: '',
+  cd_batch: '',
+  jdgljg: '',
+  longitude: '',
+  latitude: ''
+});
+
+const closeDialog = () => {
+  emits('close');
+};
+
+const fetchHydraulicData = async () => {
+  const response = await getHydraulic(props.eventId);
+  if (response.code === 200) {
+    formData.value = response.project;
+  } else {
+    ElMessage.error('未找到相关数据');
+  }
+};
+const submitForm = async () => {
+  // 假设表单已经通过验证
+  const response = await uploadHydraulic(props.eventId, formData.value);
+  if (response.code === 200) {
+    ElMessage.success('提交成功');
+    closeDialog();
+    emits('refresh');
+  } else {
+    ElMessage.error(response.msg);
+  }
+};
+onMounted(() => {
+  fetchHydraulicData();
+});
+</script>
+
+<style scoped></style>

+ 189 - 0
src/views/comprehensiveGuarantee/reliefResourceManagement/hydraulicEngineeringView.vue

@@ -0,0 +1,189 @@
+<template>
+  <div class="common-dialog">
+    <div class="common-dialog-content">
+      <div class="common-dialog-title-box">
+        <h3 class="common-dialog-title">查看详情</h3>
+      </div>
+      <div class="common-dialog-box">
+        <el-form ref="form" :model="formData" label-width="auto">
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="水利设施和水利工程名称:" prop="slsshslgcmc">
+                <el-input v-model="formData.slsshslgcmc" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="建设单位名称:" prop="jsdwmc">
+                <el-input v-model="formData.jsdwmc" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="水利设施和水利工程地点:" prop="slsshslgcdd">
+                <el-input v-model="formData.slsshslgcdd" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="建设单位证件类型:" prop="jsdwzjlx">
+                <el-input v-model="formData.jsdwzjlx" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="联系方式:" prop="lxfs">
+                <el-input v-model="formData.lxfs" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="数据提供部门统一社会信用代码:" prop="sjtgbmtyshxydm">
+                <el-input v-model="formData.sjtgbmtyshxydm" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="监督管理机关编码:" prop="jdgljgbm">
+                <el-input v-model="formData.jdgljgbm" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="插入时间:" prop="cd_time">
+                <el-input v-model="formData.cd_time" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="数据提供部门名称:" prop="sjtgbmmc">
+                <el-input v-model="formData.sjtgbmmc" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="灌溉面积:" prop="ggmj">
+                <el-input v-model="formData.ggmj" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="数据提供部门行政区划代码:" prop="sjtgbmxzqhdm">
+                <el-input v-model="formData.sjtgbmxzqhdm" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="建设单位证件号码:" prop="jsdwzjhm">
+                <el-input v-model="formData.jsdwzjhm" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="水利设施和水利工程所在地行政区划代码:" prop="xzqhdm">
+                <el-input v-model="formData.xzqhdm" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="占地面积:" prop="zdmj">
+                <el-input v-model="formData.zdmj" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="ETL时间:" prop="etl_time">
+                <el-input v-model="formData.etl_time" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="建设时间:" prop="jssj">
+                <el-input v-model="formData.jssj" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="数据批次号:" prop="cd_batch">
+                <el-input v-model="formData.cd_batch" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="监督管理机关:" prop="jdgljg">
+                <el-input v-model="formData.jdgljg" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20" class="mb8">
+            <el-col :span="10">
+              <el-form-item label="经度:" prop="longitude">
+                <el-input v-model="formData.longitude" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="维度:" prop="latitude">
+                <el-input v-model="formData.latitude" style="width: 468px !important" disabled />
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+        <div class="common-dialog-footer">
+          <el-button type="primary" @click="closeDialog">返回</el-button>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref, onMounted } from 'vue';
+import { ElMessage } from 'element-plus';
+import { getHydraulic } from '@/api/comprehensiveGuarantee/reliefResourceManagement/hydraulicEngineering';
+
+const emits = defineEmits(['close']);
+const props = defineProps<{
+  eventId: string | number;
+}>();
+
+const formData = ref({
+  id: '',
+  slsshslgcmc: '',
+  jsdwmc: '',
+  slsshslgcdd: '',
+  jsdwzjlx: '',
+  lxfs: '',
+  sjtgbmtyshxydm: '',
+  jdgljgbm: '',
+  cd_time: '',
+  sjtgbmmc: '',
+  ggmj: '',
+  sjtgbmxzqhdm: '',
+  jsdwzjhm: '',
+  xzqhdm: '',
+  zdmj: '',
+  etl_time: '',
+  jssj: '',
+  cd_batch: '',
+  jdgljg: '',
+  longitude: '',
+  latitude: ''
+});
+
+const closeDialog = () => {
+  emits('close');
+};
+
+const fetchHydraulicData = async () => {
+  const response = await getHydraulic(props.eventId);
+  if (response.code === 200) {
+    formData.value = response.project;
+  } else {
+    ElMessage.error('未找到相关数据');
+  }
+};
+onMounted(() => {
+  fetchHydraulicData();
+});
+</script>
+
+<style scoped></style>

+ 3 - 3
src/views/comprehensiveGuarantee/reliefResourceManagement/shelterEdit.vue

@@ -234,9 +234,9 @@ const closeDialog = () => {
 //     ElMessage.error(response.msg);
 //   }
 // };
-onMounted(() => {
-  fetchShelterData();
-});
+// onMounted(() => {
+//   fetchShelterData();
+// });
 </script>
 
 <style scoped></style>

+ 3 - 3
src/views/comprehensiveGuarantee/reliefResourceManagement/shelterView.vue

@@ -222,9 +222,9 @@ const closeDialog = () => {
 //     ElMessage.error('未找到相关数据');
 //   }
 // };
-onMounted(() => {
-  fetchShelterData();
-});
+// onMounted(() => {
+//   fetchShelterData();
+// });
 </script>
 
 <style scoped></style>