feat: 首次提交

This commit is contained in:
peerless_hero
2023-08-17 21:28:49 +08:00
parent 36f80fb971
commit ec1e5e16cd
571 changed files with 95322 additions and 0 deletions

View File

@ -0,0 +1,205 @@
// 本文件由FirstUI授权予新疆天衡创新研究院有限公司手机号 18 6140 72 5 4 9身份证尾号5A07X5专用请尊重知识产权勿私下传播违者追究法律责任。
/*
* Copyright (c) 2014 Johannes Mittendorfer (http://johannes-mittendorfer.com)
* Licensed under the MIT License (LICENSE.txt).
*
* Version 2.1.1
* Build 2014-10-07
*/
var EAN13, pluginName;
pluginName = null;
"use strict";
EAN13 = (function() {
EAN13.prototype.settings = {};
EAN13.prototype.init = function() {
var checkDigit, code;
if (this.number.length === 12) {
checkDigit = this.generateCheckDigit(this.number);
this.number += checkDigit;
}
if (this.number.length === 13) {
if (this.validate()) {
this.settings.onValid.call();
} else {
this.settings.onInvalid.call();
}
code = this.getCode();
return this.draw(code);
} else {
return this.settings.onError.call();
}
};
EAN13.prototype.getCode = function() {
var c_encoding, code, countries, i, parts, raw_number, x, y, z;
x = ["0001101", "0011001", "0010011", "0111101", "0100011", "0110001", "0101111", "0111011", "0110111", "0001011"];
y = ["0100111", "0110011", "0011011", "0100001", "0011101", "0111001", "0000101", "0010001", "0001001", "0010111"];
z = ["1110010", "1100110", "1101100", "1000010", "1011100", "1001110", "1010000", "1000100", "1001000", "1110100"];
countries = ["xxxxxx", "xxyxyy", "xxyyxy", "xxyyyx", "xyxxyy", "xyyxxy", "xyyyxx", "xyxyxy", "xyxyyx", "xyyxyx"];
code = "";
c_encoding = countries[parseInt(this.number.substr(0, 1), 10)].split("");
raw_number = this.number.substr(1);
parts = raw_number.split("");
i = 0;
while (i < 6) {
if (c_encoding[i] === "x") {
code += x[parts[i]];
} else {
code += y[parts[i]];
}
i++;
}
i = 6;
while (i < 12) {
code += z[parts[i]];
i++;
}
return code;
};
EAN13.prototype.clear = function(context) {
return context.clearRect(0, 0, this.settings.width, this.settings.height);
};
EAN13.prototype.draw = function(code) {
var border_height, chars, context, height, i, item_width, layout, left, lines, offset, prefix, width, x, _i, _ref;
layout = {
prefix_offset: 0.06,
font_stretch: 0.073,
border_line_height_number: 0.9,
border_line_height: 1,
line_height: 0.9,
font_size: 0.15,
font_y: 1.03,
text_offset: 4.5
};
width = (this.settings.prefix ? this.settings.width - (this.settings.width * layout.prefix_offset) : this.settings.width);
if (this.settings.number) {
border_height = layout.border_line_height_number * this.settings.height;
height = layout.line_height * border_height;
} else {
border_height = layout.border_line_height * this.settings.height;
height = border_height;
}
item_width = width / 95;
if (this.ctx) {
context = this.ctx;
this.clear(context);
context.setFillStyle(this.settings.color);
left = this.settings.number && this.settings.prefix ? this.settings.width * layout.prefix_offset : 0;
lines = code.split("");
context.fillRect(left, 0, item_width, border_height);
left = left + item_width * 2;
context.fillRect(left, 0, item_width, border_height);
left = left + item_width;
i = 0;
while (i < 42) {
if (lines[i] === "1") {
context.fillRect(left, 0, Math.floor(item_width) + 1, height);
}
left = left + item_width;
i++;
}
left = left + item_width;
context.fillRect(left, 0, item_width, border_height);
left = left + item_width * 2;
context.fillRect(left, 0, item_width, border_height);
left = left + item_width * 2;
i = 42;
while (i < 84) {
if (lines[i] === "1") {
context.fillRect(left, 0, Math.floor(item_width) + 1, height);
}
left = left + item_width;
i++;
}
context.fillRect(left, 0, item_width, border_height);
left = left + item_width * 2;
context.fillRect(left, 0, item_width, border_height);
if (this.settings.number) {
context.setFontSize(layout.font_size * height + "px monospace");
prefix = this.number.substr(0, 1);
if (this.settings.prefix) {
context.fillText(prefix, 0, border_height * layout.font_y);
}
offset = item_width * layout.text_offset + (this.settings.prefix ? layout.prefix_offset * this.settings.width : 0);
chars = this.number.substr(1, 6).split("");
chars.forEach(function(value, key) {
context.fillText(value, offset, border_height * layout.font_y);
return offset += layout.font_stretch * width;
});
offset = 49 * item_width + (this.settings.prefix ? layout.prefix_offset * this.settings.width : 0) + layout.text_offset;
chars = this.number.substr(7).split("")
chars.forEach(function(value, key) {
context.fillText(value, offset, border_height * layout.font_y);
return offset += layout.font_stretch * width;
});
}
if (this.settings.debug) {
for (x = _i = 0, _ref = item_width * 2; _ref > 0 ? _i <= width : _i >= width; x = _i += _ref) {
context.beginPath();
context.rect(x, height * 0.4, item_width, height * 0.1);
context.setFillStyle('red');
context.fill();
}
}
context.draw()
return this.settings.onSuccess.call();
} else {
return this.settings.onError.call();
}
};
EAN13.prototype.generateCheckDigit = function(number) {
var chars, counter;
counter = 0;
chars = number.split("");
chars.forEach(function(value, key) {
if (key % 2 === 0) {
return counter += parseInt(value, 10);
} else {
return counter += 3 * parseInt(value, 10);
}
});
return 10 - (counter % 10) % 10;
};
EAN13.prototype.validate = function() {
return parseInt(this.number.slice(-1), 10) === this.generateCheckDigit(this.number.slice(0, -1));
};
function EAN13(number, options, ctx) {
var option;
this.number = number;
this.ctx = ctx
this.settings = {
width: 200,
height: 100,
number: true,
prefix: true,
color: "black",
debug: false,
onValid: function() {},
onInvalid: function() {},
onSuccess: function() {},
onError: function() {}
};
if (options) {
for (option in options) {
this.settings[option] = options[option];
}
}
this._name = pluginName;
this.init();
}
return EAN13;
})();
export default EAN13;