ZaiZai 1 жил өмнө
parent
commit
a4a8c9ce2a

+ 19 - 19
public/plugins/pdfjs/web/viewer.html

@@ -159,45 +159,45 @@ See https://github.com/adobe-type-tools/cmap-resources
               <span data-l10n-id="open_file_label">Open</span>
             </button>
 
-            <button id="secondaryPrint" class="secondaryToolbarButton visibleMediumView" title="Print" tabindex="52" data-l10n-id="print">
+            <button id="secondaryPrint" class="secondaryToolbarButton visibleMediumView" title="Print" tabindex="52" data-l10n-id="print" style="display: none">
               <span data-l10n-id="print_label">Print</span>
             </button>
 
-            <button id="secondaryDownload" class="secondaryToolbarButton visibleMediumView" title="Save" tabindex="53" data-l10n-id="save">
+            <button id="secondaryDownload" class="secondaryToolbarButton visibleMediumView" title="Save" tabindex="53" data-l10n-id="save" style="display: none">
               <span data-l10n-id="save_label">Save</span>
             </button>
 
-            <div class="horizontalToolbarSeparator visibleLargeView"></div>
+            <div class="horizontalToolbarSeparator visibleLargeView" style="display: none"></div>
 
-            <button id="presentationMode" class="secondaryToolbarButton" title="Switch to Presentation Mode" tabindex="54" data-l10n-id="presentation_mode">
+            <button id="presentationMode" class="secondaryToolbarButton" title="Switch to Presentation Mode" tabindex="54" data-l10n-id="presentation_mode" style="display: none">
               <span data-l10n-id="presentation_mode_label">Presentation Mode</span>
             </button>
 
-            <a href="#" id="viewBookmark" class="secondaryToolbarButton" title="Current Page (View URL from Current Page)" tabindex="55" data-l10n-id="bookmark1">
+            <a href="#" id="viewBookmark" class="secondaryToolbarButton" title="Current Page (View URL from Current Page)" tabindex="55" data-l10n-id="bookmark1" style="display: none">
               <span data-l10n-id="bookmark1_label">Current Page</span>
             </a>
 
-            <div id="viewBookmarkSeparator" class="horizontalToolbarSeparator"></div>
+            <div id="viewBookmarkSeparator" class="horizontalToolbarSeparator" style="display: none"></div>
 
-            <button id="firstPage" class="secondaryToolbarButton" title="Go to First Page" tabindex="56" data-l10n-id="first_page">
+            <button id="firstPage" class="secondaryToolbarButton" title="Go to First Page" tabindex="56" data-l10n-id="first_page" style="display: none">
               <span data-l10n-id="first_page_label">Go to First Page</span>
             </button>
-            <button id="lastPage" class="secondaryToolbarButton" title="Go to Last Page" tabindex="57" data-l10n-id="last_page">
+            <button id="lastPage" class="secondaryToolbarButton" title="Go to Last Page" tabindex="57" data-l10n-id="last_page" style="display: none">
               <span data-l10n-id="last_page_label">Go to Last Page</span>
             </button>
 
-            <div class="horizontalToolbarSeparator"></div>
+            <div class="horizontalToolbarSeparator" style="display: none"></div>
 
-            <button id="pageRotateCw" class="secondaryToolbarButton" title="Rotate Clockwise" tabindex="58" data-l10n-id="page_rotate_cw">
+            <button id="pageRotateCw" class="secondaryToolbarButton" title="Rotate Clockwise" tabindex="58" data-l10n-id="page_rotate_cw" style="display: none">
               <span data-l10n-id="page_rotate_cw_label">Rotate Clockwise</span>
             </button>
-            <button id="pageRotateCcw" class="secondaryToolbarButton" title="Rotate Counterclockwise" tabindex="59" data-l10n-id="page_rotate_ccw">
+            <button id="pageRotateCcw" class="secondaryToolbarButton" title="Rotate Counterclockwise" tabindex="59" data-l10n-id="page_rotate_ccw" style="display: none">
               <span data-l10n-id="page_rotate_ccw_label">Rotate Counterclockwise</span>
             </button>
 
