From 42feb0af0ae1d486d0474c76711fdb67c778bcf3 Mon Sep 17 00:00:00 2001
From: 董国庆 <364620639@qq.com>
Date: 星期六, 28 六月 2025 10:04:30 +0800
Subject: [PATCH] Merge branch 'main' of http://120.76.84.145:10101/gitblit/r/H5/leshan-laboratory

---
 culture/src/views/strainReportLibrary/reportLibraryOneTWO/add.vue |   98 ++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 89 insertions(+), 9 deletions(-)

diff --git a/culture/src/views/strainReportLibrary/reportLibraryOneTWO/add.vue b/culture/src/views/strainReportLibrary/reportLibraryOneTWO/add.vue
index 5fe631d..1c38c31 100644
--- a/culture/src/views/strainReportLibrary/reportLibraryOneTWO/add.vue
+++ b/culture/src/views/strainReportLibrary/reportLibraryOneTWO/add.vue
@@ -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-preview="handlePreview" :on-remove="handleRemove">
                         <el-button size="small" type="primary">点击上传</el-button>
+                        <div slot="tip" class="el-upload__tip">支持任意格式文件上传</div>
                     </el-upload>
                 </el-form-item>
                 <div class="header-title" style="width: 100%;">
@@ -149,7 +151,8 @@
             </el-form>
         </Card>
         <chooseProject @submit="getProjectData" :show="showChoose" @close="showChoose = false"></chooseProject>
-        <SelectMember :projectId="projectData.length&&projectData[0].id" title="选择菌种实验员" ref="selectMember" @submit="selectUser" :singleSelect="true" />
+        <SelectMember :projectId="projectData.length && projectData[0].id" title="选择菌种实验员" ref="selectMember"
+            @submit="selectUser" :singleSelect="true" />
 
     </div>
 
@@ -158,8 +161,9 @@
 import { Card } from 'element-ui';
 import AiEditor from '@/components/AiEditor'
 import ChooseProject from '@/components/chooseProject/index.vue'
+import { customUploadRequest, getFullUrl } from "@/utils/utils";
 import SelectMember from '@/components/SelectMember'
-import { add, getDetail,update } from './service'
+import { add, getDetail, update } from './service'
 
 export default {
     components: { AiEditor, ChooseProject, SelectMember },
@@ -240,8 +244,8 @@
         }
     },
     mounted() {
-          // 滚动到页面顶部
-          this.$nextTick(() => {
+        // 滚动到页面顶部
+        this.$nextTick(() => {
             window.scrollTo(0, 0);
         });
         if (this.$route.query.id) {
@@ -255,10 +259,10 @@
 
                 let arr = data.evaluate.split(',')
                 this.selectedMember = [{
-                    nickName:data.experimentName,
-                    userId:data.experimentId
+                    nickName: data.experimentName,
+                    userId: data.experimentId
                 }]
-
+                this.fileList = (data.enclosureUrl ? JSON.parse(data.enclosureUrl) : [])
                 this.assessmentTable = this.assessmentTable.map((item, index) => {
                     item.selectedScore = Number(arr[index])
                     return item
@@ -275,6 +279,63 @@
         }
     },
     methods: {
+        handlePreview(file) {
+            if (file.url) {
+                window.open(file.url, '_blank');
+            } else {
+                this.$message.warning('无可预览地址');
+            }
+        },
+        // 上传前校验
+        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: 2, // 报告类型
+                            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);
+                    }
+                },
+                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);
+            }
+        },
+
         addData() {
             if (this.loading) return;
             this.loading = true;
@@ -304,9 +365,10 @@
                     return;
                 }
                 const params = {
-                    isDraft: this.form.isDraft ? this.form.isDraft : 0,
+                    isDraft: 0,
                     projectId: this.projectData[0].id,
                     experimentId: this.selectedMember[0].userId,
+                    enclosureUrl: this.fileList.length && JSON.stringify(this.fileList),
                     // reportCode: this.form.reportCode,
                     reportContent: this.$refs.materialEditor.getContent(),
                     reportName: this.form.reportName,
@@ -364,6 +426,7 @@
                         isDraft: 1,
                         projectId: this.projectData[0].id,
                         experimentId: this.selectedMember[0].userId,
+                        enclosureUrl: this.fileList.length && JSON.stringify(this.fileList),
                         // reportCode: this.form.reportCode,
                         reportContent: this.$refs.materialEditor.getContent(),
                         reportName: this.form.reportName,
@@ -371,6 +434,23 @@
                         evaluate: str.join(','),
                         reportType: 2
                     };
+                    if (this.$route.query.id) {
+                        params.id = this.$route.query.id
+                        update(params).then(res => {
+                            this.loading = false;
+                            if (res.code == 200) {
+                                this.$message.success('编辑成功');
+                                this.$router.back()
+                            } else {
+                                this.$message.error(res.message || '编辑失败');
+                            }
+                        }).catch(() => {
+                            this.loading = false;
+                            this.$message.error('编辑失败');
+                        })
+                        return
+                    }
+
                     add(params).then(res => {
                         this.loading = false;
                         if (res.code == 200) {

--
Gitblit v1.7.1