From e950c38ba82e5e6bc8b0c50c35e5dbb6a180165a Mon Sep 17 00:00:00 2001
From: 13404089107 <puwei@sinata.cn>
Date: 星期二, 20 五月 2025 16:43:06 +0800
Subject: [PATCH] Merge branch 'main' of http://120.76.84.145:10101/gitblit/r/H5/leshan-laboratory

---
 laboratory/src/views/reportLibrary/processDevelopment/index.vue |  272 ++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 223 insertions(+), 49 deletions(-)

diff --git a/laboratory/src/views/reportLibrary/processDevelopment/index.vue b/laboratory/src/views/reportLibrary/processDevelopment/index.vue
index 013d8ec..bb62859 100644
--- a/laboratory/src/views/reportLibrary/processDevelopment/index.vue
+++ b/laboratory/src/views/reportLibrary/processDevelopment/index.vue
@@ -1,14 +1,27 @@
 <template>
     <div class="list">
-        <TableCustom :queryForm="queryForm" :total="total" @currentChange="handleCurrentChange"
-            @sizeChange="handleSizeChange">
+        <el-card class="header-box" v-if="roleType == 3">
+            <div class="box-title">
+                <img src="@/assets/public/notice.png" class="header-icon"> <span>设立课题规则</span>
+            </div>
+            <div class="header-content">
+                <p>1、根据可研报告、产品构思设计的工艺研究路线,一条工艺路线设立一个课题。如果一个课题中有多个化合物需要开发研究,则每个化合物作为一个分题;分题归集到该课题中,最终形成课题报告。不同课题报告中的分题不能重复使用。
+                </p>
+                <p>2、在可行研究阶段,工艺开发升级,重新规划工艺研究路线,则以新规划的工艺路线方案来设定课题。</p>
+            </div>
+        </el-card>
+        <TableCustom :tableData="tableData" :height="null" :total="total" @handleCurrentChange="handleCurrentChanges"
+            @handleSizeChange="handleSizeChanges">
             <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-input v-model="form.teamName" placeholder="请输入"></el-input>
                     </el-form-item>
                     <el-form-item label="报告名称:">
-                        <el-input v-model="form.name" placeholder="请输入"></el-input>
+                        <el-input v-model="form.reportName" placeholder="请输入"></el-input>
+                    </el-form-item>
+                    <el-form-item label="报告编号:">
+                        <el-input v-model="form.reportCode" placeholder="请输入"></el-input>
                     </el-form-item>
                     <el-form-item label="创建日期:">
                         <el-date-picker v-model="form.date" type="daterange" range-separator="至"
@@ -22,37 +35,57 @@
                         </el-select>
                     </el-form-item>
                     <el-form-item label="" style="margin-left: 63px;">
-                        <el-button type="default">重置</el-button>
+                        <el-button type="default" style="margin-right: 10px;">重置</el-button>
                         <el-button type="primary">查询</el-button>
                     </el-form-item>
                 </el-form>
             </template>
             <template #setting>
-                <div class="table-title">
-                    工艺开发工具
+                <el-button v-if="roleType == 3" @click="handleAddProject" class="el-icon-plus" type="primary">
+                    新增工艺开发工具</el-button>
+                <div class="table-setting">
+                    <div :class="!isDraft ? 'table-title' : 'table-tit'" @click="changeTab('')">
+                        工艺开发工具
+                    </div>
+                    <div v-if="roleType == 3" :class="!isDraft ? 'table-tit' : 'table-title'" @click="changeTab('-1')">
+                        草稿箱
+                    </div>
                 </div>
+
             </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="创建时间" />
-                <el-table-column prop="age" label="状态">
+                <el-table-column prop="teamName" label="所属项目组" />
+                <el-table-column prop="reportCode" label="报告编号" />
+                <el-table-column prop="reportName" label="报告名称" />
+                <el-table-column prop="createBy" label="创建人" />
+                <el-table-column prop="createTime" label="创建时间" />
+                <el-table-column prop="status" label="状态" v-if="!isDraft">
                     <template #default="{ row }">
