直接上案例,可以拿下去直接跑的
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title></title>
<!-- 引入样式文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/vant@2.12/lib/index.css" />
<link href="C:\Users\tangda\source\repos\Vant\Vant\ceshi.css" rel="stylesheet" />
<!-- 引入 Vue 和 Vant 的 JS 文件 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2.6/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vant@2.12/lib/vant.min.js"></script>
<script src=" http://47.119.154.126:8888/down/xXWXoEHmHMYE"></script>
</head>
<body>
<div id="app">
<van-tabs v-model="activeName">
<van-tab title="条码" name="code" class="tab1" ref="tabref" :style="{height: tab1scrollerHeight}">
<van-row class="tab1headerRow">
<van-col span="12" class="tab1header" style="">条码</van-col>
<van-col span="12" class="tab1header">数量</van-col>
</van-row>
<van-list v-model="listCode.loading" :finished="listCode.finished" finished-text="没有更多了" @load="onLoad">
<van-row v-for="item in listCode.listitem" :key="item" :title="item.code" class="tabContentRow">
<van-col span="12" class="tabContent">{{ item.code }}</van-col>
<van-col span="12" class="tabContent">{{ item.numbercount }}</van-col>
</van-row>
</van-list>
</van-tab>
<van-tab title="RFID" name="RFID" class="tab2" :style="{height: tab2scrollerHeight}">
<van-row type="flex" justify="space-around" class="tab2Row">
<van-col justify="center">
<van-button type="primary" size="small">开始扫描</van-button>
</van-col>
<van-col justify="center">
<van-button type="primary" size="small">关闭扫描</van-button>
</van-col>
</van-row>
<van-list v-model="list.loading" :finished="list.finished" finished-text="没有更多了" @load="onLoad" class="tab2Content">
<van-cell span="12" class="tab1header">RFID</van-cell>
<van-cell v-for="item in list.listitem" :key="item" :title="item.rfid" />
</van-list>
</van-tab>
</van-tabs>
<div class="foot" ref="ceshidemo">
<van-row>
<van-col>总数:{{listlengthnumber}}</van-col>
</van-row>
<van-row>
<van-col span="8"> <van-button type="primary" v-on:click="exportData">导出</van-button></van-col>
<van-col span="8"> <van-button type="primary" v-on:click="sendEmail">邮件</van-button></van-col>
<van-col span="8"> <van-button type="primary" v-on:click="remakeData">备注</van-button></van-col>
</van-row>
</div>
<van-dialog v-model="show" title="请输入邮箱" show-cancel-button :before-close="beforeClose">
<van-field v-model.trim="sendEmailList"
rows="1"
autosize
label="邮箱"
type="textarea"
placeholder="多个邮箱用#号隔开" />
</van-dialog>
<van-dialog v-model="remakeShow" title="备注" show-cancel-button :before-close="beforeCloseRemake">
<van-field v-model.trim="remakeShowContent"
rows="2"
autosize
label="备注"
type="textarea"
placeholder="请输入备注" />
</van-dialog>
</div>
<script>
//Vue.use(vant.List);
//Vue.use(vant.Col);
//Vue.use(vant.Row);
const app = new Vue({
el: "#app",
data: {
remakeShow: false,
remakeShowContent:"",
show: false,
sendEmailList: '',
activeName: 'code',
list: {
loading: false,
finished: false,
listitem: [
{ "id": "123456", "RFID": "20211211" },
{ "id": "1234567", "RFID": "202112117" },
{ "id": "12345678", "RFID": "202112118" },
//{ "id": "123456", "rfid": "20211211" },
//{ "id": "1234567", "rfid": "202112117" },
//{ "id": "12345678", "rfid": "202112118" },
//{ "id": "123456", "rfid": "20211211" },
//{ "id": "1234567", "rfid": "202112117" },
//{ "id": "12345678", "rfid": "202112118" },
//{ "id": "123456", "rfid": "20211211" },
//{ "id": "1234567", "rfid": "202112117" },
//{ "id": "12345678", "rfid": "202112118" },
//{ "id": "123456", "rfid": "20211211" },
//{ "id": "1234567", "rfid": "202112117" },
//{ "id": "12345678", "rfid": "202112118" },
//{ "id": "123456", "rfid": "20211211" },
//{ "id": "1234567", "rfid": "202112117" },
//{ "id": "12345678", "rfid": "202112118" },
//{ "id": "123456", "rfid": "20211211" },
//{ "id": "1234567", "rfid": "202112117" },
//{ "id": "12345678", "rfid": "202112118" },
//{ "id": "123456", "rfid": "20211211" },
//{ "id": "1234567", "rfid": "202112117" },
//{ "id": "12345678", "rfid": "202112118" },
//{ "id": "123456", "rfid": "20211211" }
]
},
listCode: {
loading: false,
finished: false,
listitem:
[
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" },
{ "code": "20211211", "numbercount": "1" }
]
},
},
mounted: function () {
},
methods: {
onLoad() {
if (this.activeName == 'RFID') {
this.list.listitem.push({ "id": "1234567899", "RFID": "202112118" })
if (this.list.listitem.length >= 50) {
this.list.finished = true;
}
this.list.loading = false;
}
else {
this.listCode.listitem.push({ "code": "20211214", "numbercount": "10" })
if (this.listCode.listitem.length >= 50) {
this.listCode.finished = true;
}
this.listCode.loading = false;
}
},
exportData() {
//1. 新建一个工作簿
if (this.activeName == 'RFID') {
var workbook = XLSX.utils.book_new();
var listd = this.list.listitem
let sheet2 = XLSX.utils.json_to_sheet(listd, {
// 使用指定的单元格作为起点插入数据,r:行, c:列,详情看官网文档
origin: { r:1, c: 0 },// 从A1开始增加内容
});
sheet2["!cols"] = [
{ wch: 30 },
];
//获取 表格范围
let wss = XLSX.utils.decode_range(sheet2["!ref"])
for (var i = wss.s.c+1; i <= wss.e.c; i++) {
for (let row = wss.s.r+1; row <= wss.e.r; row++) {
//if (i ==1) {
// sheet2[XLSX.utils.encode_cell({ r: row, c: i })].v = "";
//} else {
// sheet2[XLSX.utils.encode_cell({ r: row, c: i - 1 })].v = sheet2[XLSX.utils.encode_cell({ r: row, c: i })].v
// sheet2[XLSX.utils.encode_cell({ r: row, c: i })].v = ''
//}
sheet2[XLSX.utils.encode_cell({ r: row, c: i - 1 })].v = sheet2[XLSX.utils.encode_cell({ r: row, c: i })].v
sheet2[XLSX.utils.encode_cell({ r: row, c: i })].v = ''
}
}
sheet2[XLSX.utils.encode_cell({ r: 0, c: 0 })] = { t: 's', v: this.remakeShowContent }
XLSX.utils.book_append_sheet(workbook, sheet2, 'sheetName1');
var myDate = new Date;
let workBookName = "扫描RFID数据-" + myDate.getFullYear() + "-" + myDate.getMonth() + "-" + myDate.getDate() + "-" + myDate.getHours() + "-" + myDate.getMinutes() + "-" + myDate.getSeconds() + ".xlsx"
XLSX.writeFile(workbook, workBookName);
this.remakeShowContent = '';
}
else {
var workbook = XLSX.utils.book_new();
var codeData= JSON.parse(JSON.stringify(this.listCode.listitem).replace(/numbercount/g, "数量").replace(/code/g, "条码"))
let sheet2 = XLSX.utils.json_to_sheet(codeData, { origin: { r:1, c:0 } });
sheet2["!cols"] = [
{ wch: 30 },
{ wch: 30 },
];
//let wss = XLSX.utils.decode_range(sheet2["!ref"])
//var titles = {
// code: '条码',
// numbercount: '数量'
//}
//for (let c = wss.s.c; c <= wss.e.c; c++) {
// var header = XLSX.utils.encode_col(c) + '2'
// sheet2[header].v = titles[sheet2[header].v]
//}
var merge = [
{ s: { r: 0, c: 0 }, e: { r: 0, c: 1 } },
];
sheet2['!merges'] = merge;
sheet2[XLSX.utils.encode_cell({ r: 0, c: 0 })] = { t: 's', v: this.remakeShowContent }
XLSX.utils.book_append_sheet(workbook, sheet2, 'sheetName1');
var myDate = new Date;
let workBookName = "扫描条码数据-" + myDate.getFullYear() + "-" + myDate.getMonth() + "-" + myDate.getDate() + "-" + myDate.getHours() + "-" + myDate.getMinutes() + "-" + myDate.getSeconds() + ".xlsx"
XLSX.writeFile(workbook, workBookName);
this.remakeShowContent = '';
}
},
beforeClose: function (action, done) { // 点击事件 - 备注按钮提示框
if (action === 'confirm') { // 确认
var reg = new RegExp("^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$"); //正则表达式
var ischecktrue = false
var errorEmail="" ;
if (this.sendEmailList.length > 0) {
var emailList = this.sendEmailList.split("#");
for (var i = 0; i < emailList.length; i++) {
if (!reg.test(emailList[i])) {
ischecktrue = true
errorEmail += i + 1 + ","
}
}
if (ischecktrue) {
vant.Toast('第' + errorEmail.substr(0, errorEmail.length-1) + '个邮箱格式有误!请检查');
done(false)
} else {
if (true) {
}
vant.Toast('邮件发送成功');
done(); // 关闭提示框
}
} else {
if (this.sendEmailList.length==0) {
vant.Toast('请输入邮箱');
done(false)
}
}
} else if (action === 'cancel') { // 取消
this.sendEmailList=[]
done(); // 关闭提示框
}
},
beforeCloseRemake: function (action, done) {
if (action === 'confirm') { // 确认
if (this.remakeShowContent.length == 0) {
vant.Toast('未填写任何备注文字');
done(false);
} else {
vant.Toast('备注添加成功');
done();
}
} else if (action === 'cancel') { // 取消
this.remakeShowContent = '';
done();
}
},
sendEmail() {
this.show = true;
},
remakeData() {
this.remakeShow = true;
}
},
computed: {
'listlengthnumber': function () {
if (this.activeName == 'RFID') {
return this.list.listitem.length;
}
else {
return this.listCode.listitem.length;
}
},
tab2scrollerHeight: function () {
return (window.innerHeight - 44 - 65 - 10) + 'px';
},
tab1scrollerHeight: function () {
return (window.innerHeight - 44 - 65 - 10) + 'px';
}
},
})
</script>
</body>
</html>