董国庆
2026-01-06 9dd79783222db2fed1c025840c087133ae7e81a6
修改问题
14个文件已修改
444 ■■■■■ 已修改文件
culture/src/utils/request.js 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
culture/src/utils/utils.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/utils/baseurl.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/chemistQa/pilotAndProduction/components/approval/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/chemistQa/pilotAndProduction/index.vue 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/chemistQa/productApproval/components/approval/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/chemistQa/productApproval/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/chemistQa/projectTesting/components/approval/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/chemistQa/rawMaterials/components/approval/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/chemistQa/rawMaterials/index.vue 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/dataManagement/schemeManagement/addPlan.vue 287 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/dataManagement/schemeManagement/list.vue 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/dataManagement/testResultReport/components/evaluation-dialog.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/vue.config.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
culture/src/utils/request.js
@@ -1,15 +1,10 @@
import axios from 'axios'
import apiConfig from './baseurl'
import {
  Message
} from 'element-ui'
import {
  encryptBySM4,
  decryptBySM4
} from './sm4' // 添加decryptBySM4
import { Message } from 'element-ui'
import { encryptBySM4, decryptBySM4 } from './sm4'  // 添加decryptBySM4
const service = axios.create({
  // baseURL: apiConfig.baseURL,
  baseURL: apiConfig.baseURL,
  withCredentials: false, // 当跨域请求时发送cookie
  timeout: 30000, // request timeout
})
@@ -27,13 +22,13 @@
      config.params = {
        ...config.params,
      }
      console.log('config.params',config.params)
    }
    if (config.method == 'post') {
      if (!config.data) config.data = {};
      console.log('post post',config.data)
      if (needEncrypt) {
        config.data = {
          param: encryptBySM4(config.data)
        };
        config.data = { param: encryptBySM4(config.data) };
      }
    }
    return config
@@ -57,53 +52,20 @@
        if (res.data && res.data.data) {
          // 这里假设使用decryptBySM4进行解密
          res.data.data = decryptBySM4(res.data.data);
          console.log('加密',res.data.data)
        }
      } catch (e) {
        console.error('数据解密失败:', e);
      }
    }
    if (res.data.code == 500) {
      Message({
        message: res.data.msg || '服务器错误',
        type: 'error',
        duration: 2000
      })
      return
    }
    if (res.data  &&res.data.code == 401) {
      Message({
        message: res.data.msg || '登录已过期,请重新登录',
        type: 'warning',
        duration: 2000
      })
      sessionStorage.clear();
      window.location.replace('/');
      return
    }
    if (res.data && res.data.data &&res.data.data.code == 401) {
      Message({
        message: res.data.msg || '登录已过期,请重新登录',
        type: 'warning',
        duration: 2000
      })
      sessionStorage.clear();
      window.location.replace('/');
      return
    }
