459 lines
15 KiB
JavaScript
459 lines
15 KiB
JavaScript
let form, layer, table, tableIns;
|
||
let pageNum = 1, limitSize = 10; // 默认第一页,分页数量为10
|
||
let orgData,selectOrgId;
|
||
var modal = $('#myModal');
|
||
var span = $('.close');
|
||
var printButton = $('#PrintButton');
|
||
|
||
layui.use(['form', 'layer', 'table', 'laydate'], function () {
|
||
form = layui.form;
|
||
layer = layui.layer;
|
||
table = layui.table;
|
||
layui.form.render();
|
||
pages(1, 10, 1);
|
||
getToolsSelected();
|
||
})
|
||
|
||
|
||
function getToolsSelected() {
|
||
let url = dataUrl + '/tools/all';
|
||
ajaxRequest(url, "POST", null, true, function () {
|
||
}, function (result) {
|
||
if (result.code === 200) {
|
||
setSelectValue(result.data, 'sampleTools');
|
||
// return result.data
|
||
} else {
|
||
layer.alert(result.msg, {icon: 2})
|
||
}
|
||
}, function (xhr) {
|
||
error(xhr)
|
||
});
|
||
}
|
||
|
||
|
||
function pages(pageNum, pageSize, typeNum) {
|
||
let params = getReqParams(pageNum, pageSize, typeNum);
|
||
let url = dataUrl + "/tools/getList"
|
||
ajaxRequest(url, "POST", params, true, function () {
|
||
}, function (result) {
|
||
console.log(result);
|
||
if (result.code === 200) {
|
||
if (result.data) {
|
||
initTable(result.data, result.limit, result.curr)
|
||
laypages(result.count, result.curr, result.limit)
|
||
}
|
||
} else if (result.code === 500) {
|
||
layer.alert(result.msg, {icon: 2})
|
||
}
|
||
}, function (xhr) {
|
||
error(xhr)
|
||
});
|
||
|
||
}
|
||
|
||
function laypages(total, page, limit) {
|
||
layui.use(['laypage'], function () {
|
||
let laypage = layui.laypage;
|
||
laypage.render({
|
||
elem: 'voi-page',
|
||
count: total,
|
||
curr: page,
|
||
limit: limit,
|
||
limits: [10, 20, 50, 100, 200, 500],
|
||
layout: ['prev', 'page', 'next', 'skip', 'count', 'limit'],
|
||
groups: 5,
|
||
jump: function (obj, first) {
|
||
if (!first) {
|
||
pageNum = obj.curr, limitSize = obj.limit;
|
||
pages(obj.curr, obj.limit, null);
|
||
}
|
||
}
|
||
});
|
||
})
|
||
}
|
||
|
||
/*初始化表格*/
|
||
function initTable(dataList, limit, page) {
|
||
let loadingMsg = layer.msg("数据加载中,请稍候...", {icon: 16, scrollbar: false, time: 0});
|
||
tableIns = table.render({
|
||
elem: "#table_data",
|
||
height: "full-130",
|
||
data: dataList,
|
||
limit: limit,
|
||
cols: [
|
||
[
|
||
{type: "checkbox", width: 50, unresize: true, align: "center"},
|
||
//表头
|
||
{title: "序号", width: 70, unresize: true, align: "center",
|
||
templet: function (d) {
|
||
return (page - 1) * limit + d.LAY_INDEX;
|
||
}
|
||
},
|
||
{
|
||
field: "sampleTools",
|
||
width: 155,
|
||
title: "设备类型",
|
||
unresize: true,
|
||
align: "center",
|
||
templet: function (d) {
|
||
return `<div class="ellipsis" title="${d.sampleTools}">${d.sampleTools}</div>`;
|
||
}
|
||
},
|
||
{
|
||
field: "devCode",
|
||
width: 150,
|
||
title: "设备编号",
|
||
unresize: true,
|
||
align: "center",
|
||
templet: function (d) {
|
||
return `<div class="ellipsis" title="${d.devCode}">${d.devCode}</div>`;
|
||
}
|
||
},
|
||
{
|
||
field: "customerCode",
|
||
width: 150,
|
||
title: "设备编码",
|
||
unresize: true,
|
||
align: "center",
|
||
templet: function (d) {
|
||
return `<div class="ellipsis" title="${d.customerCode}">${d.customerCode}</div>`;
|
||
}
|
||
},
|
||
{
|
||
field: "devModule",
|
||
width: 150,
|
||
title: "设备规格",
|
||
unresize: true,
|
||
align: "center",
|
||
templet: function (d) {
|
||
return `<div class="ellipsis" title="${d.devModule}">${d.devModule}</div>`;
|
||
}
|
||
},
|
||
{
|
||
field: "customName",
|
||
width: 175,
|
||
title: "送样单位",
|
||
unresize: true,
|
||
align: "center",
|
||
templet: function (d) {
|
||
return `<div class="ellipsis" title="${d.customName}">${d.customName}</div>`;
|
||
}
|
||
},
|
||
{
|
||
field: "sampleDepartment",
|
||
width: 170,
|
||
title: "送样部门",
|
||
unresize: true,
|
||
align: "center",
|
||
templet: function (d) {
|
||
return `<div class="ellipsis" title="${d.sampleDepartment}">${d.sampleDepartment}</div>`;
|
||
}
|
||
},
|
||
{
|
||
field: "manufactureDate",
|
||
width: 150,
|
||
title: "生产日期",
|
||
unresize: true,
|
||
align: "center",
|
||
templet: function (d) {
|
||
return `<div class="ellipsis" title="${d.manufactureDate}">${d.manufactureDate}</div>`;
|
||
}
|
||
},
|
||
{
|
||
field: "experTime",
|
||
width: 150,
|
||
title: "试验日期",
|
||
unresize: true,
|
||
align: "center",
|
||
templet: function (d) {
|
||
return `<div class="ellipsis" title="${d.experTime}">${d.experTime}</div>`;
|
||
}
|
||
},
|
||
{
|
||
field: "experConclu",
|
||
width: 120,
|
||
title: "试验结果",
|
||
unresize: true,
|
||
align: "center",
|
||
templet: function (d) {
|
||
return `<div class="ellipsis" title="${d.experConclu}">${d.experConclu}</div>`;
|
||
}
|
||
},
|
||
{
|
||
field: "certificate",
|
||
title: "合格证",
|
||
width: 90,
|
||
unresize: true,
|
||
align: "center",
|
||
templet: function (d) {
|
||
return `<a href="#" style="color: blue;" onclick="handleClick1('${d.submitLocation}','${d.sampleTools}','${d.devModule}','${d.devCode}','${d.experTime}','${d.nextExperTime}','${d.experUser}','${d.experConclu}','${d.customName}')">查看</a>`;
|
||
}
|
||
},
|
||
{
|
||
field: "qrCode",
|
||
title: "二维码",
|
||
width: 90,
|
||
unresize: true,
|
||
align: "center",
|
||
templet: function (d) {
|
||
return `<a href="#" style="color: blue;" onclick="handleClick2('${d.submitLocation}','${d.sampleTools}','${d.devModule}','${d.devCode}','${d.experTime}','${d.nextExperTime}','${d.experUser}','${d.experConclu}','${d.customName}')">打印</a>`;
|
||
}
|
||
},
|
||
],
|
||
],
|
||
done: function (res, curr, count) {
|
||
layer.close(loadingMsg);
|
||
table.resize("table_data");
|
||
count || this.elem.next(".layui-table-view").find(".layui-table-header").css("display", "inline-block");
|
||
count || this.elem.next(".layui-table-view").find(".layui-table-box").css("overflow", "auto");
|
||
},
|
||
});
|
||
}
|
||
|
||
function handleClick1(submitLocation,sampleTools,devModule,devCode,experTime,nextExperTime,experUser,experConclu,customName) {
|
||
title = '合格证';
|
||
let param = {
|
||
'submitLocation' : submitLocation,
|
||
'sampleTools' : sampleTools,
|
||
'devModule' : devModule,
|
||
'devCode' : devCode,
|
||
'experTime' : experTime,
|
||
'nextExperTime' : nextExperTime,
|
||
'experUser': experUser,
|
||
'experConclu': experConclu,
|
||
'customName': customName
|
||
}
|
||
openIframe2("addOrEditUser", title, "child/certificateView.html", '30%', '70%', param);
|
||
}
|
||
|
||
/**
|
||
* 打印二维码
|
||
*/
|
||
function handleClick2(submitLocation,sampleTools,devModule,devCode,experTime,nextExperTime,experUser,experConclu,customName) {
|
||
// 准备二维码内容
|
||
const qrCodeData = {
|
||
"样品名称": sampleTools,
|
||
"规格型号": devModule,
|
||
"样品编号": devCode,
|
||
"检验日期": experTime,
|
||
"下次检验日期": nextExperTime,
|
||
"试验人员": experUser,
|
||
"试验结果": experConclu,
|
||
"送检单位": customName
|
||
};
|
||
// 将对象转换为字符串
|
||
const qrCodeString = JSON.stringify(qrCodeData, null, 2);
|
||
// 清空二维码容器
|
||
$('#Qrcode').empty();
|
||
// 生成二维码
|
||
$('#Qrcode').qrcode(utf16to8(qrCodeString));
|
||
// 显示模态对话框
|
||
modal.show();
|
||
// // 打印二维码
|
||
// printQRCode();
|
||
window.print();
|
||
}
|
||
|
||
// 点击模态对话框外部区域也可以关闭模态对话框
|
||
$(window).click(function(event) {
|
||
if ($(event.target).is(modal)) {
|
||
modal.hide();
|
||
}
|
||
});
|
||
|
||
/**
|
||
* 批量下载
|
||
*/
|
||
function batchDownload() {
|
||
var selectedRows = table.checkStatus("table_data").data;
|
||
if (selectedRows.length == 0) {
|
||
return layer.msg('请选择要下载的数据', {icon: 7})
|
||
}
|
||
// 创建一个临时 canvas 用于绘制带白边的二维码
|
||
var qrWidth = 300; // 二维码的标准宽度
|
||
var whiteBorder = 20; // 白边的宽度
|
||
var totalWidth = qrWidth + 2 * whiteBorder; // 总宽度
|
||
var canvas = document.createElement('canvas');
|
||
canvas.width = totalWidth;
|
||
canvas.height = totalWidth; // 保持正方形
|
||
var ctx = canvas.getContext('2d');
|
||
|
||
selectedRows.forEach(function (row, index) {
|
||
// 准备二维码内容
|
||
const qrCodeData = {
|
||
"样品名称": row.sampleTools,
|
||
"规格型号": row.devModule,
|
||
"样品编号": row.devCode,
|
||
"检验日期": row.experTime,
|
||
"下次检验日期": row.nextExperTime,
|
||
"试验人员": row.experUser,
|
||
"试验结果": row.experConclu,
|
||
"送检单位": row.customName
|
||
};
|
||
|
||
// 创建二维码并填充白色背景
|
||
$('#qr-canvas').empty();
|
||
$('#qr-canvas').qrcode(utf16to8(JSON.stringify(qrCodeData, null, 2)));
|
||
|
||
// 获取 qr-canvas 中的二维码元素
|
||
var qrCanvas = document.querySelector('#qr-canvas canvas');
|
||
var qrSize = qrCanvas.width;
|
||
|
||
// 绘制白边
|
||
ctx.fillStyle = "#FFFFFF"; // 设置白色
|
||
ctx.fillRect(0, 0, totalWidth, totalWidth); // 填充整个画布
|
||
|
||
// 计算二维码的位置以确保居中
|
||
var xOffset = (totalWidth - qrSize) / 2;
|
||
var yOffset = (totalWidth - qrSize) / 2;
|
||
|
||
// 将二维码绘制到白边画布中,居中对齐
|
||
ctx.drawImage(qrCanvas, xOffset, yOffset, qrSize, qrSize);
|
||
var dataURL = canvas.toDataURL('image/png');
|
||
|
||
// 创建下载链接并自动点击
|
||
var link = document.createElement('a');
|
||
link.href = dataURL;
|
||
link.download = `QRCode_${index + 1}.png`;
|
||
link.click();
|
||
});
|
||
}
|
||
|
||
|
||
function utf16to8(str) {
|
||
var out, i, len, c;
|
||
out = "";
|
||
len = str.length;
|
||
for (i = 0; i < len; i++) {
|
||
c = str.charCodeAt(i);
|
||
if ((c >= 0x0001) && (c <= 0x007F)) {
|
||
out += str.charAt(i);
|
||
} else if (c > 0x07FF) {
|
||
out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
|
||
out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
|
||
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
|
||
} else {
|
||
out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
|
||
out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
|
||
}
|
||
}
|
||
return out;
|
||
}
|
||
|
||
// 获取参数
|
||
function getReqParams(page, limit, type) {
|
||
var selectedValue =$('#sampleTools').val()
|
||
// 2. 查找对应的选项文本
|
||
var selectedText = $('#sampleTools option[value="' + selectedValue + '"]').text();
|
||
if (selectedText=='请选择设备类型'){
|
||
selectedText=''
|
||
}
|
||
let obj = {};
|
||
if (!type) {
|
||
obj = {
|
||
page: page + "",
|
||
limit: limit + "",
|
||
sampleTools: selectedText,
|
||
keyWord:$('#keyWord').val()
|
||
};
|
||
} else {
|
||
obj = {
|
||
page: '1',
|
||
limit: '10',
|
||
sampleTools: '',
|
||
keyWord: ''
|
||
};
|
||
}
|
||
console.log(obj)
|
||
obj={
|
||
encryptedData:encryptCBC(JSON.stringify(obj))
|
||
}
|
||
return obj;
|
||
}
|
||
|
||
// 查询/重置
|
||
function query() {
|
||
let pattern = new RegExp("[%_<>]");
|
||
if (pattern.test($("#loginName").val())) {
|
||
$("#loginName").val('');
|
||
return layer.msg('用户名查询包含特殊字符,请重新输入', {
|
||
icon: 2,
|
||
time: 2000 //2秒关闭(如果不配置,默认是3秒)
|
||
});
|
||
}
|
||
if (pattern.test($("#phone").val())) {
|
||
$("#phone").val('');
|
||
return layer.msg('手机号查询包含特殊字符,请重新输入', {
|
||
icon: 2,
|
||
time: 2000 //2秒关闭(如果不配置,默认是3秒)
|
||
});
|
||
}
|
||
pageNum = 1;
|
||
pages(1, limitSize);
|
||
}
|
||
|
||
|
||
//重置
|
||
function reset() {
|
||
pages(1, limitSize, 1)
|
||
}
|
||
|
||
|
||
function reloadData() {
|
||
pages(pageNum, limitSize);
|
||
}
|
||
|
||
// 新增/修改平台用户
|
||
function addData(id) {
|
||
if (id) {
|
||
title = '工器具个体管理/详情';
|
||
}
|
||
let param = {
|
||
'id': id
|
||
}
|
||
openIframe2("addOrEditUser", title, "child/toolsForm.html", '100%', '100%', param);
|
||
}
|
||
|
||
// 启用/停用/解除锁定
|
||
function editUserAccountStatus(id, status, type) {
|
||
let url = dataUrl + "/sys/user/editUserAccountStatus?token=" + token;
|
||
let params = {
|
||
'id': id,
|
||
'accountStatus': status,
|
||
'type': type
|
||
}
|
||
ajaxRequest(url, "POST", params, true, function () {
|
||
}, function (result) {
|
||
if (result.code === 200) {
|
||
if(type){
|
||
reloadData();
|
||
}
|
||
parent.layer.msg(result.msg, {icon: 1})
|
||
} else if (result.code === 500) {
|
||
layer.alert(result.msg, {icon: 2})
|
||
}
|
||
}, function (xhr) {
|
||
error(xhr)
|
||
});
|
||
}
|
||
|
||
// 管理员修改密码
|
||
function resetPwd(id) {
|
||
let param = {
|
||
'id': id,
|
||
'type': '1'
|
||
}
|
||
openIframe2("addOrEditUnifyUser", '修改密码', "password.html", '770px', '400px', param);
|
||
}
|
||
|
||
/*下拉选表单赋值*/
|
||
function setSelectValue(list, selectName) {
|
||
console.log("list",list)
|
||
let html = '<option value="" selected>请选择设备类型</option>';
|
||
$.each(list, function (index, item) {
|
||
html += '<option value="' + item.id + '">' + item.name + '</option>';
|
||
})
|
||
$('#' + selectName).empty().append(html);
|
||
layui.form.render();
|
||
}
|