From 993e5fd593398926af72af660cb5ed6aba8e4e2b Mon Sep 17 00:00:00 2001
From: 13404089107 <puwei@sinata.cn>
Date: 星期二, 20 五月 2025 16:43:04 +0800
Subject: [PATCH] 对接接口

---
 laboratory/src/views/dataManagement/confirmation-sheet/index.vue |  203 ++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 147 insertions(+), 56 deletions(-)

diff --git a/laboratory/src/views/dataManagement/confirmation-sheet/index.vue b/laboratory/src/views/dataManagement/confirmation-sheet/index.vue
index 4f9ef86..bba2b66 100644
--- a/laboratory/src/views/dataManagement/confirmation-sheet/index.vue
+++ b/laboratory/src/views/dataManagement/confirmation-sheet/index.vue
@@ -1,6 +1,7 @@
 <template>
     <div class="list">
-        <TableCustom :queryForm="form" :tableData="tableData" :total="total">
+        <TableCustom :queryForm="form" :height="null" :tableData="tableData" :total="total"
+            @handleCurrentChange="handleCurrentChange" @handleSizeChange="handleSizeChange">
             <template #search>
                 <el-form :model="form" label-width="140px" inline>
                     <el-form-item label="所属项目课题方案:">
@@ -14,11 +15,10 @@
                     </el-form-item>
                     <el-form-item label="通知时间:">
                         <el-date-picker v-model="dateRange" type="daterange" range-separator="至"
-                            start-placeholder="开始日期" end-placeholder="结束日期" 
-                            value-format="yyyy-MM-dd"
+                            start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd"
                             @change="handleDateChange"></el-date-picker>
                     </el-form-item>
-                    <el-form-item label="状态:" v-if="!isDrafts">
+                    <el-form-item label="状态:">
                         <el-select v-model="form.auditStatus" placeholder="请选择">
                             <el-option label="待确认" :value="1"></el-option>
                             <el-option label="已通过" :value="2"></el-option>
@@ -36,48 +36,86 @@
             <template #setting>
                 <div class="tableTitle">
                     <div class="flex a-center" style="gap: 16px;">
-                        <div class="title pointer" :class="{ active: !isDrafts }" @click="switchToDrafts(false)">检验方法确认单列表</div>
-                        <div class="drafts pointer" :class="{ active: isDrafts }" @click="switchToDrafts(true)">草稿箱</div>
+                        <div class="title pointer" :class="{ active: !isDrafts }" @click="switchToDrafts(false)">
+                            检验方法确认单列表</div>
+                        <div class="drafts pointer" :class="{ active: isDrafts }" @click="switchToDrafts(true)">草稿箱
+                        </div>
                     </div>
                     <el-button @click="handleAddPlan" class="el-icon-plus" type="primary">
                         新增检测方法确认单</el-button>
                 </div>
             </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">
+                <el-table-column prop="projectName" label="所属项目课题方案"></el-table-column>
+                <el-table-column prop="experimentCode" label="实验编号"></el-table-column>
+                <el-table-column prop="experimentName" label="实验名称"></el-table-column>
+                <el-table-column prop="createTime" label="提交时间"></el-table-column>
+                <el-table-column prop="createBy" label="提交人"></el-table-column>
+                <el-table-column label="状态" width="100">
                     <template slot-scope="scope">