-            <div class="horizontalToolbarSeparator"></div>
+            <div class="horizontalToolbarSeparator" style="display: none"></div>
 
-            <div id="cursorToolButtons" role="radiogroup">
+            <div id="cursorToolButtons" role="radiogroup" style="display: none">
               <button id="cursorSelectTool" class="secondaryToolbarButton toggled" title="Enable Text Selection Tool" tabindex="60" data-l10n-id="cursor_text_select_tool" role="radio" aria-checked="true">
                 <span data-l10n-id="cursor_text_select_tool_label">Text Selection Tool</span>
               </button>
@@ -206,9 +206,9 @@ See https://github.com/adobe-type-tools/cmap-resources
               </button>
             </div>
 
-            <div class="horizontalToolbarSeparator"></div>
+            <div class="horizontalToolbarSeparator" style="display: none"></div>
 
-            <div id="scrollModeButtons" role="radiogroup">
+            <div id="scrollModeButtons" role="radiogroup" style="display: none">
               <button id="scrollPage" class="secondaryToolbarButton" title="Use Page Scrolling" tabindex="62" data-l10n-id="scroll_page" role="radio" aria-checked="false">
                 <span data-l10n-id="scroll_page_label">Page Scrolling</span>
               </button>
@@ -223,9 +223,9 @@ See https://github.com/adobe-type-tools/cmap-resources
               </button>
             </div>
 
-            <div class="horizontalToolbarSeparator"></div>
+            <div class="horizontalToolbarSeparator" style="display: none"></div>
 
-            <div id="spreadModeButtons" role="radiogroup">
+            <div id="spreadModeButtons" role="radiogroup" style="display: none">
               <button id="spreadNone" class="secondaryToolbarButton toggled" title="Do not join page spreads" tabindex="66" data-l10n-id="spread_none" role="radio" aria-checked="true">
                 <span data-l10n-id="spread_none_label">No Spreads</span>
               </button>
@@ -237,7 +237,7 @@ See https://github.com/adobe-type-tools/cmap-resources
               </button>
             </div>
 
-            <div class="horizontalToolbarSeparator"></div>
+            <div class="horizontalToolbarSeparator" style="display: none"></div>
 
             <button id="documentProperties" class="secondaryToolbarButton" title="Document Properties…" tabindex="69" data-l10n-id="document_properties" aria-controls="documentPropertiesDialog">
               <span data-l10n-id="document_properties_label">Document Properties…</span>
@@ -301,7 +301,7 @@ See https://github.com/adobe-type-tools/cmap-resources
                   <span data-l10n-id="tools_label">Tools</span>
                 </button>
               </div>
-              <div id="toolbarViewerMiddle">
+              <div id="toolbarViewerMiddle" style="display: none">
                 <div class="splitToolbarButton">
                   <button id="zoomOut" class="toolbarButton" title="Zoom Out" tabindex="21" data-l10n-id="zoom_out">
                     <span data-l10n-id="zoom_out_label">Zoom Out</span>

+ 5 - 5
public/plugins/pdfjs/web/viewer.js

