集成签字面板

This commit is contained in:
liyuetong
2021-09-14 14:40:47 +08:00
committed by zhangqi1
parent 7b1006ce56
commit b8d2743f3c
11 changed files with 755 additions and 2 deletions

93
public/CFCA/Base64.js Normal file
View File

@@ -0,0 +1,93 @@
function Base64() {
// private property
b64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
b64padchar="=";
// public method for encoding
this.encode = function (bytes) {
var i;
var c = 0x0;
var ret = "";
for (i = 0; i + 3 <= bytes.length; i += 3) {
c = ((bytes[i] & 0xFF) << 16) ^ ((bytes[i + 1]& 0xFF) << 8) ^ (bytes[i + 2] & 0xFF);
ret += b64map.charAt(c >>> 18) + b64map.charAt((c & 0x3F000) >>> 12) + b64map.charAt((c & 0xFC0) >>> 6) + b64map.charAt(c & 0x3F);
}
if (i == (bytes.length-1)) {
c = bytes[i] & 0xFF;
ret += b64map.charAt((c & 0xFC) >>> 2) + b64map.charAt((c & 0x3) << 4);
}
else if (i + 1 == (bytes.length-1)) {
c = ((bytes[i] & 0xFF) << 8) ^ (bytes[i + 1] & 0xFF);
ret += b64map.charAt((c & 0xFC00) >>> 10) + b64map.charAt((c & 0x3F0) >>> 4) + b64map.charAt((c & 0xF) << 2);
}
while ((ret.length & 3) > 0) {
ret += b64padchar;
}
return ret;
}
// public method for decoding
this.decode = function (s) {
var ret = [];
var i;
for (i = 0; i < s.length; i += 4) {
var block = [];
var v1 = b64map.indexOf(s.charAt(i));
if (v1 < 0) continue;
block.push(v1);
var v2 = b64map.indexOf(s.charAt(i+1));
if (v2 < 0) continue;
block.push(v2);
var third = s.charAt(i+2);
if(third == b64padchar) { //Handle Block
ret = ret.concat(convertb64Block(block));
break;
}
else {
var v3 = b64map.indexOf(third);
if (v3 < 0) continue;
block.push(v3);
}
var fourth = s.charAt(i+3);
if(fourth == b64padchar) {//Handle Block
ret = ret.concat(convertb64Block(block));
break;
}
else {
var v4 = b64map.indexOf(fourth);
if (v4 < 0) continue;
block.push(v4);
}
ret = ret.concat(convertb64Block(block));//Handle Block
}
return ret;
}
function convertb64Block(bytes) {
var ret = [];
var i = 0;
if (bytes.length == 4) {
ret.push(((bytes[i] & 0x3F) << 2) ^ ((bytes[i + 1] & 0x30) >>> 4));
ret.push(((bytes[i + 1] & 0xF) << 4) ^ ((bytes[i + 2] & 0x3C) >>> 2));
ret.push(((bytes[i + 2] & 0x3) << 6) ^ (bytes[i + 3] & 0xFF));
}
else if (bytes.length == 3) {
ret.push(((bytes[i] & 0x3F) << 2) ^ ((bytes[i + 1] & 0x30) >>> 4));
ret.push(((bytes[i + 1] & 0xF) << 4) ^ ((bytes[i + 2] & 0x3C)>>>2));
}
else if (bytes.length == 2) {
ret.push(((bytes[i] & 0x3F) << 2) ^ ((bytes[i+1] & 0x30)>>>4));
}
return ret;
}
}

31
public/CFCA/EPaper.min.js vendored Normal file
View File

