From 527efb36f35b471710e445972673abff45bacdac Mon Sep 17 00:00:00 2001 From: 董国庆 <364620639@qq.com> Date: 星期五, 12 九月 2025 17:36:09 +0800 Subject: [PATCH] 401跳转登录 --- laboratory/src/views/reportLibrary/feasibilityStudy/add.vue | 230 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 200 insertions(+), 30 deletions(-) diff --git a/laboratory/src/views/reportLibrary/feasibilityStudy/add.vue b/laboratory/src/views/reportLibrary/feasibilityStudy/add.vue index bb973f8..c0bf05b 100644 --- a/laboratory/src/views/reportLibrary/feasibilityStudy/add.vue +++ b/laboratory/src/views/reportLibrary/feasibilityStudy/add.vue @@ -1,6 +1,6 @@ <template> - <div> - <Card> + <div class="add-container" :loading="loading"> + <Card v-loading="loading"> <div class="header-title" style="width: 100%;"> <div class="header-title-left"> <img src="@/assets/public/headercard.png" /> @@ -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%;"> @@ -38,7 +38,7 @@ </div> </div> <el-form-item prop="reportName" style="margin-top: 38px"> - <el-input v-model="form.reportName" style="width: 100%;" placeholder="请输入报告编号" /> + <el-input v-model="form.reportName" style="width: 100%;" placeholder="请输入报告名称" /> </el-form-item> <div class="header-title" style="width: 100%;"> @@ -48,7 +48,8 @@ </div> </div> <el-form-item prop="reportText" style="margin-top: 38px"> - <ai-editor v-model="form.reportText" style="width: 100%;" placeholder="请输入报告编号" /> + <ai-editor ref="materialEditor" :value="form.reportText" style="width: 100%;" + placeholder="请输入报告正文" /> </el-form-item> <div class="header-title" style="width: 100%;"> <div class="header-title-left"> @@ -57,14 +58,16 @@ </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> <div class="end-btn" style="margin-top: 38px"> - <el-button type="primary" @click="submit">发送</el-button> - <el-button type="default" @clice="save">存草稿</el-button> + <el-button type="primary" @click="submit" :loading="loading">发送</el-button> + <el-button type="default" @click="save" :loading="loading">存草稿</el-button> </div> </el-form> </Card> @@ -76,6 +79,10 @@ import { Card } from 'element-ui'; 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, @@ -83,44 +90,207 @@ }, data() { return { + loading: false, form: { - planName: "", - planCode: "", - stage: "", - creator: "", - createTime: "", - approvalComment: "", - status: "pending", - approver: "", - approveTime: "" + reportCode: "", + reportName: "", + reportText: "", + feasibilityReportFiles: [] // 添加附件数组 }, tableData: [], fileList: [], // 附件列表 showChoose: false, - radio1: 1, - rules: {}, - status: "1", - remark: "", - queryForm: { - - } + rules: { + // reportCode: [ + // { required: true, message: '请输入报告编号', trigger: 'blur' } + // ], + reportName: [ + { required: true, message: '请输入报告名称', trigger: 'blur' } + ], + }, + queryForm: {} } }, + + mounted() { + if (this.$route.query.id) { + 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 }] + // 处理文件回显 + 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 + console.log('res.feasibilityReportFiles',this.form.feasibilityReportFiles) + } else { + this.fileList = [] + this.form.feasibilityReportFiles = [] + } + }) + }, //获取选择项目组数据 getProjectData(data) { - console.log('4458454', data); this.tableData = [data] this.$forceUpdate() - console.log('dsadasdsad', this.tableData); - this.showChoose = false }, - submit(){ - + // 上传前校验 + beforeUpload(file) { + return true; }, - save(){ + // 自定义上传处理 + 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() { + if (this.tableData.length == 0) { + this.$message.error('请选择项目组') + return + } + + this.$refs.form.validate((valid) => { + if (this.$refs.materialEditor.getContent() == '<p></p>') { + this.$message.error('请输入报告正文') + return + } + let data = { + ...this.form, + reportType: 1, + status: 1, + reportText: this.$refs.materialEditor.getContent(), + teamId: this.tableData[0].id + } + if (valid) { + this.loading = true + 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 + }) + } + + } + }) + }, + 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 = { + ...this.form, + reportType: 1, + status: -1, + reportText: this.$refs.materialEditor.getContent(), + teamId: this.tableData[0].id + } + + delete data.id + + if (valid) { + this.loading = true + 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