pyt
2025-04-03 ef9bc0be98e3605d996bf03759ecb358be868e24
Merge branch 'main' of http://120.76.84.145:10101/gitblit/r/H5/leshan-laboratory
1个文件已删除
9个文件已修改
2个文件已添加
641 ■■■■ 已修改文件
public/logo.jpg 补丁 | 查看 | 原始文档 | blame | 历史
src/App.vue 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/Card/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/RichEditor/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/TableSlot/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/approvalProcess/index.vue 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/deliveryAssessment/projectTeamIntegral/index.vue 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/projectList/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/reportLibrary/feasibilityStudy/components/approval/index.vue 426 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/reportLibrary/feasibilityStudy/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/role/detail.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/logo.jpg
src/App.vue
@@ -79,18 +79,21 @@
  background: #E6FFFF !important;
}
.card {
  .el-form-item__label {
    color: #222222;
    font-family: 'SourceHanSansCN-Medium';
    line-height: 14px;
  }
.card-custom {
  .el-form {
  .el-input__inner {
    width: 290px;
    padding: 0 12px;
    border-radius: 6px;
    border: 1px solid rgba(0, 0, 0, 0.15);
    .el-form-item__label {
      color: #222222;
      font-family: 'SourceHanSansCN-Medium';
      line-height: 14px;
    }
    .el-input__inner {
      width: 290px;
      padding: 0 12px;
      border-radius: 6px;
      border: 1px solid rgba(0, 0, 0, 0.15);
    }
  }
}
src/components/Card/index.vue
@@ -1,5 +1,5 @@
<template>
    <div class="card">
    <div class="card-custom">
        <slot></slot>
    </div>
</template>
@@ -11,7 +11,7 @@
</script>
<style lang="less" scoped>
.card {
.card-custom {
    height: calc(100% - 110px);
    overflow-y: auto;
    padding: 30px 30px 59px 30px;
src/components/RichEditor/index.vue
File was deleted
src/components/TableSlot/index.vue
@@ -1,6 +1,6 @@
<template>
    <div class="table-slot">
        <template v-if="$slots.setting">
        <template v-if="$slots.search">
            <div class="search">
                <slot name="search"></slot>
            </div>
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
@@ -222,6 +222,22 @@
                component: () => import("../views/reportLibrary/projectProposalLibrary/index.vue"),
            },
        ],
    },
    {
        path: "/deliveryAssessment",
        component: Layouts,
        meta: {
            title: "工作交付评定",
        },
        children: [
            {
                path: "projectTeamIntegral",
                meta: {
                    title: "项目组总积分",
                },
                component: () => import("../views/deliveryAssessment/projectTeamIntegral"),
            },
        ]
    }
];
src/views/deliveryAssessment/projectTeamIntegral/index.vue
New file
@@ -0,0 +1,83 @@
<template>
    <div class="list">
        <TableCustom :queryForm="queryForm" :tableData="tableData" :total="total" @currentChange="handleCurrentChange"
            @sizeChange="handleSizeChange">
            <template #search>
                <el-form :model="form" label-width="140px" inline>
                    <el-form-item label="项目组名称:">
                        <el-input v-model="form.name" placeholder="请输入"></el-input>
                    </el-form-item>
                    <el-form-item label="创建日期:">
                    </el-form-item>
                    <el-form-item label="状态:">
                        <el-select placeholder="请选择"></el-select>
                    </el-form-item>
                    <el-form-item style="margin-left: 63px;">
                        <el-button>重置</el-button>
                        <el-button type="primary">查询</el-button>
                    </el-form-item>
                </el-form>
            </template>
            <template #table>
                <el-table-column prop="name" label="项目组名称" />
                <el-table-column prop="age" label="项目负责人" />
                <el-table-column prop="age" label="项目组成员" />
                <el-table-column prop="age" label="项目创建时间" />
                <el-table-column prop="age" label="状态">
                    <template #default="{ row }">
                        <el-tag v-if="row.status == 1" type="success">正常运作</el-tag>
                        <el-tag v-else type="danger">已封存</el-tag>
                    </template>
                </el-table-column>
                <el-table-column prop="age" label="操作">
                    <template #default="{ row }">
                        <el-button @click="goDetail" type="text">详情</el-button>
                    </template>
                </el-table-column>
            </template>
        </TableCustom>
    </div>
</template>
<script>
export default {
    name: 'ProjectTeamIntegral',
    data() {
        return {
            form: {
            },
            tableData: [],
            queryForm: {
                pageSize: 10,
                pageNum: 1
            },
            total: 0
        }
    },
    methods: {
        goDetail() {
            this.$router.push({
                path: '/projectList/addProject'
            })
        },
        handleCurrentChange(page) {
            this.queryForm.pageNum = page
            this.getList()
        },
        handleSizeChange(size) {
            this.queryForm.pageSize = size
            this.getList()
        },
        getList() {
        }
    }
}
</script>
<style scoped lang="less">
.list {
    height: 100%;
}
</style>
src/views/projectList/index.vue
@@ -10,7 +10,7 @@
                    <el-form-item label="项目负责人:">
                        <el-input v-model="form.name" placeholder="请输入"></el-input>
                    </el-form-item>
                    <el-form-item label="通创建日期:">
                    <el-form-item label="创建日期:">
                        <el-input v-model="form.name"></el-input>
                    </el-form-item>
                    <el-form-item style="margin-left: 63px;">
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" />
src/views/system/role/detail.vue
@@ -145,7 +145,7 @@
      deptList: [],//部门列表
      status: '',//状态
      pagination: {
        total: 0,//总条数
        total: 10,//总条数
        pageNum: 1,//当前页
        pageSize: 10,//每页条数
      },