-                        <el-button type="text" @click="handleReview(scope.row)">审核</el-button>
-                        <el-button type="text" @click="handleRevoke(scope.row)">撤销</el-button>
-                        <el-button type="text" @click="handleDetail(scope.row)">详情</el-button>
-                        <el-button type="text" @click="handleEdit(scope.row)">编辑</el-button>
-                        <el-button type="text" @click="handleDelete(scope.row)">删除</el-button>
+                        <el-tag :type="getStatusType(scope.row.auditStatus)">
+                            {{ getStatusText(scope.row.auditStatus) }}
+                        </el-tag>
+                    </template>
+                </el-table-column>
+                <el-table-column label="操作" width="200">
+                    <template slot-scope="scope">
+                        <!-- 超级管理员(1)和审批人(2) -->
+                        <template v-if="userRole == '1' || userRole == '2'">
+                            <el-button type="text" @click="handleDetail(scope.row)">详情</el-button>
+                        </template>
+
+                        <!-- 工艺工程师(3) -->
+                        <template v-if="userRole == '3'">
+                            <el-button type="text" @click="handleReview(scope.row)"
+                                v-if="scope.row.auditStatus == 1">审核</el-button>
+                            <el-button type="text" @click="handleDetail(scope.row)"
+                                v-if="scope.row.auditStatus == 2">详情</el-button>
+                        </template>
+
+                        <!-- 化验师(4) -->
+                        <template v-if="userRole == '4'">
+                            <el-button type="text" @click="handleRevoke(scope.row)"
+                                v-if="scope.row.auditStatus == 1">撤销</el-button>
+                            <el-button type="text" @click="handleDetail(scope.row)"
+                                v-if="scope.row.auditStatus === 2 || scope.row.auditStatus === 3">详情</el-button>
+                            <el-button type="text" @click="handleEdit(scope.row)"
+                                v-if="scope.row.auditStatus === 3">编辑</el-button>
+                            <el-button type="text" @click="handleDelete(scope.row)"
+                                v-if="scope.row.auditStatus === 3">删除</el-button>
+                        </template>
                     </template>
                 </el-table-column>
             </template>
         </TableCustom>
-        <ShowDelConfirm :show="showRevoke" btnType="primary" @close="showRevoke = false" tip="撤销后,工艺工程师将无法收到此审批信息" okText="确定" title="确认要撤销这条确认单吗?"/>
-        <review-dialog
-            :visible.sync="reviewDialogVisible"
-            :type="dialogType"
-            :formData="currentRow"
-            :sampleData="sampleData"
-            @confirm="handleConfirmSubmit"
-        />
+        <ShowDelConfirm 
+            :show="showRevoke" 
+            btnType="primary" 
+            v-on:close="showRevoke = false" 
+            tip="撤销后,工艺工程师将无法收到此审批信息"
+            okText="确定" 
+            title="确认要撤销这条确认单吗?"  
+            v-on:confirm="handleRevokeConfirm" />
+        <ShowDelConfirm 
+            :show="showDelete" 
+            :title="deleteTitle" 
+            :tip="deleteTip" 
+            v-on:close="showDelete = false"
+            v-on:confirm="handleDeleteConfirm" />
+        <review-dialog :visible.sync="reviewDialogVisible" :type="dialogType" :id="currentRow.id"
+             @close="handleClose" />
     </div>
 </template>
 
 <script>
 import reviewDialog from './components/review-dialog.vue';
