<template>
|
<el-dialog
|
:visible.sync="visible"
|
title=""
|
width="520px"
|
:close-on-click-modal="false"
|
custom-class="record-detail-dialog"
|
@close="handleClose"
|
>
|
<div class="dialog-content">
|
<div class="confirm-tip">
|
是否确认该项菌种信息?
|
<span class="danger">确认后将无法再次编辑菌种传代项内容</span>
|
</div>
|
<el-form :model="form" :rules="rules" ref="form" label-position="top">
|
<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-form>
|
</div>
|
<div class="footer-btns">
|
<el-button @click="handleClose" style="margin-right: 16px;">取消</el-button>
|
<el-button type="primary" @click="handleConfirm">确认</el-button>
|
</div>
|
<signature-canvas :visible.sync="showSignature" @confirm="handleSignatureConfirm" />
|
</el-dialog>
|
</template>
|
|
<script>
|
import SignatureCanvas from '@/components/SignatureCanvas.vue';
|
export default {
|
name: 'ConfirmStorageDialog',
|
components: { SignatureCanvas },
|
props: {
|
visible: {
|
type: Boolean,
|
default: false
|
}
|
},
|
data() {
|
return {
|
form: {
|
signature: ''
|
},
|
rules: {
|
signature: [
|
{ required: true, message: '请签名', trigger: 'change' }
|
]
|
},
|
showSignature: false
|
}
|
},
|
methods: {
|
handleClose() {
|
this.$emit('update:visible', false)
|
},
|
handleConfirm() {
|
this.$refs.form.validate(valid => {
|
if (!valid) return
|
this.$emit('confirm', { ...this.form })
|
this.handleClose()
|
})
|
},
|
handleSignatureConfirm(dataUrl) {
|
this.form.signature = dataUrl
|
this.showSignature = false
|
}
|
}
|
}
|
</script>
|
|
<style lang="less" scoped>
|
.confirm-tip {
|
color: #f5222d;
|
font-size: 16px;
|
margin-bottom: 24px;
|
.danger {
|
margin-left: 12px;
|
}
|
}
|
.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;
|
}
|
.footer-btns {
|
display: flex;
|
justify-content: center;
|
padding: 24px;
|
padding-top: 0;
|
.el-button {
|
width: 150px;
|
}
|
}
|
</style>
|