@@ -0,0 +1,31 @@
var goog=goog||{};goog.global=this;goog.exportPath_=function(name,opt_object,opt_objectToExportTo){var parts=name.split(".");var cur=opt_objectToExportTo||goog.global;if(!(parts[0]in cur)&&cur.execScript)cur.execScript("var "+parts[0]);for(var part;parts.length&&(part=parts.shift());)if(!parts.length&&opt_object!==undefined)cur[part]=opt_object;else if(cur[part])cur=cur[part];else cur=cur[part]={}};
goog.exportSymbol=function(publicPath,object,opt_objectToExportTo){goog.exportPath_(publicPath,object,opt_objectToExportTo)};goog.exportProperty=function(object,publicName,symbol){object[publicName]=symbol};function aa(l){l&&l.preventDefault?l.preventDefault():window.event&&(window.event.returnValue=!1)}function ba(l){l&&l.stopPropagation?l.stopPropagation():window.event&&(window.event.cancelBubble=!0)}
function m(l){function L(){var a=n.getBoundingClientRect().width,b=n.getBoundingClientRect().height;n.width=a*p;n.height=b*p;f.scale(p,p);n.style.backgroundColor=n.style.backgroundColor}function I(a,b,c){window.getSelection()?window.getSelection().removeAllRanges():document.selection.empty();f.save();f.moveTo(a,b);F=G/2*(B/320);N&&(J(document,"mousemove",N),J(document,"touchmove",N),J(document,"mouseup",M),J(document,"touchend",M));"touchstart"==c?(O(document,"touchmove",N),O(document,"touchend",
M)):(O(document,"mousemove",N),O(document,"mouseup",M));x=null;R(a,b)}function R(a,b){var c,d;if(u.length&&(c=u[u.length-1],d=Math.sqrt((c.x-a)*(c.x-a)+(c.y-b)*(c.y-b)),!d))return;ka++;navigator.userAgent.match(/ OS (\d+).*? Mac OS/)&&!ca&&2==u.length&&4*c<u[1].a&&(u[0].x-=2/3*(u[0].x-u[1].x),u[0].y-=2/3*(u[0].y-u[1].y),u[1].a/=2/3*u[1].a);c={x:a,y:b,a:d};u.push(c);3<=u.length&&(c=u.shift(),la(c))}function la(a,b){var c=a.x,d=a.y,g=a.a;if(!x||0!==g){var H=u.length?u[0]:null;if(g&&x){f.moveTo(x.x,
x.y);var h;!ca&&H&&g>3*H.a&&(g/=4,h=1);ca=1;b||(b=ma(g));X=b;if(h)for(h=1;3>=h;h++)na(c+h/3*(x.x-c),d+h/3*(x.y-d),g)}na(c,d,g);x=a}}function ma(a){var b=B/320*G;return.65*(a<.003125*B?1.2*b:a<.00625*B?1.15*b:a<.009375*B?1.1*b:a<.015625*B?1.05*b:a<.021875*B?b:a<.028125*B?.95*b:a<.034375*B?.9*b:a<.046875*B?.85*b:a<.0625*B?.8*b:.75*b)}function na(a,b,c){var d={x:a,y:b},g=F;f.fillStyle=C;f.strokeStyle=C;if(x){a=Math.floor(Math.abs(c)/(F/3));if(1<a)for(g=F,c=0;c<a;c++)g-=(g-X)/(8<a?a:8);else Math.abs(F-
X)>B/320*G*.025&&(g=F-(F-X)/8);a=Math.abs(F-g);1<=a&&(g=F>g?g+.4*a:g-.4*a);a=null;if(0<u.length){a=u[0];b=ta;var H=a.x-x.x,h=a.y-x.y,e=oa(x,d),A=oa(d,a),k=e+A;a=0==e||0==A||(d.x-x.x)/(d.y-x.y)==(d.x-a.x)/(d.y-a.y)?null:[{x:d.x-H*b*e/k,y:d.y-h*b*e/k},{x:d.x+H*b*A/k,y:d.y+h*b*A/k}]}b=[x];if(P||a){H=a?a[0]:d;P=null==P?x:P;h=x;e=P;c/=2*g;A=[];for(k=0;k<c;k++){var n=(k+1)/(c+1),v,r,l,p,y,t,q,w;l=3*(e.x-h.x);r=3*(H.x-e.x)-l;v=d.x-h.x-l-r;t=3*(e.y-h.y);y=3*(H.y-e.y)-t;p=d.y-h.y-t-y;q=n*n;w=q*n;A.push({x:v*
w+r*q+l*n+h.x,y:p*w+y*q+t*n+h.y})}b=b.concat(A)}b.push(d);d=b;b=F;H=g;A=b;for(h=1;h<d.length;h++)e=(H-b)/(d.length-1)+A,y=d[h-1],c=d[h],k=e,l=A*Math.sin(Math.atan((c.y-y.y)/(c.x-y.x))),t=A*Math.cos(Math.atan((c.y-y.y)/(c.x-y.x))),p=k*Math.sin(Math.atan((c.y-y.y)/(c.x-y.x))),r=k*Math.cos(Math.atan((c.y-y.y)/(c.x-y.x))),n=y.x+l,v=y.y-t,l=y.x-l,y=y.y+t,t=c.x+p,q=c.y-r,p=c.x-p,r=c.y+r,f.beginPath(),f.moveTo(n,v),f.lineTo(t,q),f.lineTo(p,r),f.lineTo(l,y),f.lineTo(n,v),f.fill(),f.closePath(),f.lineWidth=
A,f.beginPath(),f.arc(c.x,c.y,k,0,2*Math.PI),f.fill(),f.closePath(),A=e;f.lineWidth=F=g;!a||1>=a.length?P=null:P=a[1]}else 2<=u.length&&((g=u[1].a)&&(F=ma(g)),F+=2),f.beginPath(),f.fillStyle=C,f.arc(a,b,F,0,2*Math.PI),f.fill(),f.closePath()}function oa(a,b){return Math.sqrt(Math.pow(b.x-a.x,2)+Math.pow(b.y-a.y,2))}function Q(){D&&M(null)}function da(a){aa(a);ba(a);Q();if("edit"===w){var b,c;if("touchstart"==a.type){if(2<=a.touches.length)return;b=a.touches[0].pageX;c=a.touches[0].pageY;J(n,"mousedown",
da)}else a.pageX?(b=a.pageX,c=a.pageY):(b=a.clientX,c=a.clientY);pa()||(canvasRect=n.getBoundingClientRect(),canvasRect={left:canvasRect.left+(window.scrollX||window.pageXOffset),top:canvasRect.top+(window.scrollY||window.pageYOffset)},b-=canvasRect.left,c-=canvasRect.top,D={time:new Date,points:[{x:b,y:c,t:0}],color:C,penSize:G},I(b,c,a.type))}}function N(a){aa(a);ba(a);if("edit"===w){var b;if("touchmove"==a.type){if(2<=a.touches.length)return;b=a.touches[0].pageX;a=a.touches[0].pageY}else a.pageX?
(b=a.pageX,a=a.pageY):(b=a.clientX,a=a.clientY);b-=canvasRect.left;a-=canvasRect.top;pa()?M(null):(D.points.push({x:b,y:a,t:new Date-D.time}),R(b,a))}}function M(a){aa(a);ba(a);"edit"===w&&(U(),k.length?D.time-=qa:(qa=D.time,D.time=D.time.getTime()),k.push(D),S=null,V=[],D=null)}function pa(){var a=0;D&&(a+=D.points.length);for(var b=0;b<k.length;b++)a+=k[b].points.length;return a>ua?!0:!1}function ea(){"play"==w&&(w=Y,clearTimeout(T),W());"edit"===w&&(x=null,e=[-1,-1,-1,-1],ka=0,k.length&&(S=k),
k=[],f.beginPath(),f.clearRect(0,0,n.width,n.height),f.closePath())}function U(){J(document,"mousemove",N);J(document,"touchmove",N);J(document,"mouseup",M);J(document,"touchend",M);for(var a;u.length;)a=u.shift(),la(a,B/320*G/8)}function ra(){function a(){C=b;G=c;K>=k.length?w=Y:(clearTimeout(T),T=setTimeout(function(){ra()},300))}var b=C,c=G,d=k[K];if(d&&"play"==w){C=d.color;G=d.penSize;I(d.points[0].x,d.points[0].y);1==d.points.length&&(U(),a());var g=1,e,h=0;e=d.points[g];(function(){e&&(R(e.x,
e.y),g>=d.points.length-1&&(U(),a()),g++,e=d.points[g])&&(clearTimeout(T),T=setTimeout(arguments.callee,e.t-h),h=e.t)})();K++}}function W(){function a(){C=b;G=c;K>=k.length&&(w="edit")}var b=C,c=G;f.clearRect(0,0,n.width,n.height);f.beginPath();K=0;for(var d=k[K];d;){C=d.color;G=d.penSize;I(d.points[0].x,d.points[0].y);1==d.points.length&&(U(),a());for(var g=1,e=1;g<d.points.length;g++){var h=d.points[e];e++;R(h.x,h.y);e>=d.points.length&&(U(),a())}K++;d=k[K]}}function fa(a,b,c,d){a.height=d;a.width=
c;a.style.height=d/p+"px";a.style.width=c/p+"px";b.scale(p,p)}function sa(a,b){q+="getWritingRect start \n";e=[-1,-1,-1,-1];for(var c=0;c<k.length;c++)for(var d=0;d<k[c].points.length;d++){var g=k[c].points[d],H=g.x,g=g.y,h=0>H-16?0:H-16,f=0>g-16?0:g-16;e[0]=0>e[0]?h:e[0];e[0]=e[0]>h?h:e[0];e[1]=e[1]<H+16?H+16:e[1];e[2]=0>e[2]?f:e[2];e[2]=e[2]>f?f:e[2];e[3]=e[3]<g+16?g+16:e[3]}q+="writingRect[0][1][2][3] = "+e[0]+"*"+e[1]+"*"+e[2]+"*"+e[3]+"*\n";e[1]=e[1]>a?a:e[1];e[3]=e[3]>b?b:e[3];for(c=0;c<e.length;c++)e[c]*=
p;q+="getWritingRect end \n"}function O(a,b,c){a.attachEvent?a.attachEvent("on"+b,c):a.addEventListener(b,c,{passive:!1})}function J(a,b,c){a.detachEvent?a.detachEvent("on"+b,c):a.removeEventListener(b,c,{passive:!1})}function ga(a){var b=[];if(!a)return b;for(var c=0;c<a.length;c++){var d=ha(a.charCodeAt(c));b.push.apply(b,d)}return b}function ha(a){if(0>a)return null;var b=Math.floor(a/4294967295);a%=4294967295;var c=[],d=[];if(b){do c.push(b&255),b>>>=8;while(b);d.push.apply(d,c.reverse())}c=
[];do c.push(a&255),a>>>=8;while(a);d.push.apply(d,c.reverse());return d}function t(a){if(!a||0==a.length)return null;var b=4<a.length?a.slice(0,a.length-4):[];a=4<a.length?a.slice(a.length-4,a.length):a;for(var c=0,d=b.length-1;0<=d;d--)c|=(b[d]&255)<<8*(b.length-1-d);b=0;for(d=a.length-1;0<=d;d--)b|=(a[d]&255)<<8*(a.length-1-d);return 4294967295*c+b}function ia(a){if(!a||0==a.length)return null;var b=a[0]&128;128==b&&(a[0]^=128);a=t(a);128==b&&(a=-a);return a}function Z(a){if(!a||4!=a.length)return null;
var b=new ArrayBuffer(4),c=new DataView(b);a.forEach(function(a,b){c.setUint8(b,a)});return c.getFloat32(0)}function ja(a){var b=new Float32Array(1);(new DataView(b.buffer)).setFloat32(0,a,!1);return new Int8Array(b.buffer)}function v(a,b,c){return!a||c>a.S||0>b?null:a.slice(b,c)}function z(a,b){var c=[],d=ha(a);if(null==d)return null;if(d.length>b){for(var g=0;g<b;g++)c.push(255);return c}for(g=d.length;g<b;g++)c.push(0);c.push.apply(c,d);return c}var n=null;if(l.nodeType)n=l;else if("string"==typeof l)n=
document.getElementById(l);else return;(function(a,b,c){document.addEventListener?a.addEventListener(b,c,!1):document.attachEvent&&a.attachEvent("on"+b,c)})(window,"resize",function(){q+="[window-resize function] start \n";var a=n.getBoundingClientRect().width*p/n.width,b=n.getBoundingClientRect().height*p/n.height;.9<=a&&1.1>=a&&.9<=b&&1.1>=b||(L(),q+="[window-resize canvas.width + canvas.height] ="+n.width/p+"_"+n.height/p,ea(),q+="[window-resize function] end \n")});var p=(window.devicePixelRatio||
1)/1,k=[],V=[],F=1,X=1,C="rgb(0,0,0)",G=8,B=320,ka=0,D=null,S=null,w="edit",e=[-1,-1,-1,-1],ta=.4,x=null,P=null,u=[],ca=0,qa=null,K=0,Y="edit",T=null,f=n.getContext("2d"),ua=5E4,q="";(function(){L();ea();n.getContext&&(f.strokeStyle=C,f.fillStyle=C,O(n,"selectstart",function(){return!1}),O(n,"touchstart",da),O(n,"mousedown",da))})();this.C=function(){for(var a="4.5.0.3";0<=a.indexOf(".");)a=a.replace(".","");return z(parseInt(a),2)};this.j=function(a){var b=a.match(/(\d+)/g);a=[];if(b)for(var c=0;c<
b.length;c++)a.push.apply(a,ha(b[c]));for(b=a.length;3>b;b++)a.push(0);return a};this.c=function(a){G=1==a&&18||2==a&&12||3==a&&8||4==a&&6||5==a&&3||8};this.R=function(a,b,c){C="rgb("+a+","+b+","+c+")"};this.g=function(){Q();return!!V.length};this.f=function(){Q();if("edit"===w)if(S&&S.length)k=S,S=null,W();else if(k.length){var a=k.pop();V.push([a]);W()}};this.L=function(){Q();"edit"===w&&V.length&&(k=k.concat(V.pop()),W())};this.O=function(){Q();0!=k.length&&("play"==w?(w=Y,clearTimeout(T),W()):
(Y=w,w="play",f.clearRect(0,0,n.width,n.height),f.beginPath(),K=0,ra()))};this.D=function(){return 0!=k.length&&"play"==w?!0:!1};this.h=function(){q+="_clear start \n";ea();q+="_clear end \n"};this.l=function(){Q();q+="_getHandWritingData start \n";if(0>=k.length)return null;var a=navigator.userAgent.match(/\([^\)]*\)[^\(]*\([^\)]*\)\s(.*)/);a&&0<a.length&&(a=a[1]);var b=navigator.userAgent.match(/\(([^\)]*)\)/);b&&0<b.length&&(b=b[1]);var c=[],d=this.C(),a=ga(a),g=ga(b),b=ga(""),e=6+a.length+
2+g.length+2+6+2+b.length;c.push.apply(c,d);c.push.apply(c,z(e,2));c.push.apply(c,z(a.length,2));c.push.apply(c,a);c.push.apply(c,z(g.length,2));c.push.apply(c,g);d=z(k.length,2);c.push.apply(c,d);d=z(0<k.length?k[0].time:0,6);c.push.apply(c,d);c.push.apply(c,z(b.length,2));c.push.apply(c,b);for(d=0;d<k.length;d++){a=[1,4,1,2,4,1,3,2,0];b=z(k[d].points.length,2);c.push.apply(c,z(a.length+9+b.length+4+4,1));c.push.apply(c,z(a.length,1));c.push.apply(c,a);a=d?z(k[d].time,3):z(0,3);c.push.apply(c,a);
a=this.j(k[d].color);c.push.apply(c,a);c.push.apply(c,z(b.length,1));c.push.apply(c,b);b=ja(parseFloat(k[d].penSize));c.push.apply(c,b);c.push.apply(c,b);b=[];a=[];g=[];for(e=0;e<k[d].points.length;e++){var h=k[d].points[e],f,A;f=h.x;A=h.y;h=h.t||0;f=ja(f);b.push.apply(b,f);A=ja(A);a.push.apply(a,A);A=h;(h=z(Math.abs(A),2))&&0!=h.length?(0>A&&(h[0]|=128),A=h):A=null;g.push.apply(g,A)}c.push.apply(c,b);c.push.apply(c,a);c.push.apply(c,g)}q+="_getHandWritingData end \n";return c};this.b=function(){Q();
q+="_getHandWritingPng start \n";if(0>=k.length)return null;sa(f.canvas.width,f.canvas.height);for(var a=f.getImageData(e[0],e[2],e[1]-e[0],e[3]-e[2]),b,c=b=0;c<a.data.length;c++)void 0!==a.data[c+3]&&0!==a.data[c+3]&&b++;q+="_getHandWritingPng imageLength \uff1a"+b;if(4>b)return null;q+="_getHandWritingPng end(callback == null) \n";q+="convertImgToBase64URL start \n";b=document.createElement("CANVAS");ctx=b.getContext("2d");fa(b,ctx,a.width,a.height);ctx.putImageData(a,0,0);dataURL=b.toDataURL("image/png");
q+="convertImgToBase64URL end \n";return dataURL};this.w=function(a,b,c){if(!(0>=a||0>=b)){var d=this.b();if(2!==(d?d.split(","):"").length)c?c(null):null;else{sa(f.canvas.width,f.canvas.height);var g=[e[1]-e[0],e[3]-e[2]],k=document.createElement("CANVAS"),h=k.getContext("2d");fa(k,h,a,b);var n=new Image;n.src=d;n.onload=function(){var d,e,f,l;g[0]>Math.round(a/b*g[1])?(f=a,l=Math.round(g[1]/g[0]*a),d=0,e=Math.round((b-l)/2)):(l=b,f=Math.round(g[0]/g[1]*b),d=Math.round((a-f)/2),e=0);h.drawImage(n,
d/p,e/p,f/p,l/p);d=k.toDataURL("image/png");c?c(d):null}}}};this.F=function(a,b,c,d){if(!(0>=a||0>=b||0>=c.length)){var e=document.createElement("CANVAS"),f=e.getContext("2d");fa(e,f,a,b);a=Math.floor(a/d);b=Math.floor(b/Math.ceil(c.length/d));for(var h=1;h<=c.length;h++)f.drawImage(c[h-1],(h-1)%d*a/p,(Math.ceil(h/d)*b-b)/p,a/p,b/p);return e.toDataURL("image/png")}};this.A=function(){var a=q+="userAgent \u4fe1\u606f:"+navigator.userAgent+"\n";q="";return a};this.H=function(a){if(a){var b=0,c=t(v(a,
b,2)),d=0;4101<c?(d=t(v(a,b+2,b+4)),b+=4):b+=2;var e=t(v(a,b,b+2)),b=b+2+e,f=t(v(a,b,b+2)),b=b+2+f,h=t(v(a,b,b+2)),n=t(v(a,b+2,b+2+6)),b=b+2+6;4101<c&&(b=d);if(null!==c&&null!==e&&null!==f&&null!==h&&null!==n&&0!=h){this.clear();for(d=0;d<h;d++){var l=0,e=[],f=[],p=[];if(4101<c){for(var u=b,l=t(v(a,b,b+1)),q=t(v(a,b+1,b+1+1)),b=b+1+1,r=0;r<Math.floor(q/3);r++)e.push(t(v(a,b+3*r,b+3*r+1))),f.push(t(v(a,b+3*r+1,b+3*r+2))),p.push(t(v(a,b+3*r+2,b+3*r+3)));b+=q}var q=t(v(a,b,b+3)),b=b+3,w=t(v(a,b,b+1)),
x=t(v(a,b+1,b+2)),y=t(v(a,b+2,b+3)),F="rgb("+w+","+x+","+y+")",b=b+3,z,B;4101<c?(z=t(v(a,b,b+1)),B=t(v(a,b+1,b+1+z)),b=b+1+z,z=Math.round(Z(v(a,b,b+4))),3>z?z=3:18<z&&(z=18),b=u+l):(e.push.apply(e,[1,2,3]),f.push.apply(f,[2,2,2]),p.push.apply(p,[0,0,0]),z=t(v(a,b,b+1)),B=t(v(a,b+1,b+3)),b+=3);for(var C=-1,D=-1,l=-1,r=0;r<e.length;r++)1==e[r]?C=r:2==e[r]?D=r:3==e[r]&&(l=r);if(null===q||null===w||null===x||null===y||null===B||-1==C||-1==D||-1==l)return;r||(q=n);for(var r=[],w=[],x=[],y=[],E=0;E<B;){var G=
v(a,b,b+f[C]);0==p[C]?w.push(ia(G)):w.push(Z(G));E++;b+=f[C]}for(E=0;E<B;)C=v(a,b,b+f[D]),0==p[D]?x.push(ia(C)):x.push(Z(C)),E++,b+=f[D];for(E=0;E<B;)D=v(a,b,b+f[l]),0==p[l]?y.push(ia(D)):y.push(Z(D)),E++,b+=f[l];for(E=0;E<e.length;E++)1!=e[E]&&2!=e[E]&&3!=e[E]&&(b+=f[E]*B);for(E=0;E<B;E++)r.push({x:w[E],y:x[E],t:y[E]});k.push({time:q,points:r,color:F,penSize:z})}replay()}}}}goog.exportSymbol("EPaper",m);m.prototype.N=function(l){this.c(l)};goog.exportProperty(m.prototype,"setPenSize",m.prototype.N);
m.prototype.M=function(l,L,I){this.R(l,L,I)};goog.exportProperty(m.prototype,"setPenColor",m.prototype.M);m.prototype.i=function(){return this.g()};goog.exportProperty(m.prototype,"canRedo",m.prototype.i);m.prototype.P=function(){this.f()};goog.exportProperty(m.prototype,"undo",m.prototype.P);m.prototype.J=function(){this.L()};goog.exportProperty(m.prototype,"redo",m.prototype.J);m.prototype.K=function(){this.O()};goog.exportProperty(m.prototype,"replay",m.prototype.K);m.prototype.B=function(){return this.D()};
goog.exportProperty(m.prototype,"isReplaying",m.prototype.B);m.prototype.clear=function(){this.h()};goog.exportProperty(m.prototype,"clear",m.prototype.clear);m.prototype.m=function(){return this.l()};goog.exportProperty(m.prototype,"getHandWritingData",m.prototype.m);m.prototype.s=function(){return this.b()};goog.exportProperty(m.prototype,"getHandWritingPng",m.prototype.s);m.prototype.o=function(l,L,I){this.w(l,L,I)};goog.exportProperty(m.prototype,"getHandWritingMaskedPng",m.prototype.o);
m.prototype.G=function(l,L,I,R){return this.F(l,L,I,R)};goog.exportProperty(m.prototype,"mergePngsInDesignatedSize",m.prototype.G);m.prototype.I=function(l){this.H(l)};goog.exportProperty(m.prototype,"playWithData",m.prototype.I);m.prototype.u=function(){return this.A()};goog.exportProperty(m.prototype,"getLogInfo",m.prototype.u);m.prototype.v=function(){return"4.5.0.3"};goog.exportProperty(m.prototype,"getVersion",m.prototype.v);

