From 095fc5a71d094deccd5c5aecf79517ac01c0e598 Mon Sep 17 00:00:00 2001
From: 董国庆 <364620639@qq.com>
Date: 星期二, 13 五月 2025 14:56:07 +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