1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003 |
- <!DOCTYPE html>
- <html lang="zh">
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Document</title>
- <link rel='stylesheet' href='../luckysheet/dist/plugins/plugins.css' />
- <link rel='stylesheet' href='../luckysheet/dist/plugins/css/pluginsCss.css' />
- <link rel='stylesheet' href='../luckysheet/dist/css/luckysheet.css' />
- <link rel='stylesheet' href='../luckysheet/dist/assets/iconfont/iconfont.css' />
- <link rel="stylesheet" href="../dist/css/layui.css">
- <style>
- .la-btn {
- position: absolute;
- left: 50%;
- bottom: 35px;
- transform: translate(-50%);
- padding: 0 2%;
- }
- .btn {
- width: 100%;
- }
- .layui-laypage-em {
- background-color: #1e9fff !important;
- }
- .model {
- width: 100%;
- height: 100%;
- background: rgba(0, 0, 0, 0.3);
- position: fixed;
- z-index: 9999;
- }
- .table-box {
- width: 300px;
- height: 300px;
- background: #ffffff;
- margin: auto;
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- padding: 10px;
- overflow-y: auto;
- }
- .head {
- display: flex;
- justify-content: flex-end;
- font-size: 20px;
- font-weight: bold;
- color: #000000;
- }
- .cel {
- cursor: pointer;
- }
- #table {
- width: 100%;
- margin-top: 20px;
- font-size: 18px;
- }
- #table tr {
- width: 100%;
- height: 30px;
- }
- #table td {
- border-bottom: 1px solid #000000;
- border-top: 1px solid #000000;
- padding: 5px;
- }
- .layui-layer-title {
- text-align: center;
- font-size: 16px;
- padding: 0 81px;
- }
- .layui-layer{
- top:70 !important;
- }
- </style>
- </head>
- <body>
- <div id="luckysheet" style="margin:0px;padding:0px;position:absolute;width:100%;height:90%;left: 0px;top: 0px;">
- </div>
- <table id="demo" lay-filter="test"></table>
- <!-- <div class="model" style="display: none;">
- <div class="table-box">
- <div class="head"> -->
- <!-- <div>运行记录</div> -->
- <!-- <div class="cel">×</div>
- </div>
- <table id="table">
- <tr>
- <th>
- 运行内容
- </th>
- </tr>
- </table>
- </div>
- </div> -->
- <div class="la-btn">
- <button id="recordBtn" type="button" class="layui-btn layui-btn-normal layui-btn-sm btn">运行记录</button>
- </div>
- <script src="../jquery.min.js"></script>
- <script src="../dist/layui.js"></script>
- <script src="../luckysheet/dist/luckysheet.umd.js"></script>
- <script src="../luckysheet/dist/plugins/js/plugin.js"></script>
- <script src="./echarts.js"></script>
- <script src="./cqcyCode.js"></script>
- <script src="./canvertChart.js"></script>
- <!-- uni 的 SDK -->
- <script src="./wvIP.js"></script>
- <script src="./plugins/axios.min.js"></script>
- <script type="text/javascript" src="../luckysheet/dist/plugins/js/uni-webview-js0.0.3_index.js"></script>
- <script>
- $(function() {
- document.addEventListener('UniAppJSBridgeReady', function() {
- uni.getEnv(function(res) {
- console.log('当前环境:' + JSON.stringify(res));
- window.sessionName = 'device_report_index'
- sessionStorage.removeItem(window.sessionName)
- const id = window.location.search.split('?id=')[1]
- // const baseUrl = "http://192.168.0.40:8081"
- const baseUrl = window.location.origin
- axios.defaults.baseURL = baseUrl
- axios.get('/reportTable/getReportTableById?id=' + id).then(res => {
- console.log(res, 'res');
- const data = res.data
- if (data.code === 200) {
- // 报表数据
- let tableData = JSON.parse(data.data.reportTableData)
- let option = tableData.option
- // 基础数据项值
- let baseItem = tableData.baseItem
- // 数据项
- let reportTableItemList = data.data.reportTableItemList
- let reportChartList = data.data.reportChartList
- // 报表类型
- let reportTableType = data.data.reportTableType
- let luckysheetOption = {
- container: 'luckysheet', // 设定 DOM 容器的 id
- title: '报表模板', // 设定表格名称
- lang: 'zh', // 设定表格语言
- showinfobar: false, // 是否显示顶部信息栏
- showtoolbar: false, // 是否显示工具栏
- showtoolbarConfig: {
- paintFormat: true, //格式刷
- moreFormats: true, // 单元格格式
- font: true, // 字体
- fontSize: true, // 字号大小
- bold: true, // 粗体 (Ctrl+B)
- italic: true, // 斜体 (Ctrl+I)
- strikethrough: true, // 删除线 (Alt+Shift+5)
- underline: true, // 下划线 (Alt+Shift+6)
- textColor: true, // 文本颜色
- fillColor: true, // 单元格颜色
- border: true, // 边框
- mergeCell: true, // 合并单元格
- horizontalAlignMode: true, // 水平对齐方式
- verticalAlignMode: true, // 垂直对齐方式
- function: true, // 公式
- // image: true
- // chart: true
- },
- showsheetbar: false, // 是否显示底部 sheet 页按钮
- sheetFormulaBar: false, // 是否显示公式
- row: 120, // 是否显示底部 sheet 页按钮
- data: [{
- "name": "统计报表", //工作表名称
- }],
- cellRightClickConfig: { // 自定义配置单元格右击菜单
- copy: true, // 复制
- copyAs: false, // 复制为
- paste: true, // 粘贴
- insertRow: true, // 插入行
- insertColumn: true, // 插入列
- deleteRow: true, // 删除选中行
- deleteColumn: true, // 删除选中列
- deleteCell: false, // 删除单元格
- hideRow: false, // 隐藏选中行和显示选中行
- hideColumn: false, // 隐藏选中列和显示选中列
- rowHeight: true, // 行高
- columnWidth: true, // 列宽
- clear: false, // 清除内容
- matrix: false, // 矩阵操作选区
- sort: false, // 排序选区
- filter: false, // 筛选选区
- chart: true, // 图表生成
- image: false, // 插入图片
- link: false, // 插入链接
- data: false, // 数据验证
- cellFormat: false // 设置单元格格式
- },
- plugins: ['chart']
- }
- if (!option) {
- option = JSON.parse(JSON.stringify(luckysheetOption))
- }
- option.data = tableData.data
- // 设置工作表保护
- option.data[0].config.authority = {
- sheet: 1, // 如果为 1 或 true,则该工作表受到保护;如果为 0 或 false,则该工作表不受保护。
- hintText: '该工作表受到保护,无法操作', // 弹窗提示的文字
- }
- // 关闭右键菜单
- option.cellRightClickConfig.chart = false
- option.cellRightClickConfig.columnWidth = false
- option.cellRightClickConfig.rowHeight = false
- option.cellRightClickConfig.deleteColumn = false
- option.cellRightClickConfig.deleteRow = false
- option.cellRightClickConfig.insertColumn = false
- option.cellRightClickConfig.insertRow = false
- // 关闭工具栏
- option.showtoolbar = false
- option.enableAddRow = false
- option.showtoolbarConfig = {
- bold: false,
- border: false,
- fillColor: false,
- font: false,
- fontSize: false,
- function: false,
- horizontalAlignMode: false,
- italic: false,
- mergeCell: false,
- moreFormats: false,
- paintFormat: false,
- strikethrough: false,
- textColor: false,
- underline: false,
- verticalAlignMode: false
- }
- // 钩子函数
- option.hook = {
- workbookCreateAfter() {
- // 图表操作
- for (let i in reportChartList) {
- insertEChartInfo(reportChartList[i])
- }
- // option.data.forEach((data, i) => {
- // if (data.chart && data.chart.length > 0) {
- // data.chart.forEach((chart, j) => {
- // console.log(chart.chart_id)
- // let dom = document.getElementById(chart.chart_id + '_c')
- // if (dom) dom.style.display = 'none'
- // })
- // }
- // })
- // 绘制基础数据项
- drawBaseInfo(baseItem)
- // 绘制数据值
- drawTableData(reportTableItemList,
- reportTableType, data.data)
- luckysheet.setRangeShow('BH1')
- convertChart(tableData)
- printExcel()
- }
- }
- luckysheet.create(option)
- } else {
- }
- })
- // $.ajax({
- // url: "http://192.168.0.40:8081/reportTable/getReportTableById",
- // type: 'GET',
- // data: {
- // id: id
- // },
- // // beforeSend: function() {
- // // getUserIP(function(ip) {
- // // console.log("得到的本地IP :" + ip);
- // // this.url = "http://" + ip +
- // // ":8081/reportTable/getReportTableById"
- // // });
- // // },
- // success: function(res) {
- // if (res.code === 200) {
- // console.log(res.data, 'res.data');
- // // 报表数据
- // let tableData = JSON.parse(res.data.reportTableData)
- // let option = tableData.option
- // console.log(tableData, 'jsonData')
- // // 基础数据项值
- // let baseItem = tableData.baseItem
- // // 数据项
- // let reportTableItemList = res.data.reportTableItemList
- // let reportChartList = res.data.reportChartList
- // // 报表类型
- // let reportTableType = res.data.reportTableType
- // let luckysheetOption = {
- // container: 'luckysheet', // 设定 DOM 容器的 id
- // title: '报表模板', // 设定表格名称
- // lang: 'zh', // 设定表格语言
- // showinfobar: false, // 是否显示顶部信息栏
- // showtoolbar: false, // 是否显示工具栏
- // showtoolbarConfig: {
- // paintFormat: true, //格式刷
- // moreFormats: true, // 单元格格式
- // font: true, // 字体
- // fontSize: true, // 字号大小
- // bold: true, // 粗体 (Ctrl+B)
- // italic: true, // 斜体 (Ctrl+I)
- // strikethrough: true, // 删除线 (Alt+Shift+5)
- // underline: true, // 下划线 (Alt+Shift+6)
- // textColor: true, // 文本颜色
- // fillColor: true, // 单元格颜色
- // border: true, // 边框
- // mergeCell: true, // 合并单元格
- // horizontalAlignMode: true, // 水平对齐方式
- // verticalAlignMode: true, // 垂直对齐方式
- // function: true, // 公式
- // // image: true
- // // chart: true
- // },
- // showsheetbar: false, // 是否显示底部 sheet 页按钮
- // sheetFormulaBar: false, // 是否显示公式
- // row: 120, // 是否显示底部 sheet 页按钮
- // data: [{
- // "name": "统计报表", //工作表名称
- // }],
- // cellRightClickConfig: { // 自定义配置单元格右击菜单
- // copy: true, // 复制
- // copyAs: false, // 复制为
- // paste: true, // 粘贴
- // insertRow: true, // 插入行
- // insertColumn: true, // 插入列
- // deleteRow: true, // 删除选中行
- // deleteColumn: true, // 删除选中列
- // deleteCell: false, // 删除单元格
- // hideRow: false, // 隐藏选中行和显示选中行
- // hideColumn: false, // 隐藏选中列和显示选中列
- // rowHeight: true, // 行高
- // columnWidth: true, // 列宽
- // clear: false, // 清除内容
- // matrix: false, // 矩阵操作选区
- // sort: false, // 排序选区
- // filter: false, // 筛选选区
- // chart: true, // 图表生成
- // image: false, // 插入图片
- // link: false, // 插入链接
- // data: false, // 数据验证
- // cellFormat: false // 设置单元格格式
- // },
- // plugins: ['chart']
- // }
- // if (!option) {
- // option = JSON.parse(JSON.stringify(luckysheetOption))
- // }
- // option.data = tableData.data
- // // 设置工作表保护
- // option.data[0].config.authority = {
- // sheet: 1, // 如果为 1 或 true,则该工作表受到保护;如果为 0 或 false,则该工作表不受保护。
- // hintText: '该工作表受到保护,无法操作', // 弹窗提示的文字
- // }
- // // 关闭右键菜单
- // option.cellRightClickConfig.chart = false
- // option.cellRightClickConfig.columnWidth = false
- // option.cellRightClickConfig.rowHeight = false
- // option.cellRightClickConfig.deleteColumn = false
- // option.cellRightClickConfig.deleteRow = false
- // option.cellRightClickConfig.insertColumn = false
- // option.cellRightClickConfig.insertRow = false
- // // 关闭工具栏
- // option.showtoolbar = false
- // option.enableAddRow = false
- // option.showtoolbarConfig = {
- // bold: false,
- // border: false,
- // fillColor: false,
- // font: false,
- // fontSize: false,
- // function: false,
- // horizontalAlignMode: false,
- // italic: false,
- // mergeCell: false,
- // moreFormats: false,
- // paintFormat: false,
- // strikethrough: false,
- // textColor: false,
- // underline: false,
- // verticalAlignMode: false
- // }
- // // 钩子函数
- // option.hook = {
- // workbookCreateAfter() {
- // // 图表操作
- // for (let i in reportChartList) {
- // insertEChartInfo(reportChartList[i])
- // }
- // // option.data.forEach((data, i) => {
- // // if (data.chart && data.chart.length > 0) {
- // // data.chart.forEach((chart, j) => {
- // // console.log(chart.chart_id)
- // // let dom = document.getElementById(chart.chart_id + '_c')
- // // if (dom) dom.style.display = 'none'
- // // })
- // // }
- // // })
- // // 绘制基础数据项
- // drawBaseInfo(baseItem)
- // // 绘制数据值
- // drawTableData(reportTableItemList,
- // reportTableType)
- // luckysheet.setRangeShow('BH1')
- // convertChart(tableData)
- // printExcel()
- // }
- // }
- // luckysheet.create(option)
- // } else {
- // layer.msg(res.msg);
- // }
- // }
- // })
- function printExcel() {
- let currentSelected = luckysheet.getRange()
- luckysheet.hideGridLines()
- // 如果当前选中区只是一个单元格,则认为选取无效。
- if (currentSelected[0] != null &&
- (currentSelected[0].row[1] - currentSelected[0].row[0] >= 1 ||
- currentSelected[0].column[1] - currentSelected[0].column[0] >= 1)) {
- // 生成base64图片
- //let imgSrc = luckysheet.getScreenshot();
- setTimeout(() => {
- luckysheet.getScreenshotNew((imgSrc) => {
- console.info('printImg', imgSrc)
- // top.document.write(`<img src='${imgSrc}'/>`)
- luckysheet.showGridLines();
- })
- }, 200)
- } else {
- // 获取打印区域的行列
- let RowColumn = getPrintSheetArea();
- // 因需要打印左边的边框,需重新设置第一列
- //RowColumn.column[0] = 0;
- // 进行选区操作
- luckysheet.setRangeShow(RowColumn);
- const cellData = handelCell(luckysheet.getAllSheets()[0].celldata)
- let {
- minR,
- maxR,
- minC,
- maxC
- } = cellData
- luckysheet.setRangeShow({
- row: [0, maxR],
- column: [0, maxC]
- });
- // let imgSrc = luckysheet.getScreenshot(); // 生成base64图片
- // console.log(imgSrc);
- setTimeout(() => {
- luckysheet.getScreenshotNew((imgSrc) => {
- console.info('printImg', imgSrc)
- // top.document.write(`<img src='${imgSrc}'/>`)
- luckysheet.showGridLines();
- })
- }, 800)
- }
- }
- function handelCell(data) {
- let minR = data[0].r
- let maxR = data[data.length - 1].r
- let minC = data[0].c
- let cData = data.map(item => {
- return item.c
- })
- let maxC = cData.sort(function(a, b) {
- return b - a;
- })[0];
- return {
- minR,
- maxR,
- minC,
- maxC
- }
- }
- // top.window.document.write(imgSrc)
- // $.ajax({
- // url: "localhost:8084?file="+imgSrc,
- // type: 'GET',
- // success: function(res) {
- // }
- // })
- function getPrintSheetArea() {
- const sheetData = luckysheet.getSheetData();
- let objRowColumn = {
- row: [0, 0], //行
- column: [0, 0], //列
- };
- // * item是行、index是行索引、it是一行里的一格、itemIndex是这一格在这一行里的列索引
- sheetData.forEach((item, index) => {
- //行数
- item.forEach((it, itemIndex) => {
- if (it !== null && it.v) {
- // console.log(index, it)
- if (objRowColumn.row[1] < index) {
- objRowColumn.row[1] = index; //row第二位
- }
- if (objRowColumn.column[1] < itemIndex) {
- objRowColumn.column[1] =
- itemIndex; //column第二位
- }
- }
- });
- });
- return objRowColumn;
- }
- /** 绘制表格数据 */
- function drawTableData(tableItemList, type, tableInfo) {
- if (!tableItemList || tableItemList.length == 0) {
- updateLocalExcelContent()
- return
- }
- // 事件驱动报表
- if (type == 2 || type == 4) {
- tableItemList.forEach((tableItem, i) => {
- if (i == 0) {
- let valueTimeList = tableItem.valueTimeList ? tableItem.valueTimeList.split(',') : []
- valueTimeList = withDateFormatLength(valueTimeList)
- let xAxis = tableItem.xaxis
- let yAxis = tableItem.yaxis - 1
- if (valueTimeList.length == 0) {
- luckysheet.setCellValue(xAxis, yAxis, '')
- } else {
- valueTimeList.forEach((v, j) => {
- luckysheet.setCellValue(xAxis + j, yAxis, v)
- })
- }
- }
- let valueList = tableItem.valueList ? tableItem.valueList
- .split(',') : []
- let xAxis = tableItem.xaxis
- let yAxis = tableItem.yaxis
- if (valueList.length == 0) {
- luckysheet.setCellValue(xAxis, yAxis, '')
- } else {
- valueList.forEach((v, j) => {
- luckysheet.setCellValue(xAxis + j, yAxis,
- v)
- })
- }
- })
- updateLocalExcelContent()
- return
- }
- // 设备报表
- if (type == 5 || type == 6) {
- tableItemList.forEach((tableItem, i) => {
- let standby = tableItem.standby ? JSON.parse(tableItem.standby) : {}
- let dataIndex = standby.index != null ? standby.index : -1
- let valueList = tableItem.valueList ? tableItem.valueList.split(',') : []
- let xAxis = tableItem.xaxis
- let yAxis = tableItem.yaxis
- // 序号、时间处理
- if (tableItem.timeItemType == 0) { // 序号、开始时间
- let valueIndexList = tableItem.valueIndexList ? tableItem.valueIndexList.split(',') : []
- deviceReportUpdateData('${index}', valueIndexList, false)
- let valueTimeList = tableItem.valueTimeList ? tableItem.valueTimeList.split(',') : []
- valueTimeList = withDateFormatLength(valueTimeList)
- deviceReportUpdateData('${startTime}', valueTimeList, false)
- }
- if (tableItem.timeItemType == 1) { // 结束时间
- let valueTimeList = tableItem.valueTimeList ? tableItem.valueTimeList.split(',') : []
- valueTimeList = withDateFormatLength(valueTimeList)
- deviceReportUpdateData('${stopTime}', valueTimeList, tableInfo.isGenCountTime == 1)
- }
- if (valueList.length == 0) {
- luckysheet.setCellValue(xAxis, yAxis, '')
- } else {
- valueList.forEach((v, j) => {
- luckysheet.setCellValue(xAxis + j, yAxis, v)
- })
- }
- })
- updateLocalExcelContent()
- return
- }
- // 其余报表信息
- tableItemList.forEach((tableItem, i) => {
- // let standby = tableItem.standby ? JSON.parse(tableItem.standby) :
- // {}
- // let dataIndex = standby.index != null ? standby.index : -1
- let valueList = tableItem.valueList ? tableItem.valueList.split(
- ',') : []
- // let val = (dataIndex == -1 || (dataIndex + 1) > valueList
- // .length) ?
- // cqcyCode['invalidData'] : valueList[dataIndex]
- let xAxis = tableItem.xaxis
- let yAxis = tableItem.yaxis
- if (valueList.length == 0) {
- luckysheet.setCellValue(xAxis, yAxis, '')
- } else {
- valueList.forEach((v, j) => {
- luckysheet.setCellValue(xAxis + j, yAxis, v)
- })
- }
- })
- updateLocalExcelContent()
- }
- /** 设备报表时间特殊处理 */
- function deviceReportUpdateData(field, dataList, hasCalc) {
- let indexPos = sessionStorage.getItem(window.sessionName)
- if (indexPos) {
- let pos = indexPos.split(',')
- if (field == '${index}') {
- let yAxis = parseInt(pos[0])
- let xAxis = parseInt(pos[1])
- dataList.forEach((v, j) => {
- luckysheet.setCellValue(yAxis + j, xAxis, j + 1)
- })
- } else if (field == '${startTime}') {
- let yAxis = parseInt(pos[0])
- let xAxis = parseInt(pos[1]) + 1
- dataList.forEach((v, j) => {
- luckysheet.setCellValue(yAxis + j, xAxis, v)
- })
- } else if (field == '${stopTime}') {
- let yAxis = parseInt(pos[0])
- let xAxis = parseInt(pos[1]) + 2
- dataList.forEach((v, j) => {
- luckysheet.setCellValue(yAxis + j, xAxis, v)
- if (hasCalc) {
- let startDate = luckysheet.getCellValue(yAxis + j, xAxis - 1)
- let minutes = calculateMinutes(startDate, v)
- luckysheet.setCellValue(yAxis + j, xAxis + 1, minutes)
- }
- })
- }
- return
- }
- let option = luckysheet.getAllSheets()[0]
- option.celldata.map(item => {
- if (item.v.v) {
- item.v.v = String(item.v.v).trim()
- // 替换${xxx}内部数据
- if (item.v.v.match(/\${([^}]+)}/g)) {
- if (item.v.v.indexOf(field) > -1) {
- let yAxis = item.r
- let xAxis = item.c
- if (field == '${index}') {
- sessionStorage.setItem(window.sessionName, yAxis + ',' + xAxis)
- dataList.forEach((v, j) => {
- luckysheet.setCellValue(yAxis + j, xAxis, j + 1)
- })
- } else {
- dataList.forEach((v, j) => {
- luckysheet.setCellValue(yAxis + j, xAxis, v)
- if (hasCalc) {
- let startDate = luckysheet.getCellValue(yAxis + j, xAxis - 1)
- let minutes = calculateMinutes(startDate, v)
- luckysheet.setCellValue(yAxis + j, xAxis + 1, minutes)
- }
- })
- }
- }
- }
- }
- })
- }
-
- /** 删除不合理数据值 */
- function updateLocalExcelContent() {
- let option = luckysheet.getAllSheets()[0]
- option.celldata.map(item => {
- if (item.v.v) {
- item.v.v = String(item.v.v).trim()
- // 替换${xxx}内部数据
- if (item.v.v.match(/\${([^}]+)}/g)) {
- luckysheet.setCellValue(item.r, item.c, '')
- }
- }
- })
- }
-
- /** 计算分钟数 */
- function calculateMinutes(time1, time2) {
- // 将时间字符串转换为Date对象
- let date1 = new Date(time1);
- let date2 = new Date(time2);
- // 计算时间差(以毫秒为单位)
- let diffInMilliseconds = Math.abs(date2.getTime() - date1.getTime());
- // 将时间差转换为分钟
- let minutes = Math.floor(diffInMilliseconds / 1000 / 60);
- return minutes;
- }
-
- /** 绘制基础数据项布局信息 */
- function drawBaseInfo(baseData) {
- if (!baseData) return
- let option = luckysheet.getAllSheets()[0]
- option.celldata.map(item => {
- if (item.v.v) {
- item.v.v = String(item.v.v).trim()
- if (item.v.v.match(/\${([^}]+)}/g)) { // 替换${xxx}内部数据
- if (item.v.v.indexOf('${currDate}') > -1) {
- let val = item.v.v
- val = val.replace('${currDate}', baseData.currDate)
- luckysheet.setCellValue(item.r, item.c, val)
- }
- if (item.v.v.indexOf('${currDateTime}') > -1) {
- let val = item.v.v
- val = val.replace('${currDateTime}', baseData
- .currDateTime)
- luckysheet.setCellValue(item.r, item.c, val)
- }
- if (item.v.v.indexOf('${userName}') > -1) {
- let val = item.v.v
- val = val.replace('${userName}', baseData.userName)
- luckysheet.setCellValue(item.r, item.c, val)
- }
- if (item.v.v.indexOf('${winUserName}') > -1) {
- let val = item.v.v
- val = val.replace('${winUserName}', baseData
- .winUserName)
- luckysheet.setCellValue(item.r, item.c, val)
- }
- }
- }
- })
- }
-
- function withDateFormatLength(listDate) {
- if (!listDate || listDate.length == 0) {
- return []
- }
- let arr = []
- listDate.forEach((date) => {
- arr.push(date.substring(0, 19))
- })
- return arr
- }
- /** 向 Excel 插入图表 */
- function insertEChartInfo(chart) {
- let _self = this
- let info = JSON.parse(chart.standby)
- let reportChartItemList = chart.reportChartItemList
- let chartType = chart.chartType
- // 系列
- let series = info.option.series
- for (let i in series) {
- let temp = series[i]
- temp.data = []
- for (let j in reportChartItemList) {
- let _name = reportChartItemList[j].describe ?
- reportChartItemList[j].describe : reportChartItemList[j]
- .itemName
- if (chartType == 'pie') {
- info.option.legend = null
- info.option.tooltip = {
- trigger: 'item',
- formatter: '{b0}<br /> <b>{c0}</b>'
- }
- temp.name = _name
- let names = reportChartItemList[i].valueTimeList ? reportChartItemList[i].valueTimeList.split(',') : [];
- names = withDateFormatLength(names);
- let vals = reportChartItemList[i].valueList ? reportChartItemList[i].valueList.split(',') : [];
- names.forEach((name, j) => {
- temp.data.push({
- 'name': name,
- 'value': vals[j]
- })
- })
- } else {
- let _t = []
- let t = reportChartItemList[i].valueList ?
- reportChartItemList[i].valueList.split(',') : []
- t.forEach((temp) => {
- _t.push(parseFloat(temp))
- })
- temp.data = _t
- }
- }
- }
- if (chartType != 'pie') {
- // x 轴
- let xAxis = info.option.xAxis
- let legend = info.option.legend
- // xAxis.data = []
- legend.data = []
- let axisLabel = {};
- axisLabel.rotate = 20;
- xAxis.axisLabel = axisLabel
- let times = (reportChartItemList[0].valueTimeList) ? reportChartItemList[0].valueTimeList.split(",") : []
- xAxis.data = (reportChartItemList && reportChartItemList.length > 0) ?
- withDateFormatLength(times) : []
- // xAxis.data = xAxis.data.slice(0, 7)
- for (let i in reportChartItemList) {
- let name = reportChartItemList[i].describe ? reportChartItemList[i].describe : reportChartItemList[i].itemName
- // xAxis.data.push(name)
- legend.data.push(name)
- }
- }
- setTimeout(() => {
- const sheet = luckysheet.getLuckysheetfile()[0]
- let optionData = sheet.data
- try {
- let flag = false
- insertLuckysheetEChart({
- selector: '#luckysheet',
- info,
- sheet,
- optionData,
- echarts,
- luckysheet,
- $,
- _self,
- flag
- })
- } catch (e) {
- console.log(999, e == 'echarts is not defined')
- console.error(e)
- }
- }, 200)
- }
- $('#recordBtn').on('click', () => {
- $('.model').show()
- const token = window.localStorage.getItem('C_TOKEN')
- // $.ajax({
- // type: 'GET',
- // beforeSend: function(xhr) {
- // this.url =
- // `http://192.168.0.40:8081/reportTable/getAutoChReportTable?page=1&limit=10&autoTableId=${id}`
- // xhr.setRequestHeader("Authorization", "Bearer " +
- // token);
- // xhr.setRequestHeader("token", token);
- // },
- // success: function(res) {
- // if (res.code === 200) {
- // $.each(res.data.reportTableList, function(k,
- // v) {
- // // $("#table tbody").append(
- // // `<tr >
- // // <td data-id='${v.id}' data-title='${v.reportTableName}'>
- // // ${v.reportTableName}
- // // </td>`
- // // )
- // })
- // }
- // }
- // })
- // var tableReload = table.render({
- // elem: '#demo',
- // width: 300,
- // page: {
- // elem: '#demo',
- // layout: ['prev', 'page', 'next',
- // 'count'
- // ]
- // },
- // url: `http://192.168.0.40:8081/reportTable/getAutoChReportTable?page=1&limit=10&autoTableId=${id}`,
- // where: {
- // autoTableId: id
- // },
- // text: {
- // none: '暂无数据' //默认:无数据。
- // },
- // cols: [
- // [{
- // field: 'reportTableName',
- // title: null,
- // width: 300
- // }]
- // ],
- // parseData: function(res) {
- // return {
- // "code": 0,
- // "msg": res.msg,
- // "count": res.data.count,
- // "data": res.data
- // .reportTableList
- // };
- // }
- // })
- layui.use('table', function() {
- var table = layui.table;
- var layer = layui.layer;
- layer.open({
- type: 1,
- title: '运行记录',
- content: $('#demo'),
- offset: ['30px', '45px'],
- end: function() {
- $('#demo').hide();
- $('.layui-table-view').hide()
- },
- cancel: function(index, layero) {
- $('.layui-layer-content')
- .hide()
- }
- });
- var tableReload = table.render({
- elem: '#demo',
- width: 300,
- page: {
- elem: '#demo',
- layout: ['prev', 'page', 'next',
- 'count'
- ]
- },
- url: `${baseUrl}/reportTable/getAutoChReportTable`,
- headers: {
- token: token
- },
- where: {
- autoTableId: id
- },
- text: {
- none: '暂无数据' //默认:无数据。
- },
- cols: [
- [{
- field: 'reportTableName',
- title: null,
- width: 300
- }]
- ],
- parseData: function(res) {
- return {
- "code": 0,
- "msg": res.msg,
- "count": res.data.count,
- "data": res.data
- .reportTableList
- };
- }
- });
- //触发行单击事件
- table.on('row(test)', function(obj) {
- const id = obj.data.id
- const title = obj.data
- .reportTableName
- uni.navigateTo({
- url: `/pages/reportForm/report-detail/recordDetail?id=${id}&title=${title}`
- })
- });
- $('th').hide()
- });
- })
- // $("#table tbody").on('click', 'tr', (e) => {
- // if (e.target.nodeName.toLowerCase() === 'td') {
- // const id = e.target.getAttribute('data-id')
- // const title = e.target.getAttribute('data-title')
- // uni.navigateTo({
- // url: `/pages/reportForm/report-detail/recordDetail?id=${id}&title=${title}`
- // })
- // }
- // })
- // $('.cel').on('click', () => {
- // $('.model').hide()
- // })
- });
- });
- })
- </script>
- </body>
- </html>
|