console.log('res.data',res.data)
    if (res.data.code == 200) {
      if (!res.data) {
        return Promise.resolve({})
      }
      if (res.data && res.data.data && res.data.data.code == 200) {
      console.log('res.data',res.data)
      if (res.config.url.startsWith('/api')) { //有
        if(res.data.data.code == 200){
        return Promise.resolve(res.data.data || res.data)
      } else if ((res.data && res.data.data && (res.data.data.code == 103 || res.data.data.code == 401))) {
        }
        if (res.data.data.code == 103 || res.data.data.code == 401) {
        Message({
          message: res.data.data.msg || '登录已过期,请重新登录',
          type: 'warning',
@@ -111,17 +73,38 @@
        })
        sessionStorage.clear();
        window.location.replace('/');
      } else if ((res.data && res.data.data && (res.data.data.code == 500)) || res.data.code == 500) {
          return Promise.reject(res.data.data.data)
        }
        Message({
          message: res.data.data.msg || '服务器错误',
          type: 'error',
          duration: 2000
        })
        return Promise.reject(res.data.data)
      } else {
        return Promise.resolve(res.data.data || res.data)
        return Promise.reject(res.data.data.data)
      }
      if (!res.data) {
        return Promise.resolve({})
      }
      console.log('res', res.data.data || res.data)
      return Promise.resolve(res.data.data || res.data)
    } else {
      if (res.data.code == 103 || res.data.code == 401) {
        Message({
          message: res.data.msg || '登录已过期,请重新登录',
          type: 'warning',
          duration: 2000
        })
        sessionStorage.clear();
        window.location.replace('/');
        return Promise.reject(res.data.data)
      }
      Message({
        message: res.data.msg || '服务器错误',
        type: 'error',
        duration: 2000
      })
      return Promise.reject(res.data.data)
    }
  },
  error => {
culture/src/utils/utils.js
@@ -90,5 +90,5 @@
export function getAllocateIp() {
  const userInfo = JSON.parse(sessionStorage.getItem("userInfo") || "{}");
  return userInfo.allocateIp ? 'http://'+userInfo.allocateIp +':11222/images/' : apiConfig.showImgUrl;
  return userInfo.allocateIp ? 'http://'+userInfo.allocateIp +':11223/images/' : apiConfig.showImgUrl;
}
laboratory/src/utils/baseurl.js
@@ -2,7 +2,7 @@
  // 开发环境
  development: {
    baseURL: "/",
    imgUrl: "http://127.0.0.1:11222/laboratory/open/file/upload",
    imgUrl: "/open/file/upload",
    // showImgUrl: "http://221.182.45.100:11222/",
    showImgUrl: "http://127.0.0.1:11222/images/",
  },
laboratory/src/views/chemistQa/pilotAndProduction/components/approval/index.vue
@@ -165,6 +165,8 @@
        this.dialogVisible = val;
        if (val && this.data.id) {
          this.getDetail();
          this.status = "1"
                    this.remark = ""
        }
      },
      immediate: true,
laboratory/src/views/chemistQa/pilotAndProduction/index.vue
@@ -65,6 +65,7 @@
                                <el-button type="text" @click="handleDelete(row)">删除</el-button>
                            </template>
                            <el-button v-else type="text" @click="handleDetail(row)">详情</el-button>
                            <el-button v-if="row.status == 4" type="text" @click="handleEdit(row)">编辑</el-button>
                        </template>
                        <!-- 工艺工程师的按钮 -->
                        <template v-else-if="isApprovaler">
laboratory/src/views/chemistQa/productApproval/components/approval/index.vue
@@ -169,6 +169,8 @@
                this.dialogVisible = val;
                if (val && this.data.id) {
                    this.getDetail();
                    this.status = "1"
                    this.remark = ""
                }
            },
            immediate: true
laboratory/src/views/chemistQa/productApproval/index.vue
@@ -64,7 +64,9 @@
                                <el-button type="text" @click="handleEdit(row)">编辑</el-button>
                                <el-button type="text" @click="handleDelete(row)">删除</el-button>
                            </template>
                            <el-button v-else type="text" @click="handleDetail(row)">详情</el-button>
                            <el-button v-if="row.status == 4" type="text" @click="handleEdit(row)">编辑</el-button>
                        </template>
                        <!-- 工艺工程师的按钮 --修改为审批人-->
                        <template v-else-if="isApprovaler">
laboratory/src/views/chemistQa/projectTesting/components/approval/index.vue
@@ -201,6 +201,8 @@
        }
        if (val && this.data.itemId) {
          this.getDetail();
          this.status = "1"
                    this.remark = ""
        }
      },
      immediate: true,
laboratory/src/views/chemistQa/rawMaterials/components/approval/index.vue
@@ -166,6 +166,8 @@
        this.dialogVisible = val;
        if (val && this.data.id) {
          this.getDetail();
          this.status = "1"
                    this.remark = ""
        }
      },
      immediate: true,
