hejianhao
2025-04-03 4a8e6048ba529a84f11ba74e4f90558bcd7b1075
Merge branch 'main' of http://120.76.84.145:10101/gitblit/r/H5/leshan-laboratory
1个文件已删除
7个文件已修改
2个文件已添加
976 ■■■■■ 已修改文件
src/components/RichEditor/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Table/index.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/TableSlot/index.vue 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/approvalProcess/index.vue 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataManagement/confirmation-sheet/components/add.vue 370 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataManagement/confirmation-sheet/components/experimental-scheduling.vue 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dataManagement/confirmation-sheet/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/reportLibrary/feasibilityStudy/components/approval/index.vue 426 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/reportLibrary/feasibilityStudy/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/RichEditor/index.vue
File was deleted
src/components/Table/index.vue
@@ -16,6 +16,7 @@
</template>
<script>
import Vue from 'vue';
export default {
    props: {
        tableData: {
@@ -34,12 +35,11 @@
                    pageNum: 1
                }
            }
        }
    },
    computed: {
        height() {
            return this.$baseTableHeight()
        },
        height: {
            type: Number,
            default: () => Vue.prototype.$baseTableHeight()
        }
    },
    methods: {
        handleCurrentChange(page) {
src/components/TableSlot/index.vue
@@ -12,7 +12,7 @@
                </div>
            </template>
            <template v-if="$slots.table">
                <Table :data="tableData" :total="total" :queryForm="queryForm" @currentChange="handleCurrentChange"
                <Table :data="tableData" :total="total" :height="height" :queryForm="queryForm" @currentChange="handleCurrentChange"
                    @sizeChange="handleSizeChange">
                    <slot name="table"></slot>
                </Table>
@@ -23,11 +23,16 @@
<script>
import Table from '../Table/index.vue'
import Vue from 'vue'
export default {
    components: {
        Table,
    },
    props: {
        height: {
            type: Number,
            default: () => Vue.prototype.$baseTableHeight()
        },
        tableData: {
            type: Array,
            default: () => []
src/components/approvalProcess/index.vue
@@ -1,13 +1,19 @@
<template>
  <div class="approval-process">
    <el-timeline>
      <el-timeline-item
        v-for="(activity, index) in processData"
        :key="index"
        :type="activity.type"
        :timestamp="activity.time"
      >
        {{ activity.content }}
      <el-timeline-item v-for="(activity, index) in processData" :key="index" :type="activity.type"
        :timestamp="activity.time">
        <div class="approval-process-item" :class="activity.type == 'primary' ? '' : 'approval-process-item1'">
          <div class="approval-process-item-name">
            提交人:李雷雷
          </div>
          <div class="approval-process-item-time">
            提交时间:2020-12-01 12:30
          </div>
        </div>
      </el-timeline-item>
    </el-timeline>
  </div>
@@ -71,4 +77,58 @@
  height: 100%;
  overflow-y: auto;
}
</style>
.approval-process-item {
  padding: 12px 17px 20px 12px;
  border-radius: 10px;
  background: rgba(236, 252, 254, 1);
}
.approval-process-item1 {
  padding: 12px 17px 20px 12px;
  border-radius: 10px;
  background: rgba(241, 243, 245, 1);
}
.approval-process-item-name {
  font-family: PingFangSC, PingFang SC;
  font-weight: 500;
  font-size: 16px;
  color: #333333;
  line-height: 22px;
}
.approval-process-item-time {
  margin-top: 10px;
  font-family: PingFangSC, PingFang SC;
  font-weight: 400;
  font-size: 14px;
  color: #999999;
  line-height: 20px;
}
::v-deep .el-timeline {
  padding: unset;
  .el-timeline-item__node {
    width: 20px !important;
    height: 20px !important;
    background: #FFFFFF;
    box-shadow: 0px 2px 6px 0px rgba(4, 156, 154, 0.36) !important;
    border: 4px solid rgba(144, 147, 153, 0.40) !important;
    left: -10px;
    top: -8px;
  }
  .el-timeline-item__node--primary {
    width: 20px !important;
    height: 20px !important;
    background: #FFFFFF;
    box-shadow: 0px 2px 6px 0px rgba(4, 156, 154, 0.36) !important;
    border: 4px solid rgba(10, 203, 202, 1) !important;
    left: -10px !important;
    top: -8px !important;
    // border-image: linear-gradient(180deg, rgba(10, 203, 202, 1), rgba(4, 156, 154, 1)) 4 4 !important;
  }
}
</style>
src/router/index.js
@@ -164,6 +164,14 @@
                },
                component: () => import("../views/dataManagement/confirmation-sheet"),
            },
            {
                path: "confirmation-sheet/add",
                name: "AddConfirmationSheet",
                meta: {
                    title: "检验方法确认单",
                },
                component: () => import("../views/dataManagement/confirmation-sheet/components/add.vue"),
            },
        ],
    },
    {
src/views/dataManagement/confirmation-sheet/components/add.vue
New file
@@ -0,0 +1,370 @@
<template>
  <Card>
    <div class="header-title-left">
      <img src="@/assets/public/headercard.png" />
      <div>所属实验调度</div>
      <el-button @click="showScheduling = true" class="el-icon-plus" type="primary">
        选择实验调度</el-button>
    </div>
    <Table :tableData="tableData" :total="total" :height="null">
      <template>
        <el-table-column prop="planCode" label="所属项目课题方案"></el-table-column>
        <el-table-column prop="planName" label="实验编号"></el-table-column>
        <el-table-column prop="planName" label="实验名称"></el-table-column>
        <el-table-column prop="stage" label="    通知时间"></el-table-column>
        <el-table-column prop="stage" label="    实验开始时间"></el-table-column>
        <el-table-column prop="stage" label="    实验结束时间"></el-table-column>
        <el-table-column prop="stage" label="    参加人员"></el-table-column>
        <el-table-column prop="creator" label="状态"></el-table-column>
      </template>
    </Table>
    <div class="header-title-left" style="margin-top: 60px;">
      <img src="@/assets/public/headercard.png" />
      <div>检测明细</div>
      <el-button @click="handleAddPlan" type="primary" class="el-icon-plus">
        新增检测项</el-button>
      <span>【注意:这里有多少个检测项 系统就会自动创建对应数量的《检测项的检验方法及数据记录》】</span>
    </div>
    <Table :tableData="tableData" :total="total" :height="null">
      <template>
        <el-table-column prop="planCode" label="序号"></el-table-column>
        <el-table-column prop="planName" label="检测项名称"></el-table-column>
        <el-table-column prop="planName" label="检测项编号"></el-table-column>
        <el-table-column prop="stage" label="    定性/定量"></el-table-column>
        <el-table-column prop="stage" label="    检测方法编号"></el-table-column>
        <el-table-column prop="stage" label="    检测方法"></el-table-column>
        <el-table-column prop="stage" label="    收样要求"></el-table-column>
        <el-table-column prop="creator" label="操作"></el-table-column>
      </template>
    </Table>
    <div class="btn_box flex">
      <el-button @click="$router.go(-1)">返回</el-button>
      <el-button type="primary" @click="onSubmit">保存</el-button>
    </div>
    <experimentalScheduling :show="showScheduling"/>
  </Card>
</template>
<script>
import experimentalScheduling from './experimental-scheduling.vue';
export default {
  name: 'AddConfirmationSheet',
  components: {
    experimentalScheduling
  },
  props: {},
  data() {
    return {
      showScheduling: false,
      tableData: [],
      total: 0,
      form: {
        roleName: "",
        remark: "",
      },
      rules: {
        roleName: [
          { required: true, message: "请输入角色名称", trigger: "blur" },
        ],
      },
      menu: [],
    };
  },
  computed: {
    height() {
      return this.$baseTableHeight()
    },
  },
  watch: {},
  created() {
    roleInfoFromUserId({ userId: 1 }).then(res => {
      if (this.$route.query.roleId) {
        getRoleInfo({ roleId: this.$route.query.roleId }).then(resp => {
          this.menu = this.setSelectedIds(res.data.data, resp.data.data.menus || []);
          this.form = {
            roleName: resp.data.data.roleName,
            remark: resp.data.data.remark,
            roleId: resp.data.data.roleId
          }
        })
      } else {
        this.menu = res.data.data
      }
    })
  },
  mounted() { },
  methods: {
    setSelectedIds(arr, selectKeyList) {
      function traverse(item) {
        item.selected = selectKeyList.includes(item.menuId);
        if (item.children && item.children.length > 0) {
          item.children.forEach(traverse);
        }
      }
      arr.forEach(traverse);
      return arr;
    },
    onSubmit() {
      this.$refs['form'].validate((valid) => {
        if (valid) {
          if (this.getSelectedIds(this.menu).length == 0) {
            this.msgwarning('请勾选操作权限')
            return
          }
          let obj = {
            ...this.form,
            menuIds: this.getSelectedIds(this.menu)
          }
          if (this.$route.query && this.$route.query.roleId) {
            obj.roleId = this.$route.query.roleId
            edit(obj).then(() => {
              this.msgsuccess('保存成功')
              this.$router.go(-1)
            })
          } else {
            add(obj).then(() => {
              this.msgsuccess('保存成功')
              this.form = {
                roleName: "",
                remark: "",
              }
              this.menu = []
              this.$router.go(-1)
            })
          }
        }
      })
    },
    getSelectedIds(arr) {
      let result = [];
      function traverse(item) {
        if (item.selected) {
          result.push(item.menuId);
        }
        if (item.children && item.children.length > 0) {
          for (let children of item.children) {
            traverse(children);
          }
        }
      }
      for (let item of arr) {
        traverse(item);
      }
      return result;
    },
    setCheckStatus1(id, status) { //点击第1级
      if (!status) {
        this.menu = this.menu.map(item => {
          if (item.menuId == id) {
            item.selected = status
            if (item.children.length > 0) {
              item.children = item.children.map(item1 => {
                item1.selected = status
                if (item1.children.length > 0) {
                  item1.children = item1.children.map(item2 => {
                    item2.selected = status
                    return { ...item2 }
                  })
                }
                return { ...item1 }
              })
            }
          }
          return { ...item }
        })
      } else {
        this.menu = this.menu.map(item => {
          if (item.menuId == id) {
            item.selected = true
          }
          return { ...item }
        })
      }
    },
    setCheckStatus2(id, status, aId) { //点击第2级
      this.menu = this.menu.map(item => {
        if (item.menuId == aId) {
          item.selected = true
          if (item.children.length > 0) {
            item.children = item.children.map(item1 => {
              if (item1.menuId == id) {
                item1.selected = status
              }
              return { ...item1 }
            })
          }
        }
        return { ...item }
      })
    },
    setCheckStatus3(id, status, bId, aId) {//点击第3级
      this.menu = this.menu.map(item => {
        if (item.menuId == aId) {
          item.selected = true
          if (item.children.length > 0) {
            item.children = item.children.map(item1 => {
              if (item1.menuId == bId) {
                item1.selected = true
                if (item1.children.length > 0) {
                  item1.children = item1.children.map(item2 => {
                    if (item2.menuId == id) {
                      item2.selected = status
                    }
                    return { ...item2 }
                  })
                }
              }
              return { ...item1 }
            })
          }
        }
        return { ...item }
      })
    }
  },
};
</script>
<style lang="less" scoped>
.title_box {
  display: flex;
  align-items: center;
  margin-bottom: 20px;
  font-weight: bold;
  div:first-child {
    width: 4px;
    height: 16px;
    background: #598DEC;
    margin-right: 8px;
  }
}
.no-data {
  height: 100%;
  background-color: #fff;
  border-radius: 0 0 6px 6px;
  border-left: 1px solid #e8e8e8;
  border-right: 1px solid #e8e8e8;
  border-bottom: 1px solid #e8e8e8;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #909399;
  font-size: 14px;
}
.btn_box {
  margin-top: 40px;
  text-align: center;
  button {
    width: 220px;
  }
}
.el-checkbox {
  display: flex;
  align-items: center;
}
.row,
.header {
  display: flex;
  align-items: center;
  border: 1px solid #e8e8e8;
  .w20 {
    width: 15%;
    padding: 8px 20px;
  }
  .sconed {
    flex: 1;
    .subpage {
      .title {
        border: 1px solid #e8e8e8;
        border-top: none;
        border-bottom: none;
      }
      .two {
        display: flex;
        align-items: center;
        border: 1px solid #e8e8e8;
        border-top: none;
        border-right: none;
        .left {
          width: 200px;
          padding: 13px 20px;
          border-right: 1px solid #e8e8e8;
        }
        .right {
          display: flex;
          flex: 1;
          div {
            padding: 13px 0 13px 20px;
          }
        }
      }
      .two:last-child {
        border-bottom: none;
      }
      .btns {
        display: flex;
        align-items: center;
        padding: 0 20px;
      }
    }
  }
}
.header {
  border-radius: 16px 16px 0 0;
  background-color: #FAFAFA;
  color: #909399;
  .subpage {
    display: flex;
  }
  .title {
    width: 200px;
    padding: 8px 20px;
  }
}
.header-title-left {
  display: flex;
  align-items: center;
  gap: 13px;
  margin-bottom: 20px;
  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';
  }
  span {
    color: rgb(254, 115, 115);
    font-size: 15px;
  }
}
</style>
src/views/dataManagement/confirmation-sheet/components/experimental-scheduling.vue
New file
@@ -0,0 +1,72 @@
<template>
    <div>
        <el-dialog title="选择项目组" :visible.sync="show" width="80%">
            <TableCustom :queryForm="form" :tableData="tableData" :total="total" :height="null">
                <template #search>
                    <el-form :model="form" label-width="140px" inline>
                        <el-form-item label="所属项目课题方案:">
                            <el-input v-model="form.planName" placeholder="请输入"></el-input>
                        </el-form-item>
                        <el-form-item label="实验编号:">
                            <el-input v-model="form.planCode" placeholder="请输入"></el-input>
                        </el-form-item>
                        <el-form-item label="实验名称:">
                            <el-input v-model="form.creator" placeholder="请输入"></el-input>
                        </el-form-item>
                        <el-form-item label="通知时间:">
                            <el-date-picker v-model="form.createTime" type="daterange" range-separator="至"
                                start-placeholder="开始日期" end-placeholder="结束日期"
                                value-format="yyyy-MM-dd"></el-date-picker>
                        </el-form-item>
                        <el-form-item label="状态:">
                            <el-select v-model="form.status" placeholder="请选择">
                                <el-option label="待确认" value="待确认"></el-option>
                                <el-option label="已确认" value="已确认"></el-option>
                            </el-select>
                        </el-form-item>
                        <el-form-item label="">
                            <el-button type="default" @click="resetForm">重置</el-button>
                            <el-button type="primary" @click="handleSearch">查询</el-button>
                        </el-form-item>
                    </el-form>
                </template>
                <template #table>
                    <el-table-column prop="planCode" label="所属项目课题方案"></el-table-column>
                    <el-table-column prop="planName" label="实验编号"></el-table-column>
                    <el-table-column prop="planName" label="实验名称"></el-table-column>
                    <el-table-column prop="stage" label="提交时间"></el-table-column>
                    <el-table-column prop="creator" label="状态"></el-table-column>
                    <el-table-column label="操作" width="150">
                        <!-- 撤销、详情、编辑、删除 -->
                        <template slot-scope="scope">
                            <el-button type="text" @click="handleDetail(scope.row)">撤销</el-button>
                            <el-button type="text" @click="handleDetail(scope.row)">详情</el-button>
                            <el-button type="text" @click="handleDetail(scope.row)">编辑</el-button>
                            <el-button type="text" @click="handleDetail(scope.row)">删除</el-button>
                        </template>
                    </el-table-column>
                </template>
            </TableCustom>
            <span slot="footer" class="dialog-footer">
                <el-button @click="show = false">取 消</el-button>
                <el-button type="primary" @click="show = false">确 定</el-button>
            </span>
        </el-dialog>
    </div>
