From be31adc8150e5b21008aa7d6212fc105fc425818 Mon Sep 17 00:00:00 2001 From: pyt <626651354@qq.com> Date: 星期二, 01 七月 2025 15:31:39 +0800 Subject: [PATCH] Merge branch 'main' of http://120.76.84.145:10101/gitblit/r/H5/leshan-laboratory --- laboratory/src/views/reportLibrary/projectProposalLibrary/add.vue | 131 +++++++++++++++++++++++++++++++++++++------ 1 files changed, 111 insertions(+), 20 deletions(-) diff --git a/laboratory/src/views/reportLibrary/projectProposalLibrary/add.vue b/laboratory/src/views/reportLibrary/projectProposalLibrary/add.vue index 6f3c2e1..7b5215f 100644 --- a/laboratory/src/views/reportLibrary/projectProposalLibrary/add.vue +++ b/laboratory/src/views/reportLibrary/projectProposalLibrary/add.vue @@ -28,7 +28,7 @@ </div> </div> <el-form-item prop="reportCode" style="margin-top: 38px"> - <el-input v-model="form.reportCode" style="width: 100%;" placeholder="请输入报告编号" /> + <el-input v-model="form.reportCode" disabled style="width: 100%;" placeholder="请输入报告编号" /> </el-form-item> <div class="header-title" style="width: 100%;"> @@ -58,8 +58,10 @@ </div> </div> <el-form-item prop="name" style="margin-top: 38px"> - <el-upload action="https://jsonplaceholder.typicode.com/posts/" :file-list="fileList"> + <el-upload action="#" :file-list="fileList" :http-request="handleUpload" + :before-upload="beforeUpload" :on-remove="handleRemove"> <el-button size="small" type="primary">点击上传</el-button> + <div slot="tip" class="el-upload__tip">支持任意格式文件上传</div> </el-upload> </el-form-item> @@ -78,6 +80,8 @@ import AiEditor from '@/components/AiEditor' import chooseProject from '@/components/chooseProject' import { addData, getDetail, editData } from './service' +import { customUploadRequest, getFullUrl } from '@/utils/utils' +import { mapState } from "vuex"; export default { components: { AiEditor, @@ -89,15 +93,15 @@ form: { reportCode: "", reportName: "", - reportText: "" + reportText: "", feasibilityReportFiles: [] // 添加附件数组 }, tableData: [], fileList: [], // 附件列表 showChoose: false, rules: { - reportCode: [ - { required: true, message: '请输入报告编号', trigger: 'blur' } - ], + // reportCode: [ + // { required: true, message: '请输入报告编号', trigger: 'blur' } + // ], reportName: [ { required: true, message: '请输入报告名称', trigger: 'blur' } ], @@ -111,13 +115,29 @@ this.getDetail() } }, + computed: { + ...mapState(["tagList", "isFold"]), + }, methods: { getDetail() { getDetail(this.$route.query.id).then(res => { this.form = res this.tableData = [{ ...res.projectTeam, staffName: res.staffNames }] - this.fileList = res.fileList + // 处理文件回显 + if (res.feasibilityReportFiles && res.feasibilityReportFiles.length > 0) { + this.fileList = res.feasibilityReportFiles.map(file => { + return { + name: file.fileName, + url: getFullUrl(file.fileUrl), + uid: file.id + } + }) + this.form.feasibilityReportFiles = res.feasibilityReportFiles + } else { + this.fileList = [] + this.form.feasibilityReportFiles = [] + } }) }, //获取选择项目组数据 @@ -126,8 +146,61 @@ this.$forceUpdate() this.showChoose = false }, + + // 上传前校验 + beforeUpload(file) { + return true; + }, + // 自定义上传处理 + handleUpload(options) { + const { file, onSuccess, onError } = options; + + // 使用封装的customUploadRequest方法 + customUploadRequest({ + file, + onSuccess: (res) => { + if (res.code === 200) { + const fileObj = { + id: new Date().getTime(), + reportId: this.$route.query.id ? this.$route.query.id : '', + fileUrl: res.msg || res.data || '', + reportType: 1, // 可行性研究报告类型 + fileName: file.name, + fileSize: file.size, + }; + + // 添加到文件列表显示 + this.fileList.push({ + name: file.name, + url: getFullUrl(fileObj.fileUrl), + uid: fileObj.id + }); + + // 添加到表单数据 + this.form.feasibilityReportFiles.push(fileObj); + + this.$message.success('文件上传成功'); + onSuccess(res); + } else { + this.$message.error(res.message || '文件上传失败'); + onError(); + } + }, + onError: (err) => { + this.$message.error('文件上传失败'); + onError(err); + } + }); + }, + // 删除文件 + handleRemove(file) { + const index = this.fileList.findIndex(item => item.name === file.name); + if (index !== -1) { + this.fileList.splice(index, 1); + this.form.feasibilityReportFiles.splice(index, 1); + } + }, submit() { - console.log(this.$refs.materialEditor.getContent()); if (this.tableData.length == 0) { this.$message.error('请选择项目组') return @@ -150,7 +223,7 @@ editData({ ...data, id: this.$route.query.id }).then(res => { if (res.code === 200) { this.$message.success('修改成功') - this.$router.back() + this.back() } else { this.$message.error(res.message) } @@ -159,7 +232,7 @@ addData({ ...data }).then(res => { if (res.code === 200) { this.$message.success('发布成功') - this.$router.back() + this.back() } else { this.$message.error(res.message) } @@ -171,6 +244,13 @@ } }) }, + back() { + this.$router.back(); + this.$store.commit( + "SET_TAGLIST", + this.tagList.filter((item) => item.path !== this.$route.path) + ); + }, save() { this.$refs.form.validate((valid) => { let data = { @@ -184,16 +264,27 @@ if (valid) { this.loading = true - addData({ ...data }).then(res => { - if (res.code === 200) { - this.$message.success('提交成功') - this.$router.back() - } else { - this.$message.error(res.message) - } - }).finally(() => { - this.loading = false - }) + if (this.$route.query.id) { + editData({ ...data, id: this.$route.query.id }).then(res => { + if (res.code === 200) { + this.$message.success('修改成功') + this.back() + } else { + this.$message.error(res.message) + } + }) + } else { + addData({ ...data }).then(res => { + if (res.code === 200) { + this.$message.success('发布成功') + this.back() + } else { + this.$message.error(res.message) + } + }).finally(() => { + this.loading = false + }) + } } }) }, -- Gitblit v1.7.1