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/preserve-strain-record-dialog.vue |  153 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 153 insertions(+), 0 deletions(-)

diff --git a/culture/src/views/strain-library/breeding-record/preserve-strain-record-dialog.vue b/culture/src/views/strain-library/breeding-record/preserve-strain-record-dialog.vue
new file mode 100644
index 0000000..180c929
--- /dev/null
+++ b/culture/src/views/strain-library/breeding-record/preserve-strain-record-dialog.vue
@@ -0,0 +1,153 @@
+<template>
+  <el-dialog
+    :visible.sync="visible"
+    title="新增菌种保藏记录"
+    width="900px"
+    @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="strainCode" required>
+            <el-input v-model="form.strainCode" placeholder="请输入" />
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-form-item label="实验验证结论" prop="experimentConclusion" required>
+        <el-input type="textarea" :rows="4" v-model="form.experimentConclusion" placeholder="请输入" />
+      </el-form-item>
+      <el-row :gutter="20">
+        <el-col :span="12">
+          <el-form-item label="保藏方法" prop="preserveMethod" required>
+            <el-input v-model="form.preserveMethod" placeholder="请输入" />
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="保藏菌种编号" prop="preserveStrainCode" required>
+            <el-input v-model="form.preserveStrainCode" 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: {
+        strainCode: '',
+        experimentConclusion: '',
+        preserveMethod: '',
+        preserveStrainCode: '',
+        signature: '',
+      },
+      rules: {
+        strainCode: [
+          { required: true, message: '请输入用于保藏的菌种编号', trigger: 'blur' },
+        ],
+        experimentConclusion: [
+          { required: true, message: '请输入实验验证结论', trigger: 'blur' },
+        ],
+        preserveMethod: [
+          { required: true, message: '请输入保藏方法', trigger: 'blur' },
+        ],
+        preserveStrainCode: [
+          { required: true, message: '请输入保藏菌种编号', trigger: 'blur' },
+        ],
+        signature: [
+          { required: true, message: '请签名', trigger: 'change' },
+        ],
+      },
+      showSignature: false,
+    };
+  },
+  methods: {
+    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> 
\ No newline at end of file

--
Gitblit v1.7.1