From 2564a859f6c519a4c101ac16006c2c5f4dc6cd31 Mon Sep 17 00:00:00 2001 From: limengnan <420004014@qq.com> Date: Tue, 1 Jul 2025 10:28:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/api/data-visualization/chart.ts | 30 +++++++- .../src/api/data-visualization/dataset.ts | 72 +++++++++++++++---- .../visualization/dataVisualization.ts | 33 +++++++-- .../visualization/linkJump.ts | 4 +- .../visualization/linkage.ts | 4 +- .../utils/CalculateFields.ts | 36 ++++++++++ 6 files changed, 157 insertions(+), 22 deletions(-) create mode 100644 frontend/src/data-visualization/utils/CalculateFields.ts diff --git a/frontend/src/api/data-visualization/chart.ts b/frontend/src/api/data-visualization/chart.ts index b1bad2d..b536091 100644 --- a/frontend/src/api/data-visualization/chart.ts +++ b/frontend/src/api/data-visualization/chart.ts @@ -1,4 +1,6 @@ import request from '@/data-visualization/config/axios' +import { originNameHandleWithArr, originNameHandleBackWithArr } from '@/data-visualization/utils/CalculateFields' +import { cloneDeep } from 'lodash-es' export interface Field { id: number | string datasourceId: number | string @@ -6,7 +8,7 @@ export interface Field { datasetGroupId: number | string originName: string name: string - dataeaseName: string + gisbiName: string groupType: string type: string deType: number @@ -27,6 +29,7 @@ export interface ComponentInfo { export const getFieldByDQ = async (id, chartId, data): Promise => { return request.post({ url: `/chart/listByDQ/${id}/${chartId}`, data: data }).then(res => { + originNameHandleBackWithArr(res?.data, ['dimensionList', 'quotaList']) return res?.data }) } @@ -52,10 +55,33 @@ export const deleteChartFieldByChartId = async (chartId): Promise => // 通过图表对象获取数据 export const getData = async (data): Promise => { delete data.data - return request.post({ url: '/chartData/getData', data }).then(res => { + const copyData = cloneDeep(data) + const fields = [ + 'xAxis', + 'xAxisExt', + 'yAxis', + 'yAxisExt', + 'extBubble', + 'extLabel', + 'extStack', + 'extTooltip' + ] + const dataFields = ['fields', 'sourceFields'] + originNameHandleWithArr(copyData, fields) + return request.post({ url: '/chartData/getData', data: copyData }).then(res => { if (res.code === 0) { + originNameHandleBackWithArr(res?.data, fields) + // 动态计算字段在数据中,也需要转码 + originNameHandleWithArr(res?.data?.data, dataFields) + originNameHandleBackWithArr(res?.data?.data, dataFields) + originNameHandleBackWithArr(res?.data?.data?.left, ['fields']) + originNameHandleBackWithArr(res?.data?.data?.right, ['fields']) return res?.data } else { + originNameHandleBackWithArr(res, fields) + originNameHandleBackWithArr(res?.data, dataFields) + originNameHandleBackWithArr(res?.data?.left, ['fields']) + originNameHandleBackWithArr(res?.data?.right, ['fields']) return res } }) diff --git a/frontend/src/api/data-visualization/dataset.ts b/frontend/src/api/data-visualization/dataset.ts index e5babfb..db8c87a 100644 --- a/frontend/src/api/data-visualization/dataset.ts +++ b/frontend/src/api/data-visualization/dataset.ts @@ -1,9 +1,17 @@ import request from '@/utils/request' import { type Field } from '@/api/data-visualization/chart' +import { + originNameHandle, + originNameHandleBack, + originNameHandleBackWithArr +} from '@/data-visualization/utils/CalculateFields' + +import { cloneDeep } from 'lodash-es' import { nameTrim } from '@/data-visualization/utils/utils' export interface DatasetOrFolder { name: string action?: string + isCross?: boolean id?: number | string pid?: number | string appId?: number | string @@ -57,6 +65,7 @@ export interface Dataset { id: string pid: string name: string + isCross?: boolean union?: Array<{}> allFields?: Array<{}> } @@ -72,7 +81,12 @@ export interface Table { // edit export const saveDatasetTree = async (data: DatasetOrFolder): Promise => { nameTrim(data) - return request.post({ url: '/datasetTree/save', data }).then(res => { + const copyData = cloneDeep(data) + originNameHandle(copyData.allFields) + return request.post({ url: '/datasetTree/save', data: copyData }).then(res => { + if (res?.data?.allFields?.length) { + originNameHandleBack(res?.data?.allFields) + } return res?.data }) } @@ -80,7 +94,12 @@ export const saveDatasetTree = async (data: DatasetOrFolder): Promise // create export const createDatasetTree = async (data: DatasetOrFolder): Promise => { nameTrim(data) - return request.post({ url: '/datasetTree/create', data }).then(res => { + const copyData = cloneDeep(data) + originNameHandle(copyData.allFields) + return request.post({ url: '/datasetTree/create', data: copyData }).then(res => { + if (res?.data?.allFields?.length) { + originNameHandleBack(res?.data?.allFields) + } return res?.data }) } @@ -135,7 +154,8 @@ export const exportDatasetData = (data = {}) => { url: '/datasetTree/exportDataset', method: 'post', data: data, - loading: true + loading: true, + responseType: 'blob' }) } @@ -177,7 +197,16 @@ export const getTableField = async (data): Promise => { } export const getPreviewData = async (data): Promise => { - return request.post({ url: '/datasetData/previewData', data }).then(res => { + const copyData = cloneDeep(data) + originNameHandle(copyData.allFields) + return request.post({ url: '/datasetData/previewData', data: copyData }).then(res => { + if (res?.data?.allFields?.length) { + originNameHandleBack(res?.data?.allFields) + } + + if (res?.data?.data?.fields?.length) { + originNameHandleBack(res?.data?.data?.fields) + } return res?.data }) } @@ -196,6 +225,9 @@ export const getDatasetTotal = async (id): Promise => { export const getDatasetDetails = async (id): Promise => { return request.post({ url: `/datasetTree/details/${id}`, data: {} }).then(res => { + if (res?.data?.allFields?.length) { + originNameHandleBack(res?.data?.allFields) + } return res?.data }) } @@ -219,6 +251,9 @@ export const getDsDetails = async (data): Promise => { } export const getDsDetailsWithPerm = async (data): Promise => { return request.post({ url: '/datasetTree/detailWithPerm', data }).then(res => { + ;(res?.data || []).forEach(ele => { + originNameHandleBackWithArr(ele, ['dimensionList', 'quotaList']) + }) return res?.data }) } @@ -236,15 +271,22 @@ export const columnPermissionList = (page: number, limit: number, datasetId: num export const rowPermissionTargetObjList = (datasetId: number, type: string) => request.get({ url: '/dataset/rowPermissions/authObjs/' + datasetId + '/' + type }) -export const listFieldByDatasetGroup = (datasetId: number) => - request.post({ url: '/datasetField/listByDatasetGroup/' + datasetId }) +export const listFieldByDatasetGroup = (datasetId: number) => { + return request.post({ url: '/datasetField/listByDatasetGroup/' + datasetId }).then(res => { + originNameHandleBack(res?.data) + return res + }) +} export const multFieldValuesForPermissions = (data = {}) => { return request.post({ url: '/datasetField/multFieldValuesForPermissions', data }) } export const listFieldsWithPermissions = (datasetId: number) => { - return request.get({ url: '/datasetField/listWithPermissions/' + datasetId }) + return request.get({ url: '/datasetField/listWithPermissions/' + datasetId }).then(res => { + originNameHandleBack(res?.data) + return res + }) } export const copilotFields = (datasetId: number) => { @@ -301,11 +343,11 @@ export const getFunction = async (): Promise => { }) } -export const exportTasks = async (type): Promise => { - return request.post({ url: '/exportCenter/exportTasks/' + type, data: {} }).then(res => { - return res - }) -} +export const exportTasksRecords = () => + request.post({ url: `/exportCenter/exportTasks/records`, data: {} }) + +export const exportTasks = (page: number, limit: number, status: string) => + request.post({ url: `/exportCenter/exportTasks/${status}/${page}/${limit}`, data: {} }) export const exportRetry = async (id): Promise => { return request.post({ url: '/exportCenter/retry/' + id, data: {} }).then(res => { @@ -325,6 +367,12 @@ export const exportDelete = async (id): Promise => { }) } +export const generateDownloadUri = async (id): Promise => { + return request.get({ url: '/exportCenter/generateDownloadUri/' + id }).then(res => { + return res?.data + }) +} + export const exportDeleteAll = async (type, data): Promise => { return request.post({ url: '/exportCenter/deleteAll/' + type, data }).then(res => { return res?.data diff --git a/frontend/src/api/data-visualization/visualization/dataVisualization.ts b/frontend/src/api/data-visualization/visualization/dataVisualization.ts index d959063..a51b548 100644 --- a/frontend/src/api/data-visualization/visualization/dataVisualization.ts +++ b/frontend/src/api/data-visualization/visualization/dataVisualization.ts @@ -1,10 +1,14 @@ import request from '@/data-visualization/config/axios' +import { originNameHandleWithArr } from '@/data-visualization/utils/CalculateFields' +import { cloneDeep } from 'lodash-es' export interface ResourceOrFolder { name: string id?: number | string pid?: number | string nodeType: 'folder' | 'leaf' type: string + mobileLayout: boolean + status: boolean } export interface Panel { @@ -20,11 +24,16 @@ export const findCopyResource = async (dvId, busiFlag): Promise => { } export const findById = async ( - dvId:any, - busiFlag:any, + dvId, + busiFlag, attachInfo = { source: 'main', taskId: null } ): Promise => { let busiFlagResult = busiFlag + if (!busiFlagResult) { + await findDvType(dvId).then(res => { + busiFlagResult = res.data + }) + } const data = { id: dvId, busiFlag: busiFlagResult, ...attachInfo } return request.post({ url: '/dataVisualization/findById', data }) } @@ -60,8 +69,24 @@ export const appCanvasNameCheck = async data => export const updateBase = data => request.post({ url: '/dataVisualization/updateBase', data }) -export const updateCanvas = data => - request.post({ url: '/dataVisualization/updateCanvas', data, loading: true }) +export const updateCanvas = data => { + const copyData = cloneDeep(data) + const fields = [ + 'xAxis', + 'xAxisExt', + 'yAxis', + 'yAxisExt', + 'extBubble', + 'extLabel', + 'extStack', + 'extTooltip' + ] + + for (const key in copyData.canvasViewInfo) { + originNameHandleWithArr(copyData.canvasViewInfo[key], fields) + } + return request.post({ url: '/dataVisualization/updateCanvas', data: copyData, loading: true }) +} export const moveResource = data => request.post({ url: '/dataVisualization/move', data }) diff --git a/frontend/src/api/data-visualization/visualization/linkJump.ts b/frontend/src/api/data-visualization/visualization/linkJump.ts index 615401f..97306f0 100644 --- a/frontend/src/api/data-visualization/visualization/linkJump.ts +++ b/frontend/src/api/data-visualization/visualization/linkJump.ts @@ -26,9 +26,9 @@ export function queryTargetVisualizationJumpInfo(requestInfo) { }) } -export function queryVisualizationJumpInfo(dvId) { +export function queryVisualizationJumpInfo(dvId, resourceTable = 'snapshot') { return request.get({ - url: '/linkJump/queryVisualizationJumpInfo/' + dvId, + url: '/linkJump/queryVisualizationJumpInfo/' + dvId + '/' + resourceTable, loading: false }) } diff --git a/frontend/src/api/data-visualization/visualization/linkage.ts b/frontend/src/api/data-visualization/visualization/linkage.ts index 41d50dd..ae8ffd3 100644 --- a/frontend/src/api/data-visualization/visualization/linkage.ts +++ b/frontend/src/api/data-visualization/visualization/linkage.ts @@ -8,8 +8,8 @@ export const getViewLinkageGatherArray = data => export const saveLinkage = data => request.post({ url: '/linkage/saveLinkage', data }) -export const getPanelAllLinkageInfo = dvId => - request.get({ url: '/linkage/getVisualizationAllLinkageInfo/' + dvId }) +export const getPanelAllLinkageInfo = (dvId, resourceTable = 'snapshot') => + request.get({ url: '/linkage/getVisualizationAllLinkageInfo/' + dvId + '/' + resourceTable }) export const updateLinkageActive = data => request.post({ url: '/linkage/updateLinkageActive', data }) diff --git a/frontend/src/data-visualization/utils/CalculateFields.ts b/frontend/src/data-visualization/utils/CalculateFields.ts new file mode 100644 index 0000000..01e0ac6 --- /dev/null +++ b/frontend/src/data-visualization/utils/CalculateFields.ts @@ -0,0 +1,36 @@ +import { Base64 } from 'js-base64' + +const originNameHandle = (arr = []) => { + arr.forEach(ele => { + if (ele.extField === 2) { + ele.originName = Base64.encode(ele.originName) + } + }) +} + +const originNameHandleBack = (arr = []) => { + arr.forEach(ele => { + if (ele.extField === 2) { + ele.originName = Base64.decode(ele.originName) + } + }) +} + +const originNameHandleWithArr = (obj = {}, fields) => { + fields.forEach(ele => { + originNameHandle(obj?.[ele] || []) + }) +} + +const originNameHandleBackWithArr = (obj = {}, fields) => { + fields.forEach(ele => { + originNameHandleBack(obj?.[ele] || []) + }) +} + +export { + originNameHandle, + originNameHandleBack, + originNameHandleWithArr, + originNameHandleBackWithArr +}