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/schemeManagement/list.vue | 449 ++++++++++++++++++------------------------------------- 1 files changed, 147 insertions(+), 302 deletions(-) diff --git a/laboratory/src/views/dataManagement/schemeManagement/list.vue b/laboratory/src/views/dataManagement/schemeManagement/list.vue index d8941e1..54c6de5 100644 --- a/laboratory/src/views/dataManagement/schemeManagement/list.vue +++ b/laboratory/src/views/dataManagement/schemeManagement/list.vue @@ -1,13 +1,13 @@ <template> <div class="list"> - <TableCustom :queryForm="form" :tableData="tableData" :total="total"> + <TableCustom :queryForm="form" :tableData="tableData" :total="total" @handlePageChange="handlePageChange" @handleSizeChange="handleSizeChange"> <template #search> <el-form :model="form" labelWidth="auto" inline> - <el-form-item label="项目项目课题方案名称:"> - <el-input v-model="form.planName" placeholder="请输入"></el-input> + <el-form-item label="项目课题方案名称:"> + <el-input v-model="form.projectName" placeholder="请输入"></el-input> </el-form-item> <el-form-item label="实验编号:"> - <el-input v-model="form.planCode" placeholder="请输入"></el-input> + <el-input v-model="form.experimentCode" placeholder="请输入"></el-input> </el-form-item> <el-form-item label="创建时间:"> <el-date-picker @@ -17,10 +17,19 @@ start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" + @change="handleDateChange" ></el-date-picker> </el-form-item> <el-form-item label="状态:"> - <el-input v-model="form.approver" placeholder="请输入"></el-input> + <el-select v-model="form.status" placeholder="请选择"> + <el-option label="全部" value=""></el-option> + <el-option label="草稿" :value="-1"></el-option> + <el-option label="已发送" :value="1"></el-option> + <el-option label="申请中止待审核" :value="2"></el-option> + <el-option label="申请中止已通过" :value="3"></el-option> + <el-option label="申请中止已驳回" :value="4"></el-option> + <el-option label="已封存" :value="5"></el-option> + </el-select> </el-form-item> <el-form-item label=""> <el-button type="default" @click="resetForm">重置</el-button> @@ -32,35 +41,39 @@ <div class="tableTitle"> <div class="flex a-center flex-wrap"> <div - class="title" + class="title" :class="{active:currentType === 'list'}" @click="handleTypeChange('list')" >项目课题方案列表</div> <div - class="drafts" + v-if="userRole == '3'" + class="drafts" :class="{active:currentType === 'draft'}" @click="handleTypeChange('draft')" >草稿箱</div> </div> - <el-button @click="handleAddPlan" class="el-icon-plus" type="primary"> - 新增实验方案</el-button - > + <el-button + v-if="userRole == '3'" + @click="handleAddPlan" + class="el-icon-plus" + type="primary" + >新增实验方案</el-button> </div> </template> <template #table> <el-table-column - prop="planName" + prop="projectName" label="项目课题方案名称" ></el-table-column> <el-table-column - prop="planCode" + prop="experimentCode" label="实验编号" ></el-table-column> - <el-table-column prop="stage" label="实验名称"></el-table-column> - <el-table-column prop="testDate" label="试验日期"></el-table-column> - <el-table-column prop="tester" label="试验员"></el-table-column> + <el-table-column prop="experimentName" label="实验名称"></el-table-column> + <el-table-column prop="experimentDate" label="实验日期"></el-table-column> + <el-table-column prop="schemePersonName" label="实验员"></el-table-column> <el-table-column prop="createTime" label="创建日期"></el-table-column> - <el-table-column prop="creator" label="创建人"></el-table-column> + <el-table-column prop="createBy" label="创建人"></el-table-column> <el-table-column prop="status" label="当前状态"> <template slot-scope="scope"> <el-tag :type="getStatusType(scope.row.status)"> @@ -70,15 +83,21 @@ </el-table-column> <el-table-column label="操作" width="250"> <template slot-scope="scope"> - <el-button - v-if="scope.row.status === 'rejected'" - type="text" - @click="handleEdit(scope.row)" - >编辑</el-button - > - <el-button type="text" @click="handleDetail(scope.row)" - >详情</el-button - > + <!-- 超级管理员(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="handleEdit(scope.row)" >编辑</el-button> --> + <el-button type="text" @click="handleDetail(scope.row)">详情</el-button> + </template> + + <!-- 实验员(5) --> + <template v-if="userRole == '5'"> + <el-button type="text" @click="handleEdit(scope.row)" v-if="scope.row.status == 1">编辑</el-button> + </template> </template> </el-table-column> </template> @@ -88,14 +107,13 @@ :visible.sync="approvalDialogVisible" :type="approvalDialogType" :data="currentApprovalData" - @approve="handleApproveSubmit" - @reject="handleRejectSubmit" /> </div> </template> <script> import ApprovalDialog from './components/approvalDialog.vue' +import {getList} from './service' export default { name: "ProjectList", @@ -106,331 +124,158 @@ return { currentType: 'list', // 当前显示类型:list-列表,draft-草稿箱 form: { - planName: "", - planCode: "", - creator: "", + projectName: "", + experimentCode: "", createTime: [], - approver: "", status: "", + startTime: "", + endTime: "", + pageNum: 1, + pageSize: 10 }, tableData: [], total: 0, - // 模拟数据 - mockListData: [ - { - planCode: 'PLAN-2024-001', - planName: '2024年度实验室设备升级方案', - stage: '设备升级实验', - testDate: '2024-03-15', - tester: '张三', - creator: '张三', - createTime: '2024-03-15', - status: 'pending', - approver: '李四', - approveTime: '2024-03-16', - purpose: '<p>1. 研究新型催化剂的性能</p><p>2. 优化反应条件</p><p>3. 提高产品收率</p>', - processParameters: [ - { - '工艺参数': '反应温度', - '参数值': '25℃', - '操作人员': ['1', '2'], - updateTime: '2024-01-01 12:00:00' - }, - { - '工艺参数': '反应压力', - '参数值': '1.0MPa', - '操作人员': ['3'], - updateTime: '2024-01-01 12:00:00' - } - ], - materials: [ - { - '材料名称': '催化剂A', - '规格': '工业级', - '数量': '100g', - updateTime: '2024-01-01 12:00:00' - }, - { - '材料名称': '溶剂B', - '规格': '分析纯', - '数量': '500ml', - updateTime: '2024-01-01 12:00:00' - } - ], - steps: '<p>1. 准备工作</p><p>2. 设备检查</p><p>3. 实验操作</p><p>4. 数据记录</p>' - }, - { - planCode: 'PLAN-2024-002', - planName: '实验室安全管理制度更新方案', - stage: '安全测试实验', - testDate: '2024-03-14', - tester: '王五', - creator: '王五', - createTime: '2024-03-14', - status: 'approved', - approver: '赵六', - approveTime: '2024-03-15', - purpose: '<p>1. 评估现有安全管理制度</p><p>2. 制定新的安全规范</p><p>3. 进行安全培训</p>', - processParameters: [ - { - '工艺参数': '培训时间', - '参数值': '2小时', - '操作人员': ['1', '2', '3'], - updateTime: '2024-01-01 12:00:00' - } - ], - materials: [ - { - '材料名称': '培训材料', - '规格': 'A4', - '数量': '50份', - updateTime: '2024-01-01 12:00:00' - } - ], - steps: '<p>1. 安全评估</p><p>2. 制度更新</p><p>3. 人员培训</p><p>4. 效果评估</p>' - }, - { - planCode: 'PLAN-2024-003', - planName: '实验室人员培训计划', - stage: '培训效果实验', - testDate: '2024-03-13', - tester: '孙七', - creator: '孙七', - createTime: '2024-03-13', - status: 'rejected', - approver: '周八', - approveTime: '2024-03-14' - } - ], - mockDraftData: [ - { - planCode: 'DRAFT-2024-001', - planName: '实验室设备采购计划(草稿)', - stage: '规划阶段', - creator: '张三', - createTime: '2024-03-16', - status: 'draft', - approver: '', - approveTime: '' - }, - { - planCode: 'DRAFT-2024-002', - planName: '实验室改造方案(草稿)', - stage: '准备阶段', - creator: '李四', - createTime: '2024-03-15', - status: 'draft', - approver: '', - approveTime: '' - } - ], approvalDialogVisible: false, - approvalDialogType: 'approve', + approvalDialogType: 'view', currentApprovalData: null, + userRole: '', }; }, created() { + const userInfo = JSON.parse(sessionStorage.getItem('userInfo') || '{}'); + this.userRole = userInfo.roleType || ''; + + if (this.userRole == '4') { + this.$router.push('/403'); + return; + } + this.getTableData(); }, methods: { + handlePageChange(page) { + this.form.pageNum = page; + // 当处于草稿箱模式时,强制将状态设置为-1 + if (this.currentType === 'draft') { + this.form.status = -1; + } + this.getTableData(); + }, + handleSizeChange(size) { + this.form.pageSize = size; + this.form.pageNum = 1; + // 当处于草稿箱模式时,强制将状态设置为-1 + if (this.currentType === 'draft') { + this.form.status = -1; + } + this.getTableData(); + }, resetForm() { this.form = { - planName: "", - planCode: "", - creator: "", + projectName: "", + experimentCode: "", createTime: [], - approver: "", status: "", + startTime: "", + endTime: "", + pageNum: 1, + pageSize: 10 }; + // 当处于草稿箱模式时,强制将状态设置为-1 + if (this.currentType === 'draft') { + this.form.status = -1; + } + this.getTableData(); }, handleSearch() { - // 实现查询逻辑 - console.log("查询条件:", this.form); + this.form.pageNum = 1; + // 当处于草稿箱模式时,强制将状态设置为-1 + if (this.currentType === 'draft') { + this.form.status = -1; + } + this.getTableData(); }, getStatusType(status) { const statusMap = { - pending: "warning", - rejected: "danger", - approved: "success", - archived: "info", - draft: "info" + '-1': "info", + '1': "warning", + '2': "warning", + '3': "success", + '4': "danger", + '5': "info", + '6':'success' }; return statusMap[status] || "info"; }, getStatusText(status) { const statusMap = { - pending: "待审批", - rejected: "已驳回", - approved: "已通过", - archived: "已封存", - draft: "草稿" + '-1': "草稿", + '1': "已发送", + '2': "申请中止待审核", + '3': "申请中止已通过", + '4': "申请中止已驳回", + '5': "已封存", + '6':'实验员已提交' }; return statusMap[status] || "未知"; + }, + handleDateChange(val) { + if (val) { + this.form.startTime = val[0]; + this.form.endTime = val[1]; + } else { + this.form.startTime = ''; + this.form.endTime = ''; + } + }, + handleTypeChange(type) { + this.currentType = type; + this.form.status = type === 'draft' ? -1 : ''; + this.form.pageNum = 1; + this.getTableData(); + }, + async getTableData() { + try { + // 当处于草稿箱模式时,强制将状态设置为-1 + if (this.currentType === 'draft') { + this.form.status = -1; + } + const { data } = await getList(this.form); + this.tableData = data.records || []; + this.total = data.total || 0; + } catch (error) { + console.error('获取列表数据失败:', error); + this.$message.error('获取列表数据失败'); + } }, handleAddPlan() { this.$router.push({ path: "/dataManagement/scheme-management/add", }); }, - handleApprove(row) { - this.currentApprovalData = row; - this.approvalDialogType = 'approve'; - this.approvalDialogVisible = true; - }, - handleApproveSubmit(data) { - // 处理审批通过 - console.log('审批通过:', data); - this.approvalDialogVisible = false; - this.$message.success('审批通过成功'); - this.getTableData(); - }, - handleRejectSubmit(data) { - // 处理审批驳回 - console.log('审批驳回:', data); - this.approvalDialogVisible = false; - this.$message.success('审批驳回成功'); - this.getTableData(); - }, - handleRevokeApprove(row) { - // 实现撤销审批逻辑 - console.log("撤销审批数据:", row); - }, handleEdit(row) { this.$router.push({ path: "/dataManagement/scheme-management/add", query: { - id: row.planCode, + id: row.id, type: 'edit' } }); }, - handleDelete(row) { - // 实现删除逻辑 - console.log("删除数据:", row); - }, handleDetail(row) { - // 打开弹窗 this.approvalDialogType = 'view'; this.approvalDialogVisible = true; - - // 调用获取详情接口 - this.getPlanDetail(row.planCode); + this.currentApprovalData = row; }, - // 获取方案详情 - async getPlanDetail(planCode) { - try { - // TODO: 替换为实际的接口调用 - // const { data } = await this.$api.getPlanDetail({ planCode }); - - // 模拟接口返回数据 - const mockDetailData = { - planCode: planCode, - planName: '2024年度实验室设备升级方案', - stage: '设备升级实验', - testDate: '2024-03-15', - testTime: '2024-03-15 14:00:00', - tester: '张三', - creator: '张三', - createTime: '2024-03-15', - status: 'pending', - approver: '李四', - approveTime: '2024-03-16', - experimentPurpose: [ - { - id: 1, - type: 'richText', - data: { - content: '<p>1. 研究新型催化剂的性能</p><p>2. 优化反应条件</p><p>3. 提高产品收率</p>' - } - } - ], - processParameters: [ - { - id: 2, - type: 'customTable', - data: { - headers: [ - { name: '工艺参数', type: 'text' }, - { name: '参数值', type: 'text' }, - { name: '操作人员', type: 'user' } - ], - rows: [ - { - '工艺参数': '反应温度', - '参数值': '25℃', - '操作人员': ['1', '2'], - updateTime: '2024-01-01 12:00:00' - }, - { - '工艺参数': '反应压力', - '参数值': '1.0MPa', - '操作人员': ['3'], - updateTime: '2024-01-01 12:00:00' - } - ] - } - } - ], - materialsAndEquipment: [ - { - id: 3, - type: 'customTable', - data: { - headers: [ - { name: '材料名称', type: 'text' }, - { name: '规格', type: 'text' }, - { name: '数量', type: 'text' } - ], - rows: [ - { - '材料名称': '催化剂A', - '规格': '工业级', - '数量': '100g', - updateTime: '2024-01-01 12:00:00' - }, - { - '材料名称': '溶剂B', - '规格': '分析纯', - '数量': '500ml', - updateTime: '2024-01-01 12:00:00' - } - ] - } - } - ], - operationSteps: [ - { - id: 4, - type: 'richText', - data: { - content: '<p>1. 准备工作</p><p>2. 设备检查</p><p>3. 实验操作</p><p>4. 数据记录</p>' - } - } - ] - }; - - // 更新弹窗数据 - this.currentApprovalData = mockDetailData; - } catch (error) { - console.error('获取方案详情失败:', error); - this.$message.error('获取方案详情失败'); - this.approvalDialogVisible = false; - } - }, - handleTypeChange(type) { - this.currentType = type; + handleApproveSubmit(data) { + this.approvalDialogVisible = false; this.getTableData(); }, - getTableData() { - // 根据currentType请求不同的数据 - if (this.currentType === 'list') { - this.tableData = this.mockListData; - this.total = this.mockListData.length; - } else { - this.tableData = this.mockDraftData; - this.total = this.mockDraftData.length; - } - }, + handleRejectSubmit(data) { + this.approvalDialogVisible = false; + this.$message.success('审批驳回成功'); + this.getTableData(); + } }, }; </script> -- Gitblit v1.7.1