From 7db80175de589a2ccad77472e1d365f14099b662 Mon Sep 17 00:00:00 2001 From: 董国庆 <364620639@qq.com> Date: 星期三, 21 五月 2025 13:44:08 +0800 Subject: [PATCH] 取样送样记录 --- laboratory/src/views/dataManagement/SampleDeliveryRecord/deliveryRecord.vue | 507 ++++++++++++++++++------------------------------------- 1 files changed, 166 insertions(+), 341 deletions(-) diff --git a/laboratory/src/views/dataManagement/SampleDeliveryRecord/deliveryRecord.vue b/laboratory/src/views/dataManagement/SampleDeliveryRecord/deliveryRecord.vue index 50759e3..cf3fe62 100644 --- a/laboratory/src/views/dataManagement/SampleDeliveryRecord/deliveryRecord.vue +++ b/laboratory/src/views/dataManagement/SampleDeliveryRecord/deliveryRecord.vue @@ -6,26 +6,21 @@ </div> <Table :data="schedulingData" :total="schedulingTotal" :height="null"> <template> - <el-table-column - prop="planCode" - 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="notifyTime" label="通知时间"></el-table-column> - <el-table-column - prop="startTime" - label="实验开始时间" - ></el-table-column> - <el-table-column prop="endTime" label="实验结束时间"></el-table-column> - <el-table-column prop="participants" label="参加人员"></el-table-column> - <el-table-column prop="status" label="状态"></el-table-column> + <el-table-column type="index" label="序号" width="80"></el-table-column> + <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="experimentDate" label="通知时间"></el-table-column> + <el-table-column prop="experimentStartTime" label="实验开始时间"></el-table-column> + <el-table-column prop="experimentEndTime" label="实验结束时间"></el-table-column> + <el-table-column prop="participantsName" label="参加人员"></el-table-column> + <el-table-column prop="status" label="状态"> + <template slot-scope="scope"> + <el-tag :type="getStatusType(scope.row.status)"> + {{ getStatusText(scope.row.status) }} + </el-tag> + </template> + </el-table-column> </template> </Table> @@ -34,246 +29,88 @@ <div class="header-title-left" style="margin-top: 38px"> <img src="@/assets/public/headercard.png" /> <span>送样-收样记录</span> - <el-button - type="primary" - class="el-icon-plus" - @click="showAdditives = !showAdditives" - > - {{ showAdditives ? "收起辅料详情" : "展开辅料详情" }} + <el-button type="primary" class="el-icon-plus" @click="showPendingColumns = !showPendingColumns"> + {{ showPendingColumns ? "收起待收样详情" : "展开待收样详情" }} + </el-button> + <el-button type="primary" class="el-icon-plus" @click="showReceivedColumns = !showReceivedColumns"> + {{ showReceivedColumns ? "收起已收样详情" : "展开已收样详情" }} </el-button> </div> <div class="sample-code"> 取样单编号:{{ form.sampleCode || "DD-25010BS01" }} </div> - <div class="sample-code">待收样列表</div> - <div class="sample-table"> - <Table - :data="sampleList" - :total="sampleTotal" - :height="null" - style="width: 100%" - > + <!-- 待收样列表 --> + <div class="pending-samples"> + <div class="sub-title">待收样列表</div> + <Table ref="pendingTable" + :data="pendingSamples" + :total="pendingSamplesTotal" + :height="null"> <template> - <el-table-column - prop="index" - label="序号" - width="80" - ></el-table-column> - <el-table-column - prop="processTime" - label="工艺时间间/h" - width="120" - ></el-table-column> - <el-table-column - prop="sampleName" - label="取样名称" - min-width="150" - ></el-table-column> - <el-table-column - prop="sampleCode" - label="取样样品编号" - min-width="150" - ></el-table-column> - <el-table-column - prop="temperature" - label="温度" - width="100" - ></el-table-column> - <el-table-column prop="ph" label="PH" width="100"></el-table-column> - <el-table-column - prop="waterAmount" - label="加水量" - width="100" - ></el-table-column> - <template v-if="showAdditives"> - <el-table-column - prop="additive1" - label="加辅1" - min-width="150" - ></el-table-column> - <el-table-column - prop="additive2" - label="加辅2" - min-width="150" - ></el-table-column> - <el-table-column - prop="additive3" - label="加辅3" - min-width="150" - ></el-table-column> - <el-table-column - prop="additive4" - label="加辅4" - min-width="150" - ></el-table-column> - <el-table-column - prop="additive5" - label="加辅5" - min-width="150" - ></el-table-column> - <el-table-column - prop="additive6" - label="加辅6" - min-width="150" - ></el-table-column> - <el-table-column - prop="additive7" - label="加辅7" - min-width="150" - ></el-table-column> - <el-table-column - prop="additive8" - label="加辅8" - min-width="150" - ></el-table-column> - <el-table-column - prop="additive9" - label="加辅9" - min-width="150" - ></el-table-column> - <el-table-column - prop="additive10" - label="加辅10" - min-width="150" - ></el-table-column> + <el-table-column type="index" label="序号" width="80"></el-table-column> + <el-table-column prop="samplingName" label="取样名称" width="200"></el-table-column> + <el-table-column prop="sampleCode" label="取样样品编号" width="200"></el-table-column> + <el-table-column prop="temperature" label="温度" width="150"></el-table-column> + <el-table-column prop="samplePh" label="PH" width="150"></el-table-column> + <el-table-column prop="waterAddition" label="加水量" width="150"></el-table-column> + <template v-if="showPendingColumns"> + <el-table-column prop="addAuxiliaryOne" label="加辅1" width="150"></el-table-column> + <el-table-column prop="addAuxiliaryTwo" label="加辅2" width="150"></el-table-column> + <el-table-column prop="addAuxiliaryThree" label="加辅3" width="150"></el-table-column> + <el-table-column prop="addAuxiliaryFour" label="加辅4" width="150"></el-table-column> + <el-table-column prop="addAuxiliaryFive" label="加辅5" width="150"></el-table-column> + <el-table-column prop="addAuxiliarySix" label="加辅6" width="150"></el-table-column> + <el-table-column prop="addAuxiliarySeven" label="加辅7" width="150"></el-table-column> + <el-table-column prop="addAuxiliaryEight" label="加辅8" width="150"></el-table-column> + <el-table-column prop="addAuxiliaryNine" label="加辅9" width="150"></el-table-column> + <el-table-column prop="addAuxiliaryTen" label="加辅10" width="150"></el-table-column> </template> - <el-table-column - prop="sampleAmount" - label="取样量" - width="100" - ></el-table-column> - <el-table-column - prop="sampleTime" - label="取样时间" - min-width="150" - ></el-table-column> - <el-table-column prop="photo" label="拍照" width="100"> + <el-table-column prop="sampleAmount" label="取样量" width="150"></el-table-column> + <el-table-column prop="receiptsTime" label="收样时间" width="150"></el-table-column> + <el-table-column prop="receiptsPersonName" label="收样人" width="150"></el-table-column> + <el-table-column label="状态" prop="status" width="100" fixed="right"> <template slot-scope="scope"> - <img - v-if="scope.row.photo" - :src="scope.row.photo" - class="sample-photo" - /> + <span>{{ scope.row.status == '2' ? '待接收' : '已接收' }}</span> </template> </el-table-column> - <el-table-column - prop="operator" - label="操作人" - width="100" - ></el-table-column> - <el-table-column - prop="status" - label="状态" - width="100" - ></el-table-column> </template> </Table> </div> - <div class="received-samples"> - <div style="display: flex; align-items: center"> - <div class="sample-code">已收样列表</div> - <el-button - type="primary" - class="el-icon-plus" - style="margin-left: 16px" - @click="showReceivedColumns = !showReceivedColumns" - > - {{ showReceivedColumns ? "收起辅料详情" : "展开辅料详情" }} - </el-button> - </div> - <Table - :data="receivedSamples" - :total="receivedSamplesTotal" - :height="null" - style="width: 100%" - > + <!-- 已收样列表 --> + <div class="received-samples"> + <div class="sub-title">已收样列表</div> + <Table ref="receivedTable" :data="receivedSamples" :total="receivedSamplesTotal" :height="null"> <template> - <el-table-column - prop="index" - label="序号" - width="80" - ></el-table-column> - <el-table-column - prop="sampleName" - label="取样名称" - min-width="150" - ></el-table-column> - <el-table-column - prop="sampleCode" - label="取样样品编号" - min-width="150" - ></el-table-column> - <el-table-column - prop="temperature" - label="温度" - width="100" - ></el-table-column> - <el-table-column - prop="waterAmount" - label="加水量" - width="100" - ></el-table-column> - <el-table-column prop="ph" label="PH" width="100"></el-table-column> + <el-table-column type="index" label="序号" width="80"></el-table-column> + <el-table-column prop="samplingName" label="取样名称" width="150"></el-table-column> + <el-table-column prop="sampleCode" label="取样样品编号" width="150"></el-table-column> + <el-table-column prop="temperature" label="温度" width="150"></el-table-column> + <el-table-column prop="samplePh" label="PH" width="150"></el-table-column> + <el-table-column prop="waterAddition" label="加水量" width="150"></el-table-column> <template v-if="showReceivedColumns"> - <el-table-column - prop="additive1" - label="加辅1" - min-width="150" - ></el-table-column> - <el-table-column - prop="additive2" - label="加辅2" - min-width="150" - ></el-table-column> - <el-table-column - prop="additive3" - label="加辅3" - min-width="150" - ></el-table-column> - <el-table-column - prop="additive4" - label="加辅4" - min-width="150" - ></el-table-column> - <el-table-column - prop="additive5" - label="加辅5" - min-width="150" - ></el-table-column> + <el-table-column prop="addAuxiliaryOne" label="加辅1" width="150"></el-table-column> + <el-table-column prop="addAuxiliaryTwo" label="加辅2" width="150"></el-table-column> + <el-table-column prop="addAuxiliaryThree" label="加辅3" width="150"></el-table-column> + <el-table-column prop="addAuxiliaryFour" label="加辅4" width="150"></el-table-column> + <el-table-column prop="addAuxiliaryFive" label="加辅5" width="150"></el-table-column> + <el-table-column prop="addAuxiliarySix" label="加辅6" width="150"></el-table-column> + <el-table-column prop="addAuxiliarySeven" label="加辅7" width="150"></el-table-column> + <el-table-column prop="addAuxiliaryEight" label="加辅8" width="150"></el-table-column> + <el-table-column prop="addAuxiliaryNine" label="加辅9" width="150"></el-table-column> + <el-table-column prop="addAuxiliaryTen" label="加辅10" width="150"></el-table-column> </template> - <el-table-column - prop="sampleAmount" - label="取样量" - width="100" - ></el-table-column> - <el-table-column - prop="sendTime" - label="送样时间" - min-width="150" - ></el-table-column> - <el-table-column - prop="sender" - label="送样人" - width="100" - ></el-table-column> - <el-table-column - prop="receiveTime" - label="收样时间" - min-width="150" - ></el-table-column> - <el-table-column - prop="receiver" - label="收样人" - width="100" - ></el-table-column> - <el-table-column - prop="status" - label="状态" - width="100" - fixed="right" - ></el-table-column> + <el-table-column prop="sampleAmount" label="取样量" width="150"></el-table-column> + <el-table-column prop="sendTime" label="送样时间" width="150"></el-table-column> + <el-table-column prop="sendPersonName" label="送样人" width="150"></el-table-column> + <el-table-column prop="receiptsTime" label="收样时间" width="150"></el-table-column> + <el-table-column prop="receiptsPersonName" label="收样人" width="150"></el-table-column> + <el-table-column label="状态" prop="status" width="100" fixed="right"> + <template slot-scope="scope"> + <span>{{ scope.row.status == '3' ? '已接收' : '待接收' }}</span> + </template> + </el-table-column> </template> </Table> </div> @@ -282,104 +119,90 @@ </template> <script> +import { getDetail } from "../sampleManage/service"; + export default { - name: "SampleSubmission", + name: "SampleDeliveryRecord", data() { return { - showAdditives: true, - showReceivedColumns: true, - schedulingData: [ - { - planCode: "DD-EX001", - experimentCode: "DD-EX001", - experimentName: "名称名称名称", - notifyTime: "2025-1-2 14:50:19", - startTime: "2025-02-27", - endTime: "2025-06-06", - participants: "张弘, 李天浩, 陈三, 李四", - status: "已确认", - }, - ], - schedulingTotal: 1, + showPendingColumns: false, + showReceivedColumns: false, + schedulingData: [], + schedulingTotal: 0, form: { - sampleCode: "DD-25010BS01", + sampleCode: "", + id: "", }, - sampleList: [ - { - index: 1, - processTime: "2", - sampleName: "名称名称名称", - sampleCode: "314234321", - temperature: "34", - ph: "34", - waterAmount: "34", - additive1: "10g", - additive2: "5g", - additive3: "3g", - additive4: "", - additive5: "", - additive6: "", - additive7: "", - additive8: "", - additive9: "", - additive10: "", - sampleAmount: "34", - sampleTime: "2025-1-9 15:26:08", - photo: "@/assets/sample-photos/photo1.jpg", - operator: "张三", - status: "待发送", - }, - { - index: 2, - processTime: "4", - sampleName: "名称名称名称", - sampleCode: "314234321", - temperature: "23", - ph: "23", - waterAmount: "23", - additive1: "8g", - additive2: "4g", - additive3: "", - additive4: "", - additive5: "", - additive6: "", - additive7: "", - additive8: "", - additive9: "", - additive10: "", - sampleAmount: "23", - sampleTime: "2025-1-9 15:26:08", - photo: "@/assets/sample-photos/photo2.jpg", - operator: "李四", - status: "待接收", - }, - { - index: 3, - processTime: "8", - sampleName: "名称名称名称", - sampleCode: "314234321", - temperature: "23", - ph: "23", - waterAmount: "23", - additive1: "", - additive2: "", - additive3: "", - additive4: "", - additive5: "", - additive6: "", - additive7: "", - additive8: "", - additive9: "", - additive10: "", - sampleAmount: "23", - sampleTime: "2025-1-9 15:26:08", - photo: "@/assets/sample-photos/photo3.jpg", - operator: "王五", - status: "已接收", - }, - ], - sampleTotal: 3, + pendingSamples: [], + pendingSamplesTotal: 0, + receivedSamples: [], + receivedSamplesTotal: 0, + statusTypeMap: { + "-1": "info", + "1": "warning", + "2": "success", + "3": "info" + }, + statusTextMap: { + "-1": "草稿箱", + "1": "待确认", + "2": "已确认", + "3": "已封存" + }, }; + }, + created() { + const { id } = this.$route.query; + if (id) { + this.form.id = id; + this.getDetailData(id); + } + }, + methods: { + async getDetailData(id) { + try { + const res = await getDetail({ id }); + if (res) { + const detail = res; + this.form = { + ...this.form, + ...detail, + sampleCode: detail.samplingCode, + }; + + if (detail.experimentDispatch) { + this.schedulingData = [detail.experimentDispatch]; + } + + if (detail.samplingRecordOperations && detail.samplingRecordOperations.length > 0) { + this.pendingSamples = detail.samplingRecordOperations + .filter(item => String(item.status) === '2') + .map(item => ({ + ...item, + status: String(item.status) + })); + this.pendingSamplesTotal = this.pendingSamples.length; + + this.receivedSamples = detail.samplingRecordOperations + .filter(item => String(item.status) === '3') + .map(item => ({ + ...item, + status: String(item.status) + })); + this.receivedSamplesTotal = this.receivedSamples.length; + } + } + } catch (error) { + console.error('获取详情失败:', error); + this.$message.error('获取详情失败,请重试'); + } + }, + getStatusType(status) { + return this.statusTypeMap[status] || 'info'; + }, + getStatusText(status) { + return this.statusTextMap[status] || '未知状态'; + }, }, }; </script> @@ -426,15 +249,17 @@ margin: 20px 0; } - .table-header { - margin-bottom: 16px; - text-align: left; + .sub-title { + font-size: 16px; + font-weight: 500; + color: #333; + margin: 20px 0; + display: inline-block; } - .sample-photo { - width: 60px; - height: 60px; - object-fit: cover; + .pending-samples, + .received-samples { + margin-top: 20px; } } </style> \ No newline at end of file -- Gitblit v1.7.1