laboratory/src/views/chemistQa/rawMaterials/index.vue
@@ -65,6 +65,7 @@
                                <el-button type="text" @click="handleDelete(row)">删除</el-button>
                            </template>
                            <el-button v-else type="text" @click="handleDetail(row)">详情</el-button>
                            <el-button v-if="row.status == 4" type="text" @click="handleEdit(row)">编辑</el-button>
                        </template>
                        <!-- 工艺工程师的按钮 -修改为审批人-->
                        <template v-else-if="isApprovaler">
laboratory/src/views/dataManagement/schemeManagement/addPlan.vue
@@ -1,13 +1,7 @@
<template>
  <Card>
    <template style="position: relative">
      <el-form
        ref="form"
        :model="form"
        :rules="rules"
        inline
        label-position="top"
      >
      <el-form ref="form" :model="form" :rules="rules" inline label-position="top">
        <div v-if="!isEdit">
          <div class="header-title" style="margin-bottom: 38px">
            <div style="display: flex; align-items: center; gap: 13px">
@@ -15,57 +9,22 @@
                <img src="@/assets/public/headercard.png" />
                <div>所属实验调度</div>
              </div>
              <el-button
                @click="showScheduling = true"
                class="el-icon-plus"
                type="primary"
              >
                选择实验调度</el-button
              >
              <el-button @click="showScheduling = true" class="el-icon-plus" type="primary">
                选择实验调度</el-button>
            </div>
          </div>
          <!-- //换到详情弹窗 -->
          <!-- <el-button @click="handleStopExperiment" type="danger">
            申请终止实验</el-button> -->
          <Table
            :data="groupTableData"
            :total="0"
            :height="null"
            class="groupTable"
          >
            <el-table-column
              type="index"
              label="序号"
              width="80"
            ></el-table-column>
            <el-table-column
              prop="projectName"
              label="所属项目课题方案"
            ></el-table-column>
            <el-table-column
              prop="experimentCode"
              label="实验编号"
            ></el-table-column>
            <el-table-column
              prop="experimentName"
              label="实验名称"
            ></el-table-column>
            <el-table-column
              prop="experimentDate"
              label="通知时间"
            ></el-table-column>
            <el-table-column
              prop="experimentStartTime"
              label="实验开始时间"
            ></el-table-column>
            <el-table-column
              prop="experimentEndTime"
              label="实验结束时间"
            ></el-table-column>
            <el-table-column
              prop="participantsName"
              label="参加人员"
            ></el-table-column>
          <Table :data="groupTableData" :total="0" :height="null" class="groupTable">
            <el-table-column type="index" label="序号" width="80"></el-table-column>
            <el-table-column prop="projectName" label="所属项目课题方案"></el-table-column>
            <el-table-column prop="experimentCode" label="实验编号"></el-table-column>
            <el-table-column prop="experimentName" label="实验名称"></el-table-column>
            <el-table-column prop="experimentDate" label="通知时间"></el-table-column>
            <el-table-column prop="experimentStartTime" label="实验开始时间"></el-table-column>
            <el-table-column prop="experimentEndTime" label="实验结束时间"></el-table-column>
            <el-table-column prop="participantsName" label="参加人员"></el-table-column>
            <el-table-column prop="status" label="状态">
              <template slot-scope="scope">
                <el-tag :type="getStatusType(scope.row.status)">
@@ -87,17 +46,8 @@
              <span>组别列表</span>
            </div>
            <Table
              :data="groupData"
              :total="0"
              :height="null"
              class="groupTable"
            >
              <el-table-column
                type="index"
                label="序号"
                width="80"
              ></el-table-column>
            <Table :data="groupData" :total="0" :height="null" class="groupTable">
              <el-table-column type="index" label="序号" width="80"></el-table-column>
              <el-table-column prop="groupName" label="组别"></el-table-column>
              <el-table-column prop="remark" label="备注"></el-table-column>
            </Table>
@@ -105,12 +55,7 @@
          <div style="padding-left: 25px; margin-top: 28px">
            <el-form-item prop="experimentDate" label="试验日期">
              <el-date-picker
                v-model="form.experimentDate"
                type="datetime"
                :disabled="isEdit"
                placeholder="选择日期时间"
              >
              <el-date-picker v-model="form.experimentDate" type="datetime" :disabled="isEdit" placeholder="选择日期时间">
              </el-date-picker>
            </el-form-item>
          </div>