72
public/CFCA/SignTrue.html Normal file
View File

@@ -0,0 +1,72 @@
<!DOCTYPE html>
<html>
<head lang="en">
<title>手写笔迹</title>
<meta name="viewport" charset="UTF-8"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
<script type="text/javascript" src="./EPaper.min.js"></script>
<script type="text/javascript" src="./Base64.js"></script>
<style>
* {
margin: 0;
padding: 0;
}
.paperCanvas {
position: absolute;
left: 0;
bottom: 44px;
top: 44px;
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAIAAAADnC86AAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAETklEQVR42nSXyVbsMBBDPVQS4P//Ew4bSNtx3kJ5F+E0XvRJJx5qkFTl/PHxkVJKKeWcc856Ps/zPM8xhh5qraWUUkpKiZcppVprzrmUwkKt3fdd89lE+6/rylmh7fRNz6zXSh2WbHCwBl91jPaRTZyqN/iTUgoZq9/eu+Zho96X/wN7mYYFPJ/nuSwLb2qt7L/vOzuHnySjZJFiqDHG0F+9x8XWmqcJH3LOx3FoGq4fx3Ech1yvteb39/dlWXLOuDttNAXZ/67r2ntvrSkv2rGU8ng8mDz94sBPjgngdEDOubXmGcGmfd+VCAyVZ/cdJvSd5xkKCzOmbBFeft2y3rtyoU+kwGcCezmGZXGeZ++dZPjx/IoG5++RUooI7U6aFHAAqPMwTiAXWeIeQA+IFqc/BmB0SJ7n6SHEUfaRKZFzRgf0WVN9CCy+ktjqWZiSBb13Hew4x1DeBz5hcq3V5Qm/3XtHA0DV2ezDwTgALccY0XuXIWMMuc43Yi5BuNPJw0gigZIeNEFDYJStAZc0VRki/lqw77veRITeowaoJmLp+PKsjzEAY8458HKi+ZWJiIn4OgA6TZiQ9yiU74PkwYggVmIFckr0sBT0aoJigwTda8lU31zkAzTeRd/hxhusvMvqhF6vrcK53muE9qL8eX0FFCSCmVeeLBJ6mNaWUtZ1VZCVlx86wTmnAfh0XjlJXJgmZChByoJTnNRcHlMyQR0iOima1G7qUu56J1rSfogRGETYwrertR7H0XsXyrB3XdepNVAkhV4OBlzyb4zRWlNl27Zt27aIK8BjjPz5+YlDOvg4Dg/jJNeTOMjEUsqyLOIFRt+Va9s2QBP3mkOCiZ5rLwd7bDFR9EWCnGmKEPNjqr4OS8kNIHCV0MPr66uj/alYEicZBH0CWJZSvr+/pYvASkfCP6SRVD1NBFqLQQjIDxVZ7GQlkpotgNBxyiAvD/n3oFw67lx3LwFByhU61wTvq+/tX2uNTvQuYZAT7/8sEp4SF4qXl5e7pqpITMrlmJhYABSuDkQ0QHpIjIbYRT2emre3t7fJS0evi4GGutIf5fKOp/dOjltrIkZrTYiTixFXTXvabNw7c/dV/rTWQsfQsE0XC1daBzDhmbpxaq1fvVzPwWyQfFUPv2xBA6LnaJBZ92uc09evWxN0wm9wtAqPx8OroaqNYqBnLfGy6IPOZIo57ezV3l4aFjFdApxUwMTFwUvs5NnTO60LbfBKrsCQ6073u38mZ1pMvz1RXDn2SExd6YVql35xgPyRCL+DIEBU+6c9kFdSVG+ux+BFdLpjis4Xs1TmniqawkYJYODuGCOWZSEgX19fEbGuK6hR/JXOWqsaKKzWWu/aUBhXIUCuAnVBauqqdAYNMISmMDuOtItHRRmBmd6YTo1UOF6IuZcXidT98i5pY/JUs4nthC8gFl5YPA2wVnXaa8YUw4uX/+8K96pKT0Enk1L6NwB496XI9pIofQAAAABJRU5ErkJggg==');
width: 100%;
}
.ePaperCanvas {
height: 100%;
width: 100%;
margin: 0;
padding: 0;
display: block;
}
</style>
</head>
<body onload="init()">
<div class="paperCanvas">
<canvas id="paperCanvas" class="ePaperCanvas"></canvas>
</div>
</body>
<script>
var myepaper;
function init() {
myepaper = new EPaper("paperCanvas");
myepaper.setPenSize(4);
}
function getHandWritingData() {
return myepaper.getHandWritingData();
}
function undo() {
myepaper.undo();
}
function redo() {
myepaper.redo();
}
function clear() {
myepaper.clear();
}
function replay() {
myepaper.replay();
}
function getHandWritingPng() {
let img = myepaper.getHandWritingPng();
return img
}
function getHandWritingMaskedPng(width, height, callback) {
myepaper.getHandWritingMaskedPng(width, height, callback);
}
function playWithData(data) {
myepaper.playWithData(data);
}
</script>
</html>

View File

@@ -99,6 +99,14 @@ export function revokerApprove(data) {
data
})
}
// 津贴-提交审批初始化接口
export function approveInit(data) {
return request({
url: getUrl('/agent/allowance/approve/init', 1),
method: 'post',
data
})
}
// <-- zhangqi 津贴申请与我的资料使用到的接口 begin -->

View File

@@ -3,7 +3,7 @@ const applicationList = () => import('@/views/ebiz/allowance/application/List')
const applicationBaseInfo = () => import('@/views/ebiz/allowance/application/BaseInfo')
const applicationAccountInfo = () => import('@/views/ebiz/allowance/application/AccountInfo')
const applicationAttachmentManagement = () => import('@/views/ebiz/allowance/application/AttachmentManagement')
const applicationSignatureConfirmation = () => import('@/views/ebiz/allowance/application/SignatureConfirmation')
const applicationSignatureConfirmation = () => import('@/views/ebiz/allowance/application/SignatureConfirmation/SignatureConfirmation')
const applicationProcess = () => import('@/views/ebiz/allowance/application/process')
const myInfoBaseInfo = () => import('@/views/ebiz/allowance/myInfo/BaseInfo')

View File

@@ -180,7 +180,6 @@ export default {
}
},
created() {
this.orderNo = localStorage.orderNo
this.getAllowanceDetail() // 获取订单详情
},
mounted() {},

View File

