You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

417 lines
16 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>手写签名版</title>
<script src="../Scripts/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="../Scripts/bootstrap/js/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="../Scripts/bootstrap/css/bootstrap.min.css" />
<script type="text/javascript" src="../Scripts/bootstrap/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../Scripts/QueryString.js"></script>
<script type="text/javascript" src="../Scripts/config.js"></script>
<script type="text/javascript" src="../Comm/Gener.js"></script>
<script src="../Scripts/jq-signature.min.js" type="text/javascript"></script>
<script src="../Scripts/jq-signature.js" type="text/javascript"></script>
<style>
* {
margin: 0;
padding: 0;
}
.clearfix:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
}
.clearfix {
*zoom: 1;
}
.wapr_nav {
border-bottom: 2px solid #ccc;
}
.wapr_nav_left {
margin: 10px 0;
padding: 0 10px;
float: left;
font-size: 15px;
color: #333;
text-align: center;
line-height: 30px;
border-right: 1px solid #ccc;
cursor: pointer;
}
.wapr_nav_right {
float: right;
margin: 10px 0;
padding: 0 20px;
font-size: 15px;
color: #333;
text-align: center;
line-height: 30px;
cursor: pointer;
}
.wapr_nav_left_img1 {
display: block;
width: 15px;
height: 15px;
background: url(Img/1.png) no-repeat;
margin-left: 7px;
}
.wapr_nav_left_img2 {
display: block;
width: 15px;
height: 15px;
background: url(Img/2.png) no-repeat;
margin-left: 7px;
}
.wapr_nav_left_img3 {
display: block;
width: 15px;
height: 15px;
background: url(Img/3.png) no-repeat;
margin-left: 7px;
}
.wapr_nav_left_img4 {
display: block;
width: 20px;
height: 15px;
background: url(Img/4.png) no-repeat;
margin-left: 7px;
}
.wapr_nav_left_img6 {
display: block;
width: 20px;
height: 16px;
background: url(Img/6.png) no-repeat;
margin-left: 12px;
}
.qudiao {
border-right: none;
}
.qianziban {
}
#addImg input {
position: absolute;
top: 5px;
right: 6px;
width: 60px;
/* color: #fff; */
height: 50px;
/* 重点代码让input隐藏 */
opacity: 0;
}
#addImg {
position: relative;
height: 40px;
width: 35px;
}
html, body {
-ms-overflow-style: scrollbar;
}
</style>
</head>
<body>
<div class="wapr" id="sxb" style="height: 100%">
<div class="wapr_nav clearfix" id="button">
<div id="saveBtn" onclick="saveSignature();" class="wapr_nav_left"><span class="wapr_nav_left_img1"></span>确定</div>
<div id="addImg" style="width:55px;" onclick="AddImg()" class="wapr_nav_left">
<span class="wapr_nav_left_img2"></span>插入
<input id="inputImg" type="file" />
</div>
<div id="clr" val="0" onclick="clearsame()" class="wapr_nav_left"><span class="wapr_nav_left_img6"></span><div id="xpc">橡皮擦</div></div>
<div id="clearBtn" onclick="clearCanvas(1)" class="wapr_nav_left"><span class="wapr_nav_left_img3"></span>重置</div>
<div val="0" style="margin-top:14px;padding-right:0px;" class="wapr_nav_left qudiao">粗细</div>
<div val="0" class="wapr_nav_left qudiao">
<select class="form-control" onchange="setfont()" id="select-font-size">
<option style="font-size:16px" value="2">细</option>
<option style="font-size:16px" value="5" selected="selected">中</option>
<option style="font-size:16px" value="8">粗</option>
</select>
</div>
</div>
<div id="signature" class="js-signature" data-border="0px solid black" data-line-color="#bc0000" data-auto-fit="true" style="overflow:auto;">
</div>
</div>
<script type="text/javascript">
$(window).resize(function () {
// 变化后需要做的事
var canvawidth = document.getElementById("signature").offsetWidth;
var canvaheight = document.getElementById("signature").offsetHeight;
var iframe = $($(".layui-layer-content", parent.document)[0]).find("iframe")[0];
//console.log( )
document.body.style.height = iframe.offsetHeight + "px";
document.getElementById("signature").style.height = document.getElementById("sxb").offsetHeight - document.getElementById("button").offsetHeight + 'px';
document.getElementById("signature").style.width = document.getElementById("sxb").offsetWidth + 'px';
var canvas = $('#signature').children()[0];
var png = canvas.toDataURL("image/png")
var width = document.getElementById("signature").offsetWidth;
var height = document.getElementById("signature").offsetHeight;
canvas.width = width;
canvas.height = height;
canvas.style.width = width + 'px';
canvas.style.height = height + 'px';
//创建image对象
var imgObj = new Image();
imgObj.src = png;
var ctx = canvas.getContext("2d");
//待图片加载完后将其显示在canvas上
imgObj.onload = function () {
ctx.strokeStyle = "#000";
ctx.drawImage(this, (width - canvawidth) / 2, (height - canvaheight) / 2); //this即是imgObj,保持图片的原始大小470*480
ctx.restore();
ctx.save();
}
//ctx.restore();
})
</script>
<script type="text/javascript">
var imagePath = "";
var SavePC = "";
var deptNo = "";
var elementID = GetQueryString("ElementID");
if (elementID!=null && elementID.indexOf("WorkCheck_") != -1)
deptNo = elementID.replace("WorkCheck_", "");
var user = new WebUser();
$(document).on('ready', function () {
$('.js-signature').jqSignature();
document.getElementById("signature").style.width = document.getElementById("sxb").offsetWidth + 'px';
var canvas = $('#signature').children()[0];
//canvas.width = img.width;
if (user.FK_Dept == "951979" || user.Name == "白晓春") {
canvas.height = 860;
canvas.style.height = "860px";
} else {
canvas.height = 215;
canvas.style.height = "215px";
}
var ctx = canvas.getContext("2d");
ctx.strokeStyle = "#000";
ctx.restore();
//从缓存取出除父页面图片的二进制流
InsertImg("");
});
function ComeBack() {
window.screen.height = "100%";
window.screen.width = "100%";
}
//插入
//在input file内容改变的时候触发事件
$('#inputImg').change(function () {
//获取input file的files文件数组;
//$('#filed')获取的是jQuery对象.get(0)转为原生对象;
//这边默认只能选一个,但是存放形式仍然是数组,所以取第一个元素使用[0];
var file = $('#inputImg').get(0).files[0];
//创建用来读取此文件的对象
var reader = new FileReader();
//使用该对象读取file文件
reader.readAsDataURL(file);
//读取文件成功后执行的方法函数
reader.onload = function (e) {
//读取成功后返回的一个参数e整个的一个进度事件
console.log(e);
//选择所要显示图片的img要赋值给img的src就是e中target下result里面
//转为base64编码格式的地址并加载到画布
clearCanvas(0);
InsertImg(e.target.result);
//是否是插入的图片
window.localStorage.setItem("InsertTmg", "true");
}
})
//加载保存的签名
function InsertImg(SavePC) {
if (SavePC == "")
SavePC = localStorage.getItem("writeImg");
var img = new Image();
var user = new WebUser();
var canvas = $('#signature').children()[0];
var ctx = canvas.getContext("2d");
if (!SavePC) {
img.src = "../../DataUser/Siganture/" + user.Name + ".png";
} else {
img.src = SavePC;
}
console.log(SavePC);
img.onload = function () {
//img.width="50px";
//img.height="100px";
ctx.strokeStyle = "#000";
ctx.drawImage(img, 0, 0, 340, 150);
if (!SavePC) {
var data = new Date();
var day = data.getDate();
var day1 = data.getMonth() + 1;
ctx.restore();
ctx.beginPath();
ctx.textBaseline = "middle";
ctx.textAlign = "center";
ctx.font = "bold 20px 宋体";
ctx.fillText(day1 + "." + day, 315, 150);
}
ctx.restore();
ctx.save();
}
}
function clearCanvas(type) {
if (type == 1) {
window.parent.typecon = false;
}
//$('#signature').html('<p><em></em></p>');
$('.js-signature').eq(0).jqSignature('clearCanvas');
var canvas = $('#signature').children()[0]
var ctx = canvas.getContext("2d");
ctx.strokeStyle = "#000";
ctx.restore();
}
function clearsame() {
if ($('#clr').attr('val') == 1) {
var canvas = $('#signature').children()[0];
canvas.style.cursor = 'crosshair';
$('#clr').attr('val', '0');
$('#xpc').text("橡皮擦");
} else {
var canvas = $('#signature').children()[0];
canvas.style.cursor = 'url(Img/6.png)';
$('#clr').attr('val', '1');
$('#xpc').text("取消");
}
}
function setfont() {
$('.js-signature').jqSignature('setfont');
}
function isCanvasBlank(canvas) {
var blank = document.createElement('canvas'); //系统获取一个空canvas对象
blank.width = canvas.width;
blank.height = canvas.height;
return canvas.toDataURL() == blank.toDataURL(); //比较值相等则为空
}
function saveSignature() {
window.parent.mrimg = false;
var canvas = $('#signature').children()[0];
if (isCanvasBlank(canvas)) {
SavePC = '';
window.parent.typecon = false;
} else {
$('#signature').empty();
var pic = $('.js-signature').jqSignature('getDataURL');
SavePC = pic;
window.parent.typecon = true;
}
if (SavePC == "") {
baocui(SavePC);
} else {
tailor(SavePC);
}
}
$('.js-signature').eq(0).on('jq.signature.changed', function () {
$('#saveBtn').attr('disabled', false);
});
/**
* 裁剪空白区域
* @param base64
* @param callback
*/
function tailor(base64) {
var img = new Image();//创建图片对象
img.src = base64;
img.onload = function () {
var c = document.createElement('canvas');//创建处理画布对象
var ctx = c.getContext('2d');
c.width = img.width;
c.height = img.height;
ctx.drawImage(img, 0, 0);//绘制
var imgData = ctx.getImageData(0, 0, c.width, c.height).data;//读取图片数据
var lOffset = c.width, rOffset = 0, tOffset = c.height, bOffset = 0;
for (var i = 0; i < c.width; i++) {
for (var j = 0; j < c.height; j++) {
var pos = (i + c.width * j) * 4
if (imgData[pos] == 255 || imgData[pos + 1] == 255 || imgData[pos + 2] == 255 || imgData[pos + 3] == 255) {
bOffset = Math.max(j, bOffset); // 找到有色彩的最下端
rOffset = Math.max(i, rOffset); // 找到有色彩的最右端
tOffset = Math.min(j, tOffset); // 找到有色彩的最上端
lOffset = Math.min(i, lOffset); // 找到有色彩的最左端
}
}
}
lOffset++;
rOffset++;
tOffset++;
bOffset++;
var x = document.createElement("canvas");//创建处理后画布对象
x.width = rOffset - lOffset;
x.height = bOffset - tOffset;
var xx = x.getContext("2d");
xx.drawImage(img, lOffset, tOffset, x.width, x.height, 0, 0, x.width, x.height);//绘制
baocui(x.toDataURL());
}
}
function baocui(SavePC) {
//图片二进制流存入到缓存中
window.localStorage.setItem("writeImg", SavePC);
//console.log(SavePC+"pic=========");
var writType = GetQueryString("WritType");
// console.log(writType);
if (writType != null && writType != undefined && writType == "WorkCheck") {
//console.log("=============");
parent.setHandWriteSrc("WorkCheck", SavePC, 1);
return;
}
var newpic = SavePC.replace(/^data:image\/(png|jpg);base64,/, "");
var handler = new HttpHandler("BP.WF.HttpHandler.WF_CCForm");
handler.AddPara("FK_Node", GetQueryString("FK_Node"));
handler.AddPara("WorkID", GetQueryString("WorkID"));
handler.AddPara("FK_Flow", GetQueryString("FK_Flow"));
handler.AddPara("KeyOfEn", GetQueryString("KeyOfEn"));
handler.AddPara("imageData", newpic);
var data = handler.DoMethodReturnString("HandWriting_Save");
if (data.indexOf('err@') == 0) {
alert(data);
imagePath = "";
return;
}
if (data.indexOf('info@') == 0) {
imagePath = data.replace('info@', '');
parent.setHandWriteSrc(GetQueryString("KeyOfEn"), imagePath, 0);
}
}
</script>
</body>
</html>