-                        <el-tag v-if="row.status == 1" type="success">待审核</el-tag>
-                        <el-tag v-else-if="row.status == 0" type="success">已通过</el-tag>
-                        <el-tag v-else type="danger">已驳回</el-tag>
+                        <el-tag v-if="row.status == 1">待审核</el-tag>
+                        <el-tag v-else-if="row.status == 2">待评定</el-tag>
+                        <el-tag v-else-if="row.status == 4" type="danger">已驳回</el-tag>
+                        <el-tag v-else-if="row.status == 3" type="success">已评定</el-tag>
+                        <el-tag v-else-if="row.status == 5" type="info">已撤回</el-tag>
+
                     </template>
                 </el-table-column>
-                <el-table-column prop="age" label="操作">
+                <el-table-column prop="options" label="操作">
                     <template #default="{ row }">
-                        <el-button type="text">审核</el-button>
-                        <el-button type="text">详情</el-button>
+                        <el-button type="text" @click="handleApproval(row)"
+                            v-if="row.status == 1 && [1, 2].includes(roleType)">审核</el-button>
+                        <el-button type="text" @click="handleDetail(row)">详情</el-button>
+                        <el-button type="text" @click="handleDelete(row)"
+                            v-if="[4, 5].includes(row.status) && roleType == 3">删除</el-button>
+                        <el-button type="text" @click="handleEdit(row)"
+                            v-if="[4, 5].includes(row.status) && roleType == 3">编辑</el-button>
+                        <el-button type="text" @click="handleRevoke(row)"
+                            v-if="row.status == 1 && roleType == 3">撤销审批</el-button>
                     </template>
                 </el-table-column>
             </template>
         </TableCustom>
+
+        <Approval :visible="showApproval" @close="showApproval = false" :obj="rowData" @approve="handleApprove" />
         <ShowDelConfirm :show="showDelConfirm" @close="showDelConfirm = false" @confirm="handleDelConfirm" />
         <ShowDelConfirm :title="changeStatusTitle" :tip="changeStatusTip" :show="changeStatus"
             @close="changeStatus = false" @confirm="handleChangeStatusConfirm" />
@@ -60,71 +93,212 @@
 </template>
 
 <script>
