You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							193 lines
						
					
					
						
							7.1 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							193 lines
						
					
					
						
							7.1 KiB
						
					
					
				
								plugin = null;
							 | 
						|
								function initCRF() {
							 | 
						|
								    let index = 0
							 | 
						|
								    // 初始化签字笔
							 | 
						|
								    const initPlugin = function () {
							 | 
						|
								        index++
							 | 
						|
								        // console.log(plugin);
							 | 
						|
								        if (plugin) {
							 | 
						|
								            plugin.DestroyPlugin();
							 | 
						|
								        }
							 | 
						|
								        plugin = new PluginNSV();
							 | 
						|
								        plugin.InitPlugin(function (state) {
							 | 
						|
								            if (state === 1) {
							 | 
						|
								                //set pen size
							 | 
						|
								                plugin.setPenSizeRange(1, 5, null);
							 | 
						|
								                //set pen color
							 | 
						|
								                plugin.setPenColor(0, 0, 0, null);
							 | 
						|
								                plugin.setDisplayMapMode(1, 0, 0, null)
							 | 
						|
								                console.log('succeeded')
							 | 
						|
								            } else {
							 | 
						|
								                console.log('fails')
							 | 
						|
								            }
							 | 
						|
								        });
							 | 
						|
								        /*confirm event*/
							 | 
						|
								        plugin.onConfirm = function () {
							 | 
						|
								            saveSignToBase64();
							 | 
						|
								            endSign();
							 | 
						|
								            plugin.mouseControl(false, null);
							 | 
						|
								        };
							 | 
						|
								        /*clear event*/
							 | 
						|
								        plugin.onClear = function () {
							 | 
						|
								            clearSign();
							 | 
						|
								        };
							 | 
						|
								        /*cancel event*/
							 | 
						|
								        plugin.onCancel = function () {
							 | 
						|
								            endSign();
							 | 
						|
								        };
							 | 
						|
								        // 监听插件连接服务的状态
							 | 
						|
								        plugin.onStateChange = function (state) {
							 | 
						|
								            if (state === 1) {
							 | 
						|
								                // 连接服务成功
							 | 
						|
								            } else {
							 | 
						|
								                // 连接服务断开
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								        // 第一次启动时判断
							 | 
						|
								        if (index === 1) {
							 | 
						|
								            console.log('--------------111111111111');
							 | 
						|
								            // 设备是否连接--use是否插上
							 | 
						|
								            plugin.onDevNotifyEvent = (item) => {
							 | 
						|
								                if (item === 1) {
							 | 
						|
								                    alert('签字笔已插入')
							 | 
						|
								                } else {
							 | 
						|
								                    alert('签字笔已拔出')
							 | 
						|
								                }
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    initPlugin()
							 | 
						|
								
							 | 
						|
								    // 点击手签按钮事件
							 | 
						|
								    $('.shouqian').on('click', function () {
							 | 
						|
								        // console.log($(this)[0].id);
							 | 
						|
								        const buttonNodeIdName = {
							 | 
						|
								            name: $(this)[0].id,
							 | 
						|
								            isImgClick: false,
							 | 
						|
								            type: 1 // 1手签 2自动获取
							 | 
						|
								        }
							 | 
						|
								        $(this).parent().addClass("shouqian-buttons")
							 | 
						|
								        window.sessionStorage.setItem('sign-nodeIdName', JSON.stringify(buttonNodeIdName))
							 | 
						|
								        // 开始签字
							 | 
						|
								        beginSign()
							 | 
						|
								    })
							 | 
						|
								
							 | 
						|
								    // 手签图片点击事件
							 | 
						|
								    $('.shouqian-img').on('click', function () {
							 | 
						|
								        // console.log($(this)[0].id);
							 | 
						|
								        const imgNodeName = {
							 | 
						|
								            name: $(this)[0].id,
							 | 
						|
								            isImgClick: true,
							 | 
						|
								            type: 1 // 1手签 2自动获取
							 | 
						|
								        }
							 | 
						|
								        window.sessionStorage.setItem('sign-nodeIdName', JSON.stringify(imgNodeName))
							 | 
						|
								        // 开始签字
							 | 
						|
								        beginSign()
							 | 
						|
								    })
							 | 
						|
								
							 | 
						|
								    // 点击自动获取按钮
							 | 
						|
								    $('.auto-import').on('click', function () {
							 | 
						|
								        console.log('自动获取');
							 | 
						|
								        // console.log($(this)[0].id);
							 | 
						|
								        const buttonNodeIdName = {
							 | 
						|
								            name: $(this)[0].id,
							 | 
						|
								            isImgClick: false,
							 | 
						|
								            type: 2 // 1手签 2自动获取
							 | 
						|
								        }
							 | 
						|
								        $(this).parent().addClass("auto-import-buttons")
							 | 
						|
								        window.sessionStorage.setItem('sign-nodeIdName', JSON.stringify(buttonNodeIdName))
							 | 
						|
								        setAutoImport()
							 | 
						|
								    })
							 | 
						|
								
							 | 
						|
								    // 开始签名
							 | 
						|
								    const beginSign = function () {
							 | 
						|
								        if (!!plugin) {
							 | 
						|
								            plugin.beginSign(function (state, args) { });
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    // 清空签名
							 | 
						|
								    const clearSign = function () {
							 | 
						|
								        if (!!plugin) {
							 | 
						|
								            plugin.clearSign(function (state, args) { });
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    // 结束签名
							 | 
						|
								    function endSign() {
							 | 
						|
								        if (!!plugin) {
							 | 
						|
								            /* plugin.endSign(null);*/
							 | 
						|
								            plugin.endSign(function (state, args) { });
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    // 保存返回的base64图片
							 | 
						|
								    function saveSignToBase64() {
							 | 
						|
								        if (!!plugin) {
							 | 
						|
								            //Get the plugin's signature image data.
							 | 
						|
								            plugin.saveSignToBase64(/*615, 272*/0, 0, function (state, args) {
							 | 
						|
								                if (state) {
							 | 
						|
								                    const img_base64_data = args[0];
							 | 
						|
								                    const nodeIdName = JSON.parse(window.sessionStorage.getItem('sign-nodeIdName'))
							 | 
						|
								                    const img_base64 = "data:image/png;base64," + img_base64_data;
							 | 
						|
								                    // 没有图片时如果点击的是按钮
							 | 
						|
								                    if (!nodeIdName.isImgClick) {
							 | 
						|
								                        let img = `<img id="${nodeIdName.name}-img" class="shouqian-img" style="width:60px;margin: 0 auto;" src="${img_base64}" ></img>`
							 | 
						|
								                        // 动态插入img
							 | 
						|
								                        $(`#${nodeIdName.name}`).after(img)
							 | 
						|
								                        // 当前父级p标签margn设置为0
							 | 
						|
								                        $(`#${nodeIdName.name}`).parent()[0].style.margin = '0px'
							 | 
						|
								                        // 图片显示后按钮设置为隐藏
							 | 
						|
								                        // $(`#${nodeIdName.name}`).parent().next().css({ "display": "none" })  // 兄弟节点按钮隐藏
							 | 
						|
								                        $(`#${nodeIdName.name}`).css({ "display": "none" })  // 当前节点按钮隐藏
							 | 
						|
								                        // 有了图片后添加图片的点击事件
							 | 
						|
								                        $('.shouqian-img').on('click', function () {
							 | 
						|
								                            // console.log($(this)[0].id);
							 | 
						|
								                            const imgNodeName = {
							 | 
						|
								                                name: $(this)[0].id,
							 | 
						|
								                                isImgClick: true
							 | 
						|
								                            }
							 | 
						|
								                            window.sessionStorage.setItem('sign-nodeIdName', JSON.stringify(imgNodeName))
							 | 
						|
								                            // 开始签字
							 | 
						|
								                            beginSign()
							 | 
						|
								                        })
							 | 
						|
								                    }
							 | 
						|
								                    // 有图片后如果点击的是图片
							 | 
						|
								                    else {
							 | 
						|
								                        // 给img动态设置src
							 | 
						|
								                        // console.log($(`.${nodeIdName.name}`)[0].src);
							 | 
						|
								                        $(`#${nodeIdName.name}`)[0].src = img_base64;
							 | 
						|
								                    }
							 | 
						|
								                } else {
							 | 
						|
								                    // ...
							 | 
						|
								                }
							 | 
						|
								            });
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    // 自动获取图片
							 | 
						|
								    function setAutoImport() {
							 | 
						|
								        console.log(123);
							 | 
						|
								        const nodeIdName = JSON.parse(window.sessionStorage.getItem('sign-nodeIdName'))
							 | 
						|
								        const img_base64 = JSON.parse(window.sessionStorage.getItem('qg-userData')).signImgBasesignImgBase
							 | 
						|
								        // 调取接口
							 | 
						|
								        let img = `<img id="${nodeIdName.name}-img" class="shouqian-img" style="width:60px;margin: 0 auto;vertical-align: middle;" src="${img_base64}" ></img>`
							 | 
						|
								        // 动态插入img
							 | 
						|
								        $(`#${nodeIdName.name}`).after(img)
							 | 
						|
								        // 当前父级p标签margn设置为0
							 | 
						|
								        $(`#${nodeIdName.name}`).parent()[0].style.margin = '0px'
							 | 
						|
								        // 图片显示后按钮设置为隐藏
							 | 
						|
								        $(`#${nodeIdName.name}`).parent().prev().css({ "display": "none" })  // 兄弟节点按钮隐藏
							 | 
						|
								        $(`#${nodeIdName.name}`).css({ "display": "none" }) // 当前节点按钮隐藏
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								initCRF()
							 | 
						|
								
							 | 
						|
								// 销毁签字笔
							 | 
						|
								function destroyPlugin() {
							 | 
						|
								    console.log('销毁');
							 | 
						|
								    plugin.DestroyPlugin();
							 | 
						|
								    // 防止签名重复调取,销毁点击事件
							 | 
						|
								    $('.auto-import').unbind("click");
							 | 
						|
								}
							 |