diff --git a/ruoyi-ui/src/views/system/supplies/index.vue b/ruoyi-ui/src/views/system/supplies/index.vue index cefffa94bc3259db45f3dc1d54a491d555ea3f4c..e4020898071fc9d7b9723966a6f85b2a146b045e 100644 --- a/ruoyi-ui/src/views/system/supplies/index.vue +++ b/ruoyi-ui/src/views/system/supplies/index.vue @@ -1,8 +1,8 @@ <template> <div class="app-container"> - <el-form ref="queryForm" size="small" :inline="true" label-width="68px"> + <el-form ref="queryForm" size="small" :inline="true" label-width="68px"> <el-form-item label="模æ¿" prop="name"> - <el-select v-model="selectedOption" size="mini" @change="handleOptionChange" placeholder="è¯·é€‰æ‹©ä½ è¦æŸ¥çœ‹çš„æ¨¡æ¿" > + <el-select v-model="selectedOption" size="mini" @change="handleOptionChange" placeholder="è¯·é€‰æ‹©ä½ è¦æŸ¥çœ‹çš„æ¨¡æ¿"> <el-option v-for="item in depss" :key="item.id" @@ -34,22 +34,23 @@ size="mini" @click="handleExport" v-hasPermi="['ruoyi-myexcel:myexcel:export']" - >导出</el-button> + >导出 + </el-button> </el-col> - <el-col :span="1.5"> - <el-upload - type="file" - name="file" - ref="upload" - :before-upload="handleFileChange" - action='' - :limit="1" - :file-list="fileList" - > - <el-button plain size="mini" icon="el-icon-upload2" type="primary">导入</el-button> + <el-col :span="1.5"> + <el-upload + type="file" + name="file" + ref="upload" + :before-upload="importExcel" + action='' + :limit="1" + :file-list="fileList" + > + <el-button plain size="mini" icon="el-icon-upload2" type="primary">导入</el-button> - </el-upload> - </el-col> + </el-upload> + </el-col> </el-row> <div id="luckysheet" @@ -63,9 +64,9 @@ width="30%" style="z-index: 1; " :before-close="handleClose"> - <el-form label-width="80px" @submit.native.prevent> - <el-form-item label="åç§°" > - <el-input v-model="from_name" @keyup.enter.native="handleEnter" placeholder="请输入åç§°" /> + <el-form label-width="80px" @submit.native.prevent> + <el-form-item label="åç§°"> + <el-input v-model="from_name" @keyup.enter.native="handleEnter" placeholder="请输入åç§°"/> </el-form-item> </el-form> <span slot="footer" class="dialog-footer"> @@ -77,353 +78,293 @@ </template> <script> -import $ from 'jquery' -/*安装æ’ä»¶ npm install xlsx,安装完æˆåŽå¼•å…¥ import XLSX from ‘xlsx’*/ -import XLSX from 'xlsx' -import {addMyluckyexcel, getMyluckyexcel, listMyluckyexcel} from "@/api/ruoyi-myLuckyexcel/myluckyexcel"; + import $ from 'jquery' + /*安装æ’ä»¶ npm install xlsx,安装完æˆåŽå¼•å…¥ import XLSX from ‘xlsx’*/ + import XLSX from 'xlsx' + import { addMyluckyexcel, getMyluckyexcel, listMyluckyexcel } from '@/api/ruoyi-myLuckyexcel/myluckyexcel' -import luckysheet from 'luckysheet' -import LuckyExcel from 'luckyexcel' -//导入库export.js 这个文件是es6的,ä¸èƒ½åœ¨æ™®é€šçš„HTML文件直接引入js文件(虽然都是js文件,但是有区别,具体请百度es6与es5)ï¼éœ€è¦æŠŠes6转es5æ‰å¯ä»¥ç›´æŽ¥å¼•å…¥ä½¿ç”¨ï¼ -import { exportExcel } from '../../../../public/luckysheet/exportExcel' -export default { - name: "Mymodule", - data() { - return { - //弹出页é¢çš„表å - from_name : "", - // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚ - dialogVisible : false, - selectedOption:'', - luckysheetData: '', - fileList:[], - depss:[], - // 表å•傿•° - form: {}, - // æŸ¥è¯¢å‚æ•° - queryParams: { - pageNum: 1, - pageSize: 10, - name: null, - content: null - }, - }; - }, - created() { -//åˆ·æ–°é¡µé¢æ—¶è¿›è¡Œçš„æ“ä½œ - this.getList(); - }, - mounted() { - this.init(); - }, - methods:{ - /** 页é¢åˆ·æ–°æ—¶å±•示的数æ®*/ - getList() { - listMyluckyexcel(this.queryParams).then(response => { - this.depss = response.rows; - }); + import luckysheet from 'luckysheet' + import LuckyExcel from 'luckyexcel' + //导入库export.js 这个文件是es6的,ä¸èƒ½åœ¨æ™®é€šçš„HTML文件直接引入js文件(虽然都是js文件,但是有区别,具体请百度es6与es5)ï¼éœ€è¦æŠŠes6转es5æ‰å¯ä»¥ç›´æŽ¥å¼•å…¥ä½¿ç”¨ï¼ + import { exportExcel } from '../../../../public/luckysheet/exportExcel' +var exceltemp; + export default { + name: 'Mymodule', + data() { + return { + //弹出页é¢çš„表å + from_name: '', + // æ˜¯å¦æ˜¾ç¤ºå¼¹å‡ºå±‚ + dialogVisible: false, + selectedOption: '', + luckysheetData: '', + fileList: [], + depss: [], + // 表å•傿•° + form: {}, + // æŸ¥è¯¢å‚æ•° + queryParams: { + pageNum: 1, + pageSize: 10, + name: null, + content: null + } + } }, - /** 下拉选和页é¢luckysheet绑定 */ - handleOptionChange() { - //æ ¹æ®é€‰ä¸çš„下拉选项值获å–ç›¸åº”çš„ä¿¡æ¯ - getMyluckyexcel(this.selectedOption).then(response => { - - const sysSupplies = response.data; - - this.luckysheetData = sysSupplies.jsons; - //将接收到的jsonå˜åˆ°json_dataä¸ - //const json_data = response.data; - let json_data = JSON.parse(sysSupplies.jsons); - let filename= sysSupplies.name; - - luckysheet.create({ - container: "luckysheet", // Luckysheet çš„å®¹å™¨å…ƒç´ ID - title: filename, // Excel 文件å - data: json_data, // Excel æ•°æ® - showinfobar: false, //æ˜¯å¦æ˜¾ç¤ºé¡¶éƒ¨åç§°æ - lang:'zh', - }); - - }).catch(() => { - // 处ç†é”™è¯¯é€»è¾‘,这里是一个空的错误处ç†å‡½æ•° - this.$message.error('æš‚åœå¤±è´¥,å‘生未知错误!'); - }); + created() { +//åˆ·æ–°é¡µé¢æ—¶è¿›è¡Œçš„æ“ä½œ + this.getList() }, - /** 导出设置 */ - handleExport(){ - var date =new Date().getTime(); - exportExcel(luckysheet.getAllSheets(), '导出'+date) + mounted() { + this.init() }, - /** å¼¹å‡ºçš„ç¡®è®¤æ¡†å…³é— */ - handleClose(done) { - this.$confirm('确认关é—?') - .then(_ => { - done(); + methods: { + /** 页é¢åˆ·æ–°æ—¶å±•示的数æ®*/ + getList() { + listMyluckyexcel(this.queryParams).then(response => { + this.depss = response.rows }) - .catch(_ => {}); - }, - /** 回车事件和ä¿å˜æäº¤ç»‘定 */ - handleEnter(event) { - if (event.keyCode === 13) { - event.preventDefault(); // 阻æ¢é»˜è®¤çš„回车事件 - // 触å‘确定æ“作 - this.submit_from(); - } - }, - /** ä¿å˜åˆ°æ•°æ®åº“*/ - submit_from() { - const name = this.from_name - if(name!=""){ - let objsheet = luckysheet.getAllSheets() // å¾—åˆ°è¡¨çš„æ•°æ® - //LuckyExcel = objsheet // 将表的数æ®ä¿å˜æœ¬åœ° - let strsheet = JSON.stringify(objsheet)// 对象转化为å—符串 - const data={name :name,jsons:strsheet}; - addMyluckyexcel(data).then(response => { - if(response.code==200){ - this.$message({ - message: 'ä¿å˜æˆåŠŸ', type: 'success' - }); - this.dialogVisible=false; - //this.$router.replace({ path: '/' }); //刷新整个页é¢ä¼šå‡ºé”™ - //window.location.reload();//也是全局刷新,ä¸åˆé€‚ - this.$router.go(-1); - }else{ - this.$message.error('ä¿å˜å¤±è´¥'); - } - }); - }else{ - this.$message.error('è¯·è¾“å…¥è¡¨æ ¼åç§°åŽå†è¿›è¡Œä¿å˜!'); - } - - }, - /* é‡ç½®æŒ‰é’®æ“作 */ - resetQuery() { - luckysheet.destroy() - let options = { - container: 'luckysheet', //luckysheet为容器id - title:'', - lang:'zh', - showinfobar:false, - data:[ - { - "name": "sheet1", //工作表åç§° - "color": "", //工作表颜色 - "index": 0, //工作表索引 - "status": 1, //æ¿€æ´»çŠ¶æ€ - "order": 0, //å·¥ä½œè¡¨çš„ä¸‹æ ‡ - "hide": 0,//是å¦éšè— - "row": 20, //行数 - "column": 15, //列数 - "defaultRowHeight": 19, //自定义行高 - "defaultColWidth": 73, //自定义列宽 - "celldata": [ + }, + /** 下拉选和页é¢luckysheet绑定 */ + handleOptionChange() { + //æ ¹æ®é€‰ä¸çš„下拉选项值获å–ç›¸åº”çš„ä¿¡æ¯ + getMyluckyexcel(this.selectedOption).then(response => { + const sysSupplies = response.data - ], //åˆå§‹åŒ–使用的å•å…ƒæ ¼æ•°æ® - "config": { - "merge": { - }, //åˆå¹¶å•å…ƒæ ¼ - "rowlen":{}, //è¡¨æ ¼è¡Œé«˜ - "columnlen":{}, //è¡¨æ ¼åˆ—å®½ - "rowhidden":{}, //éšè—行 - "colhidden":{}, //éšè—列 - "borderInfo":{ + this.luckysheetData = sysSupplies.jsons - }, //边框 - "authority":{}, //å·¥ä½œè¡¨ä¿æŠ¤ + //将接收到的jsonå˜åˆ°json_dataä¸ + //const json_data = response.data; + let json_data = JSON.parse(sysSupplies.jsons) + exceltemp = json_data; + let filename = sysSupplies.name - }, - }, - /*{ - "name": "Sheet2", - "color": "", - "index": 1, - "status": 0, - "order": 1, - "celldata": [], - "config": {} - }, - { - "name": "Sheet3", - "color": "", - "index": 2, - "status": 0, - "order": 2, - "celldata": [], - "config": {}, - }*/ - ] + luckysheet.create({ + container: 'luckysheet', // Luckysheet çš„å®¹å™¨å…ƒç´ ID + title: filename, // Excel 文件å + data: json_data, // Excel æ•°æ® + showinfobar: false, //æ˜¯å¦æ˜¾ç¤ºé¡¶éƒ¨åç§°æ + lang: 'zh' + }) - } - luckysheet.create(options) - }, - /*// 表å•é‡ç½® - reset() { - this.form = { - id: null, - name: null, - description: null - }; - this.resetForm("form"); - }, - /!** æœç´¢æŒ‰é’®æ“作 *!/ - handleQuery() { - this.queryParams.pageNum = 1; - this.getList(); - }, + }).catch(() => { + // 处ç†é”™è¯¯é€»è¾‘,这里是一个空的错误处ç†å‡½æ•° + this.$message.error('æš‚åœå¤±è´¥,å‘生未知错误!') + }) + }, + /** 导出设置 */ + handleExport() { + var date = new Date().getTime() + exportExcel(luckysheet.getAllSheets(), '导出' + date) + }, + /** å¼¹å‡ºçš„ç¡®è®¤æ¡†å…³é— */ + handleClose(done) { + this.$confirm('确认关é—?') + .then(_ => { + done() + }) + .catch(_ => { + }) + }, + /** 回车事件和ä¿å˜æäº¤ç»‘定 */ + handleEnter(event) { + if (event.keyCode === 13) { + event.preventDefault() // 阻æ¢é»˜è®¤çš„回车事件 + // 触å‘确定æ“作 + this.submit_from() + } + }, + /** ä¿å˜åˆ°æ•°æ®åº“*/ + /*submit_from() { + const name = this.from_name + if(name!=""){ + let objsheet = luckysheet.getAllSheets() // å¾—åˆ°è¡¨çš„æ•°æ® + //LuckyExcel = objsheet // 将表的数æ®ä¿å˜æœ¬åœ° + let strsheet = JSON.stringify(objsheet)// 对象转化为å—符串 + const data={name :name,jsons:strsheet}; + addMyluckyexcel(data).then(response => { + if(response.code==200){ + this.$message({ + message: 'ä¿å˜æˆåŠŸ', type: 'success' + }); + this.dialogVisible=false; + //this.$router.replace({ path: '/' }); //刷新整个页é¢ä¼šå‡ºé”™ + //window.location.reload();//也是全局刷新,ä¸åˆé€‚ + this.$router.go(-1); + }else{ + this.$message.error('ä¿å˜å¤±è´¥'); + } + }); + }else{ + this.$message.error('è¯·è¾“å…¥è¡¨æ ¼åç§°åŽå†è¿›è¡Œä¿å˜!'); + } - // å¤šé€‰æ¡†é€‰ä¸æ•°æ® - handleSelectionChange(selection) { - this.ids = selection.map(item => item.id) - this.single = selection.length!==1 - this.multiple = !selection.length - }, - /!** 导出按钮æ“作 *!/ - handleExport() { - this.download('ruoyi-mymodule/mymodule/export', { - ...this.queryParams - }, `mymodule_${new Date().getTime()}.xlsx`) - },*/ - /** Luckyexcel文档 */ - init() { - let options = { - container: 'luckysheet', //luckysheet为容器id - title:'', - lang:'zh', - showinfobar:false, - data:[ - { - "name": "sheet1", //工作表åç§° - "color": "", //工作表颜色 - "index": 0, //工作表索引 - "status": 1, //æ¿€æ´»çŠ¶æ€ - "order": 0, //å·¥ä½œè¡¨çš„ä¸‹æ ‡ - "hide": 0,//是å¦éšè— - "row": 20, //行数 - "column": 15, //列数 - "defaultRowHeight": 19, //自定义行高 - "defaultColWidth": 73, //自定义列宽 - "celldata": [ + },*/ + /* é‡ç½®æŒ‰é’®æ“作 */ + resetQuery() { + luckysheet.destroy() + let options = { + container: 'luckysheet', //luckysheet为容器id + title: '', + lang: 'zh', + showinfobar: false, + data: [ + { + 'name': 'sheet1', //工作表åç§° + 'color': '', //工作表颜色 + 'index': 0, //工作表索引 + 'status': 1, //æ¿€æ´»çŠ¶æ€ + 'order': 0, //å·¥ä½œè¡¨çš„ä¸‹æ ‡ + 'hide': 0,//是å¦éšè— + 'row': 20, //行数 + 'column': 15, //列数 + 'defaultRowHeight': 19, //自定义行高 + 'defaultColWidth': 73, //自定义列宽 + 'celldata': [], //åˆå§‹åŒ–使用的å•å…ƒæ ¼æ•°æ® + 'config': { + 'merge': {}, //åˆå¹¶å•å…ƒæ ¼ + 'rowlen': {}, //è¡¨æ ¼è¡Œé«˜ + 'columnlen': {}, //è¡¨æ ¼åˆ—å®½ + 'rowhidden': {}, //éšè—行 + 'colhidden': {}, //éšè—列 + 'borderInfo': {}, //边框 + 'authority': {} //å·¥ä½œè¡¨ä¿æŠ¤ + } + } - ], //åˆå§‹åŒ–使用的å•å…ƒæ ¼æ•°æ® - "config": { - "merge": { - }, //åˆå¹¶å•å…ƒæ ¼ - "rowlen":{}, //è¡¨æ ¼è¡Œé«˜ - "columnlen":{}, //è¡¨æ ¼åˆ—å®½ - "rowhidden":{}, //éšè—行 - "colhidden":{}, //éšè—列 - "borderInfo":{ + ] - }, //边框 - "authority":{}, //å·¥ä½œè¡¨ä¿æŠ¤ + } + luckysheet.create(options) + }, - }, - }, - /*{ - "name": "Sheet2", - "color": "", - "index": 1, - "status": 0, - "order": 1, - "celldata": [], - "config": {} - }, - { - "name": "Sheet3", - "color": "", - "index": 2, - "status": 0, - "order": 2, - "celldata": [], - "config": {}, - }*/ - ] + /** Luckyexcel文档 */ + init() { + let options = { + container: 'luckysheet', //luckysheet为容器id + title: '', + lang: 'zh', + showinfobar: false, + data: [ + { + 'name': 'sheet1', //工作表åç§° + 'color': '', //工作表颜色 + 'index': 0, //工作表索引 + 'status': 1, //æ¿€æ´»çŠ¶æ€ + 'order': 0, //å·¥ä½œè¡¨çš„ä¸‹æ ‡ + 'hide': 0,//是å¦éšè— + 'row': 20, //行数 + 'column': 15, //列数 + 'defaultRowHeight': 19, //自定义行高 + 'defaultColWidth': 73, //自定义列宽 + 'celldata': [], //åˆå§‹åŒ–使用的å•å…ƒæ ¼æ•°æ® + 'config': { + 'merge': {}, //åˆå¹¶å•å…ƒæ ¼ + 'rowlen': {}, //è¡¨æ ¼è¡Œé«˜ + 'columnlen': {}, //è¡¨æ ¼åˆ—å®½ + 'rowhidden': {}, //éšè—行 + 'colhidden': {}, //éšè—列 + 'borderInfo': {}, //边框 + 'authority': {} //å·¥ä½œè¡¨ä¿æŠ¤ - } - luckysheet.create(options) + } + } + ] + } + luckysheet.create(options) - }, - Excel(e) { - let that = this - // é”™è¯¯æƒ…å†µåˆ¤æ– - const files = e.target.files - if (files.length <= 0) { - return false; - } else if (!/\.(xls|xlsx)$/.test(files[0].name.toLowerCase())) { - this.$message({ - message: "ä¸Šä¼ æ ¼å¼ä¸æ£ç¡®ï¼Œè¯·ä¸Šä¼ xls或者xlsxæ ¼å¼", - type: "warning" - }); - return false - } else { - that.upload_file = files[0].name - } - // 读å–è¡¨æ ¼ - const fileReader = new FileReader() - fileReader.onload = ev => { - try { - const data = ev.target.result; - const workbook = XLSX.read(data, { - type: "binary" - }) - // 读å–ç¬¬ä¸€å¼ è¡¨ - const wsname = workbook.SheetNames[0] - const ws = XLSX.utils.sheet_to_json(workbook.Sheets[wsname]) - // æ‰“å° ws å°±å¯ä»¥çœ‹åˆ°è¯»å–å‡ºçš„è¡¨æ ¼æ•°æ® - console.log(ws) - // å®šä¹‰ä¸€ä¸ªæ–°æ•°ç»„ï¼Œå˜æ”¾å¤„ç†åŽçš„è¡¨æ ¼æ•°æ® - that.lists = [] - ws.forEach(item => { - that.lists.push({ - // 对ws进行处ç†åŽæ”¾è¿›lists内 - }) + }, + Excel(e) { + let that = this + // é”™è¯¯æƒ…å†µåˆ¤æ– + const files = e.target.files + if (files.length <= 0) { + return false + } else if (!/\.(xls|xlsx)$/.test(files[0].name.toLowerCase())) { + this.$message({ + message: 'ä¸Šä¼ æ ¼å¼ä¸æ£ç¡®ï¼Œè¯·ä¸Šä¼ xls或者xlsxæ ¼å¼', + type: 'warning' }) - // 调用方法将lists数组å‘é€ç»™åŽç«¯ - this.submit_form(that.lists) - } catch (e) { return false + } else { + that.upload_file = files[0].name } - } - fileReader.readAsBinaryString(files[0]) - }, - /** 导入事件*/ - handleFileChange(evt) { - let name = evt.name - let suffixArr = name.split('.'), - suffix = suffixArr[suffixArr.length - 1] - if (suffix != 'xlsx') { - alert('当å‰ä»…支æŒå¯¼å…¥xlsx文件') - return - } - LuckyExcel.transformExcelToLucky( - evt, - function(exportJson, luckysheetfile) { + // 读å–è¡¨æ ¼ + const fileReader = new FileReader() + fileReader.onload = ev => { + try { + const data = ev.target.result + const workbook = XLSX.read(data, { + type: 'binary' + }) + // 读å–ç¬¬ä¸€å¼ è¡¨ + const wsname = workbook.SheetNames[0] + const ws = XLSX.utils.sheet_to_json(workbook.Sheets[wsname]) + // æ‰“å° ws å°±å¯ä»¥çœ‹åˆ°è¯»å–å‡ºçš„è¡¨æ ¼æ•°æ® + console.log(ws) + // å®šä¹‰ä¸€ä¸ªæ–°æ•°ç»„ï¼Œå˜æ”¾å¤„ç†åŽçš„è¡¨æ ¼æ•°æ® + that.lists = [] + ws.forEach(item => { + that.lists.push({ + // 对ws进行处ç†åŽæ”¾è¿›lists内 + }) + }) + // 调用方法将lists数组å‘é€ç»™åŽç«¯ + this.submit_form(that.lists) + } catch (e) { + return false + } + } + fileReader.readAsBinaryString(files[0]) + }, + /** 导入事件*/ + importExcel(evt) { + if(this.selectedOption == "" || this.selectedOption == null){ + alert('请选择模æ¿ï¼ï¼ï¼') + return + } + let name = evt.name + let suffixArr = name.split('.'), + suffix = suffixArr[suffixArr.length - 1] + if (suffix != 'xlsx') { + alert('当å‰ä»…支æŒå¯¼å…¥xlsx文件') + return + } + LuckyExcel.transformExcelToLucky(evt, function(exportJson, luckysheetfile) { + if (exportJson.sheets == null || exportJson.sheets.length == 0) { + alert( + 'æ— æ³•è¯»å–excel文件的内容,目å‰ä¸æ”¯æŒxls文件!' + ) + return + } + //æ ¹æ®è§„则进行excelæ•°æ®è½¬æ¢ + debugger + var s = exceltemp + var sss= exportJson.sheets[0].celldata[0].v.v; + s[0].celldata[0].v.m= sss; + s[0].celldata[0].v.v= sss; + exportJson.sheets=s; + for (var i = 0; i < exceltemp.length; i++) { - if (exportJson.sheets == null || exportJson.sheets.length == 0) { - alert( - 'æ— æ³•è¯»å–excel文件的内容,目å‰ä¸æ”¯æŒxls文件!' - ) - return } - luckysheet.destroy() - - 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 - }) - } - ) - }, - } + luckysheet.destroy() + 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 + }) + } + ) + } + } // é…置项 -}; + } </script>