修改报表生成

master
夜笙歌 4 months ago
parent 75d2e73cde
commit 83e708d36a

@ -174,10 +174,10 @@ service.interceptors.response.use(
}
return Promise.reject('无效的会话,或者会话已过期,请重新登录。');
} else if (code === HttpStatus.SERVER_ERROR) {
ElMessage({ message: msg, type: 'error' });
// ElMessage({ message: msg, type: 'error' });
return Promise.reject(new Error(msg));
} else if (code === HttpStatus.WARN) {
ElMessage({ message: msg, type: 'warning' });
// ElMessage({ message: msg, type: 'warning' });
return Promise.reject(new Error(msg));
} else if (code !== HttpStatus.SUCCESS) {
ElNotification.error({ title: msg });

@ -35,3 +35,10 @@ export const querySql = (data, db) => {
url: '/system/databaseLink/querySql/' + db, method: 'post', data, headers: { bodyType: 'raw' }
});
};
// 测试sql连接
export const querySql1 = (data, db) => {
return request({
url: '/system/databaseLink/queryPageSql', method: 'post', data
});
};

@ -170,6 +170,9 @@
/>
</el-select>
</el-form-item>
<el-form-item label="是否分页" prop="dataSourceName">
<el-switch v-model="addSQLForm.isPage" />
</el-form-item>
<el-form-item label="SQL" prop="SQL">
<el-input
v-model="addSQLForm.SQL"
@ -254,7 +257,14 @@
import axios from 'axios';
import request from '@/utils/request';
import { options } from './tool.js';
import { addDataSourceApi, delDataSourceApi, editDataSourceApi, getDataSourceList, querySql } from './api/dataSource';
import {
addDataSourceApi,
delDataSourceApi,
editDataSourceApi,
getDataSourceList,
querySql,
querySql1
} from './api/dataSource';
import { ElMessage, ElMessageBox } from 'element-plus';
import { getDatabaseLink, getFieldList, listDatabaseLink } from '@/views/boardGenerate/api/db';
@ -364,7 +374,8 @@ const createSQL = () => {
requestUrl: 'system/databaseLink/querySql',
requestMethod: 'querySql',
fieldOne: addSQLForm.value.db,
fieldTwo: addSQLForm.value.SQL
fieldTwo: addSQLForm.value.SQL,
fieldThree: addSQLForm.value.isPage
};
if (addSQLForm.value.dataSourceId) {
@ -412,7 +423,8 @@ const editDataSource = (e) => {
addSQLForm.value = {
...e,
db: parseFloat(e.fieldOne),
SQL: e.fieldTwo
SQL: e.fieldTwo,
isPage: e.fieldThree === 'true'
};
getDbList();
@ -543,51 +555,73 @@ const findTier = () => {
};
const sqlFindTier = () => {
addSQLForm.value.designDataFieldList = [];
querySql(addSQLForm.value.SQL, addSQLForm.value.db).then((res) => {
let data = res;
if (data?.data) {
Object.keys(data.data?.[0]).forEach(key => {
if (addSQLForm.value.isPage) {
querySql1({ sql: addSQLForm.value.SQL, linkId: addSQLForm.value.db, pageSize: 10, pageNum: 1 }).then((res) => {
let data = res.data || {};
Object.keys(data.rows?.[0]).forEach(key => {
addSQLForm.value.designDataFieldList.push({
fieldOne: key,
remark: comparisonTable[key],
fieldTwo: `data,map%${key}`
fieldTwo: `data,rows,map%${key}`
});
});
addSQLForm.value.designDataFieldList.push({
fieldOne: 'data',
remark: '',
fieldTwo: `data`
});
} else if (data?.rows) {
console.log(data?.rows);
Object.keys(data.rows?.[0]).forEach(key => {
addSQLForm.value.designDataFieldList.push({
fieldOne: key,
remark: comparisonTable[key],
fieldTwo: `rows,map%${key}`
});
fieldTwo: `data,rows`
});
addSQLForm.value.designDataFieldList.push({
fieldOne: 'rows',
fieldOne: 'total',
remark: '',
fieldTwo: `rows`
fieldTwo: `data,total`
});
} else {
let exclude = ['code'];
Object.keys(data).forEach(key => {
if (!exclude.includes(key.toLowerCase())) {
if (typeof data[key] === 'string' || typeof data[key] === 'string') {
addSQLForm.value.designDataFieldList.push({
fieldOne: key,
remark: comparisonTable[key],
fieldTwo: `${key}`
});
});
} else {
querySql(addSQLForm.value.SQL, addSQLForm.value.db).then((res) => {
let data = res;
if (data?.data) {
Object.keys(data.data?.[0]).forEach(key => {
addSQLForm.value.designDataFieldList.push({
fieldOne: key,
remark: comparisonTable[key],
fieldTwo: `data,map%${key}`
});
});
addSQLForm.value.designDataFieldList.push({
fieldOne: 'data',
remark: '',
fieldTwo: `data`
});
} else if (data?.rows) {
Object.keys(data.rows?.[0]).forEach(key => {
addSQLForm.value.designDataFieldList.push({
fieldOne: key,
remark: comparisonTable[key],
fieldTwo: `rows,map%${key}`
});
});
addSQLForm.value.designDataFieldList.push({
fieldOne: 'rows',
remark: '',
fieldTwo: `rows`
});
} else {
let exclude = ['code'];
Object.keys(data).forEach(key => {
if (!exclude.includes(key.toLowerCase())) {
if (typeof data[key] === 'string' || typeof data[key] === 'string') {
addSQLForm.value.designDataFieldList.push({
fieldOne: key,
remark: comparisonTable[key],
fieldTwo: `${key}`
});
}
}
}
});
}
});
});
}
});
}
};
onMounted(async () => {

@ -1623,7 +1623,8 @@ onMounted(async () => {
outputData: e.designDataFieldList,
type: e.responseType,
db: e.fieldOne,
SQL: e.fieldTwo
SQL: e.fieldTwo,
isPage: e.fieldThree === 'true'
};
});
})

@ -25,7 +25,7 @@ import { Handle, Position } from '@vue-flow/core';
import request from '@/utils/request';
import axios from 'axios';
import { options } from '../../tool.js';
import { querySql } from '@/views/boardGenerate/api/dataSource.js';
import { querySql, querySql1 } from '@/views/boardGenerate/api/dataSource.js';
const isErr = ref(false);
const props = defineProps({
@ -129,9 +129,42 @@ const getOutputData = () => {
});
}
if (props.data.customData.type === '2') {
if (props.data.customData.isPage) {
querySql1({
sql: formulaFun(props.data.customData.SQL),
linkId: props.data.customData.db,
pageSize: props.inputData.pageSize,
pageNum: props.inputData.pageNum
}).then((res) => {
isErr.value = false;
let data = res;
let output = {};
console.log(output);
console.log(props.data.customData.outputData);
props.data.customData.outputData.forEach(item => {
output[item.fieldOne] = parseData(data, item.fieldTwo);
});
props.data.outputData = output;
console.log(output);
}).catch(e => {
isErr.value = true;
});
} else {
querySql(formulaFun(props.data.customData.SQL), props.data.customData.db).then((res) => {
isErr.value = false;
let data = res;
let output = {};
props.data.customData.outputData.forEach(item => {
output[item.fieldOne] = parseData(data, item.fieldTwo);
});
props.data.outputData = output;
}).catch(e => {
isErr.value = true;
});
}
querySql(formulaFun(props.data.customData.SQL), props.data.customData.db).then((res) => {
console.log(res);
isErr.value = false;
let data = res;
let output = {};

@ -1,5 +1,6 @@
<template>
<div class="content"
ref="contentRef"
:style='`width:${area?.width || "100%"};height:${area?.height || "100%"};background-image:url(${area?.bg})`'>
<div v-for="(i,k) in nodes" class="node"
:style="{zIndex:k,left: (i.position?.x / (parseFloat(area?.width)|| 1920))*100 +'%',top: (i.position?.y / (parseFloat(area?.height) || 1080))*100 +'%'}">
@ -181,6 +182,8 @@ import { getBoardApi } from '@/views/boardGenerate/api/boardList';
const router = useRouter();
const contentRef = ref();
const nodes = ref([]);
const edges = ref([]);
const area = ref({});
@ -259,13 +262,15 @@ onMounted(async () => {
};
}) || [];
area.value = JSON.parse(data.customContent) || {};
console.log('area.value', area.value);
if (!area.value.width) {
const screenWidth = window.screen.width;
ratioWidth.value = screenWidth / 1920;
const { offsetWidth } = contentRef.value;
console.log('offsetWidth', offsetWidth);
ratioWidth.value = offsetWidth / 1920;
}
if (!area.value.height) {
const screenHeight = window.screen.height;
ratioHeight.value = screenHeight / 1080;
const { offsetHeight } = contentRef.value;
ratioHeight.value = offsetHeight / 1080;
}
});
});

Loading…
Cancel
Save