excel导入

This commit is contained in:
Jimmy 2021-03-18 01:31:10 +08:00
parent 34d9779d2f
commit b66170e9a9
3 changed files with 243 additions and 31 deletions

View File

@ -73,6 +73,7 @@
table.render({
elem: '#FigureNumberList',
height: 600,
url: apiUrl + '/api/services/app/FigureNumber/GetAllFigureNumber',
parseData: function (res) { //res 即为原始返回的数据
return {
@ -96,9 +97,9 @@
field: 'figureNum', //排序字段,对应 cols 设定的各字段名
type: 'asc' //排序方式 asc: 升序、desc: 降序、null: 默认排序
},
limits: [10, 15, 20, 25, 50, 100],
page: false,
limit: 15,
page: true,
limits: [10, 15, 20, 25, 50, 100],
skin: 'line'
});
@ -291,29 +292,60 @@
excel.importExcel(files, {
// 读取数据的同时梳理数据
fields: {
'id': 'A',
'username': 'B',
'experience': 'C',
'sex': 'D',
'score': 'E',
'city': 'F',
'classify': 'G',
'wealth': 'H',
'sign': 'I'
'figureNum': 'A',
'remark': 'B',
}
}, function (data) {
alert(11)
// 如果不需要展示直接上传,可以再次 $.ajax() 将JSON数据通过 JSON.stringify() 处理后传递到后端即可
// layer.open({
// title: '文件转换结果'
// , area: ['800px', '400px']
// , tipsMore: true
// , content: laytpl($('#LAY-excel-export-ans').html()).render({ data: data, files: files })
// , success: function () {
// element.render('tab')
// layui.code({})
// }
// })
var dataArr = data[0].Sheet1;
//获取前端页面整个表格数据
var tableData = layui.table.cache["FigureNumberList"];
if (tableData.length > 0) {
for (let index = 0; index < tableData.length; index++) {
var tableFigureNum = tableData[index].figureNum;
for (let dataindex = 1; dataindex < dataArr.length; dataindex++) {
var figureNum = dataArr[dataindex].figureNum;
if (figureNum == tableFigureNum) {
layer.alert("导入的图号编码:" + figureNum + " 与已有的图号编码重复,请修改!");
return false;
}
}
}
}
//校验无误,保存导入的数据
for (let index = 1; index < dataArr.length; index++) {
var CurrUserInfo = layui.sessionData('CurrUserInfo');
var figureNum = dataArr[index].figureNum.toString();
if (figureNum.length == 1) {
figureNum = '0' + figureNum;
}
$.ajax({
url: apiUrl + "/api/services/app/FigureNumber/CreateFigureNumber", //请求的url地址
dataType: "json", //返回格式为json
//async: false,//请求是否异步默认为异步这也是ajax重要特性
contentType: 'application/json',
data: JSON.stringify({
figureNum: figureNum,
remark: dataArr[index].remark,
createTime: getDatetime(),
createUserID: CurrUserInfo.data.userid,
createUserName: CurrUserInfo.data.userName,
isDelete: 0
}), //参数值
type: "POST", //请求方式
success: function (req) {
//请求成功时处理
},
error: function () {
/*错误信息处理*/
layer.msg("保存失败,请重试!");
return false;
},
});
}
layer.msg('导入成功', { time: 1000 }, function () {
table.reload('FigureNumberList');
});
})
} catch (e) {
layer.alert(e.message)

View File

@ -45,6 +45,7 @@
<div class="layui-btn-container">
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="add"> 添加 </button>
<button class="layui-btn layui-btn-sm layui-btn-danger data-delete-btn" lay-event="delete"> 删除 </button>
<button type="button" id="LAY-excel-upload" class="layui-btn layui-btn-sm"><i class="layui-icon">&#xe67c;</i>导入</button>
</div>
</script>
@ -58,17 +59,21 @@
</div>
</div>
<script src="../../../lib/layui-v2.5.5/layui.js" charset="utf-8"></script>
<script src="../../../js/lay-config.js" charset="utf-8"></script>
<script src="../../../js/PublicParameters/PublicParameters.js" charset="utf-8"></script>
<script>
layui.use(['form', 'table'], function () {
layui.use(['form', 'table', 'excel', 'upload'], function () {
var $ = layui.jquery,
form = layui.form,
table = layui.table;
table = layui.table,
excel = layui.excel,
upload = layui.upload;
var apiUrl = GetWebApiUrl();
table.render({
elem: '#MaterialNumberList',
height: 600,
url: apiUrl + '/api/services/app/MaterialNumber/GetAllMaterialNumber',
parseData: function (res) { //res 即为原始返回的数据
return {
@ -92,12 +97,32 @@
field: 'materialNum', //排序字段,对应 cols 设定的各字段名
type: 'asc' //排序方式 asc: 升序、desc: 降序、null: 默认排序
},
limits: [10, 15, 20, 25, 50, 100],
page: false,
limit: 15,
page: true,
limits: [10, 15, 20, 25, 50, 100],
skin: 'line'
});
upload.render({
elem: '#LAY-excel-upload', //绑定元素
url: '/upload/', //上传接口PS:这里不用传递整个 excel
auto: false, //选择文件后不自动上传
accept: 'file',
choose: function (obj) {// 选择文件回调
var files = obj.pushFile()
var fileArr = Object.values(files)// 注意这里的数据需要是数组,所以需要转换一下
// 用完就清理掉,避免多次选中相同文件时出现问题
for (var index in files) {
if (files.hasOwnProperty(index)) {
delete files[index]
}
}
$('#LAY-excel-upload').next().val('');
uploadExcel(fileArr) // 如果只需要最新选择的文件,可以这样写: uploadExcel([files.pop()])
}
});
// 监听搜索操作
form.on('submit(data-search-btn)', function (data) {
var result = JSON.stringify(data.field);
@ -261,6 +286,71 @@
return false;
});
}
function uploadExcel(files) {
try {
excel.importExcel(files, {
// 读取数据的同时梳理数据
fields: {
'materialNum': 'A',
'remark': 'B',
}
}, function (data) {
var dataArr = data[0].Sheet1;
//获取前端页面整个表格数据
var tableData = layui.table.cache["MaterialNumberList"];
if (tableData.length > 0) {
for (let index = 0; index < tableData.length; index++) {
var tableMaterialNum = tableData[index].materialNum;
for (let dataindex = 1; dataindex < dataArr.length; dataindex++) {
var materialNum = dataArr[dataindex].materialNum;
if (materialNum == tableMaterialNum) {
layer.alert("导入的物料特征码:" + materialNum + " 与已有的物料特征码重复,请修改!");
return false;
}
}
}
}
//校验无误,保存导入的数据
for (let index = 1; index < dataArr.length; index++) {
var CurrUserInfo = layui.sessionData('CurrUserInfo');
var materialNum = dataArr[index].materialNum.toString();
if (materialNum.length == 1) {
materialNum = '0' + materialNum;
}
$.ajax({
url: apiUrl + "/api/services/app/MaterialNumber/CreateMaterialNumber", //请求的url地址
dataType: "json", //返回格式为json
//async: false,//请求是否异步默认为异步这也是ajax重要特性
contentType: 'application/json',
data: JSON.stringify({
materialNum: materialNum,
remark: dataArr[index].remark,
createTime: getDatetime(),
createUserID: CurrUserInfo.data.userid,
createUserName: CurrUserInfo.data.userName,
isDelete: 0
}), //参数值
type: "POST", //请求方式
success: function (req) {
//请求成功时处理
},
error: function () {
/*错误信息处理*/
layer.msg("保存失败,请重试!");
return false;
},
});
}
layer.msg('导入成功', { time: 1000 }, function () {
table.reload('MaterialNumberList');
});
})
} catch (e) {
layer.alert(e.message)
}
}
});
</script>
</body>

View File

@ -45,6 +45,7 @@
<div class="layui-btn-container">
<button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="add"> 添加 </button>
<button class="layui-btn layui-btn-sm layui-btn-danger data-delete-btn" lay-event="delete"> 删除 </button>
<button type="button" id="LAY-excel-upload" class="layui-btn layui-btn-sm"><i class="layui-icon">&#xe67c;</i>导入</button>
</div>
</script>
@ -58,17 +59,21 @@
</div>
</div>
<script src="../../../lib/layui-v2.5.5/layui.js" charset="utf-8"></script>
<script src="../../../js/lay-config.js" charset="utf-8"></script>
<script src="../../../js/PublicParameters/PublicParameters.js" charset="utf-8"></script>
<script>
layui.use(['form', 'table'], function () {
layui.use(['form', 'table', 'excel', 'upload'], function () {
var $ = layui.jquery,
form = layui.form,
table = layui.table;
table = layui.table,
excel = layui.excel,
upload = layui.upload;
var apiUrl = GetWebApiUrl();
table.render({
elem: '#ProductNumberList',
height: 600,
url: apiUrl + '/api/services/app/ProductNumber/GetAllProductNumber',
parseData: function (res) { //res 即为原始返回的数据
return {
@ -92,12 +97,32 @@
field: 'productNum', //排序字段,对应 cols 设定的各字段名
type: 'asc' //排序方式 asc: 升序、desc: 降序、null: 默认排序
},
limits: [10, 15, 20, 25, 50, 100],
page: false,
limit: 15,
page: true,
limits: [10, 15, 20, 25, 50, 100],
skin: 'line'
});
upload.render({
elem: '#LAY-excel-upload', //绑定元素
url: '/upload/', //上传接口PS:这里不用传递整个 excel
auto: false, //选择文件后不自动上传
accept: 'file',
choose: function (obj) {// 选择文件回调
var files = obj.pushFile()
var fileArr = Object.values(files)// 注意这里的数据需要是数组,所以需要转换一下
// 用完就清理掉,避免多次选中相同文件时出现问题
for (var index in files) {
if (files.hasOwnProperty(index)) {
delete files[index]
}
}
$('#LAY-excel-upload').next().val('');
uploadExcel(fileArr) // 如果只需要最新选择的文件,可以这样写: uploadExcel([files.pop()])
}
});
// 监听搜索操作
form.on('submit(data-search-btn)', function (data) {
var result = JSON.stringify(data.field);
@ -261,6 +286,71 @@
return false;
});
}
function uploadExcel(files) {
try {
excel.importExcel(files, {
// 读取数据的同时梳理数据
fields: {
'productNum': 'A',
'remark': 'B',
}
}, function (data) {
var dataArr = data[0].Sheet1;
//获取前端页面整个表格数据
var tableData = layui.table.cache["ProductNumberList"];
if (tableData.length > 0) {
for (let index = 0; index < tableData.length; index++) {
var tableProductNum = tableData[index].productNum;
for (let dataindex = 1; dataindex < dataArr.length; dataindex++) {
var productNum = dataArr[dataindex].productNum;
if (productNum == tableProductNum) {
layer.alert("导入的产品编码:" + productNum + " 与已有的产品编码重复,请修改!");
return false;
}
}
}
}
//校验无误,保存导入的数据
for (let index = 1; index < dataArr.length; index++) {
var CurrUserInfo = layui.sessionData('CurrUserInfo');
var productNum = dataArr[index].productNum.toString();
if (productNum.length == 1) {
productNum = '0' + productNum;
}
$.ajax({
url: apiUrl + "/api/services/app/ProductNumber/CreateProductNumber", //请求的url地址
dataType: "json", //返回格式为json
//async: false,//请求是否异步默认为异步这也是ajax重要特性
contentType: 'application/json',
data: JSON.stringify({
productNum: productNum,
remark: dataArr[index].remark,
createTime: getDatetime(),
createUserID: CurrUserInfo.data.userid,
createUserName: CurrUserInfo.data.userName,
isDelete: 0
}), //参数值
type: "POST", //请求方式
success: function (req) {
//请求成功时处理
},
error: function () {
/*错误信息处理*/
layer.msg("保存失败,请重试!");
return false;
},
});
}
layer.msg('导入成功', { time: 1000 }, function () {
table.reload('ProductNumberList');
});
})
} catch (e) {
layer.alert(e.message)
}
}
});
</script>
</body>