@@ -163,9 +108,7 @@
        <div class="add-group" v-if="!isEdit">
          <div>*</div>
          <span>参加人员</span>
          <el-button type="primary" class="el-icon-plus" @click="addMember"
            >选择参加人员</el-button
          >
          <el-button type="primary" class="el-icon-plus" @click="addMember">选择参加人员</el-button>
        </div>
        <div class="add-group" v-else><span>实验人员</span></div>
        <div class="member-list">
@@ -174,21 +117,13 @@
              <div class="member-title">实验员</div>
              <div class="flex">
                <div class="member-name-box-2">
                  <div
                    v-for="i in selectedParticipants"
                    :key="i.id"
                    class="member-name"
                  >
                  <div v-for="i in selectedParticipants" :key="i.id" class="member-name">
                    {{ i.nickName }}
                  </div>
                </div>
              </div>
              <div class="member-change">
                <div
                  class="member-change-btn"
                  @click="handleEditMember"
                  v-if="!isEdit"
                >
                <div class="member-change-btn" @click="handleEditMember" v-if="!isEdit">
                  修改
                </div>
              </div>
@@ -202,11 +137,7 @@
          </div>
          <Table :data="groupData" :total="0" :height="null" class="groupTable">
            <el-table-column
              type="index"
              label="序号"
              width="80"
            ></el-table-column>
            <el-table-column type="index" label="序号" width="80"></el-table-column>
            <el-table-column prop="groupName" label="组别"></el-table-column>
            <el-table-column prop="remark" label="备注"></el-table-column>
          </Table>
@@ -219,13 +150,8 @@
          </div>
        </div>
        <div class="content-box">
          <AiEditor
            ref="purposeEditor"
            :readOnly="isEdit"
            :value="editorContents.purpose"
            height="400px"
            placeholder="请输入实验目的..."
          />
          <AiEditor ref="purposeEditor" :readOnly="isEdit" :value="editorContents.purpose" height="400px"
            placeholder="请输入实验目的..." />
        </div>
        <div class="header-title" style="margin-bottom: 38px">
@@ -235,13 +161,8 @@
          </div>
        </div>
        <div class="content-box">
          <AiEditor
            ref="processEditor"
            :readOnly="isEdit"
            :value="editorContents.process"
            height="400px"
            placeholder="请输入工艺参数及路线..."
          />
          <AiEditor ref="processEditor" :readOnly="isEdit" :value="editorContents.process" height="400px"
            placeholder="请输入工艺参数及路线..." />
        </div>
        <div class="header-title" style="margin-bottom: 38px">
@@ -250,36 +171,18 @@
            <div>三、实验材料及设备</div>
          </div>
        </div>
        <DynamicComponent
          ref="materialComponent"
          title="实验材料"
          :participants="participantsData"
          @submit="handleMaterialSubmit"
          :dataSource="form.experimentMaterial"
          :editable="!isEdit"
        />
        <DynamicComponent
          ref="equipmentComponent"
          title="实验所用设备"
          :participants="participantsData"
          @submit="handleEquipmentSubmit"
          :dataSource="form.experimentDevice"
          :editable="!isEdit"
        />
        <DynamicComponent ref="materialComponent" title="实验材料" :participants="participantsData"
          @submit="handleMaterialSubmit" :dataSource="form.experimentMaterial" :editable="!isEdit" />
        <DynamicComponent ref="equipmentComponent" title="实验所用设备" :participants="participantsData"
          @submit="handleEquipmentSubmit" :dataSource="form.experimentDevice" :editable="!isEdit" />
        <div class="header-title" style="margin-bottom: 38px">
          <div class="header-title-left">
            <img src="@/assets/public/headercard.png" />
            <div>四、实验操作步骤记录</div>
          </div>
          <el-button
            @click="handleAddStep"
            class="el-icon-plus"
            type="primary"
            v-if="!isEdit"
          >
            添加步骤</el-button
          >
          <el-button @click="handleAddStep" class="el-icon-plus" type="primary" v-if="!isEdit">
            添加步骤</el-button>
        </div>
        <div class="step-list" v-for="(item, idx) in stepList" :key="idx">
