|
@@ -1,88 +1,93 @@
|
|
|
<template>
|
|
|
- <div class="hc-page-box">
|
|
|
- <HcCard title="测试">
|
|
|
- <div v-loading="loading" element-loading-text="加载文件并初始渲染中..." class="h-full">
|
|
|
- <div :id="`pdfView+${id}`" class="h-full" />
|
|
|
- </div>
|
|
|
- </HcCard>
|
|
|
+ <div v-loading="loading" element-loading-text="加载文件并初始渲染中..." class="h-full">
|
|
|
+ <div :id="`pdf-view-${uuid}`" class="h-full" />
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
import { onMounted, ref, watch } from 'vue'
|
|
|
import HcPdfSign from '~src/plugins/HcPdfSign'
|
|
|
-import userApi from '~api/userInfo/index'
|
|
|
+import { getArrValue, getRandom } from 'js-fast-way'
|
|
|
|
|
|
//参数
|
|
|
const props = defineProps({
|
|
|
- src: {
|
|
|
+ sign: {
|
|
|
type: [String, Number],
|
|
|
default: '',
|
|
|
},
|
|
|
- id:{
|
|
|
+ src: {
|
|
|
type: [String, Number],
|
|
|
default: '',
|
|
|
},
|
|
|
-
|
|
|
+ batch: {
|
|
|
+ type: Boolean,
|
|
|
+ default: false,
|
|
|
+ },
|
|
|
+ dom: {
|
|
|
+ type: Array,
|
|
|
+ default: () => ([]),
|
|
|
+ },
|
|
|
})
|
|
|
+
|
|
|
//事件
|
|
|
const emit = defineEmits(['change'])
|
|
|
const pdf = ref(props.src)
|
|
|
-const id = ref(props.id)
|
|
|
-const loading = ref(true)
|
|
|
-//监听
|
|
|
-watch(() => [
|
|
|
- props.src,
|
|
|
- props.id,
|
|
|
-], ([src, Id]) => {
|
|
|
- pdf.value = src
|
|
|
- id.value = Id
|
|
|
- getPdf()
|
|
|
+const uuid = getRandom(6)
|
|
|
+const signImg = ref(props.sign)
|
|
|
+const loading = ref(false)
|
|
|
|
|
|
-
|
|
|
-
|
|
|
+//监听PDFurl
|
|
|
+watch(() => props.src, (src) => {
|
|
|
+ if (src) {
|
|
|
+ loading.value = true
|
|
|
+ pdf.value = src
|
|
|
+ getPdf()
|
|
|
+ } else {
|
|
|
+ noPdfUrl()
|
|
|
+ }
|
|
|
})
|
|
|
|
|
|
+//监听签章图片
|
|
|
+watch(() => props.sign, (val) => {
|
|
|
+ signImg.value = val
|
|
|
+})
|
|
|
|
|
|
-//获取用户签字体
|
|
|
-const logoName = ref('')
|
|
|
-//获取用户信息
|
|
|
-const queryCurrentUserData = async () => {
|
|
|
- const { error, code, data } = await userApi.queryCurrentUserData()
|
|
|
- if (!error && code === 200) {
|
|
|
- logoName.value = data?.signatureUrl
|
|
|
- } else {
|
|
|
- logoName.value = ''
|
|
|
- }
|
|
|
-}
|
|
|
+//监听是否批量签章
|
|
|
+watch(() => props.batch, (val) => {
|
|
|
+ HcPdfSign.setBatchSign(val)
|
|
|
+})
|
|
|
|
|
|
-const getPdf = ()=>{
|
|
|
- //创建PDF签章控件以及相关功能
|
|
|
- HcPdfSign.createPdf({
|
|
|
- ele: 'pdfView' + id.value, //挂载元素的id
|
|
|
+//渲染完成
|
|
|
+onMounted(()=> {
|
|
|
+ getPdf()
|
|
|
+})
|
|
|
+
|
|
|
+//设置PDF签章实例
|
|
|
+const getPdf = () => {
|
|
|
+ if (!pdf.value) {
|
|
|
+ noPdfUrl()
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ HcPdfSign.createPdf({
|
|
|
+ ele: 'pdf-view-' + uuid, //挂载元素的id
|
|
|
url: pdf.value, //pdf的url地址
|
|
|
- img: logoName.value, //签章图片的url地址
|
|
|
+ img: signImg.value, //签章图片的url地址
|
|
|
//加载完成
|
|
|
load: () => {
|
|
|
+ //恢复签章记录
|
|
|
+ HcPdfSign.setPdfSignImg(getArrValue(props.dom))
|
|
|
loading.value = false
|
|
|
},
|
|
|
//签章数据改变
|
|
|
change: (data) => {
|
|
|
- console.log(data, '签章数据')
|
|
|
-
|
|
|
-
|
|
|
- // emit('change', data)
|
|
|
+ emit('change', data)
|
|
|
},
|
|
|
})
|
|
|
-
|
|
|
- //批量签章
|
|
|
- HcPdfSign.setBatchSign(true)
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-onMounted(()=> {
|
|
|
- queryCurrentUserData().then(()=>{
|
|
|
- getPdf()
|
|
|
- })
|
|
|
-})
|
|
|
+const noPdfUrl = () => {
|
|
|
+ pdf.value = ''
|
|
|
+ loading.value = false
|
|
|
+ document.getElementById('pdf-view-' + uuid).innerHTML = ''
|
|
|
+}
|
|
|
</script>
|