<!-- 标签---三行信息,测试、校准、限用、停用、封存、合格、禁用 --> <script name="LabelThreeInfo" lang="ts" setup> import type { Ref } from 'vue' import { onMounted, ref } from 'vue' import dayjs from 'dayjs' import { ElLoading, ElMessage } from 'element-plus' import { printHtml } from '@/utils/printUtils' import { useCreateQr } from '@/commonMethods/useCreateQr' const props = defineProps({ title: { // 标题 type: String, default: '测试', }, backgroundColor: { // 背景颜色 type: String, default: '#12cccc', }, dateTitle: { // 日期标题 type: String, default: '测试日期', }, personTitle: { // 人员标题 type: String, default: '测试人', }, deviceNo: { // 设备编号 type: String, default: '', }, }) const form = ref({ no: '', // 编号 date: '', // 日期 person: '', // 人员 }) const print = () => { printHtml('printData') } const qrCodeRef = ref() const qrUrl = ref('') // 二维码图片 watch(() => props.deviceNo, (newValue) => { if (newValue) { qrUrl.value = useCreateQr(newValue)! } }, { immediate: true }) defineExpose({ print }) </script> <template> <div id="printData" class="three-info"> <div class="left"> <div class="banner"> <img style="width: 46px; height: 32px;" src="../../../../../../assets/images/login-image-new/logo-border.png"> <span class="title">{{ props.title }}</span> </div> <div class="data-area"> <el-form ref="formRef" :model="form" :label-width="80" label-position="right" > <el-form-item label="编号" prop="deviceNo"> <el-input v-model="props.deviceNo" /> </el-form-item> <el-form-item :label="props.dateTitle" prop="date"> <el-input v-model="form.date" /> </el-form-item> <el-form-item :label="props.personTitle" prop="person"> <el-input v-model="form.person" /> </el-form-item> </el-form> <div style="display: flex;justify-content: center;align-items: center;"> <el-image style="width: 160px; height: 160px;margin-left: 10px;" :src="qrUrl" /> </div> </div> </div> <!-- <div class="right"> <el-image style="width: 46px; height: 32px;background: red;" :src="qrUrl" /> </div> --> </div> </template> <style lang="scss" scoped> .three-info { padding: 10px 20px 20px; display: flex; border-radius: 10px; // width: fit-content; background-color: v-bind(backgroundColor); // width: 400px; // height: 260px; width: 500px; height: 300px; .left { flex: 1; .banner { display: flex; align-items: center; margin-bottom: 20px; .title { flex: 1; font-weight: 600; font-size: 24px; color: #fff; margin-left: -20px; text-align: center; } } .data-area { background-color: #fff; padding: 20px 0 20px 10px; border-radius: 2px; display: flex; } } } </style> <style lang="scss"> .three-info { .el-form-item--default .el-form-item__label { // color: v-bind(backgroundColor); color: #000; } .el-input__wrapper { border-bottom: 1px solid v-bind(backgroundColor); box-shadow: none; border-radius: 0; padding: 0 10px; } } </style>