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/storing-data/components/UploadDialog.vue | 113 ++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 84 insertions(+), 29 deletions(-) diff --git a/src/views/storing-data/components/UploadDialog.vue b/src/views/storing-data/components/UploadDialog.vue index 4dc8ff8..27aab00 100644 --- a/src/views/storing-data/components/UploadDialog.vue +++ b/src/views/storing-data/components/UploadDialog.vue @@ -1,23 +1,32 @@ <template> <el-dialog - :title="type === 'add' ? '新增资料' : '编辑资料'" + :title="type === 'add' ? '新增资料' : type === 'edit' ? '编辑资料' : '资料详情'" :visible.sync="dialogVisible" width="40%" @close="handleClose" > <el-form ref="uploadForm" :model="form" :rules="rules" label-width="120px"> - <el-form-item label="镇(街道)" prop="batchNo"> - <el-input v-model="form.batchNo" placeholder="请输入" /> + <el-form-item label="镇(街道)" prop="street"> + <el-select :disabled="type === 'detail'" v-model="form.street" placeholder="请选择" @change="handleStreetChange"> + <el-option v-for="item in streetOptions" :key="item.dictCode" :label="item.dictLabel" :value="item.dictLabel"></el-option> + </el-select> </el-form-item> - <el-form-item label="资料名称" prop="batchNo"> - <el-input v-model="form.batchNo" placeholder="请输入" /> + <el-form-item label="资料名称" prop="name"> + <el-input v-model="form.name" :disabled="type === 'detail'" placeholder="请输入" /> </el-form-item> <el-form-item label="资料文件" prop="file"> <el-upload + :disabled="type === 'detail'" + ref="upload" class="upload-demo" drag - action="#" - :auto-upload="false" + :action="baseUrl + '/common/upload'" + :headers="{ + 'Authorization': 'Bearer ' + token + }" + :file-list="fileList" + :on-success="handleUploadSuccess" + :on-error="handleUploadError" :on-change="handleFileChange" :limit="1" > @@ -30,13 +39,16 @@ </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> - <el-button type="primary" @click="submitUpload">确 定</el-button> + <el-button v-if="type !== 'detail'" type="primary" @click="submitUpload">确 定</el-button> <el-button @click="dialogVisible = false">取 消</el-button> </div> </el-dialog> </template> <script> +import { getToken } from '@/utils/auth' +import { add, update } from "@/api/storing-data"; + export default { name: 'UploadDialog', props: { @@ -47,21 +59,31 @@ type: { type: String, default: 'add', - validator: function(value) { - return ['add', 'batch'].indexOf(value) !== -1 - } + }, + streetOptions: { + type: Array, + default: () => [] } }, data() { return { + token: getToken(), dialogVisible: false, + fileList: [], form: { - batchNo: '', - file: null + street: '', + name: '', + file: null, + attachName: '', + attachUrl: '' }, + baseUrl: process.env.VUE_APP_BASE_API, rules: { - batchNo: [ - { required: true, message: '请输入批次号', trigger: 'blur' } + street: [ + { required: true, message: '请选择镇(街道)', trigger: 'change' } + ], + name: [ + { required: true, message: '请输入资料名称', trigger: 'blur' } ], file: [ { required: true, message: '请选择上传文件', trigger: 'change' } @@ -79,35 +101,68 @@ }, methods: { handleClose() { - this.form.batchNo = ''; - this.form.file = null; + this.form = { + street: '', + name: '', + file: null, + attachName: '', + attachUrl: '' + }; this.$refs.uploadForm && this.$refs.uploadForm.resetFields(); + // 清空文件列表 + this.$refs.upload && this.$refs.upload.clearFiles(); }, handleFileChange(file) { this.form.file = file.raw; + this.form.attachName = file.name; // 手动触发文件字段验证 this.$refs.uploadForm.validateField('file'); + }, + // 处理上传成功 + handleUploadSuccess(response, file) { + if (response.code === 200) { + this.form.attachUrl = response.url; + this.$message.success('文件上传成功'); + } else { + this.$message.error(response.msg || '文件上传失败'); + } + }, + // 处理上传失败 + handleUploadError(err) { + this.$message.error('文件上传失败'); }, submitUpload() { this.$refs.uploadForm.validate(valid => { if (!valid) { return; } - - // 这里添加实际的上传逻辑 - const formData = new FormData(); - formData.append('file', this.form.file); - if (this.type === 'add') { - formData.append('batchNo', this.form.batchNo); + if (!this.form.attachUrl) { + this.$message.error('请先上传文件'); + return; } + // 构建提交数据 + const submitData = { + street: this.form.street, + name: this.form.name, + attachName: this.form.attachName, + attachUrl: this.form.attachUrl + }; - // 模拟上传 - this.$message.info('正在上传,请稍候...'); - setTimeout(() => { - this.$emit('success'); - this.handleClose(); - }, 1000); + if (this.type === 'add') { + add(submitData).then(res => { + this.$emit('success', res.data); + this.handleClose(); + }); + } else { + update(submitData).then(res => { + this.$emit('success', res.data); + this.handleClose(); + }); + } }); + }, + handleStreetChange(value) { + // 处理镇(街道)选择变化后的逻辑 } } } -- Gitblit v1.7.1