@@ -288,57 +191,31 @@
              步骤{{ idx + 1 }}:{{ item.stepName }}
            </div>
            <div class="step-list-item-control">
              <div
                class="controlBtn edit"
                @click="handleEditStep(idx)"
                v-if="!isEdit"
              >
                <img
                  src="@/assets/public/edit.png"
                  alt="编辑"
                  class="edit-icon"
                />
              <div class="controlBtn edit" @click="handleEditStep(idx)" v-if="!isEdit">
                <img src="@/assets/public/edit.png" alt="编辑" class="edit-icon" />
                编辑
              </div>
              <div
                class="controlBtn delete"
                @click="handleDeleteStep(idx)"
                v-if="!isEdit"
              >
                <img
                  src="@/assets/public/delete.png"
                  alt="删除"
                  class="delete-icon"
                />
              <div class="controlBtn delete" @click="handleDeleteStep(idx)" v-if="!isEdit">
                <img src="@/assets/public/delete.png" alt="删除" class="delete-icon" />
                删除
              </div>
            </div>
          </div>
          <DynamicComponent
            :participants="participantsData"
            :ref="'stepContent' + idx"
            @submit="(content) => handleStepContentSubmit(idx, content)"
            :dataSource="item.content"
            :editable="!isEdit"
          />
          <DynamicComponent :participants="participantsData" :ref="'stepContent' + idx"
            @submit="(content) => handleStepContentSubmit(idx, content)" :dataSource="item.content"
            :editable="!isEdit" />
        </div>
        <div class="add-project-footer">
          <el-button type="primary" class="save-btn" @click="handleSave">{{
            userRole == 3 ? "发送" : "提交"
          }}</el-button>
          <el-button @click="handleSaveDraft" v-if="userRole == 3"
            >存草稿</el-button
          >
          <el-button @click="handleSaveDraft" v-if="userRole == 3 || userRole == 5">存草稿</el-button>
        </div>
      </el-form>
    </template>
    <SelectMemberSimple ref="selectMember" @submit="handleMemberSubmit" />
    <experimentalScheduling
      :show="showScheduling"
      @submit="handleSchedulingSubmit"
      @close="handleSchedulingClose"
    />
    <experimentalScheduling :show="showScheduling" @submit="handleSchedulingSubmit" @close="handleSchedulingClose" />
    <AddStep ref="addStepDialog" @submit="handleStepSubmit" />
  </Card>