@@ -606,27 +606,27 @@ const PDFViewerApplication = {
     if (this.pdfViewer.isInPresentationMode) {
       return;
     }
-    this.pdfViewer.increaseScale({
+    /*this.pdfViewer.increaseScale({
       drawingDelay: _app_options.AppOptions.get("defaultZoomDelay"),
       steps,
       scaleFactor
-    });
+    });*/
   },
   zoomOut(steps, scaleFactor) {
     if (this.pdfViewer.isInPresentationMode) {
       return;
     }
-    this.pdfViewer.decreaseScale({
+    /*this.pdfViewer.decreaseScale({
       drawingDelay: _app_options.AppOptions.get("defaultZoomDelay"),
       steps,
       scaleFactor
-    });
+    });*/
   },
   zoomReset() {
     if (this.pdfViewer.isInPresentationMode) {
       return;
     }
-    this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
+    //this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE;
   },
   get pagesCount() {
     return this.pdfDocument ? this.pdfDocument.numPages : 0;

+ 1 - 1
src/config/index.json

@@ -1,6 +1,6 @@
 {
     "version": "202304141558",
-    "target": "http://47.110.251.215:8090",
+    "target": "http://192.168.0.109:8090",
     "smsPhone": "",
     "vite": {
         "port": 5175,

+ 86 - 83
src/layout/index.vue

@@ -1,54 +1,58 @@
 <template>
     <el-container class="hc-layout-box">
-        <div class="hc-app-bg-box" v-show="AppTheme === 'dark'">
+        <div v-show="AppTheme === 'dark'" class="hc-app-bg-box">
             <img :src="appViewBg" alt="" crossOrigin="anonymous">
         </div>
-        <el-aside :width="isCollapse?'100px':'250px'" class="hc-aside-box" :class="[isCollapse?'is-collapse':'']" v-show="MenuBarKey !== 'home-index'">
+        <el-aside v-show="MenuBarKey !== 'home-index'" :width="isCollapse ? '100px' : '250px'" class="hc-aside-box" :class="[isCollapse ? 'is-collapse' : '']">
             <div class="hc-aside-logo-box" @click="logoClick">
-                <img :src="appLogoIcon" alt="" id="hc-logo-icon">
-                <img :src="appLogoName" alt="" id="hc-logo-name" v-show="!isCollapse">
+                <img id="hc-logo-icon" :src="appLogoIcon" alt="">
+                <img v-show="!isCollapse" id="hc-logo-name" :src="appLogoName" alt="">
             </div>
             <div class="hc-aside-menu-box">
                 <el-scrollbar>
-                    <MenuBar :datas="MenuBarData" :cur="MenuBarKey" :collapse="isCollapse" @change="MenuBarChange" :msgCount="msgCount"/>
+                    <MenuBar :datas="MenuBarData" :cur="MenuBarKey" :collapse="isCollapse" :msg-count="msgCount" @change="MenuBarChange" />
                 </el-scrollbar>
             </div>
             <div class="hc-aside-bar-box">
-                <div :class="isCollapse?'':'active'" @click="collapseChange(false)">
-                    <HcIcon name="menu-unfold"/>
+                <div :class="isCollapse ? '' : 'active'" @click="collapseChange(false)">
+                    <HcIcon name="menu-unfold" />
                 </div>
-                <div :class="isCollapse?'active':''" @click="collapseChange(true)" v-show="!isCollapse">
-                    <HcIcon name="menu-fold"/>
+                <div v-show="!isCollapse" :class="isCollapse ? 'active' : ''" @click="collapseChange(true)">
+                    <HcIcon name="menu-fold" />
                 </div>
             </div>
         </el-aside>
         <el-container class="hc-container-view">
-            <el-header class="hc-header-view" v-show="MenuBarKey !== 'home-index'">
-                <div class="hc-header-page-name" id="hc-header-page-name">{{RoutesTitle}}</div>
+            <el-header v-show="MenuBarKey !== 'home-index'" class="hc-header-view">
+                <div id="hc-header-page-name" class="hc-header-page-name">
+                    {{ RoutesTitle }}
+                </div>
                 <div class="hc-header-top-menu-bar">
-                    <TopMenuBar/>
+                    <TopMenuBar />
                 </div>
                 <div class="hc-header-content">
-                    <div class="hc-header-cascader-box" v-if="userRoleId !== website.role_id">
-                        <div class="project-name-box">{{projectInfo.projectAlias}} / {{contractInfo.name}}</div>
-                        <el-cascader ref="ElCascaderRef" v-model="projectValue" :options="projectContract" :props="projectProps" placeholder="请选择项目"  @change="projectContractChange"/>
+                    <div v-if="userRoleId !== website.role_id" class="hc-header-cascader-box">
+                        <div class="project-name-box">
+                            {{ projectInfo.projectAlias }} / {{ contractInfo.name }}
+                        </div>
+                        <el-cascader ref="ElCascaderRef" v-model="projectValue" :options="projectContract" :props="projectProps" placeholder="请选择项目" @change="projectContractChange" />
                     </div>
-                    <div class="hc-header-project-name-box" @click="userProjectClick" v-else>
+                    <div v-else class="hc-header-project-name-box" @click="userProjectClick">
                         <span class="project-icon">
-                            <HcIcon name="arrow-right"/>
+                            <HcIcon name="arrow-right" />
                         </span>
-                        <span class="project-name">{{projectInfoData?.projectName??'请先选择项目'}}</span>
+                        <span class="project-name">{{ projectInfoData?.projectName ?? '请先选择项目' }}</span>
                     </div>
-                    <HelpInfoBar></HelpInfoBar>
-                    <ConfigBar></ConfigBar>
-                    <UserInfoBar></UserInfoBar>
+                    <HelpInfoBar />
+                    <ConfigBar />
+                    <UserInfoBar />
                 </div>
             </el-header>
-            <el-main class="hc-main-box" id="hc-main-box" :class="MenuBarKey">
-                <router-view v-slot="{ Component }" v-if="reloadRouter">
+            <el-main id="hc-main-box" class="hc-main-box" :class="MenuBarKey">
+                <router-view v-if="reloadRouter" v-slot="{ Component }">
                     <transition name="fade-transform">
                         <keep-alive include="ProductList">
-                            <component :is="Component" :msgCount="msgCount" :msgChange="msgChange"/>
+                            <component :is="Component" :msg-count="msgCount" :msg-change="msgChange" />
                         </keep-alive>
                     </transition>
                 </router-view>
@@ -58,19 +62,19 @@
 </template>
 
 <script setup>
-import {onMounted, ref, nextTick, watch} from "vue";
-import {useRouter, useRoute} from 'vue-router'
-import {useAppStore} from "~src/store";
-import MenuBar from "./modules/MenuBar.vue"
-import TopMenuBar from "./modules/TopMenuBar.vue"
-import HelpInfoBar from "./modules/HelpInfoBar.vue"
-import UserInfoBar from "./modules/UserInfoBar.vue"
-import ConfigBar from "./modules/ConfigBar.vue"
-import {initButtons,initProjectContract} from "~sto/app";
+import { nextTick, onMounted, ref, watch } from 'vue'
+import { useRoute, useRouter } from 'vue-router'
+import { useAppStore } from '~src/store'
+import MenuBar from './modules/MenuBar.vue'
+import TopMenuBar from './modules/TopMenuBar.vue'
+import HelpInfoBar from './modules/HelpInfoBar.vue'
+import UserInfoBar from './modules/UserInfoBar.vue'
+import ConfigBar from './modules/ConfigBar.vue'
+import { initButtons, initProjectContract } from '~sto/app'
 import website from '~src/config/index'
-import appViewBg from "~src/assets/view/bg.png";
-import {setImageColor, setImageColorStyle} from "js-fast-way";
-import {setAppName} from "~uti/tools";
+import appViewBg from '~src/assets/view/bg.png'
+import { setImageColor, setImageColorStyle } from 'js-fast-way'
+import { setAppName } from '~uti/tools'
 
 //初始组合式
 const router = useRouter()
@@ -83,30 +87,30 @@ const appLogoIcon = ref(useAppState.getLogoIcon)
 const appLogoName = ref(useAppState.getLogoName)
 
 //路由参数
-const routerQuery = useRoutes?.query;
+const routerQuery = useRoutes?.query
 const reloadRouter = ref(true)
-const BarMenuKey = useRoutes?.name ?? 'home-index';
-const BarMenuTitle = useRoutes?.meta?.title ?? '';
+const BarMenuKey = useRoutes?.name ?? 'home-index'
+const BarMenuTitle = useRoutes?.meta?.title ?? ''
 
 //主题和色调变量
-const AppColor = ref(useAppState.getColor);
-const AppTheme = ref(useAppState.getTheme);
+const AppColor = ref(useAppState.getColor)
+const AppTheme = ref(useAppState.getTheme)
 
 //顶部菜单数据和相关处理
-const MenuBarKey = ref(BarMenuKey);
-const RoutesName = ref(BarMenuKey);
-const RoutesTitle = ref(BarMenuTitle);
+const MenuBarKey = ref(BarMenuKey)
+const RoutesName = ref(BarMenuKey)
+const RoutesTitle = ref(BarMenuTitle)
 const MenuBarData = ref(useAppState.getMenus)
 const isCollapse = ref(useAppState.getCollapse)
-const userInfo = ref(useAppState.getUserInfo);
-const userRoleId = ref(useAppState.getRoleId);
-const projectInfoData = ref(useAppState.getProjectInfo);
+const userInfo = ref(useAppState.getUserInfo)
+const userRoleId = ref(useAppState.getRoleId)
+const projectInfoData = ref(useAppState.getProjectInfo)
 
 //项目合同段
-const projectInfo = ref({});
-const contractInfo = ref({});
+const projectInfo = ref({})
+const contractInfo = ref({})
 const projectContract = ref([])
-const projectValue = ref(null);
+const projectValue = ref(null)
 const projectProps = ref({
     value: 'id',
     label: 'projectAlias',
@@ -119,7 +123,7 @@ onMounted(() => {
     initProjectContract()
     if (userRoleId.value !== website.role_id) {
         const info = useAppState.getProjectContract || []
-        projectContractData(info);
+        projectContractData(info)
     }
     setIsCollapse(RoutesName.value)
     useAppState.barMenuName = BarMenuTitle
@@ -148,7 +152,7 @@ watch(() => [
     isCollapse.value = collapse
     setIsCollapse(RoutesName.value)
     if (userRoleId.value !== website.role_id) {
-        projectContractData(projectContractArr || []);
+        projectContractData(projectContractArr || [])
     } else {
         projectInfoData.value = projectInfo
     }
@@ -183,7 +187,7 @@ const setLogoNameColor = (theme) => {
         if (theme === 'light') {
             filter = 'invert(0%) sepia(100%) saturate(0%) hue-rotate(235deg) brightness(107%) contrast(103%)'
         }
-        document.getElementById('hc-logo-name').style.filter = filter;
+        document.getElementById('hc-logo-name').style.filter = filter
     } catch {}
 }
 
@@ -214,10 +218,10 @@ const projectContractData = (projectContractData) => {
         })
         //处理其他数据
         projectContract.value = projectContractData
-        const projectId =  useAppState.getProjectId     //项目ID
-        const contractId =  useAppState.getContractId   //合同段ID
-        const UserProjectInfo =  useAppState.getProjectInfo
-        const UserContractInfo =  useAppState.getContractInfo
+        const projectId = useAppState.getProjectId //项目ID
+        const contractId = useAppState.getContractId //合同段ID
+        const UserProjectInfo = useAppState.getProjectInfo
+        const UserContractInfo = useAppState.getContractInfo
         //查询缓存的选中ID是否存在
         const pid = projectContractData.findIndex(item => Number(item.id) === Number(projectId))
         const contractList = projectContractData[pid]?.contractInfoList || []
@@ -225,9 +229,9 @@ const projectContractData = (projectContractData) => {
         //如果缓存的选中ID不存在
         if (cid === -1) {
             //取项目数组中的第一个数据
-            let letProjectInfo = projectContractData[0];
+            let letProjectInfo = projectContractData[0]
             let contractInfoList = letProjectInfo?.contractInfoList || []
-            let letContractInfo = contractInfoList[0] || {};
+            let letContractInfo = contractInfoList[0] || {}
             projectValue.value = letContractInfo?.id
             projectInfo.value = letProjectInfo
             contractInfo.value = letContractInfo
@@ -252,9 +256,9 @@ const projectContractData = (projectContractData) => {
 //项目被选择
 const ElCascaderRef = ref(null)
 const projectContractChange = (val) => {
-    const Nodes = ElCascaderRef.value.getCheckedNodes();
-    const UserProjectInfo = Nodes[0].parent.data;
-    const UserContractInfo = Nodes[0].data;
+    const Nodes = ElCascaderRef.value.getCheckedNodes()
+    const UserProjectInfo = Nodes[0].parent.data
+    const UserContractInfo = Nodes[0].data
     //缓存项目数据
     useAppState.setProjectId(val[0])
     useAppState.setContractId(val[1])
@@ -263,7 +267,7 @@ const projectContractChange = (val) => {
     //更改界面更新
     projectInfo.value = UserProjectInfo
     contractInfo.value = UserContractInfo
-    window.$message?.info('切换了项目,数据更新中');
+    window.$message?.info('切换了项目,数据更新中')
     //刷新路由
     reloadRouter.value = false
     nextTick(()=>{
@@ -273,48 +277,48 @@ const projectContractChange = (val) => {
 
 //菜单被点击
 const MenuBarChange = (item) => {
-    MenuBarKey.value = item?.code;
+    MenuBarKey.value = item?.code
     setIsCollapse(item?.code)
-    router.push({name: item?.code});
+    router.push({ name: item?.code })
 }
 
 //首页
 const logoClick = () => {
     router.push({
-        name: useAppState.homeUrl
-    });
+        name: useAppState.homeUrl,
+    })
 }
 
 //项目档案汇总
 const userProjectClick = () => {
-    router.push({path: '/user/project'});
+    router.push({ path: '/user/project' })
 }
 const msgCount = ref({
 })
-const msgChange=ref(0)
+const msgChange = ref(0)
 //推送系统
-let socket;
+let socket
 const setInitSocket = () => {
-    const user_id = userInfo.value.user_id;
-    socket = new WebSocket(website.socket + user_id);
+    const user_id = userInfo.value.user_id
+    socket = new WebSocket(website.socket + user_id)
     try {
         socket.onopen = function (evt) {
-            console.log('websocket链接成功');
-        };
+            console.log('websocket链接成功')
+        }
         socket.onclose = function (evt) {
             console.log('websocket连接已断开')
-        };
-        socket.onmessage = function ({data}) {
+        }
+        socket.onmessage = function ({ data }) {
             if (data) {
                 msgCount.value = data
-                console.log(data,'消息信息');
+                console.log(data, '消息信息')
                 msgChange.value++
 
             }
-        };
-        socket.onerror = function ({data}) {
+        }
+        socket.onerror = function ({ data }) {
             console.log('发生错误:', data)
-        };
+        }
     } catch {
     }
 }
@@ -323,10 +327,10 @@ const setInitSocket = () => {
 const socketSend = (msg) => {
     try {
         if (socket) {
-            socket.send(msg);
+            socket.send(msg)
         } else {
             setTimeout(() => {
-                socket.send(msg);
+                socket.send(msg)
             }, 1000)
         }
     } catch {
@@ -343,7 +347,6 @@ const socketSend = (msg) => {
     .hc-header-view .hc-header-content .hc-header-cascader-box {
         .el-cascader {
             width: 100%;
-            top: -10px;
         }
         .el-cascader .el-input .el-input__wrapper {
             padding: 4px 15px;

+ 1 - 0
src/layout/layout.scss

@@ -152,6 +152,7 @@
                         position: relative;
                         visibility: hidden;
                         z-index: -1;
+                        height: 1px;
                     }
                 }
             }

+ 51 - 11
src/plugins/HcPdfSign.js

@@ -10,9 +10,17 @@ export default class HcPdfSign {
     static disX = 0
     static disY = 0
     static curSignDom = null
+    static signList = []
+    static signChange = null
 
-    //初始化创建PDF预览
-    static createPdf(ele, url) {
+    /**
+     * 初始化创建PDF预览
+     * @param ele   元素的ref,或id值
+     * @param url   pdf的url
+     * @param img   签章图片url
+     * @param func  回调函数
+     */
+    static createPdf(ele, url, img, func) {
         //初始化为空
         this.disX = 0
         this.disY = 0
@@ -59,7 +67,7 @@ export default class HcPdfSign {
         //创建iframe
         const iframe = document.createElement('iframe')
         iframe.setAttribute('id', 'pdf-sign-' + getRandom(6))
-        iframe.src = `/plugins/pdfjs/web/viewer.html?file=${url}`
+        iframe.src = `/plugins/pdfjs/web/viewer.html?file=${url}#zoom=100`
         iframe.style.width = '100%'
         iframe.style.height = '100%'
         iframe.style.border = '1px solid #ccc'
@@ -69,16 +77,40 @@ export default class HcPdfSign {
         })
         dom.appendChild(iframe)
         this.iframeDom = iframe
+        //设置签章图片
+        if (isNullES(img)) {
+            console.warn('请传入签章图片')
+            return false
+        }
+        this.signImage(img)
+        //设置回调事件
+        if (!isNullES(func)) {
+            this.addEventFunc(func)
+        }
     }
 
-    //设置签章图片
-    static signImage({ url, width, height }) {
-        if (isNullES(url)) {
-            console.warn('请传入图片的url参数')
+    //设置回调事件
+    static addEventFunc(func) {
+        if (typeof func !== 'function') {
+            console.warn('请传入函数')
+            return false
+        } else {
+            this.signChange = func
+        }
+    }
+
+    //触发回调事件
+    static signChangeFunc() {
+        if (typeof this.signChange !== 'function') {
             return false
+        } else {
+            this.signChange(this.signList)
         }
-        const imgWidth = width ?? 100, imgHeight = height ?? 100
-        this.signImgCss = { url: url, width: imgWidth, height: imgHeight }
+    }
+
+    //设置签章图片
+    static signImage(url) {
+        this.signImgCss = { url: url, width: 100, height: 26 }
     }
 
     //创建签章图片
@@ -95,7 +127,7 @@ export default class HcPdfSign {
         signImg.style.left = (event.layerX - (width / 2)) + 'px'
         signImg.style.top = (event.layerY - (height / 2)) + 'px'
         signImg.style.pointerEvents = 'auto'
-        signImg.style.zIndex = 99
+        signImg.style.zIndex = 999
         return signImg
     }
 
@@ -153,6 +185,14 @@ export default class HcPdfSign {
             this.disX = e.clientX - e.target.offsetLeft
             this.disY = e.clientY - e.target.offsetTop
         })
+        //保存签章信息
+        this.signList.push({
+            x: ((event.layerX * 100) / target.clientWidth).toFixed(4),
+            y: ((event.layerY * 100) / target.clientHeight).toFixed(4),
+            page: parentNode.getAttribute('data-page-number'),
+            id: signImgDom.getAttribute('id'),
+            dom: signImgDom,
+        })
+        this.signChangeFunc()
     }
-
 }

+ 5 - 12
src/test/index.vue

@@ -1,29 +1,22 @@
 <template>
     <div class="hc-page-box">
         <HcCard title="测试">
-            <div class="flex h-full">
-                <div class="w-96">
-                    111
-                </div>
-                <div id="pdfView" class="flex-1" />
-            </div>
+            <div id="pdfView" class="h-full" />
         </HcCard>
     </div>
 </template>
 
 <script setup>
 import { onMounted } from 'vue'
-import logoIcon from '~src/assets/logo/icon.png'
 import logoName from '~src/assets/logo/name.png'
 import HcPdfSign from '~src/plugins/HcPdfSign'
 
 onMounted(()=> {
     const pdf = 'https://bladex-chongqing-info.oss-cn-hangzhou.aliyuncs.com//upload/20230908/2878b0b7a59c1ce9b5779381a1fb82ef.pdf'
-    HcPdfSign.createPdf('pdfView', pdf)
-    HcPdfSign.signImage({
-        url: logoIcon,
-        width: 100,
-        height: 100,
+
+    //创建PDF签章控件以及相关功能
+    HcPdfSign.createPdf('pdfView', pdf, logoName, (data) => {
+        console.log(data)
     })
 })
 </script>