libushang hace 1 semana
padre
commit
70f4153079

+ 22 - 4
src/api/comprehensiveGuarantee/reliefResourceManagement/shelter.ts

@@ -1,28 +1,46 @@
 import request from '@/utils/request';
 export function getShelterts(params) {
   return request({
-    url: '/api/resource_provison/emergency/shelters/',
+    url: '/api/resource_provison/emergency/shelters/list',
     method: 'get',
     params: params
   });
 }
 export function getSheltert(id) {
   return request({
-    url: `/api/resource_provison/emergency/shelters/${id}`,
+    url: `/api/resource_provison/emergency/shelters/detail/${id}`,
     method: 'get'
   });
 }
 export function uploadSheltert(id, shelter) {
   return request({
-    url: '/api/resource_provison/emergency/shelters/' + id,
+    url: '/api/resource_provison/emergency/shelters/edit/' + id,
     method: 'put',
     data: shelter
   });
 }
 export function addSheltert(shelters) {
   return request({
-    url: '/api/resource_provison/emergency/shelters/',
+    url: '/api/resource_provison/emergency/shelters/add',
     method: 'post',
     data: shelters
   });
 }
+
+// 删除
+export function deleteSheltert(id: Array<string | number> | string | number) {
+  return request({
+    url: `/api/resource_provison/emergency/shelters/` + id,
+    method: 'delete'
+  });
+}
+
+
+// 导入
+export const importDocXls = (data) => {
+  return request({
+    url: '/api/resource_provison/emergency/shelters/import',
+    method: 'post',
+    data: data
+  });
+};

+ 10 - 10
src/views/comprehensiveGuarantee/reliefResourceManagement/rescueUnit.vue

@@ -53,16 +53,16 @@
     <RescueUnitView v-if="rescueUnitViewState.show" :event-id="rescueUnitViewState.eventId" @close="handleCancel" />
 
     <el-dialog ref="formImportDialogRef" v-model="showImportDlg" title="导入结构化文档" width="500px" append-to-body>
-    <el-form ref="formImportRef" :model="form" :rules="rules">
-      <FileUpload v-model="formImport.filename" :file-type="['xls', 'xlsx']" :limit="1" />
-    </el-form>
-    <template #footer>
-      <div class="dialog-footer">
-        <el-button :loading="buttonLoadingImport" type="primary" @click="submitImportForm">确 定</el-button>
-        <el-button @click="cancelImport">取 消</el-button>
-      </div>
-    </template>
-  </el-dialog>
+      <el-form ref="formImportRef" :model="form" :rules="rules">
+        <FileUpload v-model="formImport.filename" :file-type="['xls', 'xlsx']" :limit="1" />
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button :loading="buttonLoadingImport" type="primary" @click="submitImportForm">确 定</el-button>
+          <el-button @click="cancelImport">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
 
   </div>
 </template>

+ 75 - 2
src/views/comprehensiveGuarantee/reliefResourceManagement/shelter.vue

@@ -7,7 +7,11 @@
           <el-button type="primary" icon="Plus" @click="handleAdd">录入</el-button>
         </el-col>
         <el-col :span="1.5">
-          <el-button plain icon="Upload" @click="handleAdds">批量导入</el-button>
+          <el-button plain icon="Upload" @click="importDoc()">批量导入</el-button>
+        </el-col>
+        <el-col :span="1.5">
+          请先下载模板:
+          <el-button type="primary" icon="Bottom" @click="handleTemplate">下载模板</el-button>
         </el-col>
       </el-row>
       <!-- 表格组件 -->
@@ -45,6 +49,18 @@
     <ShelterAdd v-if="shelterAddState.show" @close="handleCancel" @refresh="fetchShelterData" />
     <ShelterEdit v-if="shelterEditState.show" :event-id="shelterEditState.eventId" @close="handleCancel" @refresh="fetchShelterData" />
     <ShelterView v-if="shelterViewState.show" :event-id="shelterViewState.eventId" @close="handleCancel" />
+
+    <el-dialog ref="formImportDialogRef" v-model="showImportDlg" title="导入结构化文档" width="500px" append-to-body>
+      <el-form ref="formImportRef" :model="form" :rules="rules">
+        <FileUpload v-model="formImport.filename" :file-type="['xls', 'xlsx']" :limit="1" />
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button :loading="buttonLoadingImport" type="primary" @click="submitImportForm">确 定</el-button>
+          <el-button @click="cancelImport">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
@@ -52,7 +68,7 @@
 import { onMounted, reactive, ref, toRefs } from 'vue';
 import { ElTable, ElTableColumn, ElButton, ElText } from 'element-plus';
 import { ComponentInternalInstance, getCurrentInstance } from 'vue';
-import { getShelterts } from '@/api/comprehensiveGuarantee/reliefResourceManagement/shelter';
+import { getShelterts, importDocXls } from '@/api/comprehensiveGuarantee/reliefResourceManagement/shelter';
 import Pagination from '@/components/Pagination/index.vue';
 import ShelterAdd from './shelterAdd.vue';
 import ShelterEdit from './shelterEdit.vue';
@@ -140,6 +156,63 @@ const handleCancel = () => {
   shelterAddState.show = false;
 };
 
+// 导入相关
+const baseUrl = import.meta.env.VITE_APP_BASE_API;
+const downLoadApi = import.meta.env.VITE_APP_BASE_DOWNLOAD_API;
+
+const showImportDlg = ref(false);
+const formImportDialogRef = ref(null);
+const formImportRef = ref<ElFormInstance>();
+const buttonLoadingImport = ref(false);
+
+const formImport = ref({
+  filename: ''
+});
+
+const rules = reactive({
+  filename: [{ required: true, message: '导入文件不能为空', trigger: 'blur' }]
+});
+
+const importDoc = () => {
+  resetImportForm();
+  showImportDlg.value = true;
+};
+
+const resetImportForm = () => {
+  formImport.value = {
+    filename: ''
+  };
+  formImportRef.value?.resetFields();
+  formImportRef.value?.clearValidate();
+};
+
+/**提交按钮 */
+const submitImportForm = () => {
+  formImportRef.value?.validate(async (valid) => {
+    if (valid) {
+      try {
+        buttonLoadingImport.value = true;
+        await importDocXls({ ...form.value});
+        proxy?.$modal.msgSuccess('导入成功');
+        showImportDlg.value = false;
+        fetchShelterData();
+      } finally {
+        buttonLoadingImport.value = false;
+      }
+    }
+  });
+};
+
+/** 取消按钮 */
+const cancelImport = () => {
+  resetImportForm();
+  showImportDlg.value = false;
+};
+
+const handleTemplate = async () => {
+  location.href = baseUrl + downLoadApi + 'shelters_import.xlsx';
+};
+
 onMounted(() => {
   fetchShelterData();
 });

+ 1 - 0
src/views/comprehensiveGuarantee/reliefResourceManagement/shelterAdd.vue

@@ -209,6 +209,7 @@ const formData = ref({
   space_type: '', //空间类型分类
   function_type: '', //功能定位分类
   construct_type: '', //建设类型
+  identification_department: '', //认定部门
   sponsor: '', //主管单位
   construction_unit: '', //建设单位
   completion_time: '', //建成时间