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/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