-import { getList } from './service'
+import ShowDelConfirm from "@/components/showDelConfirm/index.vue";
+import { getList, deleteById, revokedSheet } from './service'
 export default {
     name: "ConfirmationSheet",
     components: {
-        reviewDialog
+        reviewDialog,
+        ShowDelConfirm
     },
     data() {
         return {
@@ -96,34 +134,43 @@
             showRevoke: false,
             tableData: [],
             total: 0,
-            editorContent: '',
             reviewDialogVisible: false,
             dialogType: 'review',
             currentRow: {},
-            sampleData: [],
+            userRole: null,
+            showDelete: false,
+            deleteTitle: "",
+            deleteTip: "",
+            currentDeleteRow: null,
         };
     },
     mounted() {
+        // 获取用户角色
+        const userInfo = JSON.parse(sessionStorage.getItem('userInfo') || '{}');
+        this.userRole = userInfo.roleType;
         this.getTableData();
     },
     methods: {
         async getTableData() {
             try {
-                const params = { ...this.form };
-                if (this.isDrafts) {
-                    params.auditStatus = -1;
-                }
+                const params = {
+                    ...this.form,
+                    pageNum: Number(this.form.pageNum),
+                    pageSize: Number(this.form.pageSize),
+                    auditStatus: this.isDrafts ? -1 : Number(this.form.auditStatus) || ''
+                };
                 const res = await getList(params);
                 if (res.code === 200) {
-                    this.tableData = res.data.list || [];
+                    this.tableData = res.data.records || [];
                     this.total = res.data.total || 0;
                 }
             } catch (error) {
                 console.error('获取列表数据失败:', error);
+                this.$message.error('获取列表数据失败');
             }
         },
         handleDateChange(val) {
-            if (val) {
+            if (val && val.length === 2) {
                 this.form.startTime = val[0];
                 this.form.endTime = val[1];
             } else {
@@ -149,25 +196,37 @@
             this.form.pageNum = 1;
             this.getTableData();
         },
+        handleCurrentChange(val) {
+            this.form.pageNum = val;
+            this.getTableData();
+        },
+        handleSizeChange(val) {
+            this.form.pageSize = val;
+            this.getTableData();
+        },
         switchToDrafts(isDrafts) {
             this.isDrafts = isDrafts;
             this.resetForm();
         },
         getStatusType(status) {
             const statusMap = {
-                pending: "warning",
-                rejected: "danger",
-                approved: "success",
-                archived: "info",
+                1: "warning",    // 待确认
+                2: "success",    // 已通过
+                3: "danger",     // 已驳回
+                4: "info",       // 已撤回
+                5: "info",       // 已封存
+                '-1': "info"     // 草稿箱
             };
             return statusMap[status] || "info";
         },
         getStatusText(status) {
             const statusMap = {
-                pending: "待审批",
-                rejected: "已驳回",
-                approved: "已通过",
-                archived: "已封存",
+                1: "待确认",
+                2: "已通过",
+                3: "已驳回",
+                4: "已撤回",
+                5: "已封存",
+                '-1': "草稿箱"
             };
             return statusMap[status] || "未知";
         },
@@ -186,21 +245,52 @@
             this.showRevoke = true;
         },
         handleDetail(row) {
-            // 实现查看详情逻辑
-            console.log("查看详情:", row);
+            this.currentRow = row;
+            this.dialogType = 'view';
+            this.reviewDialogVisible = true;
         },
         handleEdit(row) {
-            // 实现编辑逻辑
-            console.log("编辑:", row);
+            this.$router.push({
+                path: "/dataManagement/confirmation-sheet/edit",
+                query: { id: row.id }
+            });
         },
         handleDelete(row) {
-            // 实现删除逻辑
-            console.log("删除:", row);
+            this.currentDeleteRow = row;
+            this.deleteTitle = "确认要删除该确认单吗?";
+            this.deleteTip = "删除后信息无法找回";
+            this.showDelete = true;
         },
-        handleConfirmSubmit(data) {
-            // 处理确认提交后的逻辑
-            console.log("确认提交:", data);
+        handleDeleteConfirm() {
+            if (!this.currentDeleteRow) return;
+
+            deleteById({
+                id: this.currentDeleteRow.id
+            }).then(() => {
+                this.$message.success("删除成功");
+                this.showDelete = false;
+                this.getTableData();
+            }).catch(error => {
+                this.$message.error("删除失败");
+            });
         },
+        handleClose() {
+            this.reviewDialogVisible = false;
+            this.getTableData();
+        },
+        async handleRevokeConfirm() {
+            if (!this.currentRow) return;
+            
+            try {
+                await revokedSheet({ id: this.currentRow.id });
+                this.$message.success("撤销成功");
+                this.showRevoke = false;
+                this.getTableData();
+            } catch (error) {
+                console.error('撤销失败:', error);
+                this.$message.error("撤销失败");
+            }
+        }
     },
 };
 </script>
@@ -224,7 +314,9 @@
     padding-bottom: 20px;
     justify-content: space-between;
     align-items: center;
-    .title, .drafts {
+
+    .title,
+    .drafts {
         background: #ffffff;
         border-radius: 8px 8px 0px 0px;
         padding: 16px 29px;
@@ -244,9 +336,8 @@
 
     .drafts {
         padding: 16px 65px;
-        &:not(.active) {
-            
-        }
+
+        &:not(.active) {}
     }
 }
 

--
Gitblit v1.7.1