|
@@ -1,278 +0,0 @@
|
|
-<!--
|
|
|
|
- * @Author: lide1202@hotmail.com
|
|
|
|
- * @Date: 2021-3-13 11:04:24
|
|
|
|
- * @Last Modified by: lide1202@hotmail.com
|
|
|
|
- * @Last Modified time: 2021-3-13 11:04:24
|
|
|
|
- !-->
|
|
|
|
-<template>
|
|
|
|
- <div class="layout">
|
|
|
|
- <div class="layout-right">
|
|
|
|
- <div class="block">
|
|
|
|
- <div class="download">
|
|
|
|
- <a v-if="reportCode != null"
|
|
|
|
- download="xxx.xlsx">
|
|
|
|
- <el-button type="text"
|
|
|
|
- @click="download('gaea_template_excel')">
|
|
|
|
- <i class="iconfont iconexcel"></i>导出excel
|
|
|
|
- </el-button>
|
|
|
|
- </a>
|
|
|
|
- <a v-if="reportCode != null"
|
|
|
|
- download="xxx.pdf">
|
|
|
|
- <el-button type="text"
|
|
|
|
- @click="download('gaea_template_pdf')">
|
|
|
|
- <i class="iconfont iconpdf"></i>导出pdf
|
|
|
|
- </el-button>
|
|
|
|
- </a>
|
|
|
|
- </div>
|
|
|
|
- <el-form class="">
|
|
|
|
-
|
|
|
|
- <h2>表格查询</h2>
|
|
|
|
- <div v-for="(item, num) in tableData2"
|
|
|
|
- :key="num + 'excel'">
|
|
|
|
- <h4>{{ item.name }}</h4>
|
|
|
|
- <div v-for="(son, y) in item.children"
|
|
|
|
- :key="y + 'excel2'"
|
|
|
|
- class="search_input">
|
|
|
|
- <label>{{ son.name }}:</label>
|
|
|
|
- <el-input v-model="son.value" />
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- <el-button style="width: 100%"
|
|
|
|
- @click="searchPreview">查询</el-button>
|
|
|
|
- </el-form>
|
|
|
|
- <!--<el-pagination :current-page="currentPage4" :page-sizes="[100, 200, 300, 400]" :page-size="100" layout="total, sizes, prev, pager, next, jumper" :total="400" @size-change="handleSizeChange" @current-change="handleCurrentChange" />-->
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- <div class="layout-middle">
|
|
|
|
- <div id="luckysheet"
|
|
|
|
- style="margin:0px;padding:0px;position:absolute;width:100%;height:95vh;left: 0px;top: 30px;bottom:0px;" />
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
-</template>
|
|
|
|
-
|
|
|
|
-<script>
|
|
|
|
-import { preview, exportExcel } from '@/api/GaeaReport'
|
|
|
|
-
|
|
|
|
-export default {
|
|
|
|
- name: 'Login',
|
|
|
|
- components: {},
|
|
|
|
- data () {
|
|
|
|
- return {
|
|
|
|
- options: {},
|
|
|
|
- sheet: {},
|
|
|
|
- reportId: null,
|
|
|
|
- reportCode: null,
|
|
|
|
- reportName: null,
|
|
|
|
- dataSet: null,
|
|
|
|
- tableData2: [],
|
|
|
|
- excelData: {},
|
|
|
|
- params: {
|
|
|
|
- reportCode: '',
|
|
|
|
- setParam: '',
|
|
|
|
- },
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
- mounted () {
|
|
|
|
- this.preview()
|
|
|
|
- },
|
|
|
|
- created () {
|
|
|
|
- this.reportCode = this.$route.query.reportCode
|
|
|
|
- },
|
|
|
|
- methods: {
|
|
|
|
- async searchPreview () {
|
|
|
|
- const arr = this.toObject(this.tableData2)
|
|
|
|
- this.params.setParam = JSON.stringify(arr)
|
|
|
|
- //每次都重新加载需要改成刷新
|
|
|
|
- this.preview()
|
|
|
|
- },
|
|
|
|
- async preview () {
|
|
|
|
- this.excelData = {}
|
|
|
|
- this.params.reportCode = this.reportCode
|
|
|
|
- const { code, data } = await preview(this.params)
|
|
|
|
- if (code != 200) return
|
|
|
|
- this.reportName = JSON.parse(data.jsonStr).name
|
|
|
|
- // 渲染查询表单
|
|
|
|
- this.params.setParam = JSON.parse(data.setParam)
|
|
|
|
- const extendArry = []
|
|
|
|
- const extendObj = this.params.setParam
|
|
|
|
- for (const i in extendObj) {
|
|
|
|
- const children = []
|
|
|
|
- for (const y in extendObj[i]) {
|
|
|
|
- children.push({ name: y, value: extendObj[i][y] })
|
|
|
|
- }
|
|
|
|
- extendArry.push({ name: i, children: children })
|
|
|
|
- }
|
|
|
|
- this.tableData2 = extendArry
|
|
|
|
-
|
|
|
|
- this.excelData = data.jsonStr
|
|
|
|
- this.sheetData = (data == null ? [{}] : JSON.parse(data.jsonStr))
|
|
|
|
- // console.log(this.excelData)
|
|
|
|
- // console.log(this.sheetData)
|
|
|
|
- this.createSheet();
|
|
|
|
- },
|
|
|
|
- async download(val) {
|
|
|
|
- if (val == 'gaea_template_pdf') {
|
|
|
|
- this.$message('暂不支持pdf');
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- const result = {};
|
|
|
|
- result['reportCode'] = this.reportCode
|
|
|
|
- result['setParam'] = JSON.stringify(this.params.setParam)
|
|
|
|
- if (val != '') {
|
|
|
|
- result['exportType'] = val
|
|
|
|
- }
|
|
|
|
- const {code, message} = await exportExcel(result)
|
|
|
|
- if (code != 200) return
|
|
|
|
- this.$message.success(message);
|
|
|
|
- },
|
|
|
|
- // 表单封装json
|
|
|
|
- toObject (val) {
|
|
|
|
- const objfirst = {}
|
|
|
|
- const objSecond = {}
|
|
|
|
- val.forEach((el) => {
|
|
|
|
- el.name ? (objfirst[el.name] = el.children) : ''
|
|
|
|
- })
|
|
|
|
- for (const key in objfirst) {
|
|
|
|
- const newObj = {}
|
|
|
|
- objfirst[key].map((ev) => {
|
|
|
|
- Object.assign(newObj, { [ev.name]: ev.value })
|
|
|
|
- })
|
|
|
|
- objSecond[key] = newObj
|
|
|
|
- }
|
|
|
|
- return objSecond
|
|
|
|
- },
|
|
|
|
- //初始化表格
|
|
|
|
- createSheet(){
|
|
|
|
- const options = {
|
|
|
|
- container: 'luckysheet', // 设定DOM容器的id
|
|
|
|
- title: 'Luckysheet Demo', // 设定表格名称
|
|
|
|
- lang: 'zh', // 设定表格语言
|
|
|
|
- plugins:['chart'],
|
|
|
|
- data:[
|
|
|
|
- {
|
|
|
|
- "name": "report", //工作表名称
|
|
|
|
- "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":{} //数据验证配置
|
|
|
|
- }
|
|
|
|
- ]
|
|
|
|
- };
|
|
|
|
- options.data = this.sheetData;
|
|
|
|
- // console.log(this.sheetData)
|
|
|
|
- $(function () {
|
|
|
|
- luckysheet.create(options);
|
|
|
|
- });
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
-}
|
|
|
|
-</script>
|
|
|
|
-
|
|
|
|
-<style src="../../../../../static/luckysheet/assets/iconfont/iconfont.css" />
|
|
|
|
-<style scoped lang="scss">
|
|
|
|
-.download {
|
|
|
|
- width: 100%;
|
|
|
|
- float: left;
|
|
|
|
- button {
|
|
|
|
- color: #444;
|
|
|
|
- width: 90px;
|
|
|
|
- text-align: left;
|
|
|
|
- .svg-icon {
|
|
|
|
- font-size: 16px;
|
|
|
|
- margin-right: 10px;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-.block {
|
|
|
|
- position: relative;
|
|
|
|
- z-index: 10000;
|
|
|
|
- top: 0;
|
|
|
|
- background: #fff;
|
|
|
|
- width: 100%;
|
|
|
|
- h2 {
|
|
|
|
- font-size: 14px;
|
|
|
|
- line-height: 30px;
|
|
|
|
- }
|
|
|
|
- h4 {
|
|
|
|
- font-size: 12px;
|
|
|
|
- }
|
|
|
|
- .search_input {
|
|
|
|
- font-size: 12px;
|
|
|
|
- margin-bottom: 10px;
|
|
|
|
- label {
|
|
|
|
- line-height: 20px;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-.layout {
|
|
|
|
- display: block;
|
|
|
|
- position: relative;
|
|
|
|
- margin: 0;
|
|
|
|
- padding: 0;
|
|
|
|
-}
|
|
|
|
-.layout-middle {
|
|
|
|
- display: block;
|
|
|
|
- position: absolute;
|
|
|
|
- left: 200px;
|
|
|
|
- right: 0;
|
|
|
|
- width: calc(100% - 200px);
|
|
|
|
- margin: 0;
|
|
|
|
- padding: 0;
|
|
|
|
-
|
|
|
|
- .excel-designer {
|
|
|
|
- display: block;
|
|
|
|
- position: relative;
|
|
|
|
- margin: 0;
|
|
|
|
- padding: 0;
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-.layout-right {
|
|
|
|
- display: block;
|
|
|
|
- position: absolute;
|
|
|
|
- top: 0;
|
|
|
|
- left: 0;
|
|
|
|
- padding: 20px;
|
|
|
|
- width: 200px;
|
|
|
|
- min-height: 99.98vh;
|
|
|
|
- border-left: 1px solid #dcdee2;
|
|
|
|
- border-color: #e8eaec;
|
|
|
|
- background: #fff;
|
|
|
|
- border-radius: 4px;
|
|
|
|
- font-size: 14px;
|
|
|
|
- -webkit-transition: all 0.2s ease-in-out;
|
|
|
|
- transition: all 0.2s ease-in-out;
|
|
|
|
-}
|
|
|
|
-</style>
|
|
|