@@ -0,0 +1,187 @@
<template>
<div class="orderDetail-container">
<div v-for="(item, index) in allowanceSignDTOLst" :key="index">
<p class="fw600 border-gb">
<span>{{ item.type == 1 ? '申请人' : '享受人' }}</span
><span class="ml60">{{ item.type == 1 ? allowanceApplyDTO.name : allowanceEnjoyDTO.name }}</span>
</p>
<p>点击签名按钮进行{{ item.type == 1 ? '申请人' : '享受人' }}签名</p>
<p class="border-gb">
<span>{{ item.type == 1 ? '申请人' : '享受人' }}</span>
<van-button type="danger" color="#2E4591" class="ml5" size="small" @click="sign(item.type, item.id)" :disabled="isSure" v-no-more-click="1000">{{
item.signStatus == '0' ? '签名' : '已签名'
}}</van-button>
<img class="w60 h40 v-middle ml10" v-if="item.signPath" :src="imgUrl + item.signPath.replace(/\+/g, '%2B')" alt="" /><br>
<!-- 享受人有分享功能 -->
<van-button type="danger" color="#2E4591" class="ml70 mt10" v-if="item.type == 2" size="small" @click="share('0')" :disabled="isSure" v-no-more-click="1000">分享</van-button>
</p>
</div>
<van-button type="danger" color="#2E4591" class="bottom-btn" @click="nextStep" v-no-more-click="1000">提交审批</van-button>
<SignTure :SignShow="SignShow" :signInfo="signInfo" @close="SignClose" @SignSuccessful="SignSuccessful"></SignTure>
</div>
</template>
<script>
import { Toast, CellGroup, Field, Dialog, Collapse, CollapseItem, Cell, Popup, Divider, RadioGroup, Radio, Tag } from 'vant'
import { getAllowanceDetail, saveOrUpdateAllowanceUrl, approveInit } from '@/api/ebiz/allowance/allowance'
import SignTure from './component/SignTure'
import config from '@/config'
export default {
name: 'detail',
components: {
[Field.name]: Field,
[CellGroup.name]: CellGroup,
[Dialog.name]: Dialog,
[Collapse.name]: Collapse,
[CollapseItem.name]: CollapseItem,
[Cell.name]: Cell,
[Popup.name]: Popup,
[Divider.name]: Divider,
[RadioGroup.name]: RadioGroup,
[Radio.name]: Radio,
[Toast.name]: Toast,
[SignTure.name]: SignTure,
[Tag.name]: Tag
},
data() {
let isWeixin = this.$utils.device().isWeixin //判断环境
return {
allowanceNo: this.$route.query.allowanceNo, //1d374d920e3e40568113
isSure: false,
signStatus: false,
// 是否在微信
isWeixin,
allowanceApplyDTO: {}, //申请人
allowanceEnjoyDTO: {},
allowanceSignDTOLst: [],
SignShow: false, // 签字组件展示
signInfo: JSON.parse(localStorage.getItem('curSignInfo')), // 签字文件信息,这里只有姓名
signType: '1', //1:申请人; 2:享受人
insureBase64: '',
imgUrl: config.imgDomain + `/returnImageStream?a=b.jpg&imgPath=`
}
},
filters: {},
created() {
this.getAllowanceDetail() // 获取订单详情
},
mounted() {},
methods: {
//点击签名
sign(signType, signId) {
this.SignShow = true
this.signType = signType
this.signId = signId
},
//签字组件关闭
SignClose(value) {
this.SignShow = value
},
//签字成功
SignSuccessful(data) {
console.log(data)
this.SignShow = data.SignShow
// this.orderSignDTOS[this.index].signUrl = data.path
this.curBase64 = data.path
this.save(this.curBase64)
},
save(signPath) {
let that = this
let obj = {
id: this.signId,
allowanceNo: this.allowanceNo, // ----申请流水号
type: that.signType, //--1:申请人; 2:享受人
signStatus: '1', //--签名状态 0:未签名; 1:已签名
signPath: signPath //--签名图片地址
}
that.allowanceSignDTOLst.forEach(function (item) {
if (item.id == that.signId) {
item.signStatus = obj.signStatus
item.signPath = signPath
}
})
saveOrUpdateAllowanceUrl({
allowanceDTO: {
allowanceSignDTOLst: [obj]
},
allowanceType: 'SIGN_ALLOWANCE',
allowanceNo: this.allowanceNo
}).then((res) => {
if (res.result == '0') {
console.log(res.resultMessage)
} else {
this.$toast(res.resultMessage)
}
})
},
// 获取订单详情
getAllowanceDetail() {
let data = {
allowanceNo: this.allowanceNo
}
getAllowanceDetail(data).then((res) => {
if (res.result == '0') {
let allowanceDTO = res.content.allowanceDTO
this.allowanceApplyDTO = allowanceDTO.allowanceApplyDTO
this.allowanceEnjoyDTO = allowanceDTO.allowanceEnjoyDTO
this.allowanceSignDTOLst = allowanceDTO.allowanceSignDTOLst //签字相关信息
} else {
this.$toast(res.resultMessage)
}
})
},
//分享
share() {},
nextStep() {
for (let item of this.allowanceSignDTOLst) {
if (!item.signPath) {
if (item.type == '1') {
//--1:申请人; 2:享受人
Toast('申请人还未进行签名,请签名。')
} else {
Toast('享受人还未进行签名,请签名。')
}
return false
}
}
approveInit({
allowanceNo: this.allowanceNo
}).then((res) => {
if (res.result == '0') {
Toast({
duration: 3000, // 持续展示 toast
forbidClick: true,
message: '您当前申请已提交成功,可在“津贴申请列表”中查看审批进度。'
})
setTimeout(() => {
this.$jump({
flag: 'h5',
extra: {
url: location.origin + `/#/allowance/approval/List`
},
routerInfo: {
path: '/allowance/approval/List'
}
})
}, 1000)
} else {
this.$toast(res.resultMessage)
}
})
}
}
}
</script>
<style lang="scss" scoped>
.orderDetail-container {
background-color: #fff;
min-height: 100vh;
p {
padding: 10px 20px;
}
/deep/.van-popup {
width: 100%;
height: 100%;
}
}
</style>

View File

