pull/161/head
Xinyan 2023-06-02 19:04:05 +08:00
parent 992ee5db52
commit 45657ac1b9
3 changed files with 106 additions and 1 deletions

View File

@ -0,0 +1,3 @@
import Barcode from './src/Barcode.vue'
export { Barcode }

View File

@ -0,0 +1,101 @@
<template>
<div>
<canvas ref="barcodeRef" v-show="valid"></canvas>
<div v-show="!valid">
<slot></slot>
</div>
</div>
</template>
<script setup>
import { ref, onMounted, defineProps } from 'vue'
import JsBarcode from 'jsbarcode'
const props = defineProps({
value: [String, Number],
//使
format: {
type: [String],
default: "CODE39"
},
//
width: {
type:[String, Number],
default: 3
},
height: {
type:[String, Number],
default: 100
},
//
text: [String, Number],
//使
fontOptions: {
type: [String],
default: "bold italic"
},
//
font: [String, Number],
//
textAlign: [String],
//
textPosition: [String],
//
textMargin: [String, Number],
//
fontSize: {
type:[String, Number],
default: 15
},
//
lineColor: [String],
//
background: {
type:[String],
default:"#eee"
},
//
margin: [String, Number],
//
displayValue: {
type: [String, Boolean],
default: true
}
})
const settings = {
format: props.format,//使
width: props.width,//
height: props.height,//
displayValue: props.displayValue,//
text: props.text,//
fontOptions: props.fontOptions,//使
font: props.font,//
textAlign: props.textAlign,//
textPosition: props.textPosition,//
textMargin: props.textMargin,//
fontSize: props.fontSize,//
background: props.background,//
lineColor: props.lineColor,//
margin: props.margin//
}
const removeUndefinedProps = (obj) => {
for (let prop in obj) {
if (obj.hasOwnProperty(prop) && obj[prop] === undefined) {
delete obj[prop]
}
}
}
const valid = ref(true)
const barcodeRef = ref(null)
onMounted(() => {
removeUndefinedProps(settings)
render()
})
const render = () => {
JsBarcode(barcodeRef.value, props.value, settings)
}
</script>

View File

@ -11,7 +11,7 @@
<el-input v-model="formData.name" placeholder="请输入名字" />
</el-form-item>
<el-form-item label="描述">
<Editor v-model="formData.description" height="150px" />
<Qrcode :logo="logoImg" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="formData.status" placeholder="请选择状态">
@ -33,6 +33,7 @@
<script setup lang="ts">
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import * as GroupApi from '@/api/system/group'
import logoImg from '@/assets/imgs/logo.png'
const { t } = useI18n() //
const message = useMessage() //