From 9a9f9dd67261e75d66c338f8573fd0b60f7cab9e Mon Sep 17 00:00:00 2001 From: pyt <626651354@qq.com> Date: 星期五, 09 五月 2025 16:26:36 +0800 Subject: [PATCH] Merge branch 'main' of http://120.76.84.145:10101/gitblit/r/H5/leshan-laboratory --- laboratory/src/views/dataManagement/approvalPlan/components/approvalDialog.vue | 263 +++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 209 insertions(+), 54 deletions(-) diff --git a/laboratory/src/views/dataManagement/approvalPlan/components/approvalDialog.vue b/laboratory/src/views/dataManagement/approvalPlan/components/approvalDialog.vue index 8765f17..9c4000c 100644 --- a/laboratory/src/views/dataManagement/approvalPlan/components/approvalDialog.vue +++ b/laboratory/src/views/dataManagement/approvalPlan/components/approvalDialog.vue @@ -25,14 +25,30 @@ label-position="top" style="margin-top: 38px" > - <el-form-item prop="name" label="项目课题方案名称"> - <el-input v-model="form.name" placeholder="请输入" /> + <el-form-item prop="projectName" label="项目课题方案名称"> + <el-input + v-model="form.projectName" + placeholder="请输入" + disabled + /> </el-form-item> - <el-form-item prop="description" label="项目阶段"> - <el-input v-model="form.description" placeholder="请输入" /> + <el-form-item prop="projectStage" label="项目阶段"> + <el-select + v-model="form.projectStage" + placeholder="请选择" + disabled + > + <el-option label="实验室开发阶段" :value="1" /> + <el-option label="中式试验阶段" :value="2" /> + <el-option label="生产验证试验阶段" :value="3" /> + </el-select> </el-form-item> - <el-form-item prop="description" label="项目课题方案编号"> - <el-input v-model="form.description" placeholder="请输入" /> + <el-form-item prop="projectCode" label="项目课题方案编号"> + <el-input + v-model="form.projectCode" + placeholder="请输入" + disabled + /> </el-form-item> </el-form> <div class="header-title"> @@ -41,6 +57,12 @@ <div>一 、实验目的</div> </div> </div> + <AiEditor + ref="purposeEditor" + :value="form.experimentObjective" + height="200px" + :readOnly="true" + /> <div class="header-title"> <div class="header-title-left"> <img src="@/assets/public/headercard.png" /> @@ -50,57 +72,92 @@ <div class="item-title"> <span>1.实验材料</span> </div> + <AiEditor + ref="materialEditor" + :value="form.experimentMaterial" + height="200px" + :readOnly="true" + /> <div class="item-title"> <span>2.实验设备</span> </div> - + <AiEditor + ref="equipmentEditor" + :value="form.experimentDevice" + height="200px" + :readOnly="true" + /> <div class="header-title"> <div class="header-title-left"> <img src="@/assets/public/headercard.png" /> <div>三 、检测方法及开发</div> </div> </div> + <AiEditor + ref="methodEditor" + :value="form.experimentTestMethod" + height="200px" + :readOnly="true" + /> <div class="header-title"> <div class="header-title-left"> <img src="@/assets/public/headercard.png" /> <div>四 、实验步骤</div> </div> </div> + <AiEditor + ref="stepsEditor" + :value="form.experimentProcedure" + height="200px" + :readOnly="true" + /> <div class="header-title"> <div class="header-title-left"> <img src="@/assets/public/headercard.png" /> <div>五 、数据采集及分析</div> </div> </div> + <AiEditor + ref="dataAnalysisEditor" + :value="form.dataAcquisition" + height="200px" + :readOnly="true" + /> <div class="header-title"> <div class="header-title-left"> <img src="@/assets/public/headercard.png" /> <div>六 、结果评估</div> </div> </div> + <AiEditor + ref="evaluationEditor" + :value="form.resultEvaluation" + height="200px" + :readOnly="true" + /> <div class="header-title"> <div class="header-title-left"> <img src="@/assets/public/headercard.png" /> <span>注意事项</span> </div> </div> + <AiEditor + ref="notesEditor" + :value="form.precautions" + height="200px" + :readOnly="true" + /> </template> - <SelectMember ref="selectMember" /> </Card> </div> <!-- 右侧审批流程 --> <div class="approval-flow"> <div class="flow-content"> - <approval-process - :status="form.status" - :submit-time="form.createTime" - :approver="form.approver" - :approve-time="form.approveTime" - /> + <approval-process :processData="form.processData" /> </div> </div> </div> - <div class="approval-dialog-approve"> + <div class="approval-dialog-approve" v-if="type === 'approve'"> <div class="status"> <div class="status-title">审批结果</div> <div class="status-content"> @@ -122,12 +179,20 @@ </div> <div class="remark"> <div class="remark-title">审批意见</div> - <el-input type="textarea" v-model="remark" placeholder="请输入审批意见" /> + <el-input + type="textarea" + v-model="remark" + placeholder="请输入审批意见" + /> </div> </div> <div slot="footer" class="dialog-footer"> <el-button @click="handleClose">取 消</el-button> - <el-button type="primary" @click="handleApprove" v-if="type === 'approve'" + <el-button + type="primary" + style="margin-left: 20px" + @click="handleApprove" + v-if="type === 'approve'" >通过</el-button > </div> @@ -135,12 +200,15 @@ </template> <script> -import ApprovalProcess from '@/components/approvalProcess' +import ApprovalProcess from "@/components/approvalProcess"; +import { getDetailById, audit } from "../service"; +import AiEditor from "@/components/AiEditor"; export default { name: "ApprovalDialog", components: { - ApprovalProcess + ApprovalProcess, + AiEditor, }, props: { visible: { @@ -159,17 +227,23 @@ data() { return { form: { - planName: "", - planCode: "", - stage: "", - creator: "", + projectName: "", + projectCode: "", + projectStage: "", + experimentObjective: "", + experimentMaterial: "", + experimentDevice: "", + experimentTestMethod: "", + experimentProcedure: "", + dataAcquisition: "", + resultEvaluation: "", + precautions: "", + auditStatus: "", createTime: "", - approvalComment: "", - status: "pending", approver: "", - approveTime: "" + approveTime: "", + processData: [], }, - radio1: 1, rules: {}, status: "1", remark: "", @@ -181,39 +255,112 @@ }, }, watch: { - data: { + visible: { handler(val) { - if (val) { - this.form = { ...val }; + console.log("visible", val, "22", this.data); + if (val && this.data && this.data.id) { + this.getDetail(this.data.id); } }, immediate: true, }, }, methods: { + // 获取详情 + getDetail(id) { + console.log("获取详情参数:", { id }); + getDetailById({ id }) + .then((res) => { + console.log("获取详情:", res); + if (res) { + this.form = { ...res, processData: [] }; + // 组装流程数据 + let processData = []; + // 提交节点 + processData.push({ + type: "primary", + mode: "list", + fields: [ + { label: "提交人:", value: res.updateBy || "" }, + { label: "提交时间:", value: res.createTime || "" }, + ], + }); + if (res.auditStatus == 2 || res.auditStatus == 3) { + processData.push({ + type: + res.auditStatus === 2 + ? "primary" + : res.auditStatus === 3 + ? "danger" + : "warning", + mode: "list", + fields: [ + { + label: "审核结果:", + value: + res.auditStatus === 2 + ? "通过" + : res.auditStatus === 3 + ? "驳回" + : "待审批", + }, + { label: "审批意见:", value: res.auditRemark || "" }, + { label: "审核人:", value: res.auditPersonName || "" }, + { label: "审核时间:", value: res.auditTime || "" }, + ], + }); + }else{ + processData.push({ + type: "warning", + mode: "list", + fields: [ + { label: "等待审核"}, + ], + }); + } + // 如有卡片模式,按前述结构 push + + this.$nextTick(() => { + this.form.processData = processData; + }) + } + }) + .catch((err) => { + console.error("获取详情失败:", err); + this.$message.error("获取详情失败"); + }); + }, handleClose() { this.$emit("update:visible", false); - this.form.approvalComment = ""; + this.remark = ""; + this.status = "1"; }, handleApprove() { - if (!this.form.approvalComment) { + if (!this.remark) { this.$message.warning("请输入审批意见"); return; } - this.$emit("approve", { - ...this.form, - status: "approved", - }); - }, - handleReject() { - if (!this.form.approvalComment) { - this.$message.warning("请输入审批意见"); - return; - } - this.$emit("reject", { - ...this.form, - status: "rejected", - }); + const params = { + id: this.form.id, + auditStatus: this.status === "1" ? 2 : 3, // 2-已通过,3-已驳回 + auditRemark: this.remark, + }; + console.log('审批请求参数:', params); + audit(params) + .then((res) => { + console.log('审批返回结果:', res); + if (res.code === 200) { + this.$message.success("审批成功"); + this.$emit("update:visible", false); + this.$emit("success"); + } else { + this.$message.error(res.msg || "审批失败"); + } + }) + .catch((err) => { + console.error("审批失败:", err); + this.$message.error("审批失败"); + }); }, }, }; @@ -391,12 +538,20 @@ } } -.dialog-footer{ - align-items: center; - display: flex; - justify-content: center; - button{ - width: 150px; - } +.dialog-footer { + align-items: center; + display: flex; + justify-content: center; + button { + width: 150px; + } } -</style> \ No newline at end of file + +.content-display { + padding: 10px 20px; + min-height: 100px; + background: #f5f7fa; + border-radius: 4px; + margin: 10px 0; +} +</style> -- Gitblit v1.7.1