|
@@ -62,6 +62,8 @@
|
|
|
<a href="javascript:void(0);" class="window" data-h="/returns/add/" data-t="退货 - 添加">添 加</a>
|
|
<a href="javascript:void(0);" class="window" data-h="/returns/add/" data-t="退货 - 添加">添 加</a>
|
|
|
{if $power == '1'}<a href="javascript:void(0);" class="check">删 除</a> {/if}
|
|
{if $power == '1'}<a href="javascript:void(0);" class="check">删 除</a> {/if}
|
|
|
<a href="javascript:void(0);" class="returnsexcel">下 载</a>
|
|
<a href="javascript:void(0);" class="returnsexcel">下 载</a>
|
|
|
|
|
+<a href="javascript:void(0);" id="uploadLink">导入数据</a>
|
|
|
|
|
+<input type="file" id="fileInput" accept=".xlsx, .xls, .csv" style="display: none;">
|
|
|
</div>
|
|
</div>
|
|
|
<table class="datatitle data" border="0" style="border-collapse:collapse;">
|
|
<table class="datatitle data" border="0" style="border-collapse:collapse;">
|
|
|
<tr>
|
|
<tr>
|
|
@@ -88,6 +90,148 @@ var excel = "/returns/";
|
|
|
var editurl = "/returns/edit/";
|
|
var editurl = "/returns/edit/";
|
|
|
var editdj = 1;
|
|
var editdj = 1;
|
|
|
var editt = "退货 - 修改";
|
|
var editt = "退货 - 修改";
|
|
|
|
|
+
|
|
|
|
|
+$(function(){
|
|
|
|
|
+ // 获取元素
|
|
|
|
|
+ const uploadLink = document.getElementById('uploadLink');
|
|
|
|
|
+ const fileInput = document.getElementById('fileInput');
|
|
|
|
|
+
|
|
|
|
|
+ // 点击 a 标签触发隐藏的 file input
|
|
|
|
|
+ uploadLink.addEventListener('click', (e) => {
|
|
|
|
|
+ e.preventDefault(); // 阻止 a 标签跳转
|
|
|
|
|
+ fileInput.click(); // 打开文件选择对话框
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ // 监听文件选择
|
|
|
|
|
+ fileInput.addEventListener('change', (e) => {
|
|
|
|
|
+ const file = e.target.files[0];
|
|
|
|
|
+ if (!file) return;
|
|
|
|
|
+
|
|
|
|
|
+ // 可选的:检查文件类型
|
|
|
|
|
+ const validTypes = ['application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'text/csv'];
|
|
|
|
|
+ if (!validTypes.includes(file.type)) {
|
|
|
|
|
+ alert('请选择有效的 Excel 文件(.xlsx, .xls, .csv)');
|
|
|
|
|
+ fileInput.value = ''; // 清空选择
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 使用 FileReader 读取文件内容
|
|
|
|
|
+ const reader = new FileReader();
|
|
|
|
|
+ reader.onload = (loadEvent) => {
|
|
|
|
|
+ try {
|
|
|
|
|
+ // 读取结果为 ArrayBuffer
|
|
|
|
|
+ const arrayBuffer = loadEvent.target.result;
|
|
|
|
|
+ // 使用 SheetJS 解析 Excel(type 指定为 'array')
|
|
|
|
|
+ const workbook = XLSX.read(arrayBuffer, { type: 'array' });
|
|
|
|
|
+
|
|
|
|
|
+ // 获取第一个工作表
|
|
|
|
|
+ const firstSheetName = workbook.SheetNames[0];
|
|
|
|
|
+
|
|
|
|
|
+ // 将工作表转换为 HTML 表格(简单展示)
|
|
|
|
|
+
|
|
|
|
|
+ const worksheet = workbook.Sheets[firstSheetName];
|
|
|
|
|
+ // const jsonData = XLSX.utils.sheet_to_json(worksheet, {header: 1,
|
|
|
|
|
+ // defval: '' // 为空单元格设置默认值
|
|
|
|
|
+ // });
|
|
|
|
|
+ // console.log(jsonData)
|
|
|
|
|
+ //resultDiv.innerHTML = `<h3>解析结果(第一个工作表)</h3>${htmlTable}`;
|
|
|
|
|
+
|
|
|
|
|
+ // 同时你也可以获得 JSON 数据:
|
|
|
|
|
+ const jsonData = XLSX.utils.sheet_to_json(worksheet);
|
|
|
|
|
+ //console.log(jsonData); // 在控制台查看 JSON
|
|
|
|
|
+ doSendExcel(jsonData);
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ console.error('解析失败', error);
|
|
|
|
|
+ alert('文件解析失败,请确保文件格式正确');
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ reader.readAsArrayBuffer(file); // 以 ArrayBuffer 形式读取
|
|
|
|
|
+ });
|
|
|
|
|
+})
|
|
|
|
|
+// 重置文件输入框的函数
|
|
|
|
|
+function resetFileInput() {
|
|
|
|
|
+ $("#fileInput").val(''); // 核心:清空选择
|
|
|
|
|
+}
|
|
|
|
|
+function doSendExcel(jsonData){
|
|
|
|
|
+ if(jsonData.length == 0 ){
|
|
|
|
|
+ return layx.confirm('提示',"解析excel数据不存在",null,{
|
|
|
|
|
+ buttons:[
|
|
|
|
|
+ {
|
|
|
|
|
+ label:'确定',
|
|
|
|
|
+ callback:function(id, button, event){
|
|
|
|
|
+
|
|
|
|
|
+ layx.destroy(id);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ ],dialogIcon:'error',shadable:0.6
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ layx.load('loadId','数据加载中');
|
|
|
|
|
+ resetFileInput();
|
|
|
|
|
+ $.ajax({
|
|
|
|
|
+ url: dataurl+"/excellr",
|
|
|
|
|
+ data: {data:JSON.stringify(jsonData)},
|
|
|
|
|
+ type: "POST",
|
|
|
|
|
+ dataType: "json",
|
|
|
|
|
+ success: function(a) {
|
|
|
|
|
+ layx.destroy('loadId');
|
|
|
|
|
+ if (a && a.success) {
|
|
|
|
|
+ if(a.data.length > 0){
|
|
|
|
|
+ layx.confirm('提示','是否下载不符合条件的数据',null,{
|
|
|
|
|
+ buttons:[
|
|
|
|
|
+ {
|
|
|
|
|
+ label:'确定',
|
|
|
|
|
+ callback:function(id, button, event){
|
|
|
|
|
+ layx.destroy(id);
|
|
|
|
|
+ download_excel(a.data)
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ label:'取消',
|
|
|
|
|
+ callback:function(id, button, event){
|
|
|
|
|
+ layx.destroy(id);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ }else{
|
|
|
|
|
+ $(".ts p").html(a.msg);
|
|
|
|
|
+ $(".ts").show();
|
|
|
|
|
+ setTimeout('$(".ts").fadeOut()', 1000);
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ $(".ts p").html(a.msg);
|
|
|
|
|
+ $(".ts").show();
|
|
|
|
|
+ setTimeout('$(".ts").fadeOut()', 1000);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+function download_excel(data){
|
|
|
|
|
+ let sheet = XLSX.utils.json_to_sheet(data)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ sheet['!cols'] = [
|
|
|
|
|
+ //订单号
|
|
|
|
|
+ {
|
|
|
|
|
+ wch:40,
|
|
|
|
|
+ },
|
|
|
|
|
+ //订单编码
|
|
|
|
|
+ {
|
|
|
|
|
+ wch:100,
|
|
|
|
|
+ },
|
|
|
|
|
+ ];
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ let workbook = XLSX.utils.book_new();
|
|
|
|
|
+
|
|
|
|
|
+ XLSX.utils.book_append_sheet(workbook, sheet, "Sheet1");
|
|
|
|
|
+ XLSX.writeFile(workbook, "错误数据.xlsx");
|
|
|
|
|
+}
|
|
|
$(".returnsexcel").click(function() {
|
|
$(".returnsexcel").click(function() {
|
|
|
var f = "";
|
|
var f = "";
|
|
|
var a = "";
|
|
var a = "";
|
|
@@ -131,4 +275,5 @@ $(".datatext").on('click',".thqr",function() {
|
|
|
});
|
|
});
|
|
|
</script>
|
|
</script>
|
|
|
<script type="text/javascript" src="{$theme}js/laydate.js"></script>
|
|
<script type="text/javascript" src="{$theme}js/laydate.js"></script>
|
|
|
|
|
+<script type="text/javascript" src="{$theme}js/excel/xlxs.js" ></script>
|
|
|
{Template footer}
|
|
{Template footer}
|