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

11 months ago
<!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>