gs-jjsp-web/bns/js/studyExam/itemBank.js

291 lines
9.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

let form, layer, table, tableIns;
let pageNum = 1, limitSize = 10; // 默认第一页分页数量为20
layui.use(['form', 'layer', 'table'], function () {
form = layui.form;
layer = layui.layer;
table = layui.table;
pages(1, 10, 1);
// 导入试题库数据
$('.import-btn').on('click', function () {
$("#import-excel").trigger("click");
});
})
function pages(pageNum, pageSize, typeNum) {
let params = getReqParams(pageNum, pageSize, typeNum);
$.ajax({
url: dataUrl + "proteam/pot/itemBank/getItemBanks?token=" + token,
data: params,
type: 'POST',
async: false,
success: function (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 })
} else if (result.code === 401) {
logout(1);
}
}, error: function () {
}
});
}
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],
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({
id: 'todayTaskTable',
elem: "#todayTaskTable",
height: "full-150",
data: dataList,
cols: [
[
//表头
{ type: 'checkbox', width: '5%'},
{
title: "序号",
width: '5%',
unresize: true,
align: "center",
templet: function (d) {
return (page - 1) * limit + d.LAY_NUM;
}
},
{
field: "topic",
title: "题干",
width: '30%',
unresize: false,
align: "center",
},
{
field: "topicTypeName",
title: "题干类型",
width: '8%',
unresize: false,
align: "center",
},
{
field: "topicOption",
title: "选项",
width: '36%',
unresize: false,
align: "center",
templet: function (d) {
let html = '';
if (d.topicOption) {
let optionArr = d.topicOption.split('|');
$.each(optionArr, function (index, item) {
html += '<p>' + item + '</p>'
});
}
return html;
}
},
{
field: "topicAnswer",
title: "答案",
width: '8%',
unresize: false,
align: "center",
},
{
title: "操作",
width: '8%',
unresize: false,
align: "center",
templet: function (d) {
return "<a onclick='addData(" + JSON.stringify(d) + ",2)'>修改</a><div>|</div>" +
"<a onclick='delData(2,"+d.id+")' style='color:#EB3330;'>删除</a>";
}
},
],
],
limit: limit,
done: function (res, curr, count) {
layer.close(loadingMsg);
},
});
}
// 获取参数
function getReqParams(page, limit, type) {
let obj = {};
if (!type) {
obj = {
page: page + "",
limit: limit + "",
topic: $('#topic').val(),
topicType: $('#topicType').val(),
};
} else {
obj = {
page: 1,
limit: limit,
topic: $('#topic').val(),
topicType: $('#topicType').val(),
};
}
return obj;
}
// 查询
function query(type) {
if (type === 2) {
$('#topic').val('');
$('#topicType').val('');
layui.form.render();
}
pages(1, limitSize);
}
// 新增/修改 试题库
function addData(params, type) {
let title = '';
if (type === 1) {
title = '新增试题'
params = {};
} else {
title = '修改试题';
}
openIframeByParamObj("operItemBank", title, "itemBankForm.html", "52%", "70%", params);
}
// 导入试题库
$("#import-excel").change(function () {
if ($(this).val()) {
let files = $(this)[0].files[0];
let fileType = files.name.substring(
files.name.lastIndexOf(".") + 1,
files.name.length
);
if (fileType === "xlsx" || fileType === "xls") {
excelUpload11(this, dataUrl + "proteam/pot/itemBank/importExcelData?token=" + token)
} else {
layer.msg("仅支持上传文件格式为xlx、xlsx", { icon: 5, });
$("#import-excel").val("");
}
}
});
// 导出试题库
function exportExcelData() {
let topic = $('#topic').val(),
topicType = $('#topicType').val();
let loadingMsg = layer.msg("数据导出中,请稍候...", { icon: 16, scrollbar: false, time: 0, });
let url = dataUrl + "proteam/pot/itemBank/exportExcelData?topic=" + topic + "&topicType=" + topicType + "&token=" + token;
let xhr = new XMLHttpRequest();
xhr.open("get", url, true);
xhr.responseType = "blob"; // 转换流
xhr.setRequestHeader("encryption", "encryption");
xhr.onload = function () {
layer.close(loadingMsg);
if (this.status === 200) {
let blob = this.response;
var a = document.createElement("a");
var url = window.URL.createObjectURL(blob);
a.href = url;
a.download = "试题库" + ".xlsx"; // 文件名
} else {
layer.msg("数据发生异常,请稍后重试", { icon: 16, scrollbar: false, time: 2000 });
}
a.click();
window.URL.revokeObjectURL(url);
};
xhr.send();
}
// 试题库模板下载
function downloadTemplate() {
let loadingMsg = layer.msg('试题库模板下载中,请稍候...', { icon: 16, scrollbar: false, time: 0 });
let url = dataUrl + 'proteam/pot/itemBank/downloadTemplate?token=' + token;
let xhr = new XMLHttpRequest();
xhr.open("get", url, true);
xhr.responseType = "blob"; // 转换流
xhr.setRequestHeader("encryption", "encryption");
xhr.setRequestHeader("encrypt",
sm3(JSON.stringify({})));
xhr.onload = function () {
layer.close(loadingMsg); // 关闭提示层
if (this.status === 200) {
let blob = this.response;
var a = document.createElement("a");
var url = window.URL.createObjectURL(blob);
a.href = url;
a.download = "试题库-导入模板.xlsx"; // 文件名
} else {
layer.msg('服务异常,请稍后重试', { icon: 16, scrollbar: false, time: 2000 });
}
a.click()
window.URL.revokeObjectURL(url)
};
xhr.send();
}
// 删除数据
function delData(type,id) {
let selectedIds = [];
if(type === 1){
$('.layui-table-body .layui-form-checked').each(function () {
var tr = $(this).closest('tr');
var id = tr.attr('data-index'); // 获取行索引
// 或者从数据属性获取
var data = table.cache['todayTaskTable'][id];
selectedIds.push(data.id);
});
if(selectedIds.length === 0){
return layer.msg('未选择删除数据',{icon:7});
}
}else{
selectedIds.push(id);
}
layer.confirm('确定删除吗?', function () {
let loadingMsg = layer.msg('正在删除,请稍等...', { icon: 16, shade: 0.01, time: '0' });
let url = dataUrl + "proteam/pot/itemBank/delData";
let params = { delIds: selectedIds };
ajaxRequest2(url, "POST", params, true, function (result) {
layer.close(loadingMsg); // 关闭提示层
if (result.code === 200) {
parent.layer.msg(result.msg, { icon: 1 })
query(1);
} else {
layer.msg(result.msg, { icon: 2 })
}
}, function (xhr) {
layer.close(loadingMsg); // 关闭提示层
error(xhr)
}, null, token);
})
}