董国庆
8 天以前 0c9660562a03191d44fc779a889d3da0dc624b6d
修改弹窗ui和客户反馈
29个文件已修改
1356 ■■■■■ 已修改文件
laboratory/src/App.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/components/DynamicComponent/addTableData.vue 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/components/approvalProcess/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/utils/baseurl.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/chemistQa/pilotAndProduction/components/approval/index.vue 946 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/chemistQa/productApproval/components/approval/index.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/chemistQa/projectTesting/components/approval/index.vue 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/chemistQa/projectTesting/components/itemApproval.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/chemistQa/rawMaterials/components/approval/index.vue 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/dataManagement/approvalPlan/addPlan.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/dataManagement/approvalPlan/components/approvalDialog.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/dataManagement/confirmation-sheet/components/add.vue 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/dataManagement/confirmation-sheet/components/review-dialog.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/dataManagement/dispatching/editDispatch.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/dataManagement/originalRecordTest/components/addDialog.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/dataManagement/originalRecordTest/detail.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/dataManagement/originalRecordTest/list.vue 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/dataManagement/sampleManage/addSample.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/dataManagement/sampleManage/components/approvalDialog.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/dataManagement/schemeManagement/components/approvalDialog.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/dataManagement/suspendExperiment/components/approvalDialog.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/dataManagement/testResultReport/components/experimentResultDialog.vue 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/deliveryAssessment/projectTeamIntegral/detail.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/reportLibrary/feasibilityReport/components/approval/index.vue 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/reportLibrary/feasibilityStudy/components/approval/index.vue 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/reportLibrary/processDevelopment/components/approval/index.vue 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/reportLibrary/projectProposalLibrary/components/approval/index.vue 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/reportLibrary/verificationRelease/components/approval/index.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/vue.config.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/App.vue
@@ -208,7 +208,7 @@
  }
  .el-dialog__body {
    padding: 15px 24px 33px 14px;
    padding: 15px 14px 15px 14px;
    overflow: hidden;
  }
}
laboratory/src/components/DynamicComponent/addTableData.vue
@@ -28,12 +28,23 @@
                <el-form-item
                  :label="header.name"
                  :prop="header.name"
                  :rules="{
                    required:
                      header.required === true || header.required === 'true',
                    message: header.message || `请输入${header.name}`,
                    trigger: ['blur', 'change'],
                  }"
                  :rules="[
                    {
                      required: header.required === true || header.required === 'true',
                      message: header.message || `请输入${header.name}`,
                      trigger: ['blur', 'change'],
                    },
                    {
                      validator: (rule, value, callback) => {
                        if ((header.required === true || header.required === 'true') && (!value || value.trim() === '')) {
                          callback(header.message || `请输入${header.name}`);
                        } else {
                          callback();
                        }
                      },
                      trigger: ['blur', 'change'],
                    }
                  ]"
                  v-if="header.type == 'text'"
                >
                  <el-input