</template>
<script>
export default {
    props: ['show'],
    data() {
        return {
            form: {},
            tableData: [],
            totol: 0
        }
    }
}
</script>
<style></style>
src/views/dataManagement/confirmation-sheet/index.vue
@@ -116,7 +116,7 @@
        },
        handleAddPlan() {
            this.$router.push({
                path: "/dataManagement/addPlan",
                path: "/dataManagement/confirmation-sheet/add",
            });
        },
        handleApprove(row) {
src/views/reportLibrary/feasibilityStudy/components/approval/index.vue
@@ -1,110 +1,392 @@
<template>
    <div>
        <el-dialog top="40vh" :visible.sync="show" :show-close="false" :append-to-body="true"
            :close-on-click-modal="false" width="60%">
            <div class="top-con a-center" slot="title">
                审批验证与发布报告
            </div>
            <div class="content">
                <div class="left">
                    <div class="label-tit">  </div>
    <el-dialog :title="dialogTitle"  :visible.sync="visible" width="80%" po :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 :queryForm="queryForm" :total="0" @currentChange="handleCurrentChange"
                            @sizeChange="handleSizeChange">
                            <template>
                                <el-table-column prop="name" label="项目组名称" />
                                <el-table-column prop="age" label="项目负责人" />
                                <el-table-column prop="age" label="项目组成员" />
                                <el-table-column prop="age" label="创建时间" />
                            </template>
                        </Table>
                    <el-form ref="form" :model="form" label-width="100px"></el-form>
                    <el-form-item label="报告编号" prop="name">
                        <el-input v-model="form.name" placeholder="请输入报告编号" />
                    </el-form-item>
                    <el-form-item label="报告名称" prop="name">
                        <el-input v-model="form.name" placeholder="请输入报告名称" />
                    </el-form-item>
                    <el-form-item label="报告状态" prop="name">
                        <el-select v-model="form.name" placeholder="请选择报告状态">
                            <el-option label="全部" value="1" />
                            <el-option label="待审核" value="2" />
                            <el-option label="已通过" value="3" />
                            <el-option label="已驳回" value="4" />
                        </el-select>
                    </el-form-item>
                </div>
                <div class="right"></div>
                        <el-form ref="form" :model="form" :rules="rules" inline label-position="top"
                            style="margin-top: 38px">
                            <div class="header-title" style="width: 100%;">
                                <div class="header-title-left">
                                    <img src="@/assets/public/headercard.png" />
                                    <div>报告编号</div>
                                </div>
                            </div>
                            <form-item prop="name" style="margin-top: 38px">
                                <el-input v-model="form.name" style="width: 100%;" placeholder="请输入报告编号" />
                            </form-item>
                            <div class="header-title" style="width: 100%;">
                                <div class="header-title-left">
                                    <img src="@/assets/public/headercard.png" />
                                    <div>报告名称</div>
                                </div>
                            </div>
                            <form-item prop="name" style="margin-top: 38px">
                                <el-input v-model="form.name" style="width: 100%;" placeholder="请输入报告编号" />
                            </form-item>
                            <div class="header-title" style="width: 100%;">
                                <div class="header-title-left">
                                    <img src="@/assets/public/headercard.png" />
                                    <div>报告正文</div>
                                </div>
                            </div>
                            <form-item prop="name" style="margin-top: 38px">
                                <ai-editor v-model="form.name" style="width: 100%;" placeholder="请输入报告编号" />
                            </form-item>
                        </el-form>
                    </template>
                    <!-- <SelectMember ref="selectMember" /> -->
                </Card>
            </div>
            <span slot="footer" class="dialog-footer">
                <el-button @click="$emit('close')">取消</el-button>
                <el-button type="primary" @click="$emit('confirm')">确定</el-button>
            </span>
        </el-dialog>
    </div>
            <!-- 右侧审批流程 -->
            <div class="approval-flow">
                <div class="flow-content">
                    <approval-process :status="form.status" :submit-time="form.createTime" :approver="form.approver"
                        :approve-time="form.approveTime" />
                </div>
            </div>
        </div>
        <div class="approval-dialog-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>
</template>
<script>
import ApprovalProcess from '@/components/approvalProcess'
import AiEditor from '@/components/AiEditor'
export default {
    components: {},
    name: "ApprovalDialog",
    components: {
        ApprovalProcess,
        AiEditor
    },
    props: {
        show: {
        visible: {
            type: Boolean,
            default: false,
        },
        title: {
        type: {
            type: String,
            default: '确认要删除这条信息吗?',
            default: "approve", // approve-审批,view-查看
        },
        data: {
            type: Object,
            default: () => ({}),
        },
    },
    data() {
        return {};
        return {
            form: {
                planName: "",
                planCode: "",
                stage: "",
                creator: "",
                createTime: "",
                approvalComment: "",
                status: "pending",
                approver: "",
                approveTime: ""
            },
            radio1: 1,
            rules: {},
            status: "1",
            remark: "",
        };
    },
    computed: {},
    watch: {},
    created() { },
    mounted() { },
    methods: {},
    computed: {
        dialogTitle() {
            return this.type === "approve" ? "审批" : "审批详情";
        },
    },
    watch: {
        data: {
            handler(val) {
                if (val) {
                    this.form = { ...val };
                }
            },
            immediate: true,
        },
    },
    methods: {
        handleClose() {
            this.$emit("update:visible", false);
            this.form.approvalComment = "";
        },
        handleApprove() {
            if (!this.form.approvalComment) {
                this.$message.warning("请输入审批意见");
                return;
            }
            this.$emit("approve", {
                ...this.form,
                status: "approved",
            });
        },
        handleReject() {
            if (!this.form.approvalComment) {
                this.$message.warning("请输入审批意见");
                return;
            }
            this.$emit("reject", {
                ...this.form,
                status: "rejected",
            });
        },
    },
};
</script>
<style scoped lang="less">
.left {
::v-deep .el-dialog__header {
    border-bottom: 1px solid #e4e7ed;
}
.approval-dialog {
    display: flex;
}
    height: 40vh;
::v-deep .el-dialog {
    border-radius: 12px;
    .el-dialog__header {
        padding-top: 28px;
        padding-right: 27px;
        padding-left: 34px;
        padding-bottom: 11px;
    .approval-content {
        flex: 3;
        margin-right: 20px;
        background: #ffffff;
        box-shadow: 0px 4px 12px 4px rgba(0, 0, 0, 0.08);
        border-radius: 10px;
    }
    .el-dialog__body {
        padding: unset;
        padding-left: 73px;
        padding-right: 20px;
    }
    .approval-flow {
        padding: 40px 20px;
        // width: 405px;
        flex: 2;
        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;
        }
    .el-dialog__footer {
        padding-top: 18px;
        padding-right: 27px;
        padding-bottom: 29px;
        .flow-content {
            height: calc(100% - 40px);
            overflow-y: auto;
            .el-form--inline .el-form-item {
                margin-right: 83px;
            }
        }
    }
}
.bgcolor1 {
    background: rgba(22, 119, 255, 1);
.approval-content-card {
    height: calc(100% - 100px) !important;
    box-shadow: none !important;
}
.top-con {
    display: flex;
    justify-content: space-between;
.header-title {
    // display: flex;
    align-items: center;
    flex-wrap: wrap;
    margin-bottom: 20px;
    gap: 13px;
    .title {
        font-family: PingFangSC, PingFang SC;
        font-weight: 600;
        font-size: 16px;
        color: rgba(0, 0, 0, 1);
        margin-bottom: 13px;
    .header-title-left {
        display: flex;
        align-items: center;
        gap: 13px;
        margin-top: 38px;
        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";
        }
    }
    .header-title-left :first-child {
        margin-top: 0;
    }
}
.header-title:first-child {
    .header-title-left {
        margin-top: 0;
    }
}
.item-title {
    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;
        &:before {
            content: "*";
            color: #f56c6c;
            margin-right: 4px;
        }
    }
}
.approval-dialog-approve {
    padding: 38px 20px;
    // display: flex;
    align-content: center;
    .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
        }
        .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;
        }
    }
    .remark-title {
        color: #222222;
        font-family: "SourceHanSansCN-Medium";
        line-height: 14px;
        margin-bottom: 16px;
    }
}
.dialog-footer {
    align-items: center;
    display: flex;
    justify-content: center;
    button {
        width: 150px;
    }
}
</style>
src/views/reportLibrary/feasibilityStudy/index.vue
@@ -3,7 +3,7 @@
        <TableCustom :queryForm="queryForm" :total="total" @currentChange="handleCurrentChange"
            @sizeChange="handleSizeChange">
            <template #search>
                <el-form :model="form" :label-width="auto" inline>
                <el-form :model="form" label-width="auto" inline>
                    <el-form-item label="所属项目组:">
                        <el-input v-model="form.name" placeholder="请输入"></el-input>
                    </el-form-item>
@@ -54,7 +54,7 @@
            </template>
        </TableCustom>
        <Approval :show="showApproval" @close="showApproval = false" />
        <Approval :visible="showApproval" @close="showApproval = false" />
        <ShowDelConfirm :show="showDelConfirm" @close="showDelConfirm = false" @confirm="handleDelConfirm" />