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 --- culture/src/views/strain-library/breeding-record/inoculation-slope-record-dialog.vue | 186 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 186 insertions(+), 0 deletions(-) diff --git a/culture/src/views/strain-library/breeding-record/inoculation-slope-record-dialog.vue b/culture/src/views/strain-library/breeding-record/inoculation-slope-record-dialog.vue new file mode 100644 index 0000000..42feee3 --- /dev/null +++ b/culture/src/views/strain-library/breeding-record/inoculation-slope-record-dialog.vue @@ -0,0 +1,186 @@ +<template> + <el-dialog + :visible.sync="visible" + title="新增接种斜面记录" + width="700px" + @close="handleClose" + > + <el-form + :model="form" + :rules="rules" + ref="form" + label-width="120px" + label-position="top" + > + <el-row :gutter="20"> + <el-col :span="12"> + <el-form-item label="分离菌落编号" prop="colonyCode" required> + <el-input v-model="form.colonyCode" placeholder="请输入" /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="接种斜面编号" prop="slopeCode" required> + <el-input v-model="form.slopeCode" placeholder="请输入" /> + </el-form-item> + </el-col> + </el-row> + <el-form-item label="保存/废弃" prop="status" required> + <el-button + :type="form.status === '保存' ? 'primary' : 'default'" + @click="form.status = '保存'" + >保存</el-button + > + <el-button + :type="form.status === '废弃' ? 'primary' : 'default'" + @click="form.status = '废弃'" + >废弃</el-button + > + </el-form-item> + <el-row :gutter="20"> + <el-col :span="12"> + <el-form-item label="菌种入库时间" prop="storageTime" required> + <el-input + v-model="form.storageTime" + disabled + placeholder="自动回填" + /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="接种操作时间" prop="operationTime" required> + <el-input + v-model="form.operationTime" + disabled + placeholder="自动填入" + /> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20"> + <el-col :span="12"> + <el-form-item required> + <template #label> + <span>接种操作人签字</span> + <el-button type="primary" class="sign-btn" @click="showSignature = true">签名</el-button> + </template> + <div class="signature-area" :class="{ 'waiting': !form.signature }"> + <template v-if="form.signature"> + <img :src="form.signature" alt="接种操作人签字" /> + </template> + <template v-else> + <span class="waiting-text">等待确认</span> + </template> + </div> + </el-form-item> + </el-col> + </el-row> + </el-form> + <div style="text-align: center; margin-top: 20px"> + <el-button @click="handleClose" style="margin-right: 16px;">取消</el-button> + <el-button type="primary" @click="handleSave">确认</el-button> + </div> + <signature-canvas :visible.sync="showSignature" @confirm="handleSignatureConfirm" /> + </el-dialog> +</template> + +<script> +import SignatureCanvas from '@/components/SignatureCanvas.vue'; + +export default { + components: { SignatureCanvas }, + props: { visible: Boolean }, + data() { + return { + form: { + colonyCode: "", + slopeCode: "", + status: "保存", + storageTime: this.getNowTime(), + operationTime: this.getNowTime(), + signature: "", + }, + rules: { + colonyCode: [ + { required: true, message: "请输入分离菌落编号", trigger: "blur" }, + ], + slopeCode: [ + { required: true, message: "请输入接种斜面编号", trigger: "blur" }, + ], + status: [ + { required: true, message: "请选择保存/废弃", trigger: "change" }, + ], + signature: [{ required: true, message: "请签名", trigger: "change" }], + }, + showSignature: false, + }; + }, + methods: { + getNowTime() { + const d = new Date(); + return ( + d.getFullYear() + + "-" + + (d.getMonth() + 1).toString().padStart(2, "0") + + "-" + + d.getDate().toString().padStart(2, "0") + + " " + + d.getHours().toString().padStart(2, "0") + + ":" + + d.getMinutes().toString().padStart(2, "0") + ); + }, + handleSave() { + this.$refs.form.validate((valid) => { + if (valid) { + this.$emit("save", { ...this.form }); + this.handleClose(); + } + }); + }, + handleClose() { + this.$emit("update:visible", false); + }, + handleSignatureConfirm(dataUrl) { + this.form.signature = dataUrl; + this.showSignature = false; + }, + }, +}; +</script> + +<style scoped> +.signature-area { + height: 120px; + width: 100%; + background: #F5F7FA; + border-radius: 4px; + display: flex; + align-items: center; + justify-content: center; + border: 1px solid #DCDFE6; + overflow: hidden; + padding: 0; +} +.signature-area.waiting { + border-style: dashed; + background: #FAFAFA; +} +.signature-area img { + width: 100%; + height: 100%; + object-fit: cover; + display: block; +} +.waiting-text { + color: #909399; + font-size: 14px; +} +.sign-btn { + height: 32px; + border-radius: 4px; + font-size: 14px; + padding: 0 20px; + font-weight: 400; + margin-left: 12px; +} +</style> -- Gitblit v1.7.1