@@ -0,0 +1,327 @@
<template>
<van-popup v-model="SignShow" :close-on-click-overlay="false">
<div id="signture">
<div class="topBar">
<button class="textButton" @click="onDone(true)">取消</button>
<button class="textButton_Done" @click="onDone(false)">完成</button>
</div>
<iframe width="300px" height="200px" ref="iframe" id="cfcaepaper" name="myepaper" frameborder="0" :src="`${publicPath}CFCA/SignTrue.html`"></iframe>
<div class="bottomBar">
<div class="bottomCol">
<input class="bottomButton undo" type="button" @click="undo()" />
</div>
<div class="bottomCol">
<input class="bottomButton clear" type="button" @click="clearCanvas()" />
</div>
<div class="bottomCol">
<input class="bottomButton redo" type="button" @click="redo()" />
</div>
</div>
</div>
<!-- 透明loading图 -->
<Loading :isLoading="isLoading"></Loading>
</van-popup>
</template>
<script>
import { Popup } from 'vant'
// import { uploadImage, recognizeHandWriting } from '@/api/insure-process'
import Loading from '@/components/ebiz/Loading'
import { uploadImg } from '@/api/ebiz/sale/sale'
export default {
name: 'SignTure',
props: {
// 是否显示
SignShow: {
type: Boolean,
default: false
},
// 签字人信息
signInfo: {
type: Object,
// eslint-disable-next-line vue/require-valid-default-prop
default: {}
}
},
data() {
return {
publicPath: process.env.BASE_URL,
isLoading: false,
base64: '',
baseWidth: 600,
baseHeight: 400,
WritingMaskedPng: ''
}
},
components: {
[Popup.name]: Popup,
Loading
},
created() {},
mounted() {},
methods: {
initRotateArea() {
const conW = document.documentElement.clientWidth || document.body.clientWidth
const conH = document.documentElement.clientHeight || document.body.clientHeight
if (conW < conH) {
document.getElementById('signture')
//宽小于高时强制横屏并设置canvas宽高
document.getElementById('signture').style.cssText =
'min-height:0px;-webkit-transform:translate(' +
(-conH + conW) / 2 +
'px,' +
(conH - conW) / 2 +
'px) rotate(90deg);width:' +
conH +
'px;height: ' +
conW +
'px;transform-origin: 50% 50%;'
document.getElementById('cfcaepaper').style.width = conH + 'px'
document.getElementById('cfcaepaper').style.height = conW + 'px'
} else {
//宽大于高时刷新宽高不旋转并设置canvas宽高
document.getElementById('signture').cssText =
'min-height:0px;transform:translate(' + 0 + 'px,' + 0 + 'px) rotate(0deg);width:' + conW + 'px;height: ' + conH + 'px;transform-origin: 50% 50%;'
document.getElementById('cfcaepaper').style.width = conH + 'px'
document.getElementById('cfcaepaper').style.height = conW + 'px'
}
},
onDone(isCancel) {
let _this = this
if (isCancel) {
this.$emit('close', false)
this.clearCanvas()
} else {
// eslint-disable-next-line no-undef
myepaper.getHandWritingMaskedPng(_this.baseWidth, _this.baseHeight, function (data) {
if (data == null) {
_this.$toast('签字不能为空')
} else {
_this.base64 = data
let imgType = _this.base64.split(';')[0].split(':')[1]
let filename = Math.floor(Math.random() * 100).toString() + new Date().getTime() + '签名图片.png'
_this.uploadImg(_this.base64, filename, imgType)
// 保存缩放之前的图片
_this.WritingMaskedPng = data
}
})
}
},
//将base64转换为文件
dataURLtoFile(base64, filename, imgType) {
var arr = base64.split(','),
// mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n)
while (n--) {
u8arr[n] = bstr.charCodeAt(n)
}
return new File([u8arr], filename, { type: imgType })
},
// 图片上传
uploadImg(base64, filename, imgType) {
let formdata = new FormData()
formdata.append('imgPath', this.dataURLtoFile(base64, filename, imgType))
this.isLoading = true
uploadImg(formdata)
.then((res) => {
console.log(res)
if (res.result == '0') {
// this.recognizeHandWriting(res.path, this.signInfo.name)
let params = {
// 图片反显
base64: this.base64,
path: res.path,
SignShow: false,
success: true
}
this.clearCanvas()
this.isLoading = false
this.$emit('SignSuccessful', params)
this.isLoading = false
} else {
this.isLoading = false
this.$toast(res.resultMessage)
}
})
.catch((err) => {
this.isLoading = false
this.$toast(err)
})
},
recognizeHandWriting(path) {
// let data = {
// text: this.signInfo.name, // 抄录文字
// imageType: '0',
// imagePath: path
// }
// recognizeHandWriting(data)
// .then((res) => {
// if (res.result == 0) {
// if (res.content.isPass == 0) {
let params = {
// 图片反显
base64: this.base64,
path: path,
SignShow: false,
success: true
}
console.log('SignSuccessful')
this.clearCanvas()
this.isLoading = false
this.$emit('SignSuccessful', params)
// } else {
// this.isLoading = false
// this.$toast(res.content.msg)
// }
// } else {
// this.isLoading = false
// this.$toast(res.resultMessage)
// }
// })
// .catch((err) => {
// this.clearCanvas()
// this.isLoading = false
// this.$toast(err)
// })
},
undo() {
// eslint-disable-next-line no-undef
myepaper.undo()
},
redo() {
// eslint-disable-next-line no-undef
myepaper.redo()
},
clearCanvas() {
// eslint-disable-next-line no-undef
myepaper.clear()
}
},
watch: {
SignShow: {
handler(newVal) {
if (newVal) {
this.$nextTick(function () {
this.initRotateArea()
})
}
}
}
}
}
</script>
<style lang="scss" scoped>
.topBar,
.bottomBar {
display: flex;
justify-content: space-between;
align-items: center;
position: absolute;
height: 44px;
background: snow;
left: 0;
}
.topBar {
top: 0;
width: 100%;
}
.bottomBar {
height: 44px;
bottom: 0;
width: 100%;
clear: both;
}
.textButton,
.textButton_Done {
width: 70px;
height: 44px;
line-height: 44px;
border-radius: 5px;
color: #18ae66;
font-size: 16px;
background: transparent;
display: inline-block;
border: none;
text-align: center;
}
.textButton {
margin-left: 2%;
}
.textButton_Done {
margin-right: 2%;
}
.bottomCol {
display: block;
float: left;
width: 20%;
height: 28px;
margin-top: 7px;
}
.bottomButton {
background: transparent;
align-self: center;
width: 28px;
height: 28px;
display: block;
background-size: 28px;
border: none;
margin: auto;
top: 10px;
left: 0;
right: 0;
bottom: 0;
outline: none;
}
.redo {
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkJCRERCQTlCOTdENTExRTQ5RTk1QUM3OUU4RTIzNThEIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkJCRERCQTlDOTdENTExRTQ5RTk1QUM3OUU4RTIzNThEIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkJEREJBOTk5N0Q1MTFFNDlFOTVBQzc5RThFMjM1OEQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QkJEREJBOUE5N0Q1MTFFNDlFOTVBQzc5RThFMjM1OEQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz66eowoAAAFeUlEQVR42uybC2wUVRSGZ7erUayvWBpLtSC+YgQtEhENiiD4iFRRLJqAGtCgqcRUo/EZNTYq8YnR0BBIfFsUpaioYBWoICBR1MSKivjCqCBiWQPyEOt/0m/iZGO7j+7udHN7ki8zbXZn5p577zn/OdNG2traPJct6jluPQ5w3QGR2tranhXQjaxIXCp6u+qA8WKO+Eic6KIDDuJYIZaLi10Ngn+KYvGKuNNilWsOeF7cLP4RdaJB7OtaGnxYXCDiBMZl4jDXdMBb4lSxXgwWH4pTXBNCX4ghYrHoI5aKCa4pwS3iXFEv9iFGPJCN5y8kKbxb1ICd3yoaxf6u1QL1rIYtBMkV4gjXiqHFxAWLDwPEanGGa9XgejKEZYoS8a6YUugOSFfsxNkGphn2EjPF4yKW6gVieRxcuRgI/UVfcSj63zg4w+vuQTV+jgOuF8chnv4I0wH9xGgxDPqn8J0dzGpzBvd7RqwT87iviaYq8VU+HWBCpVpchmILFjGtYo1Yy0N9L34Sv1P8bEX7d8UsI5wsXheVYhXPsijXDrAIfAP70Y8rNqB3RJN4P9lMZNE2sOJsRYwTb4qbxPRcOGAoiuzMgFixEvY5Br8rpGC6jZV4t7hLPEa6rEl8pkyzQAlydAWDjxOJjyT4LAhx8L7ZC4972ALbxVXiPVHaVQeMES0UJBaBHxGHE4k3dEO98LI4nXgzjOB4QiYOsM/eT4AppT4fxP6Kd3PRtIbguIrs9IEYm44DrAKbK25j1q0QGU7uLRT7VYwgPhWTLm9PJQj24sPnICyq2UuFaKYzriBDTRX3JXOA9ekbGPxGMarAZv3/7KxAQ2V1si3wELn9N6J9oQ/eMsHbyG7rJYzozAEmI2tJZ3b+ZQEPPEIAn03RZBN7iaXHjraAdV+f4otTSR2FalZhPsuA/a7S7GRKcIY4hOA3q4AHb9XmazRPthLAm5JJ4VEs+Va8Vah2vHjDa2+XfceYWpLVAkUoOw8ZuTHHD2lvgSuYqd5gK+8v9un2DK97NgrwQLES0bMplWJoHDLRPFafxYHaoOzFxknMjDUsjvE67+i2UFila9eIJxmbff9y8n9K5XBNIP11pZgpZRaGo8OP7eBzf4sf6Q38IjaTp61y2zvNe1pGm0ZN4lGl3kFRlFJDZBAP3Eotna5ZJTge3TAkQWZbo8M6uB+LT2mKWFPzByJz0F7AAenYfkjci5g4WwVPp/LFoAOu5PhiGnuvF6pqIjMdCZSin4iFNENWEoVzYWUEu8FIddvGS1L9ciwgFMYGysdUlvh1bJkSfmdF0lKk84I8BFCzgdyrghU1Jl3B5jvAglNf9uGyTj5fzB67kXOP/TsT4ZSPQft2nniJQLqc5b853Yv4DhjNscnruDE5geBYxs+2xOvoD+zJc443dTqdtG1bdrLYmcmF/EB1GsfmDlLYfFpgZQSwavZcY54HbwN+VDzBs9cRf3ZmekF/BQzlmLj8K5GSFdzkXq+99xdGv6+Y2a7iWa5mUrpk5oByFNg2AokX2BbzuPHXpLjPQpK15QQ7mxB7K3wh+97LhgOO4nxtYP+PZG9bK2wRgw+r71dJmrMK1d78nM8xK2b76GjO/dkfwMz7fcCqEAdf5f33x1HNbNV12byBrYA+nP9MSnmVImIhkX93SIOfTBeqCGU6JRexJ0qU9x0wjSLlG6/9hUJYg/d7d/Z89mZnUq4Cbyyg5PqJa0lrE3MoXVO1HQx8Ti5vEg3o90n8PCvkFth8iqaRuR68vwIOCBQ2uygjw7S5kBeLJiz1RupzZyyaIGUbPMcsirLyy9klLjpgU0AJxl10wLect3gOWgzNfwtVn5MOsP7fg56jFun532HHrccBrjvgXwEGAL7rObRKmILRAAAAAElFTkSuQmCC')
no-repeat;
background-size: 28px;
border: none;
top: 10px;
}
.redo:active {
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjEyOUIyMThFOTdENjExRTQ4QkU4REMwRjQ0OTNBN0QxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjEyOUIyMThGOTdENjExRTQ4QkU4REMwRjQ0OTNBN0QxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTI5QjIxOEM5N0Q2MTFFNDhCRThEQzBGNDQ5M0E3RDEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MTI5QjIxOEQ5N0Q2MTFFNDhCRThEQzBGNDQ5M0E3RDEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz56bhQgAAAFeUlEQVR42uybC2wUVRSGp9tqFOsrlsZSLYivGEGLRESDIggqkSqKRRNQAxo0lRg1Gp9RY6MSnxiNDYFE8VW0SlFRwSpQQUCiqIkVFfGFUUHEsgbkIdb/pN/EycZ2H93d6eT2JF9m2uzszD333nP+c6YtaGtr81y2mOe49TjAdQcUNTQ09KyAbmSF4hLR21UHTBBzxUfiRBcdcBDHCrFcXORqEPxTFItXxJ2iwDUHPC9uFv+IWlEv9nUtDT4szhdxAuMycZhrOuAtcapYLwaLD8UprgmhL8QQsVj0EUvFRNeU4BZxrqgT+xAjHsjG80dJCu8WNWDnt4pGsb9rtUAdq2ELQXKFOMK1YmgxccHiwwCxWpzhWjW4ngxhmaJEvCumRt0B6YqdONvANMNeYqZ43KrclMvhPA6uXAyE/qKvOBT9bxyc4ffuQTV+jgOuE8chnv4I0wH9xGgxDPqncM0OZrU5g/vNEevEPO5roqlKfJVPB5hQqRaXotiCRUyrWCPW8lDfi5/E7xQ/W9H+XTHLCCeL10WlWMWzLMq1AywC38B+9OOKDegd0STeTzYTWbQNrDhbEePFm+ImMSMXDhiKIjszIFashH2Owe8KKZhuYyXeLe4Sj5EuaxKfKdMsUIIcXcHg40TiIwk+C0IcvG/2wuMetsB2caV4T5R21QFjRQsFiUXgR8ThROIN3VAvvCxOJ94MIziekIkD7LP3E2BKqc8Hsb/i3Vw0rSE4riI7fSDGpeMAq8Csf34bs26FyHByb1TsVzGC+FRMurw9lSDYiw+fg7CoZi9F0UxnXE6GmibuS+YA69PXM/iNYlTEZv3/7KxAQ2V1si3wELn9N6J91AdvmeBtZLf1EkZ05gCTkdeTzuz8ywgPvIAAPpuiySb2YkuPHW0B674+zYXTSB1RNaswn2XAfldpdjIl+JQ4hOA3K8KDt2rzNZonWwngTcmk8CiWfCveiqodL97w2ttl3zGmlmS1QCHKzkNGbszxQ9pb4ApmqjfYyvuLfbo9w+89GwV4oFiJ6NmUSjE0HploHqvL4kBtUPZi4yRmxhoWx3idd3RbKKzStavFk4zNrr+M/J9SOVwTSH9dKWZKmYXh6PBjO/jc3+JHegO/iM3kaavc9k7znpbRplOTeFSpd1AUpdQQGcQDt1JLp2tWCU5ANwxJkNnW6LAO7sfiU5oi1tT8gcgctBdwQDq2HxL3QibOVsEzqVwYdMAVHF9MY+/1QlVNYqYLAqXoJ2IhzZCVROFcWBnBbjBS3bbxklQvLgoIhXGB8jGVJX4tW6aE31mRtBTpvCAPAdRsIPeqYEWNTVew+Q6w4NSXfbisk88Xs8du5Nxj/85EOOVj0L6NES8RSJez/Den+yW+A0ZzbPI6bkxOJDiW8bMt8Vr6A3vynONNnc4gbduWnSJ2ZvJFfqA6jWNzBylsPi2wMgJYNXuuMc+DtwE/Kp7g2WuJPzsz/UJ/BQzlmLj8K5GSFdzkXq+99xdGv6+Y2a7iWa5iUrpk5oByFNg2AokX2BbzuPHXpLjPQpK15QQ7mxB7K3wB+97LhgOO4nxtYP+PZG9bK2wRgw+r71dJmrMK1d78nMcxK2b76GjO/dkfwMz7fcCqEAdf5f33x1HNbNV12byBrYA+nP9MSnmVImIhkX93SIOfQheqEGU6NRexJ0aU9x0wnSLlG6/9hUJYg/d7d/Z89mZncq4Cb1FAyfUT15DWJuVQuqZqOxj43FzeJBbQ75P5eVbILbD5FE0jcz14fwUcEChsdlFGhmkNkBeLJSz1RupzZyyWIGXrPccshrLyy9klLjpgU0AJxl10wLect3gOWhGa/xaqPicdYP2/Bz1HraDnf4cdtx4HuO6AfwUYABo+OmjHBJh/AAAAAElFTkSuQmCC')
no-repeat;
background-size: 28px;
}
.undo {
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkJCNUEwOUJEOTdENTExRTQ4NDZFQjc2MzY3RTQwMDgwIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkJCNUEwOUJFOTdENTExRTQ4NDZFQjc2MzY3RTQwMDgwIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkI1QTA5QkI5N0Q1MTFFNDg0NkVCNzYzNjdFNDAwODAiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QkI1QTA5QkM5N0Q1MTFFNDg0NkVCNzYzNjdFNDAwODAiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6prmq7AAAFuUlEQVR42uybCWxUZRSFXzeX0ooEWURRwNoWpYKCobhFUVBiRFxwRQ0al0YkbQTjEo3GFWrciBtqLAEVBaWKVSKuoA0iEkVbQETAJUqBCoK2KLSeS78xYzN0Zl5ne3m9yZdOoX3Lff9/7rl3pmnNzc2OnyOtIwEdCfB3AjLLysp8nYD0BJ/rAtHLjwnIFfPEXPFISm2BBJyjr3hTFPF9jp9WwCliKTe/w28acK14Xxwk3hHX+yUBtq0eF9NFlnhYjBbbUrIMxvh4XcSrYoTYyVOfkdI+IIbHKhBviXyxUZwvqv3iA84US7j5r8TxXrj5WCWgVFSJA8Xr4iTxkx+c4D7iefEox7lHjBV/eqoXcPl73YOe9l9ivHjNk82Qi985BmfXR/wszhXL/dIMjRGfcfNLELtobz4LPLUC0sRt4j5ezxTXiUYX5xwp/kYrtsIWsV78IFaJb8VK0ZQKCdhfvCAu5YJuFVNdnOtrsRr9sGN2gkOC+obg2Mpq+1R8Ij6PR0LCJaAX+32I2C4uE2+7PJfpRWGrc5tz7MZ5euMj7GcGsc3OBofSakI7WyxLRAJsf1dycWsRu5oYJn+X2AS1If7fEnOiOJ0kWFt9M5jZeoj5wu54iKA96UXc/MeiOMY3H0ls4gHcJPqxKspFHa9noxfXtMfPpIf4/gExS+wnnkW0NqeAYJuG3CIOp8kyPcnDjNmWGNreBNik5g3U3pbVBHGD+CfFSncjrfZRYpz4VRyLYN4vMtwkoC/Ni+3zejFKPJniHsYqwkskYpqw+f7t9CVdoknAyZSYIvbUUCY5XgkrlxPFcPFLUGdaEGkC5qG4tYjd9x51tYvFYKdlBpmPdzg6kgQ8x+v+lJg0x7thg5jTqFw9xAJxRLgEmOiVIHx3ipepAF4N607PYRscinE7IJwIPsMvmdu7RHzotExzvRo2gj8L71KIlQ9bBhfgvH4Uw8hgoYeTsI0Bja2IC5lZhDVC31AFlrJ3qrGiXg3rKG/ktU2uekZihX8Tp1IdrJ6+K672cBIqxHuiM/3D/yKjuLh4b43KHJGNTzCDtC/a4DbG0WMMw7yYQHWl6uzAyMQrlmOfB+F26yLpBpvw3t+Jp6gWR4orRYOLi5jRRtNidnsDXmQlF/wlXWgsopZyX0Klu/i/SU9paWkkBziD1rMz+jCamhtNBJ7wFGp0N2YAeay0ULEFg2Om5gM0ym3k0UA1YZTWRZMAB1c1n75hHWWzxkUCQhmtnqwuu7CBLNXjmBgFx3quYS6JiXbbmK6NoeO9I9oEOIyzKtnHVmYuQmDam4C9DWsGokEjEObsVsmYSY3fEOExbSUvZLpkE6emaAcJdTQdc9gOVU783vbehQ48xkSoK11qBQ1QH/az9S6v0AeEi4+4h970Pa4mKY2IyIM8JXORU534f9iiEbM2ni0zlhvKxL0uQ+Hz2jjGbraBwxZ2fdGB3tsuxkbck9mXnRJU23dyPluNA1gVtmLOQ5fK27iWKr4Od2Lw1Crw3L9zclPrgxNsdGp4EP15uvae5SSxIrDMW8UiKoEJbXYslq0twxOo2YPpIYqS4PhMC+wzCSMRyH7cbEmIHmE1iRoSq327imzbmxiHMZ8blSTru5DqYe8hZGHiyltVnxV8HRBL4dpMmTFFzqVeT0hSEv5AGO9GryZRTYKbPouC9DiI0+XiXvRlGl1YRhKSYDdun1m4CvWfyMTLoeW3yM+M04nvooewmX1puLFUnMPMUg5bYQpWPmDju8ezds/CwdUHam4S42mnZcxvK/HFoGauR7zNy2LEcU1Qh5msmIz622q8gn/LScSHpdeQBOshpicxAQ3ogBOUgNzMBJ28HqOU7LDGrRrfsscIpjv+iyeChz5+TIB9mjXwUb7tfkxAA+K8xzD5MQEWX/B1o18TEBjlrc30aQIq8QXz/ZoA61nsDzk6/nCyIwEdCfB5Av4VYACKbmA6FUm+cAAAAABJRU5ErkJggg==')
no-repeat;
background-size: 28px;
}
.undo:active {
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjEyMjNBNURGOTdENjExRTRCMzk2RjA5MzQwRjgwMUM5IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjEyMjNBNUUwOTdENjExRTRCMzk2RjA5MzQwRjgwMUM5Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTIyM0E1REQ5N0Q2MTFFNEIzOTZGMDkzNDBGODAxQzkiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MTIyM0E1REU5N0Q2MTFFNEIzOTZGMDkzNDBGODAxQzkiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5AUNwzAAAFuUlEQVR42uybCWwUZRTHp2VrtLYiUQ5RlKO2RamoYPCOVkGJEfHA+wgaj0YkGMGoRKPxhBpRiRdqLAEV2ypVrBLxBG0Q0SjSAiICKlEoVBC1BaH1/+hvzaZZurvTvSbTl/yy28DMN9+b73vv/97MZrS0tDh+tkzH59bpAL87IFBRUdG5ApI41sWitx8dkCvmikrxRFptgSSM0U+8LYr4O8dPK+B0sYTJ/+W3GHCj+FAcLN4TN/vFAbatnhIzRJZ4XIwS29IyDcb5fN3EG2K42MFdn5nWOiCO5yoQ74h8sVFcJGr8ogPOEYuZ/LfiBC9MPl4OmCCqxYHiTXGq+MUPSnAf8ZKYxnkeEGPE356qBVwe1yPkbv8jxopyTxZDLo45BmXXV/wqLhDf+KUYGi2+YPKLCXaxTj4LPLUCMsTd4iG+zxI3iSYXY44QO4kVW2GLWCd+EivFcrFCNKeDA/YTL4sruKC7xFQXY30nVhE/7Jz7w6EhdUOobWW1fS4+E18mwiGRHNCb/T5UbBdXinddjmXxorDN2KYcuzNOH3SE/Z9j2WbngUNqtUA7RyxNhgNsf1dxcWsIdrVxdP4uUQ91Yf7dHHOKOAsnWFl9B5jYeoz+wu5EBEG70wuZ/KfixDhPPhqr5wbcJvqzKkrFJr7PIV7c0BE9kxnm70fEbLGveIGgtTkNArbFkDvFERRZFk/yEGO2JYZ11AHWqXmLaG/Lapy4RfybZqm7iVL7KHG1+E0cR8B8WHRx44B+FC+2zxvESPFMmmsYywiv4ojpwh5x3UNd0i0WB5xGiiliTw2jk+MVs3Q5XhSLDSGVaUG0DphLxK0j2P3oUVW7SAxxWnuQ+WiHo6NxwIt8H0iKyXC8a9aIOZPM1VPMFwMiOcCCXgmB717xGhnAq2bV6flsg8MQbgdECoLPc5CpvcvFx05rN9erZi34c9EuhUj5iGlwPsrrZ3ESHiz0sBO20aCxFXEJPYuIQuh7ssAS9k4NUtSrZhXlrXy3zlWvaKTw7+IMsoPl0/fF9R52Qpn4QHSlfoiqGGpk2dgBk9hDJjsnIzjcmKm2QfQB6nF0PVXeho4WNRHsdqT0NU7rg5rl0VSDzWjvH8SzZIsjxbU4KFab2U7RYnJ7PVpkBV2mr6lC42F1pPsSMt1l/3d6ysuj6mWeTenZlfgwipwbiwVXzhRydHd6ALaysvdyzBYEjomaj4hRbi2PAqoZobQ2Fgc4qKp51A1rSZu1LhwQTmj1YnXZhQ2m3D2ejlGoreMaKnFMrNvR4tpoKt7JsTrAoZ1VRZq0NHMpAaajDthbs2YwtcpwAnN2G2fMIj6tj/KctpIXEHes49QcayNhE0VHBduh2kncY+9dxIEn6QgdRJVaRgHUl/1stcvr1AGR7BPm0Ie6x1UnpYkg8ih3yVTkVCfxL1s0IdbGsmXGMKEA6nUp/Yy8ds6xm23gsIVdX3Sw9raL2UmqrAyzZxNlOxivmNRaxoq5kLhU2s61VPNZ7MThrpWhuf9gcIvWhyRZ6NRyIwZyd+2Z5USxLLjM29hCMoEF2ux4LFtbhieTs4dQQxSlQPFZLLB3EkYQIPsz2ZIwNcIqHDU0Xvt2Jd62hxiH058bmSLpu4DsYektCxFX2ib7LONzUDwD12bSjEXkXPL1uBQ54U8C4/3Eq4lkk9Ciz6wgMwHB6SrxIPFlOlVYlxQ4wSZu7yxcR/QfT8fLoeQ3yw8kaOD7qCGsZz8hUlsqwWZiKYetMAUpH5TxPRKZu2ej4BqCOTeF9pzT2ua3lfhKSDHXM9HiZRHBcXVIhZkqm0T0H0BZbJaTjJelV+MEqyFmpNABjcQBJ8QBuYEkDd6AUEq1WeFWg27ZIwT9+IuRp0ObPn50gL3NGnyVb7sfHdBIcN4jmPz6o6mv+NzoVwcEW3lrAj51QBW6YJ5fHWA1iz0fcDI6fzvsc+t0gN8d8J8AAwAK7lWqnuKO6wAAAABJRU5ErkJggg==')
no-repeat;
background-size: 28px;
}
.clear {
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkJDNTExNzhCOTdENTExRTQ5OEJGQTU1NDU1OUZDM0U2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkJDNTExNzhDOTdENTExRTQ5OEJGQTU1NDU1OUZDM0U2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QkM1MTE3ODk5N0Q1MTFFNDk4QkZBNTU0NTU5RkMzRTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QkM1MTE3OEE5N0Q1MTFFNDk4QkZBNTU0NTU5RkMzRTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4ZOLCrAAAGMElEQVR42txb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')
no-repeat;
background-size: 28px;
top: 10px;
}
.clear:active {
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjEzMUQ5OUU3OTdENjExRTQ5ODREQTQyNzRBQTc4MkRBIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjEzMUQ5OUU4OTdENjExRTQ5ODREQTQyNzRBQTc4MkRBIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MTMxRDk5RTU5N0Q2MTFFNDk4NERBNDI3NEFBNzgyREEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MTMxRDk5RTY5N0Q2MTFFNDk4NERBNDI3NEFBNzgyREEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5P/XO7AAAGMElEQVR42tyb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')
no-repeat;
background-size: 28px;
}
/deep/.van-popup {
width: 100%;
height: 100%;
}
</style>

