").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
diff --git a/public/jquery.qrcode.js b/public/jquery.qrcode.js
new file mode 100644
index 0000000..835770c
--- /dev/null
+++ b/public/jquery.qrcode.js
@@ -0,0 +1,665 @@
+(function(r) {
+ r.fn.qrcode = function(h) {
+ var s;
+
+ function u(a) {
+ this.mode = s;
+ this.data = a
+ }
+
+ function o(a, c) {
+ this.typeNumber = a;
+ this.errorCorrectLevel = c;
+ this.modules = null;
+ this.moduleCount = 0;
+ this.dataCache = null;
+ this.dataList = []
+ }
+
+ function q(a, c) {
+ if (void 0 == a.length) throw Error(a.length + "/" + c);
+ for (var d = 0; d < a.length && 0 == a[d];) d++;
+ this.num = Array(a.length - d + c);
+ for (var b = 0; b < a.length - d; b++) this.num[b] = a[b + d]
+ }
+
+ function p(a, c) {
+ this.totalCount = a;
+ this.dataCount = c
+ }
+
+ function t() {
+ this.buffer = [];
+ this.length = 0
+ }
+ u.prototype = {
+ getLength: function() {
+ return this.data.length
+ },
+ write: function(a) {
+ for (var c = 0; c < this.data.length; c++) a.put(this.data.charCodeAt(c), 8)
+ }
+ };
+ o.prototype = {
+ addData: function(a) {
+ this.dataList.push(new u(a));
+ this.dataCache = null
+ },
+ isDark: function(a, c) {
+ if (0 > a || this.moduleCount <= a || 0 > c || this.moduleCount <= c) throw Error(a + "," + c);
+ return this.modules[a][c]
+ },
+ getModuleCount: function() {
+ return this.moduleCount
+ },
+ make: function() {
+ if (1 > this.typeNumber) {
+ for (var a = 1, a = 1; 40 > a; a++) {
+ for (var c = p.getRSBlocks(a, this.errorCorrectLevel), d = new t, b = 0, e = 0; e < c.length; e++)
+ b += c[e].dataCount;
+ for (e = 0; e < this.dataList.length; e++) c = this.dataList[e], d.put(c.mode, 4), d.put(c
+ .getLength(), j.getLengthInBits(c.mode, a)), c.write(d);
+ if (d.getLengthInBits() <= 8 * b) break
+ }
+ this.typeNumber = a
+ }
+ this.makeImpl(!1, this.getBestMaskPattern())
+ },
+ makeImpl: function(a, c) {
+ this.moduleCount = 4 * this.typeNumber + 17;
+ this.modules = Array(this.moduleCount);
+ for (var d = 0; d < this.moduleCount; d++) {
+ this.modules[d] = Array(this.moduleCount);
+ for (var b = 0; b < this.moduleCount; b++) this.modules[d][b] = null
+ }
+ this.setupPositionProbePattern(0, 0);
+ this.setupPositionProbePattern(this.moduleCount -
+ 7, 0);
+ this.setupPositionProbePattern(0, this.moduleCount - 7);
+ this.setupPositionAdjustPattern();
+ this.setupTimingPattern();
+ this.setupTypeInfo(a, c);
+ 7 <= this.typeNumber && this.setupTypeNumber(a);
+ null == this.dataCache && (this.dataCache = o.createData(this.typeNumber, this.errorCorrectLevel, this
+ .dataList));
+ this.mapData(this.dataCache, c)
+ },
+ setupPositionProbePattern: function(a, c) {
+ for (var d = -1; 7 >= d; d++)
+ if (!(-1 >= a + d || this.moduleCount <= a + d))
+ for (var b = -1; 7 >= b; b++) - 1 >= c + b || this.moduleCount <= c + b || (this.modules[a + d][c +
+ b
+ ] =
+ 0 <= d && 6 >= d && (0 == b || 6 == b) || 0 <= b && 6 >= b && (0 == d || 6 == d) || 2 <= d &&
+ 4 >= d && 2 <= b && 4 >= b ? !0 : !1)
+ },
+ getBestMaskPattern: function() {
+ for (var a = 0, c = 0, d = 0; 8 > d; d++) {
+ this.makeImpl(!0, d);
+ var b = j.getLostPoint(this);
+ if (0 == d || a > b) a = b, c = d
+ }
+ return c
+ },
+ createMovieClip: function(a, c, d) {
+ a = a.createEmptyMovieClip(c, d);
+ this.make();
+ for (c = 0; c < this.modules.length; c++)
+ for (var d = 1 * c, b = 0; b < this.modules[c].length; b++) {
+ var e = 1 * b;
+ this.modules[c][b] && (a.beginFill(0, 100), a.moveTo(e, d), a.lineTo(e + 1, d), a.lineTo(e + 1, d +
+ 1), a.lineTo(e, d + 1), a.endFill())
+ }
+ return a
+ },
+ setupTimingPattern: function() {
+ for (var a = 8; a < this.moduleCount - 8; a++) null == this.modules[a][6] && (this.modules[a][6] = 0 ==
+ a % 2);
+ for (a = 8; a < this.moduleCount - 8; a++) null == this.modules[6][a] && (this.modules[6][a] = 0 == a %
+ 2)
+ },
+ setupPositionAdjustPattern: function() {
+ for (var a = j.getPatternPosition(this.typeNumber), c = 0; c < a.length; c++)
+ for (var d = 0; d < a.length; d++) {
+ var b = a[c],
+ e = a[d];
+ if (null == this.modules[b][e])
+ for (var f = -2; 2 >= f; f++)
+ for (var i = -2; 2 >= i; i++) this.modules[b + f][e + i] = -2 == f || 2 == f || -2 == i || 2 ==
+ i || 0 == f && 0 == i ? !0 : !1
+ }
+ },
+ setupTypeNumber: function(a) {
+ for (var c =
+ j.getBCHTypeNumber(this.typeNumber), d = 0; 18 > d; d++) {
+ var b = !a && 1 == (c >> d & 1);
+ this.modules[Math.floor(d / 3)][d % 3 + this.moduleCount - 8 - 3] = b
+ }
+ for (d = 0; 18 > d; d++) b = !a && 1 == (c >> d & 1), this.modules[d % 3 + this.moduleCount - 8 - 3][
+ Math.floor(d / 3)
+ ] = b
+ },
+ setupTypeInfo: function(a, c) {
+ for (var d = j.getBCHTypeInfo(this.errorCorrectLevel << 3 | c), b = 0; 15 > b; b++) {
+ var e = !a && 1 == (d >> b & 1);
+ 6 > b ? this.modules[b][8] = e : 8 > b ? this.modules[b + 1][8] = e : this.modules[this.moduleCount -
+ 15 + b][8] = e
+ }
+ for (b = 0; 15 > b; b++) e = !a && 1 == (d >> b & 1), 8 > b ? this.modules[8][this.moduleCount -
+ b - 1
+ ] = e : 9 > b ? this.modules[8][15 - b - 1 + 1] = e : this.modules[8][15 - b - 1] = e;
+ this.modules[this.moduleCount - 8][8] = !a
+ },
+ mapData: function(a, c) {
+ for (var d = -1, b = this.moduleCount - 1, e = 7, f = 0, i = this.moduleCount - 1; 0 < i; i -= 2)
+ for (6 == i && i--;;) {
+ for (var g = 0; 2 > g; g++)
+ if (null == this.modules[b][i - g]) {
+ var n = !1;
+ f < a.length && (n = 1 == (a[f] >>> e & 1));
+ j.getMask(c, b, i - g) && (n = !n);
+ this.modules[b][i - g] = n;
+ e--; - 1 == e && (f++, e = 7)
+ } b += d;
+ if (0 > b || this.moduleCount <= b) {
+ b -= d;
+ d = -d;
+ break
+ }
+ }
+ }
+ };
+ o.PAD0 = 236;
+ o.PAD1 = 17;
+ o.createData = function(a, c, d) {
+ for (var c = p.getRSBlocks(a,
+ c), b = new t, e = 0; e < d.length; e++) {
+ var f = d[e];
+ b.put(f.mode, 4);
+ b.put(f.getLength(), j.getLengthInBits(f.mode, a));
+ f.write(b)
+ }
+ for (e = a = 0; e < c.length; e++) a += c[e].dataCount;
+ if (b.getLengthInBits() > 8 * a) throw Error("code length overflow. (" + b.getLengthInBits() + ">" + 8 * a +
+ ")");
+ for (b.getLengthInBits() + 4 <= 8 * a && b.put(0, 4); 0 != b.getLengthInBits() % 8;) b.putBit(!1);
+ for (; !(b.getLengthInBits() >= 8 * a);) {
+ b.put(o.PAD0, 8);
+ if (b.getLengthInBits() >= 8 * a) break;
+ b.put(o.PAD1, 8)
+ }
+ return o.createBytes(b, c)
+ };
+ o.createBytes = function(a, c) {
+ for (var d =
+ 0, b = 0, e = 0, f = Array(c.length), i = Array(c.length), g = 0; g < c.length; g++) {
+ var n = c[g].dataCount,
+ h = c[g].totalCount - n,
+ b = Math.max(b, n),
+ e = Math.max(e, h);
+ f[g] = Array(n);
+ for (var k = 0; k < f[g].length; k++) f[g][k] = 255 & a.buffer[k + d];
+ d += n;
+ k = j.getErrorCorrectPolynomial(h);
+ n = (new q(f[g], k.getLength() - 1)).mod(k);
+ i[g] = Array(k.getLength() - 1);
+ for (k = 0; k < i[g].length; k++) h = k + n.getLength() - i[g].length, i[g][k] = 0 <= h ? n.get(h) : 0
+ }
+ for (k = g = 0; k < c.length; k++) g += c[k].totalCount;
+ d = Array(g);
+ for (k = n = 0; k < b; k++)
+ for (g = 0; g < c.length; g++) k < f[g].length &&
+ (d[n++] = f[g][k]);
+ for (k = 0; k < e; k++)
+ for (g = 0; g < c.length; g++) k < i[g].length && (d[n++] = i[g][k]);
+ return d
+ };
+ s = 4;
+ for (var j = {
+ PATTERN_POSITION_TABLE: [
+ [],
+ [6, 18],
+ [6, 22],
+ [6, 26],
+ [6, 30],
+ [6, 34],
+ [6, 22, 38],
+ [6, 24, 42],
+ [6, 26, 46],
+ [6, 28, 50],
+ [6, 30, 54],
+ [6, 32, 58],
+ [6, 34, 62],
+ [6, 26, 46, 66],
+ [6, 26, 48, 70],
+ [6, 26, 50, 74],
+ [6, 30, 54, 78],
+ [6, 30, 56, 82],
+ [6, 30, 58, 86],
+ [6, 34, 62, 90],
+ [6, 28, 50, 72, 94],
+ [6, 26, 50, 74, 98],
+ [6, 30, 54, 78, 102],
+ [6, 28, 54, 80, 106],
+ [6, 32, 58, 84, 110],
+ [6, 30, 58, 86, 114],
+ [6, 34, 62, 90, 118],
+ [6, 26, 50, 74, 98, 122],
+ [6, 30, 54, 78, 102, 126],
+ [6, 26, 52,
+ 78, 104, 130
+ ],
+ [6, 30, 56, 82, 108, 134],
+ [6, 34, 60, 86, 112, 138],
+ [6, 30, 58, 86, 114, 142],
+ [6, 34, 62, 90, 118, 146],
+ [6, 30, 54, 78, 102, 126, 150],
+ [6, 24, 50, 76, 102, 128, 154],
+ [6, 28, 54, 80, 106, 132, 158],
+ [6, 32, 58, 84, 110, 136, 162],
+ [6, 26, 54, 82, 110, 138, 166],
+ [6, 30, 58, 86, 114, 142, 170]
+ ],
+ G15: 1335,
+ G18: 7973,
+ G15_MASK: 21522,
+ getBCHTypeInfo: function(a) {
+ for (var c = a << 10; 0 <= j.getBCHDigit(c) - j.getBCHDigit(j.G15);) c ^= j.G15 << j.getBCHDigit(c) -
+ j.getBCHDigit(j.G15);
+ return (a << 10 | c) ^ j.G15_MASK
+ },
+ getBCHTypeNumber: function(a) {
+ for (var c = a << 12; 0 <= j.getBCHDigit(c) -
+ j.getBCHDigit(j.G18);) c ^= j.G18 << j.getBCHDigit(c) - j.getBCHDigit(j.G18);
+ return a << 12 | c
+ },
+ getBCHDigit: function(a) {
+ for (var c = 0; 0 != a;) c++, a >>>= 1;
+ return c
+ },
+ getPatternPosition: function(a) {
+ return j.PATTERN_POSITION_TABLE[a - 1]
+ },
+ getMask: function(a, c, d) {
+ switch (a) {
+ case 0:
+ return 0 == (c + d) % 2;
+ case 1:
+ return 0 == c % 2;
+ case 2:
+ return 0 == d % 3;
+ case 3:
+ return 0 == (c + d) % 3;
+ case 4:
+ return 0 == (Math.floor(c / 2) + Math.floor(d / 3)) % 2;
+ case 5:
+ return 0 == c * d % 2 + c * d % 3;
+ case 6:
+ return 0 == (c * d % 2 + c * d % 3) % 2;
+ case 7:
+ return 0 == (c * d % 3 + (c + d) % 2) % 2;
+ default:
+ throw Error("bad maskPattern:" +
+ a);
+ }
+ },
+ getErrorCorrectPolynomial: function(a) {
+ for (var c = new q([1], 0), d = 0; d < a; d++) c = c.multiply(new q([1, l.gexp(d)], 0));
+ return c
+ },
+ getLengthInBits: function(a, c) {
+ if (1 <= c && 10 > c) switch (a) {
+ case 1:
+ return 10;
+ case 2:
+ return 9;
+ case s:
+ return 8;
+ case 8:
+ return 8;
+ default:
+ throw Error("mode:" + a);
+ } else if (27 > c) switch (a) {
+ case 1:
+ return 12;
+ case 2:
+ return 11;
+ case s:
+ return 16;
+ case 8:
+ return 10;
+ default:
+ throw Error("mode:" + a);
+ } else if (41 > c) switch (a) {
+ case 1:
+ return 14;
+ case 2:
+ return 13;
+ case s:
+ return 16;
+ case 8:
+ return 12;
+ default:
+ throw Error("mode:" +
+ a);
+ } else throw Error("type:" + c);
+ },
+ getLostPoint: function(a) {
+ for (var c = a.getModuleCount(), d = 0, b = 0; b < c; b++)
+ for (var e = 0; e < c; e++) {
+ for (var f = 0, i = a.isDark(b, e), g = -1; 1 >= g; g++)
+ if (!(0 > b + g || c <= b + g))
+ for (var h = -1; 1 >= h; h++) 0 > e + h || c <= e + h || 0 == g && 0 == h || i == a.isDark(b +
+ g, e + h) && f++;
+ 5 < f && (d += 3 + f - 5)
+ }
+ for (b = 0; b < c - 1; b++)
+ for (e = 0; e < c - 1; e++)
+ if (f = 0, a.isDark(b, e) && f++, a.isDark(b + 1, e) && f++, a.isDark(b, e + 1) && f++, a.isDark(
+ b + 1, e + 1) && f++, 0 == f || 4 == f) d += 3;
+ for (b = 0; b < c; b++)
+ for (e = 0; e < c - 6; e++) a.isDark(b, e) && !a.isDark(b, e + 1) && a.isDark(b, e +
+ 2) && a.isDark(b, e + 3) && a.isDark(b, e + 4) && !a.isDark(b, e + 5) && a.isDark(b, e + 6) && (
+ d += 40);
+ for (e = 0; e < c; e++)
+ for (b = 0; b < c - 6; b++) a.isDark(b, e) && !a.isDark(b + 1, e) && a.isDark(b + 2, e) && a.isDark(
+ b + 3, e) && a.isDark(b + 4, e) && !a.isDark(b + 5, e) && a.isDark(b + 6, e) && (d += 40);
+ for (e = f = 0; e < c; e++)
+ for (b = 0; b < c; b++) a.isDark(b, e) && f++;
+ a = Math.abs(100 * f / c / c - 50) / 5;
+ return d + 10 * a
+ }
+ }, l = {
+ glog: function(a) {
+ if (1 > a) throw Error("glog(" + a + ")");
+ return l.LOG_TABLE[a]
+ },
+ gexp: function(a) {
+ for (; 0 > a;) a += 255;
+ for (; 256 <= a;) a -= 255;
+ return l.EXP_TABLE[a]
+ },
+ EXP_TABLE: Array(256),
+ LOG_TABLE: Array(256)
+ }, m = 0; 8 > m; m++) l.EXP_TABLE[m] = 1 << m;
+ for (m = 8; 256 > m; m++) l.EXP_TABLE[m] = l.EXP_TABLE[m - 4] ^ l.EXP_TABLE[m - 5] ^ l.EXP_TABLE[m - 6] ^ l
+ .EXP_TABLE[m - 8];
+ for (m = 0; 255 > m; m++) l.LOG_TABLE[l.EXP_TABLE[m]] = m;
+ q.prototype = {
+ get: function(a) {
+ return this.num[a]
+ },
+ getLength: function() {
+ return this.num.length
+ },
+ multiply: function(a) {
+ for (var c = Array(this.getLength() + a.getLength() - 1), d = 0; d < this.getLength(); d++)
+ for (var b = 0; b < a.getLength(); b++) c[d + b] ^= l.gexp(l.glog(this.get(d)) + l.glog(a.get(b)));
+ return new q(c, 0)
+ },
+ mod: function(a) {
+ if (0 >
+ this.getLength() - a.getLength()) return this;
+ for (var c = l.glog(this.get(0)) - l.glog(a.get(0)), d = Array(this.getLength()), b = 0; b < this
+ .getLength(); b++) d[b] = this.get(b);
+ for (b = 0; b < a.getLength(); b++) d[b] ^= l.gexp(l.glog(a.get(b)) + c);
+ return (new q(d, 0)).mod(a)
+ }
+ };
+ p.RS_BLOCK_TABLE = [
+ [1, 26, 19],
+ [1, 26, 16],
+ [1, 26, 13],
+ [1, 26, 9],
+ [1, 44, 34],
+ [1, 44, 28],
+ [1, 44, 22],
+ [1, 44, 16],
+ [1, 70, 55],
+ [1, 70, 44],
+ [2, 35, 17],
+ [2, 35, 13],
+ [1, 100, 80],
+ [2, 50, 32],
+ [2, 50, 24],
+ [4, 25, 9],
+ [1, 134, 108],
+ [2, 67, 43],
+ [2, 33, 15, 2, 34, 16],
+ [2, 33, 11, 2, 34, 12],
+ [2, 86, 68],
+ [4, 43, 27],
+ [4, 43, 19],
+ [4, 43, 15],
+ [2, 98, 78],
+ [4, 49, 31],
+ [2, 32, 14, 4, 33, 15],
+ [4, 39, 13, 1, 40, 14],
+ [2, 121, 97],
+ [2, 60, 38, 2, 61, 39],
+ [4, 40, 18, 2, 41, 19],
+ [4, 40, 14, 2, 41, 15],
+ [2, 146, 116],
+ [3, 58, 36, 2, 59, 37],
+ [4, 36, 16, 4, 37, 17],
+ [4, 36, 12, 4, 37, 13],
+ [2, 86, 68, 2, 87, 69],
+ [4, 69, 43, 1, 70, 44],
+ [6, 43, 19, 2, 44, 20],
+ [6, 43, 15, 2, 44, 16],
+ [4, 101, 81],
+ [1, 80, 50, 4, 81, 51],
+ [4, 50, 22, 4, 51, 23],
+ [3, 36, 12, 8, 37, 13],
+ [2, 116, 92, 2, 117, 93],
+ [6, 58, 36, 2, 59, 37],
+ [4, 46, 20, 6, 47, 21],
+ [7, 42, 14, 4, 43, 15],
+ [4, 133, 107],
+ [8, 59, 37, 1, 60, 38],
+ [8, 44, 20, 4, 45, 21],
+ [12, 33, 11, 4, 34, 12],
+ [3, 145, 115, 1, 146,
+ 116
+ ],
+ [4, 64, 40, 5, 65, 41],
+ [11, 36, 16, 5, 37, 17],
+ [11, 36, 12, 5, 37, 13],
+ [5, 109, 87, 1, 110, 88],
+ [5, 65, 41, 5, 66, 42],
+ [5, 54, 24, 7, 55, 25],
+ [11, 36, 12],
+ [5, 122, 98, 1, 123, 99],
+ [7, 73, 45, 3, 74, 46],
+ [15, 43, 19, 2, 44, 20],
+ [3, 45, 15, 13, 46, 16],
+ [1, 135, 107, 5, 136, 108],
+ [10, 74, 46, 1, 75, 47],
+ [1, 50, 22, 15, 51, 23],
+ [2, 42, 14, 17, 43, 15],
+ [5, 150, 120, 1, 151, 121],
+ [9, 69, 43, 4, 70, 44],
+ [17, 50, 22, 1, 51, 23],
+ [2, 42, 14, 19, 43, 15],
+ [3, 141, 113, 4, 142, 114],
+ [3, 70, 44, 11, 71, 45],
+ [17, 47, 21, 4, 48, 22],
+ [9, 39, 13, 16, 40, 14],
+ [3, 135, 107, 5, 136, 108],
+ [3, 67, 41, 13, 68, 42],
+ [15, 54, 24, 5, 55, 25],
+ [15,
+ 43, 15, 10, 44, 16
+ ],
+ [4, 144, 116, 4, 145, 117],
+ [17, 68, 42],
+ [17, 50, 22, 6, 51, 23],
+ [19, 46, 16, 6, 47, 17],
+ [2, 139, 111, 7, 140, 112],
+ [17, 74, 46],
+ [7, 54, 24, 16, 55, 25],
+ [34, 37, 13],
+ [4, 151, 121, 5, 152, 122],
+ [4, 75, 47, 14, 76, 48],
+ [11, 54, 24, 14, 55, 25],
+ [16, 45, 15, 14, 46, 16],
+ [6, 147, 117, 4, 148, 118],
+ [6, 73, 45, 14, 74, 46],
+ [11, 54, 24, 16, 55, 25],
+ [30, 46, 16, 2, 47, 17],
+ [8, 132, 106, 4, 133, 107],
+ [8, 75, 47, 13, 76, 48],
+ [7, 54, 24, 22, 55, 25],
+ [22, 45, 15, 13, 46, 16],
+ [10, 142, 114, 2, 143, 115],
+ [19, 74, 46, 4, 75, 47],
+ [28, 50, 22, 6, 51, 23],
+ [33, 46, 16, 4, 47, 17],
+ [8, 152, 122, 4, 153, 123],
+ [22, 73, 45,
+ 3, 74, 46
+ ],
+ [8, 53, 23, 26, 54, 24],
+ [12, 45, 15, 28, 46, 16],
+ [3, 147, 117, 10, 148, 118],
+ [3, 73, 45, 23, 74, 46],
+ [4, 54, 24, 31, 55, 25],
+ [11, 45, 15, 31, 46, 16],
+ [7, 146, 116, 7, 147, 117],
+ [21, 73, 45, 7, 74, 46],
+ [1, 53, 23, 37, 54, 24],
+ [19, 45, 15, 26, 46, 16],
+ [5, 145, 115, 10, 146, 116],
+ [19, 75, 47, 10, 76, 48],
+ [15, 54, 24, 25, 55, 25],
+ [23, 45, 15, 25, 46, 16],
+ [13, 145, 115, 3, 146, 116],
+ [2, 74, 46, 29, 75, 47],
+ [42, 54, 24, 1, 55, 25],
+ [23, 45, 15, 28, 46, 16],
+ [17, 145, 115],
+ [10, 74, 46, 23, 75, 47],
+ [10, 54, 24, 35, 55, 25],
+ [19, 45, 15, 35, 46, 16],
+ [17, 145, 115, 1, 146, 116],
+ [14, 74, 46, 21, 75, 47],
+ [29, 54, 24, 19,
+ 55, 25
+ ],
+ [11, 45, 15, 46, 46, 16],
+ [13, 145, 115, 6, 146, 116],
+ [14, 74, 46, 23, 75, 47],
+ [44, 54, 24, 7, 55, 25],
+ [59, 46, 16, 1, 47, 17],
+ [12, 151, 121, 7, 152, 122],
+ [12, 75, 47, 26, 76, 48],
+ [39, 54, 24, 14, 55, 25],
+ [22, 45, 15, 41, 46, 16],
+ [6, 151, 121, 14, 152, 122],
+ [6, 75, 47, 34, 76, 48],
+ [46, 54, 24, 10, 55, 25],
+ [2, 45, 15, 64, 46, 16],
+ [17, 152, 122, 4, 153, 123],
+ [29, 74, 46, 14, 75, 47],
+ [49, 54, 24, 10, 55, 25],
+ [24, 45, 15, 46, 46, 16],
+ [4, 152, 122, 18, 153, 123],
+ [13, 74, 46, 32, 75, 47],
+ [48, 54, 24, 14, 55, 25],
+ [42, 45, 15, 32, 46, 16],
+ [20, 147, 117, 4, 148, 118],
+ [40, 75, 47, 7, 76, 48],
+ [43, 54, 24, 22, 55, 25],
+ [10,
+ 45, 15, 67, 46, 16
+ ],
+ [19, 148, 118, 6, 149, 119],
+ [18, 75, 47, 31, 76, 48],
+ [34, 54, 24, 34, 55, 25],
+ [20, 45, 15, 61, 46, 16]
+ ];
+ p.getRSBlocks = function(a, c) {
+ var d = p.getRsBlockTable(a, c);
+ if (void 0 == d) throw Error("bad rs block @ typeNumber:" + a + "/errorCorrectLevel:" + c);
+ for (var b = d.length / 3, e = [], f = 0; f < b; f++)
+ for (var h = d[3 * f + 0], g = d[3 * f + 1], j = d[3 * f + 2], l = 0; l < h; l++) e.push(new p(g, j));
+ return e
+ };
+ p.getRsBlockTable = function(a, c) {
+ switch (c) {
+ case 1:
+ return p.RS_BLOCK_TABLE[4 * (a - 1) + 0];
+ case 0:
+ return p.RS_BLOCK_TABLE[4 * (a - 1) + 1];
+ case 3:
+ return p.RS_BLOCK_TABLE[4 *
+ (a - 1) + 2];
+ case 2:
+ return p.RS_BLOCK_TABLE[4 * (a - 1) + 3]
+ }
+ };
+ t.prototype = {
+ get: function(a) {
+ return 1 == (this.buffer[Math.floor(a / 8)] >>> 7 - a % 8 & 1)
+ },
+ put: function(a, c) {
+ for (var d = 0; d < c; d++) this.putBit(1 == (a >>> c - d - 1 & 1))
+ },
+ getLengthInBits: function() {
+ return this.length
+ },
+ putBit: function(a) {
+ var c = Math.floor(this.length / 8);
+ this.buffer.length <= c && this.buffer.push(0);
+ a && (this.buffer[c] |= 128 >>> this.length % 8);
+ this.length++
+ }
+ };
+ "string" === typeof h && (h = {
+ text: h
+ });
+ h = r.extend({}, {
+ render: "canvas",
+ width: 256,
+ height: 256,
+ typeNumber: -1,
+ correctLevel: 2,
+ background: "#ffffff",
+ foreground: "#000000"
+ }, h);
+ return this.each(function() {
+ var a;
+ if ("canvas" == h.render) {
+ a = new o(h.typeNumber, h.correctLevel);
+ a.addData(h.text);
+ a.make();
+ var c = document.createElement("canvas");
+ c.width = h.width;
+ c.height = h.height;
+ for (var d = c.getContext("2d"), b = h.width / a.getModuleCount(), e = h.height / a.getModuleCount(),
+ f = 0; f < a.getModuleCount(); f++)
+ for (var i = 0; i < a.getModuleCount(); i++) {
+ d.fillStyle = a.isDark(f, i) ? h.foreground : h.background;
+ var g = Math.ceil((i + 1) * b) - Math.floor(i * b),
+ j = Math.ceil((f + 1) * b) - Math.floor(f * b);
+ d.fillRect(Math.round(i * b), Math.round(f * e), g, j)
+ }
+ } else {
+ a = new o(h.typeNumber, h.correctLevel);
+ a.addData(h.text);
+ a.make();
+ c = r("
").css("width", h.width + "px").css("height", h.height + "px").css("border",
+ "0px").css("border-collapse", "collapse").css("background-color", h.background);
+ d = h.width / a.getModuleCount();
+ b = h.height / a.getModuleCount();
+ for (e = 0; e < a.getModuleCount(); e++) {
+ f = r("
|
").css("height", b + "px").appendTo(c);
+ for (i = 0; i < a.getModuleCount(); i++) r("
| ").css("width",
+ d + "px").css("background-color", a.isDark(e, i) ? h.foreground : h.background).appendTo(f)
+ }
+ }
+ a = c;
+ jQuery(a).appendTo(this)
+ })
+ }
+})(jQuery);
\ No newline at end of file
diff --git a/public/print.html b/public/print.html
new file mode 100644
index 0000000..22fe6af
--- /dev/null
+++ b/public/print.html
@@ -0,0 +1,261 @@
+
+
+
+
+
打印
+
+
+
+
+
+
+
+
+
+
+
生成打印单4张,耗时0.40861988067627秒
+ 本打印功能只能在IE浏览器使用,非IE浏览器请采用兼容模式
+ 使用之前需要安装插件(
点击下载),并正确设置打印机
+
+
+
+
+
+
+
+
+
diff --git a/src/views/inventorys/index.vue b/src/views/inventorys/index.vue
index 6afcf32..fe52abe 100644
--- a/src/views/inventorys/index.vue
+++ b/src/views/inventorys/index.vue
@@ -7,8 +7,8 @@
-
+
@@ -18,7 +18,7 @@
-
select.pageSize = e" @pageIndexChange="pageChange"
+ select.pageSize = e" @pageIndexChange="pageChange"
:table-item="table" :auths='[]'>
@@ -62,7 +62,8 @@
import { index as fieldIndex } from "@/api/system/customFormField";
import { getparameter } from "@/api/system/dictionary";
import * as XLSX from "xlsx";
- import { saveAs } from "file-saver";
+ import { saveAs } from "file-saver";
+ import Cookies from 'js-cookie'
export default {
components: {
imports
@@ -83,7 +84,10 @@
form:[],
total: 0,
list: [],
- table: [{
+ table: [
+ {
+ type:'selection'
+ },{
label:'序号',
type:'index',
fixed:'left',
@@ -110,7 +114,7 @@
label: "计量单位",
width: 120,
prop: 'jiliangdanwei',
- align: 'left'
+ align: 'center'
},
{
@@ -153,10 +157,33 @@
>生成二维码)
}
},
- ]
+ ],
+ printObj:[]
}
},
methods: {
+ selectionChange(e){
+ console.log(e)
+ if(e.length>0){
+ for(var m of e){
+ m = escape(m)
+ }
+ this.printObj = e
+ }
+
+
+ },
+ toprint(){
+ if(this.printObj.length<1){
+ Message({
+ type: 'warning',
+ message: '请先选择'
+ })
+ return
+ }
+ Cookies.set('objs', this.printObj)
+ window.open('/print.html','_blank')
+ },
async exportExcel(sheetName) {
const res = await index(Object.assign(this.select,{ page: 1,page_size: 9999,table_name: 'inventorys'}))
if(res.data){