+import Approval from './components/approval'
+import { getDataList, audit, revokeAudit, deleteData } from './service'
+
 export default {
     name: 'ProjectList',
+    components: {
+        Approval
+    },
     data() {
         return {
-            form: {
-                name: ''
-            },
             showDelConfirm: false,
             rowId: '',
             changeStatus: false,
+            showApproval: false,
             changeStatusTitle: '',
             changeStatusTip: '',
-            queryForm: {
+            tableData: [],
+            isDraft: false,
+            rowData: {},
+            roleType: '', // 1 超级管理员 2 审批人 3 工艺工程师 4化验师 5实验员
+            form: {
                 pageSize: 10,
-                pageNum: 1
+                pageNum: 1,
+                teamName: '',
+                status: '',
+                startTime: '',
+                reportType: 3,
+                reportName: '',
+                reportCode: '',
+                endTime: '',
+                date: ''
             },
             total: 0
         }
     },
+
+    mounted() {
+        this.roleType = JSON.parse(sessionStorage.getItem('userInfo'))?.roleType
+        console.log('adwqedwqeqwe', this.roleType);
+
+        this.getList()
+    },
+
     methods: {
-        handleAddProject() {
+        handleApproval(row) {
+            this.rowData = row
+            this.showApproval = true
+        },
+        handleDetail(row) {
+            row.isDetail = true
+            this.rowData = row
+            this.showApproval = true
+        },
+        handleEdit(row) {
             this.$router.push({
-                path: '/projectList/addProject'
+                path: '/reportLibrary/edit',
+                query: {
+                    id: row.id
+                }
             })
         },
-        handleDel(row) {
+        handleAddProject() {
+            this.$router.push('/reportLibrary/add')
+        },
+        changeTab(status) {
+            if (status == -1) {
+                this.isDraft = true
+                this.form.pageNum = 1
+            } else {
+                this.form.pageNum = 1
+                this.isDraft = false
+                this.form.status = status
+            }
+            this.getList()
+        },
+        handleDelete(row) {
             this.rowId = row.id
             this.showDelConfirm = true
         },
-        handleDelConfirm() {
-            this.showDelConfirm = false
-            this.msgsuccess('删除成功')
-            this.rowId = ''
-            this.getList()
-        },
-        handleChangeStatus(row, status) {
+        handleRevoke(row) {
             this.rowId = row.id
-            this.changeStatusTitle = status == 1 ? '确认要封存这个项目组吗?' : '确认要解封该项目组吗?'
-            this.changeStatusTip = status == 1 ? '封存后项目组内人员看不到数据,审批人仍然可见数据。' : '解封后项目组内人员数据恢复。'
+            this.changeStatusTitle = '确认要撤销审批吗?'
+            this.changeStatusTip = '撤销审批后,可研报告将被撤销。'
             this.changeStatus = true
         },
+        handleDelConfirm() {
+            deleteData({ id: this.rowId }).then(res => {
+                this.showDelConfirm = false
+                this.$message.success('删除成功')
+                this.rowId = ''
+                this.getList()
+            })
+        },
         handleChangeStatusConfirm() {
-            this.changeStatus = false
-            this.msgsuccess('操作成功')
-            this.rowId = ''
-            this.changeStatusTitle = ''
-            this.changeStatusTip = ''
+            revokeAudit({ id: this.rowId }).then(res => {
+                this.changeStatus = false
+                this.$message.success('操作成功')
+                this.rowId = ''
+                this.changeStatusTitle = ''
+                this.changeStatusTip = ''
+                this.getList()
+            })
+        },
+        handleCurrentChanges(page) {
+            this.form.pageNum = page
             this.getList()
         },
-        handleCurrentChange(page) {
-            this.queryForm.pageNum = page
-            this.getList()
-        },
-        handleSizeChange(size) {
-            this.queryForm.pageSize = size
+        handleSizeChanges(size) {
+            this.form.pageSize = size
             this.getList()
         },
         getList() {
+            let data = {}
+            if (this.isDraft) {
+                data = {
+                    ...this.form,
+                    status: -1
+                }
+            } else {
+                data = this.form
+            }
+            getDataList(data).then(res => {
+                if (res.code === 200) {
+                    this.tableData = res.data.records || []
+                    this.total = res.data.total || 0
+                }
+            })
+        },
+        handleApprove(data) {
+            let params = {
+                id: data.id,
+                auditStatus: data.statuss,
+                auditRemark: data.remark
+            }
 
+            audit({ ...params }).then(res => {
+                if (res.code === 200) {
+                    this.$message.success('审核成功')
+                    this.showApproval = false
+                    this.getList()
+                }
+            })
         }
     }
 }
 </script>
 
 <style scoped lang="less">
+.el-icon-plus {
+    margin-bottom: 20px;
+}
+
+.header-content {
+    font-family: PingFangSC, PingFang SC;
+    font-weight: 400;
+    font-size: 14px;
+    color: rgba(0, 0, 0, 0.88);
+    margin-left: 30px;
+}
+
+.box-title {
+    font-family: SourceHanSansCN, SourceHanSansCN;
+    font-weight: bold;
+    font-size: 18px;
+    color: #222222;
+    line-height: 27px;
+    display: flex;
+    align-items: center;
+}
+
+.header-icon {
+    width: 20px;
+    height: 20px;
+    margin-right: 10px;
+
+}
+
+.header-box {
+    border-radius: 16px;
+    margin-bottom: 30px;
+}
+
+.table-setting {
+    display: flex;
+    gap: 14px;
+}
+
+.table-tit {
+    background: #FAFAFC;
+    border-radius: 8px 8px 0px 0px;
+    border: 1px solid #DCDFE6;
+    width: 166px;
+    height: 50px;
+    background: #FFFFFF;
+    border-radius: 8px 8px 0px 0px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    // margin-bottom: 21px;
+    font-family: SourceHanSansCN, SourceHanSansCN;
+    font-weight: bold;
+    font-size: 18px;
+    color: #606266;
+    line-height: 27px;
+}
+
 .list {
     height: 100%;
 }
@@ -138,7 +312,7 @@
     display: flex;
     align-items: center;
     justify-content: center;
-    margin-bottom: 21px;
+    // margin-bottom: 21px;
     font-family: SourceHanSansCN, SourceHanSansCN;
     font-weight: bold;
     font-size: 18px;

--
Gitblit v1.7.1