pay/user/assets/js/onecode.js
2025-11-28 10:08:12 +08:00

120 lines
3.6 KiB
JavaScript

var config;
// 生成收款码
function makeDiyBg(element, qrWidth, qrHeight, url, foreground, background, imgUrl, imgWidth, imgHeight, font, fontColor, recName, recNameLeft, recNameTop, qrLeft, qrTop) {
$(element).qrcode({
render: "canvas",
width: qrWidth,
height: qrHeight,
text: url,
foreground: foreground,
background: background
});
var canvas = document.getElementById('canvas');
canvas.width = imgWidth;
canvas.height = imgHeight;
var ctx = canvas.getContext("2d");
var img = new Image();
img.crossOrigin = "Anonymous"
img.src = imgUrl;
img.onload = function () {
// 生成背景图
var bg = ctx.createPattern(img, "no-repeat");
ctx.fillStyle = bg;
ctx.fillRect(0, 0, imgWidth, imgHeight);
// 生成收款名
ctx.textAlign = "center";
ctx.font = font;
ctx.fillStyle = fontColor;
if (recName) {
if (!recNameLeft) {
recNameLeft = imgWidth / 2;
}
ctx.fillText("扫码向 " + recName + " 付款", recNameLeft, recNameTop);
}
// 在canvas上生成二维码
var canvasOld = document.getElementsByTagName('canvas')[0];
ctx.drawImage(canvasOld, qrLeft, qrTop);
var image = new Image();
image.crossOrigin = "Anonymous"
image.src = canvas.toDataURL("image/png");
$("#endImg").attr("src", image.src);
$("#load").hide();
$("#qrcode").show();
}
}
function showQrCode(styleName){
$("#load").show();
$("#qrcode").hide();
$("#code").empty();
styleName = styleName || 'dongxue';
var qrWidth = config[styleName].qrWidth;
var qrHeight = config[styleName].qrHeight;
var foreground = config[styleName].foreground;
var background = config[styleName].background;
var imgWidth = config[styleName].imgWidth;
var imgHeight = config[styleName].imgHeight;
var font = config[styleName].font;
var fontColor = config[styleName].fontColor;
var recNameLeft = config[styleName].recNameLeft;
var recNameTop = config[styleName].recNameTop;
var qrLeft = config[styleName].qrLeft;
var qrTop = config[styleName].qrTop;
var nowUrl = config[styleName].url;
makeDiyBg("#code", qrWidth, qrHeight, $("#code_url").val(), foreground, background, nowUrl, imgWidth, imgHeight, font, fontColor, $("#recName").val(), recNameLeft, recNameTop, qrLeft, qrTop);
}
$(document).ready(function(){
var clipboard = new Clipboard('.copy-btn');
clipboard.on('success', function (e) {
layer.msg('复制成功!', {icon: 1});
});
clipboard.on('error', function (e) {
layer.msg('复制失败,请长按链接后手动复制', {icon: 2});
});
$("#editName").click(function(){
var codename=$("input[name='codename']").val();
var ii = layer.load(2, {shade:[0.1,'#fff']});
$.ajax({
type : "POST",
url : "ajax2.php?act=edit_codename",
data : {codename:codename},
dataType : 'json',
success : function(data) {
layer.close(ii);
if(data.code == 1){
layer.alert(data.msg, {icon: 1}, function(){window.location.reload()});
}else{
layer.alert(data.msg);
}
}
});
});
//点击按钮保存图片
$("#downImg").click(function () {
var img = document.getElementById('endImg');
var url = img.src;
var a = document.createElement('a');
var event = new MouseEvent('click');
a.download = '聚合收款-' + document.getElementById("recName").value;
a.href = url;
a.dispatchEvent(event);
});
$("#styleName").change(function(){
$.cookie('styleName',$(this).val());
showQrCode($(this).val());
});
if($.cookie('styleName')){
$("#styleName").val($.cookie('styleName'));
}
$.ajax({
type: 'get',
url: "./assets/js/config.json",
dataType: "json",
async: true,
success: function (data) {
config = data;
$("#styleName").change();
}
})
})