View File

@@ -0,0 +1,35 @@
/* eslint-disable */'use strict';var goog=goog||{};goog.global={};goog.exportPath_=function(name,opt_object,opt_objectToExportTo){var parts=name.split(".");var cur=opt_objectToExportTo||goog.global;if(!(parts[0]in cur)&&cur.execScript)cur.execScript("var "+parts[0]);for(var part;parts.length&&(part=parts.shift());)if(!parts.length&&opt_object!==undefined)cur[part]=opt_object;else if(cur[part])cur=cur[part];else cur=cur[part]={}};
goog.exportSymbol=function(publicPath,object,opt_objectToExportTo){goog.exportPath_(publicPath,object,opt_objectToExportTo)};goog.exportProperty=function(object,publicName,symbol){object[publicName]=symbol};var oa="function"==typeof Object.defineProperties?Object.defineProperty:function(k,E,t){k!=Array.prototype&&k!=Object.prototype&&(k[E]=t.value)},pa="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:"undefined"!=typeof self&&null!=self?self:this;
function La(k,E){if(E){var t=pa;k=k.split(".");for(var x=0;x<k.length-1;x++){var K=k[x];K in t||(t[K]={});t=t[K]}k=k[k.length-1];x=t[k];E=E(x);E!=x&&null!=E&&oa(t,k,{configurable:!0,writable:!0,value:E})}}La("Array.prototype.fill",function(k){return k?k:function(E,t,x){var K=this.length||0;0>t&&(t=Math.max(0,K+t));if(null==x||x>K)x=K;x=Number(x);0>x&&(x=Math.max(0,K+x));for(t=Number(t||0);t<x;t++)this[t]=E;return this}});
function Ma(k){k&&k.preventDefault?k.preventDefault():window.event&&(window.event.returnValue=!1)}function Na(k){k&&k.stopPropagation?k.stopPropagation():window.event&&(window.event.cancelBubble=!0)}
function h(k){function E(){var a=u.getBoundingClientRect().width,b=u.getBoundingClientRect().height;u.width=a*A;u.height=b*A;m.scale(A,A);u.style.backgroundColor=u.style.backgroundColor}function t(a,b,c){window.getSelection()?window.getSelection().removeAllRanges():document.selection.empty();m.save();m.moveTo(a,b);L=R/2*(O/320);ba&&(U(document,"mousemove",ba),U(document,"touchmove",ba),U(document,"mouseup",W),U(document,"touchend",W));"touchstart"==c?(ca(document,"touchmove",ba),ca(document,"touchend",
W)):(ca(document,"mousemove",ba),ca(document,"mouseup",W));M=null;x(a,b)}function x(a,b){if(v.length){var c=v[v.length-1];var d=Math.sqrt((c.x-a)*(c.x-a)+(c.y-b)*(c.y-b));if(0==d)return}Ca++;navigator.userAgent.match(/ OS (\d+).*? Mac OS/)&&!qa&&2==v.length&&4*c<v[1].a&&(v[0].x-=2/3*(v[0].x-v[1].x),v[0].y-=2/3*(v[0].y-v[1].y),v[1].a/=2/3*v[1].a);c={x:a,y:b,a:d};v.push(c);3<=v.length&&(c=v.shift(),K(c))}function K(a,b){var c=a.x,d=a.y,e=a.a;if(!M||0!==e){var f=v.length?v[0]:null;if(e&&M){m.moveTo(M.x,
M.y);if(!qa&&f&&e>3*f.a){e/=4;var g=1}qa=1;b||(b=Da(e));la=b;if(g)for(g=1;3>=g;g++)Ea(c+g/3*(M.x-c),d+g/3*(M.y-d),e)}Ea(c,d,e);M=a}}function Da(a){var b=O/320*R;return.65*(a<.003125*O?1.2*b:a<.00625*O?1.15*b:a<.009375*O?1.1*b:a<.015625*O?1.05*b:a<.021875*O?b:a<.028125*O?.95*b:a<.034375*O?.9*b:a<.046875*O?.85*b:a<.0625*O?.8*b:.75*b)}function Ea(a,b,c){var d={x:a,y:b},e=L;m.fillStyle=P;m.strokeStyle=P;if(M){a=Math.floor(Math.abs(c)/(L/3));if(1<a)for(e=L,c=0;c<a;c++)e-=(e-la)/(8<a?a:8);else Math.abs(L-
la)>O/320*R*.025&&(e=L-(L-la)/8);a=Math.abs(L-e);1<=a&&(e=L>e?e+.4*a:e-.4*a);a=null;if(0<v.length){a=M;b=v[0];var f=Oa,g=b.x-a.x,n=b.y-a.y,p=Fa(a,d),y=Fa(d,b),F=p+y;a=0==p||0==y||(d.x-a.x)/(d.y-a.y)==(d.x-b.x)/(d.y-b.y)?null:[{x:d.x-g*f*p/F,y:d.y-n*f*p/F},{x:d.x+g*f*y/F,y:d.y+n*f*y/F}]}b=[M];if(da||a){f=a?a[0]:d;da=null==da?M:da;g=M;n=da;c/=2*e;p=[];for(y=0;y<c;y++){F=(y+1)/(c+1);var D=3*(n.x-g.x);var r=3*(f.x-n.x)-D;var S=d.x-g.x-D-r;var I=3*(n.y-g.y);var z=3*(f.y-n.y)-I;var X=d.y-g.y-I-z;var J=
F*F;var T=J*F;p.push({x:S*T+r*J+D*F+g.x,y:X*T+z*J+I*F+g.y})}b=b.concat(p)}b.push(d);d=b;c=L;b=e;p=c;for(f=1;f<d.length;f++)g=(b-c)/(d.length-1)+p,z=d[f-1],n=d[f],y=g,D=p*Math.sin(Math.atan((n.y-z.y)/(n.x-z.x))),I=p*Math.cos(Math.atan((n.y-z.y)/(n.x-z.x))),X=y*Math.sin(Math.atan((n.y-z.y)/(n.x-z.x))),r=y*Math.cos(Math.atan((n.y-z.y)/(n.x-z.x))),F=z.x+D,S=z.y-I,D=z.x-D,z=z.y+I,I=n.x+X,J=n.y-r,X=n.x-X,r=n.y+r,m.beginPath(),m.moveTo(F,S),m.lineTo(I,J),m.lineTo(X,r),m.lineTo(D,z),m.lineTo(F,S),m.fill(),
m.closePath(),m.lineWidth=p,m.beginPath(),m.arc(n.x,n.y,y,0,2*Math.PI),m.fill(),m.closePath(),p=g;m.lineWidth=L=e;!a||1>=a.length?da=null:da=a[1]}else 2<=v.length&&((e=v[1].a)&&(L=Da(e)),L+=2),m.beginPath(),m.fillStyle=P,m.arc(a,b,L,0,2*Math.PI),m.fill(),m.closePath()}function Fa(a,b){return Math.sqrt(Math.pow(b.x-a.x,2)+Math.pow(b.y-a.y,2))}function ea(){Q&&W(null)}function ra(a){Ma(a);Na(a);ea();if("edit"===H){if("touchstart"==a.type){if(2<=a.touches.length)return;var b=a.touches[0].pageX;var c=
a.touches[0].pageY;U(u,"mousedown",ra)}else a.pageX?(b=a.pageX,c=a.pageY):(b=a.clientX,c=a.clientY);Ga()||(Y=u.getBoundingClientRect(),Y={left:Y.left+(window.scrollX||window.pageXOffset),top:Y.top+(window.scrollY||window.pageYOffset)},b-=Y.left,c-=Y.top,Q={time:new Date,points:[{x:b,y:c,t:0}],color:P,penSize:R},sa&&!ta()&&sa(),t(b,c,a.type))}}function ba(a){Ma(a);Na(a);if("edit"===H){if("touchmove"==a.type){if(2<=a.touches.length)return;var b=a.touches[0].pageX;a=a.touches[0].pageY}else a.pageX?(b=
a.pageX,a=a.pageY):(b=a.clientX,a=a.clientY);b-=Y.left;a-=Y.top;Ga()?W(null):(Q.points.push({x:b,y:a,t:new Date-Q.time}),x(b,a))}}function W(a){ua&&!ta()&&ua();Ma(a);Na(a);"edit"===H&&(ia(),q.length?Q.time-=Ha:(Ha=Q.time,Q.time=Q.time.getTime()),q.push(Q),fa=null,ja=[],Q=null)}function Ga(){var a=0;Q&&(a+=Q.points.length);for(var b=0;b<q.length;b++)a+=q[b].points.length;return a>Pa?!0:!1}function va(){"play"==H&&(H=ma,clearTimeout(ha),ka());"edit"===H&&(M=null,l=[-1,-1,-1,-1],Ca=0,q.length&&(fa=q),
q=[],m.beginPath(),m.clearRect(0,0,u.width,u.height),m.closePath())}function ia(){U(document,"mousemove",ba);U(document,"touchmove",ba);U(document,"mouseup",W);U(document,"touchend",W);for(var a;v.length;)a=v.shift(),K(a,O/320*R/8)}function Ia(){function a(){P=b;R=c;V>=q.length?H=ma:(clearTimeout(ha),ha=setTimeout(function(){Ia()},300))}var b=P,c=R,d=q[V];if(d&&"play"==H){P=d.color;R=d.penSize;t(d.points[0].x,d.points[0].y);1==d.points.length&&(ia(),a());var e=1,f=0;var g=d.points[e];var n=function(){g&&
(x(g.x,g.y),e>=d.points.length-1&&(ia(),a()),e++,g=d.points[e])&&(clearTimeout(ha),ha=setTimeout(n,g.t-f),f=g.t)};n();V++}}function ka(){function a(){P=b;R=c;V>=q.length&&(H="edit")}var b=P,c=R;m.clearRect(0,0,u.width,u.height);m.beginPath();V=0;for(var d=q[V];d;){P=d.color;R=d.penSize;t(d.points[0].x,d.points[0].y);1==d.points.length&&(ia(),a());for(var e=1,f=1;e<d.points.length;e++){var g=d.points[f];f++;x(g.x,g.y);f>=d.points.length&&(ia(),a())}V++;d=q[V]}}function wa(a,b,c,d,e){e=void 0===e?!1:
e;a.height=d;a.width=c;a.style.height=d/A+"px";a.style.width=c/A+"px";b.scale(A,A);e&&(b.fillStyle="white",b.fillRect(0,0,c,d))}function Ja(a,b){G+="getWritingRect start \n";l=[-1,-1,-1,-1];for(var c=0;c<q.length;c++)for(var d=0;d<q[c].points.length;d++){var e=q[c].points[d],f=e.x;e=e.y;var g=0>f-16?0:f-16,n=0>e-16?0:e-16;l[0]=0>l[0]?g:l[0];l[0]=l[0]>g?g:l[0];l[1]=l[1]<f+16?f+16:l[1];l[2]=0>l[2]?n:l[2];l[2]=l[2]>n?n:l[2];l[3]=l[3]<e+16?e+16:l[3]}G+="writingRect[0][1][2][3] = "+l[0]+"*"+l[1]+"*"+
l[2]+"*"+l[3]+"*\n";l[1]=l[1]>a?a:l[1];l[3]=l[3]>b?b:l[3];for(c=0;c<l.length;c++)l[c]*=A;G+="getWritingRect end \n"}function ca(a,b,c){a.attachEvent?a.attachEvent("on"+b,c):a.addEventListener(b,c,{passive:!1})}function U(a,b,c){a.detachEvent?a.detachEvent("on"+b,c):a.removeEventListener(b,c,{passive:!1})}function xa(a){var b=[];if(!a)return b;for(var c=0;c<a.length;c++){var d=ya(a.charCodeAt(c));b.push.apply(b,d)}return b}function za(a){return a&&0!=a.length?String.fromCharCode.apply(String,a):null}
function ya(a){if(0>a)return null;var b=Math.floor(a/4294967295);a%=4294967295;var c=[],d=[];if(b){do c.push(b&255),b>>>=8;while(b);d.push.apply(d,c.reverse())}c=[];do c.push(a&255),a>>>=8;while(a);d.push.apply(d,c.reverse());return d}function B(a){if(!a||0==a.length)return null;var b=4<a.length?a.slice(0,a.length-4):[];a=4<a.length?a.slice(a.length-4,a.length):a;for(var c=0,d=b.length-1;0<=d;d--)c|=(b[d]&255)<<8*(b.length-1-d);b=0;for(d=a.length-1;0<=d;d--)b|=(a[d]&255)<<8*(a.length-1-d);return 4294967295*
c+b}function Aa(a){if(!a||0==a.length)return null;var b=a[0]&128;128==b&&(a[0]^=128);a=B(a);128==b&&(a=-a);return a}function na(a){if(!a||4!=a.length)return null;var b=new ArrayBuffer(4),c=new DataView(b);a.forEach(function(d,e){c.setUint8(e,d)});return c.getFloat32(0)}function Ba(a){var b=new Float32Array(1);(new DataView(b.buffer)).setFloat32(0,a,!1);return new Int8Array(b.buffer)}function w(a,b,c){return!a||c>a.W||0>b?null:a.slice(b,c)}function N(a,b){var c=[];a=ya(a);if(null==a)return null;if(a.length>
b){for(var d=0;d<b;d++)c.push(255);return c}for(d=a.length;d<b;d++)c.push(0);c.push.apply(c,a);return c}function ta(){return 0!=q.length&&"play"==H?!0:!1}var u=null,Y=null;if(k.nodeType)u=k;else if("string"==typeof k)u=document.getElementById(k);else return;(function(a,b,c){document.addEventListener?a.addEventListener(b,c,!1):document.attachEvent&&a.attachEvent("on"+b,c)})(window,"resize",function(){G+="[window-resize function] start \n";var a=u.getBoundingClientRect().width*A/u.width,b=u.getBoundingClientRect().height*
A/u.height;.9<=a&&1.1>=a&&.9<=b&&1.1>=b||(E(),G+="[window-resize canvas.width + canvas.height] ="+u.width/A+"_"+u.height/A,va(),G+="[window-resize function] end \n")});var A=window.devicePixelRatio||1,q=[],ja=[],L=1,la=1,P="rgb(0,0,0)",R=8,O=320,Ca=0,Q=null,fa=null,H="edit",l=[-1,-1,-1,-1],Oa=.4,M=null,da=null,v=[],qa=0,Ha=null,V=0,ma="edit",ha=null,m=u.getContext("2d"),Pa=5E4,G="",sa=null,ua=null;(function(){E();va();u.getContext&&(m.strokeStyle=P,m.fillStyle=P,ca(u,"selectstart",function(){return!1}),
ca(u,"touchstart",ra),ca(u,"mousedown",ra))})();this.s=function(){for(var a="6.1.0.0";0<=a.indexOf(".");)a=a.replace(".","");return N(parseInt(a),2)};this.o=function(a){var b=a.match(/(\d+)/g);a=[];if(b)for(var c=0;c<b.length;c++)a.push.apply(a,ya(b[c]));for(b=a.length;3>b;b++)a.push(0);return a};this.h=function(a){R=1==a&&18||2==a&&12||3==a&&8||4==a&&6||5==a&&3||8};this.g=function(a,b,c){P="rgb("+a+","+b+","+c+")"};this.j=function(){ea();return!!ja.length};this.i=function(){ea();if("edit"===H)if(fa&&
fa.length)q=fa,fa=null,ka();else if(q.length){var a=q.pop();ja.push([a]);ka()}};this.N=function(){ea();"edit"===H&&ja.length&&(q=q.concat(ja.pop()),ka())};this.T=function(){ea();0!=q.length&&("play"==H?(H=ma,clearTimeout(ha),ka()):(ma=H,H="play",m.clearRect(0,0,u.width,u.height),m.beginPath(),V=0,Ia()))};this.H=function(){return ta()};this.l=function(){G+="_clear start \n";va();G+="_clear end \n"};this.C=function(){ea();G+="_getHandWritingData start \n";if(0>=q.length)return null;var a=navigator.userAgent.match(/\([^\)]*\)[^\(]*\([^\)]*\)\s(.*)/);
a&&0<a.length&&(a=a[1]);var b=navigator.userAgent.match(/\(([^\)]*)\)/);b&&0<b.length&&(b=b[1]);b+=";4.5.3.1";var c=[],d=this.s();a=xa(a);var e=xa(b);b=xa("");var f=6+a.length+2+e.length+2+6+2+b.length;c.push.apply(c,d);c.push.apply(c,N(f,2));c.push.apply(c,N(a.length,2));c.push.apply(c,a);c.push.apply(c,N(e.length,2));c.push.apply(c,e);d=N(q.length,2);c.push.apply(c,d);d=N(0<q.length?q[0].time:0,6);c.push.apply(c,d);c.push.apply(c,N(b.length,2));c.push.apply(c,b);for(d=0;d<q.length;d++){a=[1,4,1,
2,4,1,3,2,0];b=N(q[d].points.length,2);c.push.apply(c,N(a.length+9+b.length+4+4,1));c.push.apply(c,N(a.length,1));c.push.apply(c,a);a=0==d?N(0,3):N(q[d].time,3);c.push.apply(c,a);a=this.o(q[d].color);c.push.apply(c,a);c.push.apply(c,N(b.length,1));c.push.apply(c,b);b=Ba(parseFloat(q[d].penSize));c.push.apply(c,b);c.push.apply(c,b);b=[];a=[];e=[];for(f=0;f<q[d].points.length;f++){var g=q[d].points[f];var n=g.x;var p=g.y;g=g.t||0;n=Ba(n);b.push.apply(b,n);p=Ba(p);a.push.apply(a,p);p=g;(g=N(Math.abs(p),
2))&&0!=g.length?(0>p&&(g[0]|=128),p=g):p=null;e.push.apply(e,p)}c.push.apply(c,b);c.push.apply(c,a);c.push.apply(c,e)}G+="_getHandWritingData end \n";return c};this.b=function(){ea();G+="_getHandWritingPng start \n";if(0>=q.length)return null;Ja(m.canvas.width,m.canvas.height);for(var a=m.getImageData(l[0],l[2],l[1]-l[0],l[3]-l[2]),b,c=b=0;c<a.data.length;c++)void 0!==a.data[c+3]&&0!==a.data[c+3]&&b++;G+="_getHandWritingPng imageLength \uff1a"+b;if(4>b)return null;G+="_getHandWritingPng end(callback == null) \n";
b=void 0;b=void 0===b?!1:b;G+="convertImgToBase64URL start \n";c=document.createElement("CANVAS");var d=c.getContext("2d");wa(c,d,a.width,a.height,b);d.putImageData(a,0,0);a=c.toDataURL("image/png");G+="convertImgToBase64URL end \n";return a};this.D=function(a,b,c,d){d=void 0===d?!1:d;if(!(0>=a||0>=b)){var e=this.b();if(2!==(e?e.split(","):"").length)c?c(null):null;else{Ja(m.canvas.width,m.canvas.height);var f=[l[1]-l[0],l[3]-l[2]],g=document.createElement("CANVAS"),n=g.getContext("2d");wa(g,n,
a,b,d);var p=new Image;p.src=e;p.onload=function(){if(f[0]>Math.round(a/b*f[1])){var y=a;var F=Math.round(f[1]/f[0]*a);var D=0;var r=Math.round((b-F)/2)}else F=b,y=Math.round(f[0]/f[1]*b),D=Math.round((a-y)/2),r=0;n.drawImage(p,D/A,r/A,y/A,F/A);D=g.toDataURL("image/png");c?c(D):null}}}};this.I=function(a,b,c,d,e){e=void 0===e?!1:e;if(!(0>=a||0>=b||0>=c.length)){var f=document.createElement("CANVAS"),g=f.getContext("2d");wa(f,g,a,b,e);a=Math.floor(a/d);b=Math.floor(b/Math.ceil(c.length/d));for(e=1;e<=
c.length;e++)g.drawImage(c[e-1],(e-1)%d*a/A,(Math.ceil(e/d)*b-b)/A,a/A,b/A);return f.toDataURL("image/png")}};this.G=function(){var a=G+="userAgent \u4fe1\u606f:"+navigator.userAgent+"\n";G="";return a};this.K=function(a){if(a){var b=0,c=B(w(a,b,2)),d=0;4101<c?(d=B(w(a,b+2,b+4)),b+=4):b+=2;var e=B(w(a,b,b+2));za(w(a,b+2,b+2+e));b=b+2+e;var f=B(w(a,b,b+2));za(w(a,b+2,b+2+f));b=b+2+f;var g=B(w(a,b,b+2)),n=B(w(a,b+2,b+2+6));b=b+2+6;if(4101<c){var p=B(w(a,b,b+2));za(w(a,b+2,b+2+p));b=d}if(null!==c&&null!==
e&&null!==f&&null!==g&&null!==n&&0!=g){this.clear();for(d=0;d<g;d++){var y=0;e=[];f=[];p=[];if(4101<c){var F=b;y=B(w(a,b,b+1));var D=B(w(a,b+1,b+1+1));b=b+1+1;for(var r=0;r<Math.floor(D/3);r++)e.push(B(w(a,b+3*r,b+3*r+1))),f.push(B(w(a,b+3*r+1,b+3*r+2))),p.push(B(w(a,b+3*r+2,b+3*r+3)));b+=D}D=B(w(a,b,b+3));b+=3;var S=B(w(a,b,b+1)),I=B(w(a,b+1,b+2)),z=B(w(a,b+2,b+3)),X="rgb("+S+","+I+","+z+")";b+=3;if(4101<c){var J=B(w(a,b,b+1));var T=B(w(a,b+1,b+1+J));b=b+1+J;J=Math.round(na(w(a,b,b+4)));3>J?J=3:
18<J&&(J=18);b=F+y}else e.push.apply(e,[1,2,3]),f.push.apply(f,[2,2,2]),p.push.apply(p,[0,0,0]),J=B(w(a,b,b+1)),T=B(w(a,b+1,b+3)),b+=3;var Z=-1,aa=-1;y=-1;for(r=0;r<e.length;r++)1==e[r]?Z=r:2==e[r]?aa=r:3==e[r]&&(y=r);if(null===D||null===S||null===I||null===z||null===T||-1==Z||-1==aa||-1==y)return;0==r&&(D=n);r=[];S=[];I=[];z=[];for(var C=0;C<T;){var Ka=w(a,b,b+f[Z]);0==p[Z]?S.push(Aa(Ka)):S.push(na(Ka));C++;b+=f[Z]}for(C=0;C<T;)Z=w(a,b,b+f[aa]),0==p[aa]?I.push(Aa(Z)):I.push(na(Z)),C++,b+=f[aa];for(C=
0;C<T;)aa=w(a,b,b+f[y]),0==p[y]?z.push(Aa(aa)):z.push(na(aa)),C++,b+=f[y];for(C=0;C<e.length;C++)1!=e[C]&&2!=e[C]&&3!=e[C]&&(b+=f[C]*T);for(C=0;C<T;C++)r.push({x:S[C],y:I[C],t:z[C]});q.push({time:D,points:r,color:X,penSize:J})}this.c()}}};this.f=function(a){sa=a};this.V=function(a){ua=a}}goog.exportSymbol("EPaper",h);h.prototype.S=function(k){this.h(k)};goog.exportProperty(h.prototype,"setPenSize",h.prototype.S);h.prototype.R=function(k,E,t){this.g(k,E,t)};
goog.exportProperty(h.prototype,"setPenColor",h.prototype.R);h.prototype.m=function(){return this.j()};goog.exportProperty(h.prototype,"canRedo",h.prototype.m);h.prototype.U=function(){this.i()};goog.exportProperty(h.prototype,"undo",h.prototype.U);h.prototype.M=function(){this.N()};goog.exportProperty(h.prototype,"redo",h.prototype.M);h.prototype.c=function(){this.T()};goog.exportProperty(h.prototype,"replay",h.prototype.c);h.prototype.F=function(){return this.H()};
goog.exportProperty(h.prototype,"isReplaying",h.prototype.F);h.prototype.clear=function(){this.l()};goog.exportProperty(h.prototype,"clear",h.prototype.clear);h.prototype.u=function(){return this.C()};goog.exportProperty(h.prototype,"getHandWritingData",h.prototype.u);h.prototype.w=function(){return this.b()};goog.exportProperty(h.prototype,"getHandWritingPng",h.prototype.w);h.prototype.v=function(k,E,t,x){this.D(k,E,t,void 0===x?!1:x)};goog.exportProperty(h.prototype,"getHandWritingMaskedPng",h.prototype.v);
h.prototype.J=function(k,E,t,x,K){return this.I(k,E,t,x,void 0===K?!1:K)};goog.exportProperty(h.prototype,"mergePngsInDesignatedSize",h.prototype.J);h.prototype.L=function(k){this.K(k)};goog.exportProperty(h.prototype,"playWithData",h.prototype.L);h.prototype.A=function(){return this.G()};goog.exportProperty(h.prototype,"getLogInfo",h.prototype.A);h.prototype.B=function(){return"4.5.3.1"};goog.exportProperty(h.prototype,"getVersion",h.prototype.B);h.prototype.P=function(k){this.f(k)};
goog.exportProperty(h.prototype,"setBeforeStrokeCallback",h.prototype.P);h.prototype.O=function(k){this.V(k)};goog.exportProperty(h.prototype,"setAfterStrokeCallback",h.prototype.O);const EPaper=goog.global.EPaper;export default EPaper;

View File

@@ -86,6 +86,7 @@ export default {
[Tag.name]: Tag,
[Sticky.name]: Sticky,
[Dialog.name]: Dialog,
[Toast.name]: Toast,
[Checkbox.name]: Checkbox,
[CheckboxGroup.name]: CheckboxGroup
},