From eb296bfbd3f18dff5a2ee60b42f8415d51c897b9 Mon Sep 17 00:00:00 2001
From: 13404089107 <puwei@sinata.cn>
Date: 星期五, 11 四月 2025 09:49:57 +0800
Subject: [PATCH] fix

---
 src/views/applicationBatchList/components/UploadDialog.vue |   90 ++++++++++++++++++++++++++++++---------------
 1 files changed, 60 insertions(+), 30 deletions(-)

diff --git a/src/views/applicationBatchList/components/UploadDialog.vue b/src/views/applicationBatchList/components/UploadDialog.vue
index adb48ab..b6dbc5a 100644
--- a/src/views/applicationBatchList/components/UploadDialog.vue
+++ b/src/views/applicationBatchList/components/UploadDialog.vue
@@ -6,8 +6,8 @@
     @close="handleClose"
   >
     <el-form ref="uploadForm" :model="form" :rules="rules" label-width="180px">
-      <el-form-item label="批次号" prop="batchNumber">
-        <el-input v-model="form.batchNumber" placeholder="请输入" />
+      <el-form-item label="批次号" prop="batchNumber" v-if="!info.id">
+        <el-input v-model="form.batchNumber" placeholder="自动生成" disabled />
       </el-form-item>
       <el-form-item :label="'导入安置申请表'" prop="file">
         <el-upload
@@ -17,11 +17,12 @@
           :auto-upload="false"
           :on-change="handleFileChange"
           :limit="1"
+          :accept="'.xlsx,.xls'"
         >
           <i class="el-icon-upload"></i>
           <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
           <div class="el-upload__tip" slot="tip">
-            支持扩展名:.doc .docx .xlsx .xls
+            支持扩展名:.xlsx .xls
           </div>
         </el-upload>
       </el-form-item>
@@ -35,13 +36,23 @@
 
 <script>
 import { importBatch } from "@/api/application-batch";
+
 export default {
   name: 'UploadDialog',
   props: {
+    info: {
+      type: Object,
+      default: () => {
+       return {
+        id: 0,
+        batchNumber: ''
+       }
+      }
+    },
     visible: {
       type: Boolean,
       default: false
-    },
+    }
   },
   data() {
     return {
@@ -51,18 +62,20 @@
         file: null
       },
       rules: {
-        batchNumber: [
-          { required: true, message: '请输入批次号', trigger: 'blur' }
-        ],
-        file: [
-          { required: true, message: '请选择上传文件', trigger: 'change' }
-        ]
+        batchNumber: [{ required: false, message: '请输入批次号', trigger: 'blur' }],
+        file: [{ required: true, message: '请选择上传文件', trigger: 'change' }]
       }
     }
   },
   watch: {
-    visible(val) {
-      this.dialogVisible = val;
+    visible: {
+      handler(val) {
+        this.dialogVisible = val;
+        if (!val) {
+          this.handleClose();
+        }
+      },
+      immediate: true
     },
     dialogVisible(val) {
       this.$emit('update:visible', val);
@@ -70,31 +83,48 @@
   },
   methods: {
     handleClose() {
-      this.form.batchNumber = '';
-      this.form.file = null;
-      this.$refs.uploadForm && this.$refs.uploadForm.resetFields();
+      this.form = {
+        batchNumber: '',
+        file: null
+      };
+      if (this.$refs.uploadForm) {
+        this.$refs.uploadForm.resetFields();
+      }
+      this.dialogVisible = false;
     },
     handleFileChange(file) {
+      const isExcel = file.raw.type === 'application/vnd.ms-excel' || 
+                      file.raw.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
+      if (!isExcel) {
+        this.$message.error('只能上传Excel文件!');
+        this.form.file = null;
+        return;
+      }
       this.form.file = file.raw;
-      // 手动触发文件字段验证
-      this.$refs.uploadForm.validateField('file');
+      if (this.$refs.uploadForm) {
+        this.$refs.uploadForm.validateField('file');
+      }
     },
-    submitUpload() {
-      this.$refs.uploadForm.validate(valid => {
-        if (!valid) {
-          return;
-        }
+    async submitUpload() {
+      try {
+        await this.$refs.uploadForm.validate();
         
-        // 这里添加实际的上传逻辑
         const formData = new FormData();
         formData.append('file', this.form.file);
-        // 模拟上传
-        this.$message.info('正在上传,请稍候...');
-        setTimeout(() => {
-          this.$emit('success');
-          this.handleClose();
-        }, 1000);
-      });
+        
+        if (this.info?.id) {
+          formData.append('applyId', this.info.id);
+          formData.append('batchNumber', this.info.batchNumber);
+        } else {
+          formData.append('batchNumber', this.form.batchNumber);
+        }
+        await importBatch(formData);
+        this.$message.success('导入成功');
+        this.$emit('success');
+        this.handleClose();
+      } catch (error) {
+        this.$message.error(error.message || '导入失败');
+      }
     }
   }
 }

--
Gitblit v1.7.1