puzhibing
6 天以前 0db8c9b94a9ac655549d5eba5c2a6c92ac386c06
culture/src/views/strainReportLibrary/reportLibraryOne/add.vue
@@ -161,7 +161,7 @@
<script>
import AiEditor from '@/components/AiEditor'
import ChooseProject from '@/components/chooseProject/index.vue'
import { customUploadRequest, getFullUrl ,downloadFileByUrl,getAllocateIp,isImageFile} from "@/utils/utils";
import { customUploadRequest, getFullUrl, downloadFileByUrl, getAllocateIp, getUploadedFilePath, isImageFile, normalizeFileList } from "@/utils/utils";
import SelectMember from '@/components/SelectMember'
import { add, getDetail, update } from './service'
@@ -255,6 +255,9 @@
    };
  },
  activated() {
    if (!["/strainReportLibrary/add", "/strainReportLibrary/detail"].includes(this.$route.path)) {
      return;
    }
    if (this.cacheData) {
      // 恢复表单数据
      this.form = JSON.parse(JSON.stringify(this.cacheData.form));
@@ -285,41 +288,6 @@
        this.$nextTick(() => {
            window.scrollTo(0, 0);
        });
        if (this.$route.query.id  && !this.cacheData) {
            getDetail(this.$route.query.id).then(res => {
                const data = res.data || res;
                this.form = {
                    ...this.form,
                    ...data,
                    processData: []
                };
                let arr = data.evaluate.split(',')
                this.fileList = (data.enclosureUrl ? JSON.parse(data.enclosureUrl) : [])
                this.assessmentTable = this.assessmentTable.map((item, index) => {
                    item.selectedScore = Number(arr[index])
                    return item
                })
                this.selectedMember = [{
                    nickName: data.experimentName,
                    userId: data.experimentId
                }]
                this.projectData = data.projectTeam ?
                    [{ ...data.projectTeam, staffName: data.projectTeam.staff || '' }] :
                    [];
                console.log('qwe45645664', this.tableData);
            }).catch(err => {
                this.$message.error('获取详情失败');
            });
        }
    },
    methods: {
      // 👇 添加这个方法
@@ -333,8 +301,8 @@
            processData: []
          };
          let arr = data.evaluate.split(',')
          this.fileList = (data.enclosureUrl ? JSON.parse(data.enclosureUrl) : [])
          const arr = String(data.evaluate || '').split(',')
          this.fileList = normalizeFileList(data.enclosureUrl)
          this.assessmentTable = this.assessmentTable.map((item, index) => {
            item.selectedScore = Number(arr[index])
            return item
@@ -366,11 +334,9 @@
                    // 图片文件:使用 window.open 预览
                    if (file.url && file.url.startsWith('http')) {
                        console.log('图片链接', file.url)
                        window.open(file.url, '_blank');
                        window.open(getFullUrl(file.url), '_blank');
                    } else {
                        let newUrl = getAllocateIp() + file.url;
                        console.log('图片链接', newUrl)
                        window.open(newUrl, '_blank');
                        window.open(getFullUrl(file.url), '_blank');
                    }
                } else {
                    // 非图片文件:使用下载方式
@@ -390,11 +356,12 @@
            customUploadRequest({
                file,
                onSuccess: (res) => {
                    if (res.code === 200) {
                    const uploadedPath = getUploadedFilePath(res)
                    if (uploadedPath) {
                        const fileObj = {
                            id: new Date().getTime(),
                            reportId: this.$route.query.id ? this.$route.query.id : "",
                            fileUrl: res.msg || res.data || "",
                            fileUrl: uploadedPath,
                            reportType: 2, // 报告类型
                            fileName: file.name,
                            fileSize: file.size,
@@ -403,17 +370,15 @@
                        // 添加到文件列表显示
                        this.fileList.push({
                            name: file.name,
                            url: getFullUrl(fileObj.fileUrl),
                            url: fileObj.fileUrl,
                            uid: fileObj.id,
                        });
                        // 添加到表单数据
                        this.form.feasibilityReportFiles.push(fileObj);
                        this.$message.success("文件上传成功");
                        onSuccess(res);
                    }else {
                      this.$message.error("文件上传失败");
                      onError(res.msg);
                      this.$message.error(res && res.msg ? res.msg : "上传接口未返回文件地址");
                      onError(new Error('missing uploaded file path'));
                    }
                },
                onError: (err) => {
@@ -427,7 +392,6 @@
            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() {
@@ -460,7 +424,7 @@
                    isDraft: 0,
                    projectId: this.projectData[0].id,
                    experimentId: this.selectedMember[0].userId,
                    enclosureUrl: this.fileList.length && JSON.stringify(this.fileList),
                    enclosureUrl: JSON.stringify(this.fileList),
                    // reportCode: this.form.reportCode,
                    reportContent: this.$refs.materialEditor.getContent(),
                    reportName: this.form.reportName,
@@ -475,7 +439,7 @@
                        if (res.code == 200) {
                            this.$message.success('编辑成功');
                          this.cacheData = null;
                          this.$router.back()
                          this.$closeCurrentView('/strainReportLibrary/reportLibraryOne')
                        } else {
                            this.$message.error(res.msg || '编辑失败');
                            this.submitLoading = false;
@@ -489,7 +453,7 @@
                    if (res.code == 200) {
                        this.$message.success('发送成功');
                      this.cacheData = null;
                      this.$router.push('/strainReportLibrary/reportLibraryOne');
                      this.$closeCurrentView('/strainReportLibrary/reportLibraryOne');
                    } else {
                        this.$message.error(res.msg || '发送失败');
                        this.submitLoading = false;
@@ -511,7 +475,7 @@
                    isDraft: 1,
                    projectId: this.projectData[0].id,
                    experimentId: this.selectedMember[0].userId,
                    enclosureUrl: this.fileList.length && JSON.stringify(this.fileList),
                    enclosureUrl: JSON.stringify(this.fileList),
                    // reportCode: this.form.reportCode,
                    reportContent: this.$refs.materialEditor.getContent(),
                    reportName: this.form.reportName,
@@ -525,7 +489,8 @@
                        this.submitLoading = false;
                        if (res.code == 200) {
                            this.$message.success('编辑成功');
                            this.$router.back()
                            this.cacheData = null;
                            this.$closeCurrentView('/strainReportLibrary/reportLibraryOne')
                        } else {
                            this.$message.error(res.msg || '编辑失败');
                            this.submitLoading = false;
@@ -537,7 +502,8 @@
                    this.submitLoading = false;
                    if (res.code == 200) {
                        this.$message.success('保存成功');
                        this.$router.push('/strainReportLibrary/reportLibraryOne');
                        this.cacheData = null;
                        this.$closeCurrentView('/strainReportLibrary/reportLibraryOne');
                    } else {
                        this.$message.error(res.msg || '保存失败');
                        this.submitLoading = false;