@@ -404,6 +415,7 @@
      this.initFormData();
    },
    handleSubmit() {
      console.log('4444444444444')
      this.$refs.form.validate((valid) => {
        if (valid) {
          const submitData = {
laboratory/src/components/approvalProcess/index.vue
@@ -185,8 +185,8 @@
  }
  .member-list-card {
    width: 280px;
    height: 300px;
    width: 240px;
    min-height: 200px;
    border-radius: 8px;
    border: 1px solid #dcdfe6;
    margin-top: 10px;
laboratory/src/utils/baseurl.js
@@ -3,7 +3,7 @@
    development: {
        baseURL: "/",
        imgUrl: "/open/file/upload",
        showImgUrl: '/',
        showImgUrl: 'http://221.182.45.100:11222/',
    },
    // 生产环境
    production: {
laboratory/src/views/chemistQa/pilotAndProduction/components/approval/index.vue
@@ -1,507 +1,577 @@
<template>
    <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="80%" :close-on-click-modal="false"
        @close="handleClose">
        <div class="approval-dialog">
            <!-- 左侧审批内容 -->
            <div class="approval-content">
                <Card class="approval-content-card">
                    <template style="position: relative">
                        <div class="header-title" style="width: 100%;">
                            <div class="header-title-left">
                                <img src="@/assets/public/headercard.png" />
                                <div>所属项目组</div>
                            </div>
                        </div>
                        <Table :height="null" :total="0" :data="tableData">
                            <template>
                                <el-table-column prop="teamName" label="项目组名称" />
                                <el-table-column prop="personCharge" label="项目负责人" />
                                <el-table-column prop="staffName" label="项目组成员" />
                                <el-table-column prop="createTime" label="创建时间" />
                            </template>
                        </Table>
                        <el-form ref="form" :model="form" :rules="rules" inline label-position="top"
                            style="margin-top: 18px">
                            <el-row :gutter="20">
                                <el-col :span="24">
                                    <el-form-item prop="reportTitle" label="报告标题">
                                        <el-input v-model="form.reportTitle" style="width: 100%;" placeholder="请输入报告标题"
                                            disabled />
                                    </el-form-item>
                                    <el-form-item prop="reportCode" label="报告编号" style="margin-left: 100px;">
                                        <el-input v-model="form.reportCode" style="width: 100%;" placeholder="请输入报告编号"
                                            disabled />
                                    </el-form-item>
                                </el-col>
                                <el-col :span="24">
                                    <el-form-item prop="developPerson" label="制定人">
                                        <el-input v-model="form.developPerson" style="width: 100%;" placeholder="请输入制定人"
                                            disabled />
                                    </el-form-item>
                                    <el-form-item prop="developDate" label="制定日期" style="margin-left: 100px;">
                                        <el-date-picker :prefix-icon="null" v-model="form.developDate" type="date"
                                            disabled placeholder="请选择日期" />
                                    </el-form-item>
                                </el-col>
                            </el-row>
                            <div class="header-title" style="width: 100%;">
                                <div class="header-title-left">
                                    <img src="@/assets/public/headercard.png" />
                                    <div>报告正文</div>
                                </div>
                            </div>
                            <el-form-item prop="reportText" style="margin-top: 18px">
                                <ai-editor :value="form.reportText" style="width: 100%;" placeholder="请输入报告正文"
                                    :readOnly="true" />
                            </el-form-item>
                            <div class="header-title" style="width: 100%;">
                                <div class="header-title-left">
                                    <img src="@/assets/public/headercard.png" />
                                    <span class="noRequire">附件</span>
                                </div>
                            </div>
                            <el-form-item prop="name" style="margin-top: -18px">
                                <el-upload action="#"
                                :file-list="fileList"
                                disabled
                    :on-preview="handlePreview">
                                    <!-- <el-button size="small" type="primary" disabled>点击上传</el-button> -->
                                </el-upload>
                            </el-form-item>
                        </el-form>
                    </template>
                    <!-- <SelectMember ref="selectMember" /> -->
                </Card>
  <el-dialog
    :title="dialogTitle"
    :visible.sync="dialogVisible"
    width="90%"
    top="5vh"
    :close-on-click-modal="false"
    @close="handleClose"
  >
    <div class="approval-dialog">
      <!-- 左侧审批内容 -->
      <div class="approval-content">
        <Card class="approval-content-card">
          <template style="position: relative">
            <div class="header-title" style="width: 100%">
              <div class="header-title-left">
                <img src="@/assets/public/headercard.png" />
                <div>所属项目组</div>
              </div>
            </div>
            <!-- 右侧审批流程 -->
            <div class="approval-flow">
                <div class="flow-content">
                    <approval-process :processData="form.processData" />
            <Table :height="null" :total="0" :data="tableData">
              <template>
                <el-table-column prop="teamName" label="项目组名称" />
                <el-table-column prop="personCharge" label="项目负责人" />
                <el-table-column prop="staffName" label="项目组成员" />
                <el-table-column prop="createTime" label="创建时间" />
              </template>
            </Table>
            <el-form
              ref="form"
              :model="form"
              :rules="rules"
              inline
              label-position="top"
              style="margin-top: 18px"
            >
              <el-row :gutter="20">
                <el-col :span="24">
                  <el-form-item prop="reportTitle" label="报告标题">
                    <el-input
                      v-model="form.reportTitle"
                      style="width: 100%"
                      placeholder="请输入报告标题"
                      disabled
                    />
                  </el-form-item>
                  <el-form-item
                    prop="reportCode"
                    label="报告编号"
                    style="margin-left: 100px"
                  >
                    <el-input
                      v-model="form.reportCode"
                      style="width: 100%"
                      placeholder="请输入报告编号"
                      disabled
                    />
                  </el-form-item>
                </el-col>
                <el-col :span="24">
                  <el-form-item prop="developPerson" label="制定人">
                    <el-input
                      v-model="form.developPerson"
                      style="width: 100%"
                      placeholder="请输入制定人"
                      disabled
                    />
                  </el-form-item>
                  <el-form-item
                    prop="developDate"
                    label="制定日期"
                    style="margin-left: 100px"
                  >
                    <el-date-picker
                      :prefix-icon="null"
                      v-model="form.developDate"
                      type="date"
                      disabled
                      placeholder="请选择日期"
                    />
                  </el-form-item>
                </el-col>
              </el-row>
              <div class="header-title" style="width: 100%">
                <div class="header-title-left">
                  <img src="@/assets/public/headercard.png" />
                  <div>报告正文</div>
                </div>
              </div>
              <el-form-item prop="reportText" style="margin-top: 18px">
                <ai-editor
                  :value="form.reportText"
                  style="width: 100%"
                  placeholder="请输入报告正文"
                  :readOnly="true"
                />
              </el-form-item>
              <div class="header-title" style="width: 100%">
                <div class="header-title-left">
                  <img src="@/assets/public/headercard.png" />
                  <span class="noRequire">附件</span>
                </div>
              </div>
              <el-form-item prop="name" style="margin-top: -18px">
                <el-upload
                  action="#"
                  :file-list="fileList"
                  disabled
                  :on-preview="handlePreview"
                >
                  <!-- <el-button size="small" type="primary" disabled>点击上传</el-button> -->
                </el-upload>
              </el-form-item>
            </el-form>
          </template>
          <!-- <SelectMember ref="selectMember" /> -->
        </Card>
      </div>
      <!-- 右侧审批流程 -->
      <div class="approval-flow">
        <div class="flow-content">
          <approval-process :processData="form.processData" />
        </div>
      </div>
    </div>
    <div class="approval-dialog-approve" v-if="type == 'approve'">
      <el-row :span="24">
        <el-col :span="12">
          <div class="status">
            <div class="status-title">审批结果</div>
            <div class="status-content">
              <div
                class="resolve"
                :class="status == '1' && 'activeStatus'"
                @click.stop="status = 1"
              >
                通过
              </div>
              <div
                class="reject"
                :class="status == '2' && 'activeStatus'"
                @click.stop="status = 2"
              >
                驳回
              </div>
            </div>
        </div>
        <div class="approval-dialog-approve" v-if="type == 'approve'">
            <el-row :span="24">
                <el-col :span="12">
                    <div class="status">
                        <div class="status-title">审批结果</div>
                        <div class="status-content">
                            <div class="resolve" :class="status == '1' && 'activeStatus'" @click.stop="status = 1">
                                通过
                            </div>
                            <div class="reject" :class="status == '2' && 'activeStatus'" @click.stop="status = 2">
                                驳回
                            </div>
                        </div>
                    </div>
                </el-col>
                <el-col :span="12">
                    <div class="remark">
                        <div class="remark-title">审批意见</div>
                        <el-input type="textarea" v-model="remark" placeholder="请输入审批意见" />
                    </div>
                </el-col>
            </el-row>
        </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>
        </div>
    </el-dialog>
          </div>
        </el-col>
        <el-col :span="12">
          <div class="remark">
            <div class="remark-title">审批意见</div>
            <el-input
              type="textarea"
              v-model="remark"
              placeholder="请输入审批意见"
            />
          </div>
        </el-col>
      </el-row>
    </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
      >
    </div>
  </el-dialog>
</template>
<script>
import ApprovalProcess from '@/components/approvalProcess'
import AiEditor from '@/components/AiEditor'
import { getDetail, audit } from '../../service'
import apiConfig from '@/utils/baseurl';
import ApprovalProcess from "@/components/approvalProcess";
import AiEditor from "@/components/AiEditor";
import { getDetail, audit } from "../../service";
import apiConfig from "@/utils/baseurl";
export default {
    name: "ApprovalDialog",
    components: {
        ApprovalProcess,
        AiEditor
  name: "ApprovalDialog",
  components: {
    ApprovalProcess,
    AiEditor,
  },
  props: {
    visible: {
      type: Boolean,
      default: false,
    },
    props: {
        visible: {
            type: Boolean,
            default: false,
        },
        type: {
            type: String,
            default: "approve", // approve-审批,view-查看
        },
        data: {
            type: Object,
            default: () => ({}),
        },
    type: {
      type: String,
      default: "approve", // approve-审批,view-查看
    },
    data() {
        return {
            dialogVisible: false,
            form: {
                reportCode: "",
                reportTitle: "",
                reportText: "",
                developPerson: "",
                developPersonName: "",
                developDate: "",
                reportType: 2,
                status: 1,
                teamId: "",
                qaReportFiles: [],
                commitPersonId: null,
                processData: []
            },
            tableData: [],
            fileList: [], // 附件列表
            rules: {},
            status: "1",
            remark: "",
        };
    data: {
      type: Object,
      default: () => ({}),
    },
    computed: {
        dialogTitle() {
            return this.type == "approve" ? "审批" : "审批详情";
        },
  },
  data() {
    return {
      dialogVisible: false,
      form: {
        reportCode: "",
        reportTitle: "",
        reportText: "",
        developPerson: "",
        developPersonName: "",
        developDate: "",
        reportType: 2,
        status: 1,
        teamId: "",
        qaReportFiles: [],
        commitPersonId: null,
        processData: [],
      },
      tableData: [],
      fileList: [], // 附件列表
      rules: {},
      status: "1",
      remark: "",
    };
  },
  computed: {
    dialogTitle() {
      return this.type == "approve" ? "审批" : "审批详情";
    },
    watch: {
        visible: {
            handler(val) {
                this.dialogVisible = val;
                if (val && this.data.id) {
                    this.getDetail();
                }
            },
            immediate: true
  },
  watch: {
    visible: {
      handler(val) {
        this.dialogVisible = val;
        if (val && this.data.id) {
          this.getDetail();
        }
      },
      immediate: true,
    },
    methods: {
        handlePreview(file) {
            console.log('url', file)
            if (file && file.url) {
                if (file.url && file.url.startsWith(apiConfig.showImgUrl)) {
                    window.open(file.url, '_blank');
                }else{
                    let newUrl=apiConfig.showImgUrl+file.url;
                    window.open(newUrl, '_blank');
                }
  },
  methods: {
    handlePreview(file) {
      console.log("url", file);
      if (file && file.url) {
        if (file.url && file.url.startsWith(apiConfig.showImgUrl)) {
          window.open(file.url, "_blank");
        } else {
          let newUrl = apiConfig.showImgUrl + file.url;
          window.open(newUrl, "_blank");
        }
      }
    },
    getDetail() {
      getDetail(this.data.id)
        .then((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.status == 2 || res.status == 4) {
              processData.push({
                type:
                  res.status == 2
                    ? "primary"
                    : res.status == 4
                    ? "primary"
                    : "warning",
                mode: "list",
                fields: [
                  {
                    label: "审核结果:",
                    value:
                      res.status == 2
                        ? "通过"
                        : res.status == 4
                        ? "驳回"
                        : "待审批",
                  },
                  { label: "审批意见:", value: res.auditRemark || "" },
                  {
                    label: "审核人:",
                    value: res.auditPersonName || res.auditPersonId || "",
                  },
                  { label: "审核时间:", value: res.auditTime || "" },
                ],
              });
            } else {
              processData.push({
                type: "warning",
                mode: "list",
                fields: [{ label: "等待审核" }],
              });
            }
        },
        getDetail() {
            getDetail(this.data.id).then(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.status == 2 || res.status == 4) {
                        processData.push({
                            type:
                                res.status == 2
                                    ? "primary"
                                    : res.status == 4
                                        ? "primary"
                                        : "warning",
                            mode: "list",
                            fields: [
                                {
                                    label: "审核结果:",
                                    value:
                                        res.status == 2
                                            ? "通过"
                                            : res.status == 4
                                                ? "驳回"
                                                : "待审批",
                                },
                                { label: "审批意见:", value: res.auditRemark || "" },
                                { label: "审核人:", value: res.auditPersonName || res.auditPersonId || "" },
                                { label: "审核时间:", value: res.auditTime || "" },
                            ],
                        });
                    } else {
                        processData.push({
                            type: "warning",
                            mode: "list",
                            fields: [
                                { label: "等待审核" },
                            ],
                        });
                    }
                    // this.form = res;
                    this.tableData = [{ ...res.projectTeamVO, staffName: res.projectTeamVO.staffs.map(item => item.nickName).join(',') }]
                    this.fileList = res.qaReportFileList.map(item => {
                        return {
                            ...item,
                            name: item.fileName,
                            url: item.fileUrl
                        }
                    }) || [];
                    this.$nextTick(() => {
                        this.form.processData = processData;
                    })
                } else {
                    this.$message.error(res.message || '获取详情失败');
                }
            }).catch(err => {
                // console.error('获取详情失败:', err);
                // this.$message.error('获取详情失败');
            // this.form = res;
            this.tableData = [
              {
                ...res.projectTeamVO,
                staffName: res.projectTeamVO.staffs
                  .map((item) => item.nickName)
                  .join(","),
              },
            ];
            this.fileList =
              res.qaReportFileList.map((item) => {
                return {
                  ...item,
                  name: item.fileName,
                  url: item.fileUrl,
                };
              }) || [];
            this.$nextTick(() => {
              this.form.processData = processData;
            });
        },
        handleClose() {
            // this.$emit("update:visible", false);
            this.$emit("close");
            this.form.approvalComment = "";
        },
        handleApprove() {
            if (this.status == "2" && !this.remark) {
                this.$message.warning("请输入审批意见");
                return;
            }
            const params = {
                id: this.data.id,
                auditStatus: this.status == "1" ? 2 : 4, // 1=通过(2),2=驳回(4)
                auditRemark: this.remark
            };
            audit(params).then(res => {
                if (res) {
                    this.$message.success("审批成功");
                    this.$emit("close");
                    // this.$emit("refresh");
                } else {
                    this.$message.error(res.message || "审批失败");
                }
            }).catch(err => {
                // console.error("审批失败:", err);
                // this.$message.error("审批失败");
            });
        },
        handleReject() {
            if (!this.form.approvalComment) {
                this.$message.warning("请输入审批意见");
                return;
            }
            this.$emit("reject", {
                ...this.form,
                status: "rejected",
            });
        },
          } else {
            this.$message.error(res.message || "获取详情失败");
          }
        })
        .catch((err) => {
          // console.error('获取详情失败:', err);
          // this.$message.error('获取详情失败');
        });
    },
    handleClose() {
      // this.$emit("update:visible", false);
      this.$emit("close");
      this.form.approvalComment = "";
    },
    handleApprove() {
      if (this.status == "2" && !this.remark) {
        this.$message.warning("请输入审批意见");
        return;
      }
      const params = {
        id: this.data.id,
        auditStatus: this.status == "1" ? 2 : 4, // 1=通过(2),2=驳回(4)
        auditRemark: this.remark,
      };
      audit(params)
        .then((res) => {
          if (res) {
            this.$message.success("审批成功");
            this.$emit("close");
            // this.$emit("refresh");
          } else {
            this.$message.error(res.message || "审批失败");
          }
        })
        .catch((err) => {
          // console.error("审批失败:", err);
          // this.$message.error("审批失败");
        });
    },
    handleReject() {
      if (!this.form.approvalComment) {
        this.$message.warning("请输入审批意见");
        return;
      }
      this.$emit("reject", {
        ...this.form,
        status: "rejected",
      });
    },
  },
};
</script>
<style scoped lang="less">
::v-deep .el-dialog__header {
    border-bottom: 1px solid #e4e7ed;
  border-bottom: 1px solid #e4e7ed;
}
.approval-dialog {
    display: flex;
    height: 40vh;
  display: flex;
  min-height: 60vh;
  max-height: 80vh;
    .approval-content {
        flex: 2.5;
        margin-right: 20px;
        background: #ffffff;
        box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
        border-radius: 10px;
  .approval-content {
    flex: 1;
    margin-right: 20px;
    background: #ffffff;
    box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
    border-radius: 10px;
  }
  .approval-flow {
    padding: 20px 10px;
    width: 305px;
    // flex: 1;
    background: #ffffff;
    box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
    border-radius: 10px;
    .flow-title {
      font-size: 16px;
      font-weight: bold;
      margin-bottom: 20px;
      color: #303133;
    }
    .approval-flow {
        padding: 40px 20px;
        // width: 405px;
        flex: 1;
        background: #ffffff;
        box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
        border-radius: 10px;
    .flow-content {
      height: calc(100% - 40px);
      overflow-y: auto;
        .flow-title {
            font-size: 16px;
            font-weight: bold;
            margin-bottom: 20px;
            color: #303133;
        }
        .flow-content {
            height: calc(100% - 40px);
            overflow-y: auto;
            .el-form--inline .el-form-item {
                margin-right: 83px;
            }
        }
      .el-form--inline .el-form-item {
        margin-right: 83px;
      }
    }
  }
}
.approval-content-card {
    height: calc(100% - 100px) !important;
    box-shadow: none !important;
  height: calc(100% - 10px) !important;
  box-shadow: none !important;
}
.header-title {
    // display: flex;
  // display: flex;
  align-items: center;
  flex-wrap: wrap;
  margin-bottom: 20px;
  gap: 13px;
  .header-title-left {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    margin-bottom: 20px;
    gap: 13px;
    margin-top: 18px;
    .header-title-left {
        display: flex;
        align-items: center;
        gap: 13px;
        margin-top: 18px;
        img {
            width: 12px;
            height: 19px;
        }
        div {
            flex-shrink: 0;
            font-weight: bold;
            font-size: 18px;
            color: #222222;
            line-height: 27px;
            font-family: "Source Han Sans CN Bold Bold";
            &:before {
                content: "*";
                color: #f56c6c;
                margin-right: 4px;
            }
        }
        span {
            flex-shrink: 0;
            font-weight: bold;
            font-size: 18px;
            color: #222222;
            line-height: 27px;
            font-family: "Source Han Sans CN Bold Bold";
        }
    img {
      width: 12px;
      height: 19px;
    }
    .header-title-left :first-child {
        margin-top: 0;
    div {
      flex-shrink: 0;
      font-weight: bold;
      font-size: 18px;
      color: #222222;
      line-height: 27px;
      font-family: "Source Han Sans CN Bold Bold";
      &:before {
        content: "*";
        color: #f56c6c;
        margin-right: 4px;
      }
    }
    span {
      flex-shrink: 0;
      font-weight: bold;
      font-size: 18px;
      color: #222222;
      line-height: 27px;
      font-family: "Source Han Sans CN Bold Bold";
    }
  }
  .header-title-left :first-child {
    margin-top: 0;
  }
}
.header-title:first-child {
    .header-title-left {
        margin-top: 0;
    }
  .header-title-left {
    margin-top: 0;
  }
}
.item-title {
    padding-left: 25px;
  padding-left: 25px;
    span {
        flex-shrink: 0;
        font-weight: bold;
        font-size: 14px;
        color: #222222;
        line-height: 27px;
        font-family: "Source Han Sans CN Bold Bold";
        margin: 18px 0;
  span {
    flex-shrink: 0;
    font-weight: bold;
    font-size: 14px;
    color: #222222;
    line-height: 27px;
    font-family: "Source Han Sans CN Bold Bold";
    margin: 18px 0;
        &:before {
            content: "*";
            color: #f56c6c;
            margin-right: 4px;
        }
    &:before {
      content: "*";
      color: #f56c6c;
      margin-right: 4px;
    }
  }
}
.approval-dialog-approve {
    padding: 38px 20px;
    // display: flex;
    align-content: center;
  padding: 28px 10px;
  // display: flex;
  align-content: center;
    .status {
        margin-right: 40px;
        max-width: 60%;
  .status {
    margin-right: 40px;
    max-width: 60%;
  }
  //   align-items: center;
  .status-title {
    color: #222222;
    font-family: "SourceHanSansCN-Medium";
    line-height: 14px;
    margin-bottom: 16px;
  }
  .status-content {
    display: flex;
    align-items: center;
    width: 100%;
    gap: 16px;
    background: #ffffff;
    border-radius: 10px;
    border: 1px solid rgba(4, 156, 154, 0.5);
    .resolve {
      border-radius: 10px;
      flex: 1;
      font-size: 16px;
      // padding: 5px 55px;
      font-weight: 400;
      color: #333333;
      cursor: pointer;
      line-height: 32px;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    //   align-items: center;
    .status-title {
        color: #222222;
        font-family: "SourceHanSansCN-Medium";
        line-height: 14px;
        margin-bottom: 16px;
    .reject {
      flex: 1;
      border-radius: 10px;
      font-size: 16px;
      line-height: 32px;
      // padding: 5px 55px;
      font-weight: 400;
      color: #333333;
      cursor: pointer;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    .status-content {
        display: flex;
        align-items: center;
        width: 100%;
        gap: 16px;
        background: #ffffff;
        border-radius: 10px;
        border: 1px solid rgba(4, 156, 154, 0.5);
        .resolve {
            border-radius: 10px;
            flex: 1;
            font-size: 16px;
            // padding: 5px 55px;
            font-weight: 400;
            color: #333333;
            cursor: pointer;
            line-height: 32px;
            display: flex;
            align-items: center;
            justify-content: center
        }
        .reject {
            flex: 1;
            border-radius: 10px;
            font-size: 16px;
            line-height: 32px;
            // padding: 5px 55px;
            font-weight: 400;
            color: #333333;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center
        }
        .activeStatus {
            background: #ebfefd;
            color: #049c9a;
            box-shadow: 0px 0px 6px 0px rgba(10, 109, 108, 0.25);
            border-radius: 10px;
        }
    .activeStatus {
      background: #ebfefd;
      color: #049c9a;
      box-shadow: 0px 0px 6px 0px rgba(10, 109, 108, 0.25);
      border-radius: 10px;
    }
  }
    .remark-title {
        color: #222222;
        font-family: "SourceHanSansCN-Medium";
        line-height: 14px;
        margin-bottom: 16px;
    }
  .remark-title {
    color: #222222;
    font-family: "SourceHanSansCN-Medium";
    line-height: 14px;
    margin-bottom: 16px;
  }
}
.dialog-footer {
    align-items: center;
    display: flex;
    justify-content: center;
    gap: 20px;
  align-items: center;
  display: flex;
  justify-content: center;
  gap: 20px;
    button {
        width: 150px;
    }
  button {
    width: 150px;
  }
}
</style>
laboratory/src/views/chemistQa/productApproval/components/approval/index.vue
@@ -1,5 +1,5 @@
<template>
    <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="80%" :close-on-click-modal="false"
    <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="90%" top="5vh" :close-on-click-modal="false"
        @close="handleClose">
        <div class="approval-dialog">
            <!-- 左侧审批内容 -->
@@ -293,10 +293,11 @@
.approval-dialog {
    display: flex;
    height: 40vh;
    min-height: 60vh;
  max-height: 80vh;
    .approval-content {
        flex: 3;
        flex: 1;
        margin-right: 20px;
        background: #ffffff;
        box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
@@ -304,8 +305,9 @@
    }
    .approval-flow {
        padding: 40px 20px;
        flex: 2;
        padding: 20px 0px;
        width: 305px;
        // flex: 2;
        background: #ffffff;
        box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
        border-radius: 10px;
@@ -329,7 +331,7 @@
}
.approval-content-card {
    height: calc(100% - 100px) !important;
    height: calc(100% - 10px) !important;
    box-shadow: none !important;
}
@@ -407,7 +409,7 @@
}
.approval-dialog-approve {
    padding: 38px 20px;
    padding: 28px 10px;
    align-content: center;
    .status {
laboratory/src/views/chemistQa/projectTesting/components/approval/index.vue
@@ -1,5 +1,5 @@
<template>
    <el-dialog :title="dialogTitle" :visible.sync="visible" width="80%" @open="open" :close-on-click-modal="false"
    <el-dialog :title="dialogTitle" :visible.sync="visible" width="90%" top="5vh" @open="open" :close-on-click-modal="false"
        @close="handleClose">
        <div class="approval-dialog">
            <!-- 左侧审批内容 -->
@@ -309,10 +309,11 @@
.approval-dialog {
    display: flex;
    height: 40vh;
    // height: 40vh;
    min-height: 60vh;
    max-height: 80vh;
    .approval-content {
        flex: 3;
        flex: 1;
        margin-right: 20px;
        background: #ffffff;
        box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
@@ -320,9 +321,9 @@
    }
    .approval-flow {
        padding: 40px 20px;
        // width: 405px;
        flex: 2;
        padding: 20px 10px;
        width: 305px;
        // flex: 2;
        background: #ffffff;
        box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
        border-radius: 10px;
@@ -346,7 +347,7 @@
}
.approval-content-card {
    height: calc(100% - 100px) !important;
    height: calc(100% - 10px) !important;
    box-shadow: none !important;
}
laboratory/src/views/chemistQa/projectTesting/components/itemApproval.vue
@@ -1,6 +1,6 @@
<template>
    <div>
        <el-dialog :title="dialogTitle" :visible.sync="visible" width="80%" :close-on-click-modal="false"
        <el-dialog :title="dialogTitle" :visible.sync="visible" width="90%" top="5vh" :close-on-click-modal="false"
            @close="handleClose">
            <div class="approval-dialog">
                <!-- 内容区域 -->
@@ -283,10 +283,12 @@
.approval-dialog {
    display: flex;
    height: 40vh;
    // height: 40vh;
    min-height: 60vh;
  max-height: 80vh;
    .approval-content {
        flex: 3;
        flex: 1;
        margin-right: 20px;
        background: #ffffff;
        box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
@@ -294,9 +296,9 @@
    }
    .approval-flow {
        padding: 40px 20px;
        // width: 405px;
        flex: 2;
        padding: 20px 10px;
        width: 305px;
        // flex: 2;
        background: #ffffff;
        box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
        border-radius: 10px;
@@ -320,7 +322,7 @@
}
.approval-content-card {
    height: calc(100% - 100px) !important;
    height: calc(100% - 10px) !important;
    box-shadow: none !important;
}
@@ -399,7 +401,7 @@
}
.approval-dialog-approve {
    padding: 38px 20px;
    padding: 28px 10px;
    // display: flex;
    align-content: center;
laboratory/src/views/chemistQa/rawMaterials/components/approval/index.vue
@@ -2,7 +2,8 @@
  <el-dialog
    :title="dialogTitle"
    :visible.sync="dialogVisible"
    width="80%"
    width="90%"
    top="5vh"
    :close-on-click-modal="false"
    @close="handleClose"
  >
@@ -364,11 +365,12 @@
}
.approval-dialog {
  display: flex;
  height: 40vh;
  display: flex;
  min-height: 60vh;
  max-height: 80vh;
  .approval-content {
    flex: 3;
    flex: 1;
    margin-right: 20px;
    background: #ffffff;
    box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
@@ -376,9 +378,8 @@
  }
  .approval-flow {
    padding: 40px 20px;
    // width: 405px;
    flex: 2;
    padding: 20px 0px;
    width: 305px;
    background: #ffffff;
    box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
    border-radius: 10px;
@@ -402,7 +403,7 @@
}
.approval-content-card {
  height: calc(100% - 100px) !important;
  height: calc(100% - 10px) !important;
  box-shadow: none !important;
}
@@ -481,7 +482,7 @@
}
.approval-dialog-approve {
  padding: 38px 20px;
  padding: 18px 10px;
  // display: flex;
  align-content: center;
laboratory/src/views/dataManagement/approvalPlan/addPlan.vue
@@ -21,7 +21,7 @@
        <el-form-item prop="projectStage" label="项目阶段">
          <el-select v-model="form.projectStage" placeholder="请选择">
            <el-option label="实验室开发阶段" :value="1" />
            <el-option label="中式试验阶段" :value="2" />
            <el-option label="中试试验阶段" :value="2" />
            <el-option label="生产验证试验阶段" :value="3" />
          </el-select>
        </el-form-item>
@@ -44,7 +44,7 @@
      <div class="header-title">
        <div class="header-title-left">
          <img src="@/assets/public/headercard.png" />
          <div>二 、实验拆料和设备</div>
          <div>二 、实验材料和设备</div>
        </div>
      </div>
      <div class="item-title">
laboratory/src/views/dataManagement/approvalPlan/components/approvalDialog.vue
@@ -2,7 +2,7 @@
  <el-dialog
    :title="dialogTitle"
    :visible.sync="visible"
    width="80%"
    width="90%"
    :close-on-click-modal="false"
    @close="handleClose"
  >
@@ -45,7 +45,7 @@
                  disabled
                >
                  <el-option label="实验室开发阶段" :value="1" />
                  <el-option label="中式试验阶段" :value="2" />
                  <el-option label="中试试验阶段" :value="2" />
                  <el-option label="生产验证试验阶段" :value="3" />
                </el-select>
              </el-form-item>
@@ -75,7 +75,7 @@
            <div class="header-title">
              <div class="header-title-left">
                <img src="@/assets/public/headercard.png" />
                <div>二 、实验拆料和设备</div>
                <div>二 、实验材料和设备</div>
              </div>
            </div>
            <div class="item-title">
@@ -378,7 +378,9 @@
.approval-dialog {
  display: flex;
  height: 300px;
  // height: 300px;
  min-height: 500px;
  max-height: 580px;
  .approval-content {
    flex: 1;
@@ -389,8 +391,8 @@
  }
  .approval-flow {
    padding: 40px 20px;
    width: 405px;
    padding: 40px 0px;
    width: 305px;
    background: #ffffff;
    box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
    border-radius: 10px;
@@ -492,7 +494,7 @@
}
.approval-dialog-approve {
  padding: 38px 20px;
  padding: 18px 20px 0 20px;
  display: flex;
  align-content: center;
  .status {
laboratory/src/views/dataManagement/confirmation-sheet/components/add.vue
@@ -361,7 +361,7 @@
          confirmSign: signatureImage, // 签字图片
          signTime: new Date().toISOString(), // 签字时间
          testMethodConfirmSheetTerms: this.testItems.map(item => ({
            id: this.formData.id?item.id:'', // 保留原有ID(编辑时使用)
            id: '', // 保留原有ID(编辑时使用)
            termCode: item.termCode,
            termName: item.termName,
            termType: item.termType,
@@ -406,7 +406,7 @@
          dispatchId: this.selectedScheduling.id,
          auditStatus: -1, // 草稿箱状态
          testMethodConfirmSheetTerms: this.testItems.map(item => ({
            id: item.id, // 保留原有ID(编辑时使用)
            id: '', // 保留原有ID(编辑时使用)
            termCode: item.termCode,
            termName: item.termName,
            termType: item.termType,
@@ -440,8 +440,8 @@
        if (res) {
          // 设置实验调度数据
          this.selectedScheduling = {
            ...res,
            id: res.dispatchId,
            ...res
          }
          this.tableData = [{
            // planCode: res.projectName,
@@ -478,35 +478,6 @@
        }
      } catch (error) {
        // this.$message.error('获取详情失败:' + (error.message || '未知错误'))
      }
    },
    async handleEditSubmit(signatureImage) {
      try {
        const submitData = {
          id: this.formData.id,
          dispatchId: this.selectedScheduling.id,
          auditStatus: 1,
          confirmSign: signatureImage,
          signTime: new Date().toISOString(),
          testMethodConfirmSheetTerms: this.testItems.map(item => ({
            id: item.id, // 保留原有ID
            termCode: item.termCode,
            termName: item.termName,
            termType: item.termType,
            termMethodCode: item.termMethodCode,
            termMethod: item.termMethod,
            sampleRequire: item.sampleRequire,
            status: item.status,
            testId: item.testId
          }))
        }
        await update(submitData)
        this.$message.success('更新成功')
        this.$router.push('/dataManagement/confirmation-sheet')
      } catch (error) {
        // this.$message.error('更新失败:' + (error.message || '未知错误'))
      }
    },
  },
laboratory/src/views/dataManagement/confirmation-sheet/components/review-dialog.vue
@@ -1,5 +1,5 @@
<template>
  <el-dialog title="审核检测方法确认单" :visible="dialogVisible" width="80%" @open='open' :close-on-click-modal="false" @close="handleClose"
  <el-dialog title="审核检测方法确认单" :visible="dialogVisible" top="5vh" width="90%" @open='open' :close-on-click-modal="false" @close="handleClose"
    v-loading="loading">
    <div class="approval-dialog">
      <div class="approval-content">
@@ -279,11 +279,11 @@
  }
  .approval-flow {
    width: 405px;
    width: 305px;
    background: #ffffff;
    box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
    border-radius: 10px;
    padding: 40px 20px;
    padding: 20px 0px;
    margin: 20px;
    margin-left: 0;
@@ -351,7 +351,7 @@
}
.approval-dialog-approve {
  margin-top: 26px;
  margin-top: 18px;
  padding: 0 20px;
  .add-group {
laboratory/src/views/dataManagement/dispatching/editDispatch.vue
@@ -3,8 +3,9 @@
    <el-dialog
      :title="dialogTitle"
      :visible.sync="visible"
      width="80%"
      width="90%"
      @open='open'
      top="5vh"
      :close-on-click-modal="false"
      @close="handleClose"
    >
@@ -526,7 +527,7 @@
.approval-dialog {
  display: flex;
  height: 60vh;
  height: 70vh;
  .approval-content {
    flex: 1;
@@ -537,8 +538,8 @@
  }
  .approval-flow {
    padding: 40px 20px;
    width: 405px;
    padding: 20px 0px;
    width: 305px;
    background: #ffffff;
    box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
    border-radius: 10px;
@@ -561,11 +562,11 @@
  }
}
.approval-dialog-approve {
  margin-top: 26px;
  margin-top: 18px;
}
.approval-content-card {
  height: calc(100% - 100px) !important;
  height: calc(100% - 10px) !important;
  box-shadow: none !important;
}
laboratory/src/views/dataManagement/originalRecordTest/components/addDialog.vue
@@ -12,10 +12,10 @@
          <el-form ref="form" :model="form" :rules="rules" label-position="top">
            <el-row :gutter="20">
              <el-col :span="12">
                <el-form-item label="数据编号" prop="dataCode">
                <el-form-item label="检测样编号" prop="dataCode">
                  <el-input
                    v-model="form.dataCode"
                    placeholder="请输入数据编号"
                    placeholder="请输入检测样编号"
                  />
                </el-form-item>
              </el-col>
laboratory/src/views/dataManagement/originalRecordTest/detail.vue
@@ -134,7 +134,7 @@
      <div class="add-project-footer" v-if="!isDetail">
        <el-button type="primary" class="save-btn" @click="handleSubmit(false)">填写完毕</el-button>
        <!-- <el-button @click="handleSaveDraft">存草稿</el-button> -->
        <el-button @click="handleSaveDraft">存草稿</el-button>
      </div>
    </el-form>
    <!-- 添加检测数据弹窗 -->
laboratory/src/views/dataManagement/originalRecordTest/list.vue
@@ -30,6 +30,7 @@
          <el-form-item label="状态:">
            <el-select v-model="form.status" placeholder="请选择">
              <el-option label="全部" value=""></el-option>
              <el-option label="草稿箱" value="-1"></el-option>
              <el-option label="未填写" value="1"></el-option>
              <el-option label="已填写" value="2"></el-option>
            </el-select>
@@ -44,7 +45,11 @@
      <template #setting>
        <div class="tableTitle">
          <div class="flex a-center">
            <div class="title active">原始记录检测列表</div>
            <div class="table-tit" :class="{ active: currentType === 'list' }" @click="handleTypeChange('list')">原始记录检测列表</div>
            <div v-if="isLabTechnician" class="table-tit drafts" :class="{ active: currentType === 'draft' }"
              @click="handleTypeChange('draft')">
              草稿箱
            </div>
          </div>
        </div>
      </template>
@@ -108,6 +113,7 @@
  },
  data() {
    return {
      currentType: "list",
      // 查询表单数据
      form: {
        projectName: "", // 项目课题方案名称
@@ -116,7 +122,7 @@
        createTime: [], // 创建时间范围
        startTime: "", // 开始时间
        endTime: "", // 结束时间
        status: "", // 状态
        status: this.currentType === "draft" ? -1 : '', // 状态
        pageNum: 1, // 当前页码
        pageSize: 10 // 每页条数
      },
@@ -143,6 +149,12 @@
    },
    handleSearch() {
      this.form.pageNum = 1;
      this.getTableData();
    },
    handleTypeChange(type) {
      this.currentType = type;
      this.form.status = type === "draft" ? -1 : "";
      this.form.pageNum = 1; // 切换时重置页码
      this.getTableData();
    },
    handleEdit(row) {
@@ -249,4 +261,53 @@
    border: 1px solid #049c9a;
  }
}
.table-title {
  width: 220px;
  height: 50px;
  background: #ffffff;
  border-radius: 8px 8px 0px 0px;
  border: 1px solid #049c9a;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: SourceHanSansCN, SourceHanSansCN;
  font-weight: bold;
  font-size: 18px;
  color: #049c9a;
  line-height: 27px;
  cursor: pointer;
  transition: all 0.3s ease;
  &.active {
    color: #049c9a;
    background: #ffffff;
    border: 1px solid #049c9a;
  }
}
.table-tit {
  width: 166px;
  height: 50px;
  background: #fafafc;
  border-radius: 8px 8px 0px 0px;
  border: 1px solid #dcdfe6;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: SourceHanSansCN, SourceHanSansCN;
  font-size: 18px;
  color: #606266;
  line-height: 27px;
  margin-left: 16px;
  cursor: pointer;
  transition: all 0.3s ease;
  &.active {
    color: #049c9a;
    font-weight: bold;
    background: #ffffff;
    border: 1px solid #049c9a;
  }
}
</style> 
laboratory/src/views/dataManagement/sampleManage/addSample.vue
@@ -174,7 +174,7 @@
          <el-input v-model="form.sampleCode" :disabled="true" placeholder="自动生成" />
        </el-form-item>
      </el-form>
      <!-- <div>取样单编号:{{ form.sampleCode }}</div> -->
      <div v-if=" pageType == 'detail'">取样单编号:{{ form.sampleCode }}</div>
      <div class="header-title-left" style="margin-top: 38px">
        <img src="@/assets/public/headercard.png" />
        <span>取样操作记录</span>
@@ -323,7 +323,7 @@
  computed: {
    ...mapState(["tagList", "isFold"]),
    isEngineer() {
      return this.userRole == '3'; // 工艺工程师
      return this.userRole != '4'  ; // 工艺工程师
    },
    isAssayer() {
      return this.userRole == '4'; // 化验师
laboratory/src/views/dataManagement/sampleManage/components/approvalDialog.vue
@@ -2,7 +2,8 @@
  <el-dialog
    :title="dialogTitle"
    :visible.sync="visible"
    width="80%"
    width="90%"
    top="5vh"
    :close-on-click-modal="false"
    @close="handleClose"
  >
@@ -227,6 +228,8 @@
.approval-dialog {
  display: flex;
  height: 300px;
  min-height: 60vh;
  max-height: 80vh;
  .approval-content {
    flex: 1;
@@ -237,8 +240,8 @@
  }
  .approval-flow {
    padding: 40px 20px;
    width: 405px;
    padding: 20px 0px;
    width: 305px;
    background: #ffffff;
    box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
    border-radius: 10px;
@@ -340,7 +343,7 @@
}
.approval-dialog-approve {
  padding: 38px 20px;
  padding: 18px 0px;
  display: flex;
  align-content: center;
  .status {
laboratory/src/views/dataManagement/schemeManagement/components/approvalDialog.vue
@@ -1,6 +1,6 @@
<template>
  <div>
    <el-dialog title="实验方案详情" :visible="dialogVisible" width="80%" :close-on-click-modal="false" @close="handleClose">
    <el-dialog title="实验方案详情" :visible="dialogVisible" width="90%" top="5vh" :close-on-click-modal="false" @close="handleClose">
      <div class="approval-dialog">
        <!-- 左侧审批内容 -->
        <div class="approval-content">
@@ -479,7 +479,8 @@
}
::v-deep .el-dialog__body {
  padding: 20px;
  // padding: 20px;
  max-height: 80vh;
  overflow: hidden;
}
@@ -493,7 +494,8 @@
.approval-dialog {
  display: flex;
  height: 60vh;
  min-height: 60vh;
  max-height: 78vh;
  padding: 20px;
  overflow: hidden;
@@ -521,8 +523,8 @@
  .approval-flow {
    flex: 3;
    min-width: 350px;
    padding: 40px 20px;
    max-width: 305px;
    padding: 20px 0px;
    background: #ffffff;
    box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
    border-radius: 10px;
@@ -551,7 +553,7 @@
}
.approval-content-card {
  height: calc(100% - 100px) !important;
  height: calc(100% - 10px) !important;
  box-shadow: none !important;
}
laboratory/src/views/dataManagement/suspendExperiment/components/approvalDialog.vue
@@ -1,5 +1,5 @@
<template>
  <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="80%" :close-on-click-modal="false"
  <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="90%" top="5vh" :close-on-click-modal="false"
    @close="handleClose">
    <div class="approval-dialog">
      <!-- 左侧审批内容 -->
@@ -266,7 +266,8 @@
.approval-dialog {
  display: flex;
  height: 300px;
  min-height: 60vh;
  max-height: 80vh;
  .approval-content {
    flex: 1;
@@ -277,8 +278,8 @@
  }
  .approval-flow {
    padding: 40px 20px;
    width: 405px;
    padding: 20px 0px;
    width: 305px;
    background: #ffffff;
    box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
    border-radius: 10px;
@@ -302,7 +303,7 @@
}
.approval-content-card {
  height: calc(100% - 100px) !important;
  height: calc(100% - 10px) !important;
  box-shadow: none !important;
}
@@ -311,7 +312,7 @@
  align-items: center;
  flex-wrap: wrap;
  gap: 13px;
  margin-bottom: 38px;
  margin-bottom: 18px;
  .header-title-left {
    display: flex;
laboratory/src/views/dataManagement/testResultReport/components/experimentResultDialog.vue
@@ -1,6 +1,6 @@
<template>
  <div>
    <el-dialog title="实验方案详情" :visible="dialogVisible" width="80%" :close-on-click-modal="false" @close="handleClose">
    <el-dialog title="实验方案详情" :visible="dialogVisible" width="90%" top="5vh" :close-on-click-modal="false" @close="handleClose">
      <div class="approval-dialog">
        <!-- 左侧审批内容 -->
        <div class="approval-content">
@@ -450,7 +450,7 @@
}
::v-deep .el-dialog__body {
  padding: 20px;
  // padding: 20px;
  max-height: 80vh;
  overflow: hidden;
}
@@ -464,7 +464,8 @@
.approval-dialog {
  display: flex;
  height: 60vh;
  min-height: 60vh;
  max-height: 80vh;
  padding: 20px;
  overflow: hidden;
@@ -492,8 +493,8 @@
  .approval-flow {
    flex: 3;
    min-width: 350px;
    padding: 40px 20px;
    max-width: 305px;
    padding: 20px 0px;
    background: #ffffff;
    box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
    border-radius: 10px;
@@ -518,11 +519,11 @@
}
.approval-dialog-approve {
  margin-top: 26px;
  margin-top: 18px;
}
.approval-content-card {
  height: calc(100% - 100px) !important;
  height: calc(100% - 10px) !important;
  box-shadow: none !important;
}
laboratory/src/views/deliveryAssessment/projectTeamIntegral/detail.vue
@@ -11,7 +11,7 @@
            <div class="top-box-integral">
                <div :style="{ backgroundColor: ['rgba(232, 250, 246, 1)', 'rgba(255, 243, 213, 1)', 'rgba(254, 237, 220, 1)', 'rgba(239, 248, 255, 1)', 'rgba(255, 237, 238, 1)'][item - 1] }"
                    v-for="(item,index) in 5" :key="index" class="top-box-integral-card">
                    <div class="top-box-integral-card-title">{{ ['项目组总积分', '工艺工程师积分', '化验师积分', '实验员积分', '实验终止次数'][item -
                    <div class="top-box-integral-card-title">{{ ['项目组总积分', '工艺工程师积分', '化验师积分', '实验员积分', '实验中止次数'][item -
                        1] }}</div>
                    <div :style="{ color: ['rgba(4, 156, 154, 1)', 'rgba(255, 197, 61, 1)', 'rgba(255, 147, 0, 1)', 'rgba(23, 119, 213, 1)', 'rgba(255, 73, 85, 1)'][item - 1] }"
                        class="top-box-integral-card-num">{{
laboratory/src/views/reportLibrary/feasibilityReport/components/approval/index.vue
@@ -2,15 +2,15 @@
  <el-dialog
    :title="dialogTitle"
    :visible.sync="visible"
    width="80%"
    width="90%"
    @open="open"
    po
    top="5vh"
    :close-on-click-modal="false"
    @close="handleClose"
  >
    <div
      class="approval-dialog"
      :style="{ height: obj.isDetail ? '50vh' : '40vh' }"
      :style="{ height: obj.isDetail ? '80vh' : '60vh' }"
    >
      <!-- 左侧审批内容 -->
      <div class="approval-content">
@@ -349,10 +349,11 @@
.approval-dialog {
  display: flex;
  height: 40vh;
  min-height: 60vh;
  max-height: 80vh;
  .approval-content {
    flex: 3;
    flex: 1;
    margin-right: 20px;
    background: #ffffff;
    box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
@@ -360,9 +361,9 @@
  }
  .approval-flow {
    padding: 40px 20px;
    // width: 405px;
    flex: 2;
    padding: 20px 10px;
    width: 305px;
    // flex: 2;
    background: #ffffff;
    box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
    border-radius: 10px;
@@ -386,7 +387,7 @@
}
.approval-content-card {
  height: calc(100% - 100px) !important;
  height: calc(100% - 10px) !important;
  box-shadow: none !important;
}
@@ -465,7 +466,7 @@
}
.approval-dialog-approve {
  padding: 38px 20px;
  padding: 18px 10px;
  // display: flex;
  align-content: center;
laboratory/src/views/reportLibrary/feasibilityStudy/components/approval/index.vue
@@ -1,7 +1,7 @@
<template>
  <el-dialog :title="dialogTitle" :visible.sync="visible" width="80%" @open="open" po :close-on-click-modal="false"
  <el-dialog :title="dialogTitle" :visible.sync="visible" width="90%" top="5vh" @open="open"  :close-on-click-modal="false"
    @close="handleClose">
    <div class="approval-dialog" :style="{ height: obj.isDetail ? '50vh' : '40vh' }">
    <div class="approval-dialog" :style="{ height: obj.isDetail ? '80vh' : '60vh' }">
      <!-- 左侧审批内容 -->
      <div class="approval-content">
        <Card class="approval-content-card">
@@ -303,10 +303,11 @@
.approval-dialog {
  display: flex;
  height: 40vh;
  min-height: 60vh;
  max-height: 80vh;
  .approval-content {
    flex: 3;
    flex: 1;
    margin-right: 20px;
    background: #ffffff;
    box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
@@ -314,9 +315,9 @@
  }
  .approval-flow {
    padding: 40px 20px;
    // width: 405px;
    flex: 2;
    padding: 20px 10px;
    width: 305px;
    // flex: 2;
    background: #ffffff;
    box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
    border-radius: 10px;
@@ -340,7 +341,7 @@
}
.approval-content-card {
  height: calc(100% - 100px) !important;
  height: calc(100% - 10px) !important;
  box-shadow: none !important;
}
@@ -419,7 +420,7 @@
}
.approval-dialog-approve {
  padding: 38px 20px;
  padding: 18px 10px;
  // display: flex;
  align-content: center;
laboratory/src/views/reportLibrary/processDevelopment/components/approval/index.vue
@@ -1,7 +1,7 @@
<template>
    <el-dialog :title="dialogTitle" :visible.sync="visible" width="80%" @open="open" po :close-on-click-modal="false"
    <el-dialog :title="dialogTitle" :visible.sync="visible" width="90%" @open="open" top="5vh" :close-on-click-modal="false"
        @close="handleClose">
        <div class="approval-dialog" :style="{height: obj.isDetail ? '50vh' : '40vh'}">
        <div class="approval-dialog" :style="{height: obj.isDetail ? '80vh' : '60vh'}">
            <!-- 左侧审批内容 -->
            <div class="approval-content">
                <Card class="approval-content-card">
@@ -308,10 +308,11 @@
.approval-dialog {
    display: flex;
    height: 40vh;
    min-height: 60vh;
    max-height: 80vh;
    .approval-content {
        flex: 3;
        flex: 1;
        margin-right: 20px;
        background: #ffffff;
        box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
@@ -319,9 +320,9 @@
    }
    .approval-flow {
        padding: 40px 20px;
        // width: 405px;
        flex: 2;
        padding: 20px 10px;
        width: 305px;
        // flex: 2;
        background: #ffffff;
        box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
        border-radius: 10px;
@@ -345,7 +346,7 @@
}
.approval-content-card {
    height: calc(100% - 100px) !important;
    height: calc(100% - 10px) !important;
    box-shadow: none !important;
}
@@ -424,7 +425,7 @@
}
.approval-dialog-approve {
    padding: 38px 20px;
    padding: 18px 10px;
    // display: flex;
    align-content: center;
laboratory/src/views/reportLibrary/projectProposalLibrary/components/approval/index.vue
@@ -1,7 +1,7 @@
<template>
    <el-dialog :title="dialogTitle" :visible.sync="visible" width="80%" @open="open" po :close-on-click-modal="false"
    <el-dialog :title="dialogTitle" :visible.sync="visible" width="90%" top="5vh" @open="open" po :close-on-click-modal="false"
        @close="handleClose">
        <div class="approval-dialog" :style="{height: obj.isDetail ? '50vh' : '40vh'}">
        <div class="approval-dialog" :style="{height: obj.isDetail ? '80vh' : '60vh'}">
            <!-- 左侧审批内容 -->
            <div class="approval-content">
                <Card class="approval-content-card">
@@ -288,10 +288,11 @@
.approval-dialog {
    display: flex;
    height: 40vh;
    min-height: 60vh;
  max-height: 80vh;
    .approval-content {
        flex: 3;
        flex: 1;
        margin-right: 20px;
        background: #ffffff;
        box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
@@ -299,9 +300,9 @@
    }
    .approval-flow {
        padding: 40px 20px;
        // width: 405px;
        flex: 2;
        padding: 20px 10px;
        width: 305px;
        // flex: 2;
        background: #ffffff;
        box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
        border-radius: 10px;
@@ -325,7 +326,7 @@
}
.approval-content-card {
    height: calc(100% - 100px) !important;
    height: calc(100% - 10px) !important;
    box-shadow: none !important;
}
@@ -404,7 +405,7 @@
}
.approval-dialog-approve {
    padding: 38px 20px;
    padding: 18px 10px;
    // display: flex;
    align-content: center;
laboratory/src/views/reportLibrary/verificationRelease/components/approval/index.vue
@@ -1,7 +1,7 @@
<template>
    <el-dialog :title="dialogTitle" :visible.sync="visible" width="80%" @open="open" po :close-on-click-modal="false"
    <el-dialog :title="dialogTitle" :visible.sync="visible" width="90%" top="5vh" @open="open" po :close-on-click-modal="false"
        @close="handleClose">
        <div class="approval-dialog" :style="{ height: obj.isDetail ? '50vh' : '40vh' }">
        <div class="approval-dialog" :style="{ height: obj.isDetail ? '80vh' : '60vh' }">
            <!-- 左侧审批内容 -->
            <div class="approval-content">
                <Card class="approval-content-card">
@@ -315,7 +315,9 @@
.approval-dialog {
    display: flex;
    height: 40vh;
    // height: 40vh;
    min-height: 60vh;
    max-height: 80vh;
    .approval-content {
        flex: 3;
@@ -326,9 +328,9 @@
    }
    .approval-flow {
        padding: 40px 20px;
        // width: 405px;
        flex: 2;
        padding: 20px 10px;
        width: 305px;
        // flex: 2;
        background: #ffffff;
        box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
        border-radius: 10px;
@@ -352,7 +354,7 @@
}
.approval-content-card {
    height: calc(100% - 100px) !important;
    height: calc(100% - 10px) !important;
    box-shadow: none !important;
}
@@ -431,7 +433,7 @@
}
.approval-dialog-approve {
    padding: 38px 20px;
    padding: 18px 10px;
    // display: flex;
    align-content: center;
laboratory/vue.config.js
@@ -9,12 +9,12 @@
    devServer: {
        disableHostCheck: true, //禁用主机检查 
        proxy: {
            "/api": { // 设置以什么前缀开头的请求用来代理
                target: "http://221.182.45.100:11221", //要访问的跨域的域名
            "/": { // 设置以什么前缀开头的请求用来代理
                target: "http://221.182.45.100:11222", //要访问的跨域的域名
                secure: false, // 使用的是http协议则设置为false,https协议则设置为true
                changeOrigin: true, //开启代理
                pathRewrite: {
                    "^/api": "/api",
                    "^/": "/",
                },
            },
            "/": { // 设置以什么前缀开头的请求用来代理