|
@@ -37,40 +37,236 @@
|
|
|
uni.getEnv(function(res) {
|
|
|
console.log('当前环境:' + JSON.stringify(res));
|
|
|
const id = window.location.search.split('?id=')[1]
|
|
|
-
|
|
|
+ const token = window.localStorage.getItem('C_TOKEN')
|
|
|
$.ajax({
|
|
|
- url: "/reportTable/getReportTableById/" + id,
|
|
|
+ url: "" + id,
|
|
|
type: 'GET',
|
|
|
- beforeSend: function() {
|
|
|
- // getUserIP(function(ip) {
|
|
|
- // console.log("得到的本地IP :" + ip);
|
|
|
- // this.url = "http://" + ip +
|
|
|
- // ":8081/reportTable/getReportTableById/" + this.id
|
|
|
- // });
|
|
|
- this.url = window.location.origin
|
|
|
+ beforeSend: function(xhr) {
|
|
|
+ // this.url =
|
|
|
+ // "http://192.168.0.40:8081/reportTable/getReportTableById?id=" +
|
|
|
+ // id
|
|
|
+ this.url = window.location.origin +
|
|
|
+ '/reportTable/getReportTableById?id=' + id
|
|
|
+ xhr.setRequestHeader("Authorization", "Bearer " +
|
|
|
+ token);
|
|
|
+ xhr.setRequestHeader("token", token);
|
|
|
},
|
|
|
success: function(res) {
|
|
|
+ console.log(res);
|
|
|
+ const data = res.data
|
|
|
if (res.code === 200) {
|
|
|
- const tableData = JSON.parse(res.data.reportTableData)
|
|
|
- const option = tableData.option
|
|
|
- if (option) {
|
|
|
- option.allowEdit = false
|
|
|
- tableData.showtoolbar = false
|
|
|
- tableData.option.enableAddRow = false
|
|
|
- tableData.option.enableAddBackTop = false
|
|
|
- let data = tableData.option.showtoolbarConfig
|
|
|
- for (let item in data) {
|
|
|
- data[item] = false
|
|
|
+ // 报表数据
|
|
|
+ let tableData = JSON.parse(data.reportTableData)
|
|
|
+ let option = tableData.option
|
|
|
+ // 基础数据项值
|
|
|
+ let baseItem = tableData.baseItem
|
|
|
+ // 数据项
|
|
|
+ let reportTableItemList = data.reportTableItemList
|
|
|
+ let reportChartList = data.reportChartList
|
|
|
+ // 报表类型
|
|
|
+ let reportTableType = 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)
|
|
|
}
|
|
|
+ luckysheet.create(option)
|
|
|
+ } else {
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
+ /** 绘制基础数据项布局信息 */
|
|
|
+ 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 drawTableData(tableItemList, type) {
|
|
|
+ if (!tableItemList || tableItemList.length == 0) return
|
|
|
+ // 事件驱动报表
|
|
|
+ if (type == 2 || type == 4) {
|
|
|
+ tableItemList.forEach((tableItem, i) => {
|
|
|
+ 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)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ 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
|
|
|
+ try {
|
|
|
+ luckysheet.setCellValue(xAxis, yAxis, val)
|
|
|
+ } catch (e) {
|
|
|
+ console.warn(e)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
});
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
});
|
|
|
</script>
|
|
|
|