|
@@ -0,0 +1,44 @@
|
|
|
+<script lang="ts">
|
|
|
+export default {
|
|
|
+ name: "ReBarcode"
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<script setup lang="ts">
|
|
|
+import JsBarcode from "jsbarcode";
|
|
|
+import { ref, onMounted } from "vue";
|
|
|
+
|
|
|
+const props = defineProps({
|
|
|
+ tag: {
|
|
|
+ type: String,
|
|
|
+ default: "canvas"
|
|
|
+ },
|
|
|
+ text: {
|
|
|
+ type: String,
|
|
|
+ default: null
|
|
|
+ },
|
|
|
+ // 完整配置 https://github.com/lindell/JsBarcode/wiki/Options
|
|
|
+ options: {
|
|
|
+ type: Object,
|
|
|
+ default() {
|
|
|
+ return {};
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // type 相当于 options.format,如果 type 和 options.format 同时存在,type 值优先;
|
|
|
+ type: {
|
|
|
+ type: String,
|
|
|
+ default: "CODE128"
|
|
|
+ }
|
|
|
+});
|
|
|
+
|
|
|
+const wrapEl = ref(null);
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ const opt = { ...props.options, format: props.type };
|
|
|
+ JsBarcode(wrapEl.value, props.text, opt);
|
|
|
+});
|
|
|
+</script>
|
|
|
+
|
|
|
+<template>
|
|
|
+ <component :is="tag" ref="wrapEl" />
|
|
|
+</template>
|