From b4ac09eb2e493aab92557628e0436189337e2939 Mon Sep 17 00:00:00 2001 From: 董国庆 <364620639@qq.com> Date: 星期二, 20 五月 2025 16:44:32 +0800 Subject: [PATCH] 样品管理大模块85% --- laboratory/src/views/dataManagement/sampleRecordList/list.vue | 285 ++++++++++++++++++++------------------------------------ 1 files changed, 101 insertions(+), 184 deletions(-) diff --git a/laboratory/src/views/dataManagement/sampleRecordList/list.vue b/laboratory/src/views/dataManagement/sampleRecordList/list.vue index 828362c..32d56fd 100644 --- a/laboratory/src/views/dataManagement/sampleRecordList/list.vue +++ b/laboratory/src/views/dataManagement/sampleRecordList/list.vue @@ -1,58 +1,53 @@ <template> <div class="list"> - <TableCustom :queryForm="form" :tableData="tableData" :total="total"> + <TableCustom :queryForm="form" :height="null" :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> - <el-form-item label="实验名称:"> - <el-input v-model="form.planCode" placeholder="请输入"></el-input> + <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 + v-model="form.createTime" + type="daterange" + range-separator="至" + start-placeholder="开始日期" + end-placeholder="结束日期" + value-format="yyyy-MM-dd" + ></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="2"></el-option> + <el-option label="已封存" :value="3"></el-option> + </el-select> </el-form-item> <el-form-item label=""> <el-button type="default" @click="resetForm">重置</el-button> - <el-button type="primary" @click="handleSearch">查询</el-button> + <el-button type="primary" @click="handleSearch" style="margin-left: 10px;">查询</el-button> </el-form-item> </el-form> </template> <template #setting> <div class="tableTitle"> <div class="flex a-center"> - <div - class="title" - :class="{active:currentType === 'list'}" - @click="handleTypeChange('list')" - >{{ type === 'draft' ? '草稿箱' : '取样操作记录列表' }}</div> + <div class="title active">取样操作记录列表</div> </div> </div> </template> <template #table> <el-table-column - prop="planName" - label="所属项目课题方案" + v-for="(column, index) in columns" + :key="index" + :prop="column.prop" + :label="column.label" ></el-table-column> - <el-table-column - prop="experimentNo" - label="实验编号" - ></el-table-column> - <el-table-column - prop="experimentName" - label="实验名称" - ></el-table-column> - <el-table-column - prop="sampleNo" - label="取样单编号" - ></el-table-column> - <el-table-column prop="creator" label="创建人"></el-table-column> - <el-table-column prop="createTime" label="创建时间"></el-table-column> - <el-table-column prop="status" label="当前状态"> + <el-table-column prop="status" label="状态"> <template slot-scope="scope"> <el-tag :type="getStatusType(scope.row.status)"> {{ getStatusText(scope.row.status) }} @@ -61,88 +56,41 @@ </el-table-column> <el-table-column label="操作" width="150"> <template slot-scope="scope"> - <el-button - type="text" - @click="handleEdit(scope.row)" - >编辑</el-button> - <el-button - type="text" - @click="handleDetail(scope.row)" - >详情</el-button> + <el-button type="text" @click="handleDetail(scope.row.id)">详情</el-button> + <el-button type="text" @click="handleEdit(scope.row.id)" v-if="scope.row.status == 1">编辑</el-button> </template> </el-table-column> </template> </TableCustom> - <!-- 审批弹窗 --> - <!-- <approval-dialog - :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", - components: { - // ApprovalDialog - }, data() { return { - type: 'list', - currentType: 'list', form: { - planName: "", - planCode: "", - creator: "", + experimentCode: "", + experimentName: "", + projectName: "", createTime: [], - approver: "", - status: "", + status: '', + pageNum: 1, + pageSize: 10 }, tableData: [], total: 0, - // 模拟数据 - mockListData: [ - { - planName: '2024年度实验室设备升级方案', - experimentNo: '31423764', - experimentName: '设备性能测试', - sampleNo: '2024-05-28', - creator: '刘大大', - createTime: '2025-1-2 16:27:17', - status: 'pending' - } - ], - 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', - currentApprovalData: null, + columns: [ + { prop: 'projectName', label: '所属项目课题方案' }, + { prop: 'experimentCode', label: '实验编号' }, + { prop: 'experimentName', label: '实验名称' }, + { prop: 'samplingCode', label: '取样单编号' }, + { prop: 'createBy', label: '创建人' }, + { prop: 'createTime', label: '创建时间' } + ] }; }, created() { @@ -151,103 +99,82 @@ methods: { resetForm() { this.form = { - planName: "", - planCode: "", - creator: "", + experimentCode: "", + experimentName: "", + projectName: "", createTime: [], - approver: "", - status: "", + status: '', + pageNum: 1, + pageSize: 10 }; + this.handleSearch(); }, - handleSearch() { - // 实现查询逻辑 - console.log("查询条件:", this.form); + async handleSearch() { + const params = { + experimentCode: this.form.experimentCode, + experimentName: this.form.experimentName, + projectName: this.form.projectName, + startTime: this.form.createTime[0] || null, + endTime: this.form.createTime[1] || null, + status: this.form.status, + pageNum: this.form.pageNum, + pageSize: this.form.pageSize + }; + try { + const res = await getList(params) + this.tableData = res.data.records || []; + this.total = res.data.total || 0; + } catch (error) { + console.error("查询失败:", error); + } }, getStatusType(status) { const statusMap = { - pending: "warning", - rejected: "danger", - approved: "success", - archived: "info", - draft: "info" + '-1': 'info', + '1': 'warning', + '2': 'success', + '3': 'info' }; - return statusMap[status] || "info"; + return statusMap[status] || 'info'; }, getStatusText(status) { const statusMap = { - pending: "待审批", - rejected: "已驳回", - approved: "已通过", - archived: "已封存", - draft: "草稿" + '-1': '草稿箱', + '1': '待提交', + '2': '已提交', + '3': '已封存' }; - return statusMap[status] || "未知"; + return statusMap[status] || '未知'; }, - handleAddSample() { - this.$router.push({ - path: "/sampleManage/changeRecord", - }); - }, - 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) { + handleDetail(id) { this.$router.push({ path: "/sampleManage/changeRecord", query: { - type: 'edit', - id: row.id + id: id, + type: 'detail' } }); }, - handleDelete(row) { - // 实现删除逻辑 - console.log("删除数据:", row); - }, - handleDetail(row) { + handleEdit(id) { this.$router.push({ path: "/sampleManage/changeRecord", query: { - type: 'view', - id: row.id + id: id, + type: 'edit' } }); - }, - handleTypeChange(type) { - this.currentType = type; - this.type = type; - 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; - } + this.handleSearch(); }, + handlePageChange(pageNum) { + this.form.pageNum = pageNum; + this.getTableData(); + }, + handleSizeChange(pageSize) { + this.form.pageSize = pageSize; + this.getTableData(); + } }, }; </script> @@ -270,28 +197,18 @@ border-radius: 8px 8px 0px 0px; border: 1px solid #dcdfe6; padding: 16px 29px; - font-weight: bold; + font-weight: 400; font-size: 18px; color: #606266; width: unset; cursor: pointer; - } - .drafts { - padding: 16px 65px; - background: #fafafc; - border-radius: 8px 8px 0px 0px; - border: 1px solid #dcdfe6; - font-weight: 400; - font-size: 18px; - color: #606266; - margin-left: 16px; - cursor: pointer; - } - .active{ - color: #049c9a; - background: #ffffff; - border-radius: 8px 8px 0px 0px; - border: 1px solid #049c9a; + &.active { + color: #049c9a; + background: #ffffff; + border-radius: 8px 8px 0px 0px; + border: 1px solid #049c9a; + font-weight: bold; + } } } </style> \ No newline at end of file -- Gitblit v1.7.1