</template>
@@ -422,6 +299,7 @@
        2: "已确认",
        3: "已封存",
      },
      holdInfo: {},
    };
  },
  async created() {
@@ -502,10 +380,13 @@
    // ===== 保存提交相关方法 =====
    handleSave() {
      this.submitData(1);
      const draftStatus = this.userRole == 5 ? 6 : 1;
      this.submitData(draftStatus);
    },
    handleSaveDraft() {
      this.submitData(-1);
      // 工艺工程师存草稿状态为-1,实验员存草稿状态为-2
      const draftStatus = this.userRole == 5 ? -2 : -1;
      this.submitData(draftStatus);
    },
    submitData(status) {
      // 先获取所有动态组件的数据
@@ -569,6 +450,24 @@
          formData.experimentMaterial = JSON.stringify(
            this.form.experimentMaterial
          );
          // 如果是实验员保存草稿(status=-2),需要额外添加new字段
          if (this.userRole == 5 && status === -2) {
            formData.newExperimentMaterial = JSON.stringify(
              this.form.experimentMaterial
            );
            formData.newExperimentDevice = JSON.stringify(
              this.form.experimentDevice
            );
            formData.newExperimentStepRecord = JSON.stringify(experimentStepRecord);
            formData.experimentStepRecord = JSON.stringify(this.holdInfo.stepList);
            formData.experimentDevice =  this.holdInfo.experimentDevice;
            formData.experimentMaterial =  this.holdInfo.experimentMaterial;
          }
          console.log('holdInfo holdInfo',this.holdInfo)
          console.log('params params',formData)
          // return
          // 编辑模式下添加id参数
          if (this.editId) {
            formData.id = this.editId;
@@ -846,21 +745,32 @@
        this.editorContents.process = data.experimentParamRoute || "";
        // 填充实验材料和设备
        // 如果是实验员角色,优先使用new字段的数据
        try {
          let materialData = data.experimentMaterial;
          if (this.userRole == 5 && data.newExperimentMaterial) {
            materialData = data.newExperimentMaterial;
          }
          this.form.experimentMaterial =
            typeof data.experimentMaterial === "string"
              ? JSON.parse(data.experimentMaterial)
              : data.experimentMaterial;
            typeof materialData === "string"
              ? JSON.parse(materialData)
              : materialData;
          this.holdInfo.experimentMaterial = materialData
        } catch (err) {
          console.error("解析实验材料数据失败:", err);
          this.form.experimentMaterial = [];
        }
        try {
          let deviceData = data.experimentDevice;
          if (this.userRole == 5 && data.newExperimentDevice) {
            deviceData = data.newExperimentDevice;
          }
          this.form.experimentDevice =
            typeof data.experimentDevice === "string"
              ? JSON.parse(data.experimentDevice)
              : data.experimentDevice;
            typeof deviceData === "string"
              ? JSON.parse(deviceData)
              : deviceData;
          this.holdInfo.experimentDevice = deviceData
        } catch (err) {
          console.error("解析实验设备数据失败:", err);
          this.form.experimentDevice = [];
@@ -868,15 +778,20 @@
        // 填充实验步骤
        try {
          const stepsData =
            typeof data.experimentStepRecord === "string"
              ? JSON.parse(data.experimentStepRecord)
              : data.experimentStepRecord;
          let stepsData = data.experimentStepRecord;
          if (this.userRole == 5 && data.newExperimentStepRecord) {
            stepsData = data.newExperimentStepRecord;
          }
          const parsedStepsData =
            typeof stepsData === "string"
              ? JSON.parse(stepsData)
              : stepsData;
          this.stepList = (stepsData || []).map((step) => ({
          this.stepList = (parsedStepsData || []).map((step) => ({
            stepName: step.stepName,
            content: step.content,
          }));
          this.holdInfo.stepList = this.stepList
        } catch (err) {
          console.error("解析实验步骤数据失败:", err);
          this.stepList = [];
@@ -1056,35 +971,27 @@
    border: 1px solid #dcdfe6;
    &:nth-child(1) {
      background: linear-gradient(
        to bottom,
      background: linear-gradient(to bottom,
        rgba(4, 156, 154, 0.2) 0%,
        rgba(5, 242, 194, 0) 70%
      );
          rgba(5, 242, 194, 0) 70%);
    }
    &:nth-child(2) {
      background: linear-gradient(
        to bottom,
      background: linear-gradient(to bottom,
        rgba(5, 160, 193, 0.2) 0%,
        rgba(5, 242, 194, 0) 70%
      );
          rgba(5, 242, 194, 0) 70%);
    }
    &:nth-child(3) {
      background: linear-gradient(
        to bottom,
      background: linear-gradient(to bottom,
        rgba(255, 77, 79, 0.2) 0%,
        rgba(255, 242, 194, 0) 70%
      );
          rgba(255, 242, 194, 0) 70%);
    }
    &:nth-child(4) {
      background: linear-gradient(
        to bottom,
      background: linear-gradient(to bottom,
        rgba(250, 199, 20, 0.21) 0%,
        rgba(255, 242, 194, 0) 70%
      );
          rgba(255, 242, 194, 0) 70%);
    }
    .member-item {
laboratory/src/views/dataManagement/schemeManagement/list.vue
@@ -34,8 +34,9 @@
      <template #setting>
        <div class="tableTitle">
          <div class="flex a-center flex-wrap">
            <div class="title" :class="{ active: currentType === 'list' }" @click="handleTypeChange('list')">项目课题方案列表</div>
            <div v-if="userRole == '3'" class="drafts" :class="{ active: currentType === 'draft' }"
            <div class="title" :class="{ active: currentType === 'list' }" @click="handleTypeChange('list')">项目课题方案列表
            </div>
            <div v-if="userRole == '3' || userRole == '5'" class="drafts" :class="{ active: currentType === 'draft' }"
              @click="handleTypeChange('draft')">草稿箱</div>
          </div>
          <el-button v-if="userRole == '3'" @click="handleAddPlan" class="el-icon-plus"
@@ -174,7 +175,21 @@
      this.getTableData();
    },
    getStatusType(status) {
      if (this.userRole == 5) {
      const statusMap = {
          '-2': "info",
          '-1': "info",
          '1': "warning",
          '2': "warning",
          '3': "success",
          '4': "danger",
          '5': "info",
          '6': 'success'
        };
        return statusMap[status] || "未知";
      }
      const statusMap = {
        '-2': "warning",
        '-1': "info",
        '1': "warning",
        '2': "warning",
@@ -188,6 +203,7 @@
    getStatusText(status) {
      if (this.userRole == 5) {
        const statusMap = {
          '-2': "实验员草稿",
          '-1': "草稿",
          '1': "待提交",
          '2': "申请中止待审核",
@@ -199,6 +215,7 @@
        return statusMap[status] || "未知";
      }
      const statusMap = {
        '-2': "已发送",
        '-1': "草稿",
        '1': "已发送",
        '2': "申请中止待审核",
@@ -220,7 +237,7 @@
    },
    handleTypeChange(type) {
      this.currentType = type;
      this.form.status = type === 'draft' ? -1 : '';
      this.form.status = type === 'draft' ? (this.roleType == 3 ? '-1' : '-2') : '';
      this.form.pageNum = 1;
      this.getTableData();
    },
@@ -228,7 +245,7 @@
      try {
        // 当处于草稿箱模式时,强制将状态设置为-1
        if (this.currentType === 'draft') {
          this.form.status = -1;
          this.form.status = this.roleType == 3 ? '-1' : '-2';
        }
        const { data } = await getList(this.form);
        this.tableData = data.records || [];
laboratory/src/views/dataManagement/testResultReport/components/evaluation-dialog.vue
@@ -1,11 +1,6 @@
<template>
  <el-dialog
    :visible.sync="dialogVisible"
    :title="dialogTitle"
    width="79.17%"
    @close="handleClose"
  >
    <EvaluateTable ref="evaluateTable" :viewJson="viewJson" />
  <el-dialog :visible.sync="dialogVisible" :title="dialogTitle" width="79.17%" @close="handleClose">
    <EvaluateTable ref="evaluateTable" :viewJson="viewJson" :type="type == 'labTechnician' ? 1 : type == 'experimenter' ? 2 : 3" />
    <div slot="footer" class="dialog-footer">
      <el-button type="primary" @click="handleSubmit" class="submit-btn">确认评定结果</el-button>
    </div>
laboratory/vue.config.js
@@ -18,14 +18,14 @@
          "^/": "/",
        },
      },
      // "/": { // 设置以什么前缀开头的请求用来代理
      //     target: "http://221.182.45.100:11221", //要访问的跨域的域名
      //     secure: false, // 使用的是http协议则设置为false,https协议则设置为true
      //     changeOrigin: true, //开启代理
      //     pathRewrite: {
      //         "^/": "/",
      //     },
      // },
      "/": { // 设置以什么前缀开头的请求用来代理
          target: "http://221.182.45.100:11221", //要访问的跨域的域名
          secure: false, // 使用的是http协议则设置为false,https协议则设置为true
          changeOrigin: true, //开启代理
          pathRewrite: {
              "^/": "/",
          },
      },
    },
  },
  configureWebpack: {