Commit f7cff4f8 authored by lenovo's avatar lenovo

Merge remote-tracking branch 'origin/master'

parents f53c2323 6169394c
...@@ -96,7 +96,11 @@ import luckysheet from 'luckysheet' ...@@ -96,7 +96,11 @@ import luckysheet from 'luckysheet'
import LuckyExcel from 'luckyexcel' import LuckyExcel from 'luckyexcel'
//导入库export.js 这个文件是es6的,不能在普通的HTML文件直接引入js文件(虽然都是js文件,但是有区别,具体请百度es6与es5)!需要把es6转es5才可以直接引入使用! //导入库export.js 这个文件是es6的,不能在普通的HTML文件直接引入js文件(虽然都是js文件,但是有区别,具体请百度es6与es5)!需要把es6转es5才可以直接引入使用!
import { exportExcel } from '../../../../public/luckysheet/exportExcel' import { exportExcel } from '../../../../public/luckysheet/exportExcel'
var fileName; //定义表名
var excelTemp;//模板json
var excelTempName;//模板name
var excelRule;//规则json
var fileName="新建XLSX工作表"; //定义表名
export default { export default {
name: "Mymodule", name: "Mymodule",
data() { data() {
...@@ -154,7 +158,8 @@ export default { ...@@ -154,7 +158,8 @@ export default {
//const json_data = response.data; //const json_data = response.data;
let json_data = JSON.parse(sysSupplies.jsons); let json_data = JSON.parse(sysSupplies.jsons);
fileName= sysSupplies.name; fileName= sysSupplies.name;
excelTemp = json_data;//模板json
excelTempName = fileName;//模板name
luckysheet.create({ luckysheet.create({
container: "luckysheet", // Luckysheet 的容器元素 ID container: "luckysheet", // Luckysheet 的容器元素 ID
title: fileName, // Excel 文件名 title: fileName, // Excel 文件名
...@@ -181,6 +186,7 @@ export default { ...@@ -181,6 +186,7 @@ export default {
const cellCoordinate = luckysheet.getExcelCell(sheetIndex,colIndex,rowIndex); const cellCoordinate = luckysheet.getExcelCell(sheetIndex,colIndex,rowIndex);
console.log("单元格坐标:", cellCoordinate); console.log("单元格坐标:", cellCoordinate);
}, },
//下拉选择规则
handleRuleChange(){ handleRuleChange(){
if (this.selectedOption==='') { if (this.selectedOption==='') {
this.selectedRule=''; this.selectedRule='';
...@@ -189,10 +195,12 @@ export default { ...@@ -189,10 +195,12 @@ export default {
} }
getRule(this.selectedRule).then(response => { getRule(this.selectedRule).then(response => {
const sysRules = response.data; const sysRules = response.data;
this.disableNextButton = this.selectedRule === ''; this.disableNextButton = this.selectedOption === '';
//将接收到的json存到rule_json中 //将接收到的json存到json_data中
let rule_json = JSON.parse(sysRules.jsons); let json_data = JSON.parse(sysRules.jsons);
let ruleName= sysRules.name; let filename= sysRules.name;
excelRule = json_data;
}).catch(() => { }).catch(() => {
// 处理错误逻辑,这里是一个空的错误处理函数 // 处理错误逻辑,这里是一个空的错误处理函数
...@@ -247,6 +255,7 @@ export default { ...@@ -247,6 +255,7 @@ export default {
this.selectedOption=''; this.selectedOption='';
this.disableNextButton=''; this.disableNextButton='';
this.selectedRule=''; this.selectedRule='';
fileName="新建XLSX工作表";
//刷新luckysheet表格 //刷新luckysheet表格
this.init(); this.init();
}, },
...@@ -337,29 +346,51 @@ export default { ...@@ -337,29 +346,51 @@ export default {
}); });
return return
} }
exportJson.sheets[0].celldata //1、循环规则
for (var i = 0; i < excelRule.length; i++) {
//2、取出导入的数据
for (var j = 0; j < exportJson.sheets[excelRule[i].se].celldata.length; j++) {
var c =exportJson.sheets[excelRule[i].se].celldata[j].c;
var r =exportJson.sheets[excelRule[i].se].celldata[j].r;
if(r == excelRule[i].re && c == excelRule[i].ce){
//3、对数据赋值
excelTemp[excelRule[i].st].data[excelRule[i].rt][excelRule[i].ct].v=exportJson.sheets[excelRule[i].se].celldata[j].v.v
}
}
}
//4、保存
exportJson.sheets = excelTemp;
luckysheet.destroy() luckysheet.destroy()
luckysheet.create({ luckysheet.create({
container: 'luckysheet', //luckysheet is the container id container: 'luckysheet', //luckysheet is the container id
title: exportJson.info.name, title: excelTempName,
lang: 'zh', // 设定表格语言 lang: 'zh', // 设定表格语言
showinfobar: false, showinfobar: false,
data: exportJson.sheets, data: exportJson.sheets,
userInfo: exportJson.info.name.creator userInfo: exportJson.info.name.creator
}) })
} }
) )
}, },
/** 导出设置 */ /** 导出设置 */
handleExport(){ handleExport(){
exportExcel(luckysheet.getAllSheets(), fileName) exportExcel(luckysheet.getAllSheets(), excelTempName)
}, },
} }
// 配置项 // 配置项
}; };
// debounce函数定义
function debounce(func, delay) {
let timer;
return function () {
const context = this;
const args = arguments;
clearTimeout(timer);
timer = setTimeout(function () {
func.apply(context, args);
}, delay);
};
}
</script> </script>
This diff is collapsed.
This diff is collapsed.
<template>
<div class="hello">
<div style="position: absolute; top: 0">
<!--保存-->
<el-button type="primary" @click="saveExcel" v-has-permi="['system:supplies:save']">保存</el-button>
<!--修改-->
<el-button type="primary" @click="editExcel" v-has-permi="['system:supplies:edit']">修改</el-button>
<!--删除-->
<el-button type="primary" @click="deleteExcel" v-has-permi="['system:supplies:delete']">删除</el-button>
<!--导出-->
<el-button type="primary" @click="deriveExcel">导出</el-button>
<!--导入-->
<input style="font-size: 16px" type="file" @change="uploadExcel"/>
<!--导入-->
<input style="font-size: 16px" type="file" @change="uploadExcel2"/>
<!--隐藏id-->
<input style="font-size: 16px" id="id" type="text" value=''/>
<a href="javascript:void(0)" @click="downloadExcel">下载选择的模板</a>
</div>
<div id="luckysheet" style="margin: 0px;padding: 0px;position: absolute;width: 100%;height: 1000px;left: 0px;top: 150px;bottom: 0px;"></div>
<div v-show="isMaskShow" style="position: absolute;z-index: 1000000;left: 0px;top: 0px;bottom: 0px;right: 0px;background: rgba(255, 255, 255, 0.8);text-align: center;font-size: 40px;align-items: center;ustify-content: center;display: flex;">Downloading</div>
</div>
</template>
<script>
import $ from 'jquery'
import luckysheet from 'luckysheet'
import LuckyExcel from 'luckyexcel'
import axios from 'axios';
//导入库export.js 这个文件是es6的,不能在普通的HTML文件直接引入js文件(虽然都是js文件,但是有区别,具体请百度es6与es5)!需要把es6转es5才可以直接引入使用!
import { exportExcel } from '../../../../public/luckysheet/exportExcel'
import { getToken } from '../../../utils/auth'
var uploadExcel1;
var uploadExcel2;
export default {
name: 'wzgl',
props: {
msg: String
},
data() {
},
mounted() {
// In some cases, you need to use $nextTick
// this.$nextTick(() => {
//
// })
luckysheet.create({
container: 'luckysheet', // 设定DOM容器的id
title: 'Luckysheet Demo', // 设定表格名称
lang: 'zh', // 设定表格语言
plugins:['chart'],
showinfobar:false,
data:[
{
"name": "Cell", //工作表名称
"color": "", //工作表颜色
"index": 0, //工作表索引
"status": 1, //激活状态
"order": 0, //工作表的下标
"hide": 0,//是否隐藏
"row": 36, //行数
"column": 18, //列数
"defaultRowHeight": 19, //自定义行高
"defaultColWidth": 73, //自定义列宽
"celldata": [], //初始化使用的单元格数据
"config": {
"merge":{}, //合并单元格
"rowlen":{}, //表格行高
"columnlen":{}, //表格列宽
"rowhidden":{}, //隐藏行
"colhidden":{}, //隐藏列
"borderInfo":{}, //边框
"authority":{}, //工作表保护
},
"scrollLeft": 0, //左右滚动条位置
"scrollTop": 315, //上下滚动条位置
"luckysheet_select_save": [], //选中的区域
"calcChain": [],//公式链
"isPivotTable":false,//是否数据透视表
"pivotTable":{},//数据透视表设置
"filter_select": {},//筛选范围
"filter": null,//筛选配置
"luckysheet_alternateformat_save": [], //交替颜色
"luckysheet_alternateformat_save_modelCustom": [], //自定义交替颜色
"luckysheet_conditionformat_save": {},//条件格式
"frozen": {}, //冻结行列配置
"chart": [], //图表配置
"zoomRatio":1, // 缩放比例
"image":[], //图片
"showGridLines": 1, //是否显示网格线
"dataVerification":{} //数据验证配置
}
]
});
},
methods: {
uploadExcel(evt) {
const files = evt.target.files
if (files == null || files.length == 0) {
alert('没有文件等待导入')
return
}
let name = files[0].name
let suffixArr = name.split('.'),
suffix = suffixArr[suffixArr.length - 1]
if (suffix != 'xlsx') {
alert('当前仅支持导入xlsx文件')
return
}
LuckyExcel.transformExcelToLucky(
files[0],
function(exportJson, luckysheetfile) {
uploadExcel1=exportJson;
if (exportJson.sheets == null || exportJson.sheets.length == 0) {
alert(
'无法读取excel文件的内容,目前不支持xls文件!'
)
return
}
//赋值
var ss= exportJson.sheets[0].celldata[0].v.v;
uploadExcel2.sheets[0].celldata[0].v.v = ss;
exportJson = uploadExcel2;
window.luckysheet.destroy()
window.luckysheet.create({
container: 'luckysheet', //luckysheet is the container id
title: exportJson.info.name,
lang: 'zh', // 设定表格语言
showinfobar: false,
data: exportJson.sheets,
userInfo: exportJson.info.name.creator
})
}
)
},
uploadExcel2(evt) {
const files = evt.target.files
if (files == null || files.length == 0) {
alert('没有文件等待导入')
return
}
let name = files[0].name
let suffixArr = name.split('.'),
suffix = suffixArr[suffixArr.length - 1]
if (suffix != 'xlsx') {
alert('当前仅支持导入xlsx文件')
return
}
LuckyExcel.transformExcelToLucky(
files[0],
function(exportJson, luckysheetfile) {
uploadExcel2=exportJson;
/*var obj=$.parseJSON(ss);*/
if (exportJson.sheets == null || exportJson.sheets.length == 0) {
alert(
'无法读取excel文件的内容,目前不支持xls文件!'
)
return
}
window.luckysheet.destroy()
window.luckysheet.create({
container: 'luckysheet', //luckysheet is the container id
title: exportJson.info.name,
lang: 'zh', // 设定表格语言
showinfobar: false,
data: exportJson.sheets,
userInfo: exportJson.info.name.creator
})
}
)
},
//查询模板
selectExcel(evt) {
const value = this.selected
const name = evt.target.options[evt.target.selectedIndex].innerText
if (value == '') {
return
}
this.isMaskShow = true
LuckyExcel.transformExcelToLuckyByUrl(
value,
name,
(exportJson, luckysheetfile) => {
if (exportJson.sheets == null || exportJson.sheets.length == 0) {
alert(
'无法读取excel文件的内容,目前不支持xls文件!'
)
return
}
this.isMaskShow = false
window.luckysheet.destroy()
window.luckysheet.create({
container: 'luckysheet', //luckysheet is the container id
title: exportJson.info.name,
lang: 'zh', // 设定表格语言
showinfobar: false,
data: exportJson.sheets,
userInfo: exportJson.info.name.creator
})
}
)
},
//下载模板
downloadExcel() {
const value = this.selected
if (value.length == 0) {
alert('请选择一个模板!')
return
}
var elemIF = document.getElementById('Lucky-download-frame')
if (elemIF == null) {
elemIF = document.createElement('iframe')
elemIF.style.display = 'none'
elemIF.id = 'Lucky-download-frame'
document.body.appendChild(elemIF)
}
elemIF.src = value
},
//导出
deriveExcel() {
exportExcel(window.luckysheet.getAllSheets(), '导出')
},
//保存
saveExcel(){
var luckysheetfile = window.luckysheet.getLuckysheetfile();
var s =JSON.stringify(luckysheetfile);
// 发ajax请求,用以获取数据
// 发送 POST 请求
axios({
method: 'post',
url: process.env.VUE_APP_BASE_API + '/system/supplies/save',
headers:{
Authorization : "Bearer " + getToken(),
},
data: {"jsons":s}
}).then(response=>{
//返回数据
alert(response.data);
});
},
//修改
editExcel(){
var luckysheetfile = window.luckysheet.getLuckysheetfile();
var s =JSON.stringify(luckysheetfile);
// 发ajax请求,用以获取数据
// 发送 POST 请求
axios({
method: 'post',
url: process.env.VUE_APP_BASE_API + '/system/supplies/edit',
headers:{
Authorization : "Bearer " + getToken(),
},
data: {"jsons":s}
}).then(response=>{
//返回数据
alert(response.data);
});
}
}
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h3 {
margin: 40px 0 0;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment