yh-report 1.2.21 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/StatementDesign-fa7f4a9e.mjs +27564 -0
- package/StatementDesign-fa7f4a9e.mjs.map +1 -0
- package/{StatementDetail-8066afdc.mjs → StatementDetail-b9ae83e7.mjs} +10 -9
- package/StatementDetail-b9ae83e7.mjs.map +1 -0
- package/{StatementList-80f0ada2.mjs → StatementList-d3110f6d.mjs} +79 -84
- package/StatementList-d3110f6d.mjs.map +1 -0
- package/index.es.js +43 -8
- package/index.es.js.map +1 -1
- package/package.json +4 -5
- package/report-run.vue_vue_type_style_index_0_lang-edf7216b.mjs +2281 -0
- package/report-run.vue_vue_type_style_index_0_lang-edf7216b.mjs.map +1 -0
- package/style.css +1 -1
- package/util-53adc03c.mjs +962 -0
- package/util-53adc03c.mjs.map +1 -0
- package/StatementDesign-cb9675c6.mjs +0 -38621
- package/StatementDesign-cb9675c6.mjs.map +0 -1
- package/StatementDetail-8066afdc.mjs.map +0 -1
- package/StatementList-80f0ada2.mjs.map +0 -1
- package/index-02d04dcb.mjs +0 -60611
- package/index-02d04dcb.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util-53adc03c.mjs","sources":["../types.ts","../libs/validateAndCompleteOptions.ts","../libs/chartReportDefaultOption.ts","../api/form.ts","../libs/util.ts"],"sourcesContent":["/** 数据源筛选 */\nexport interface DataParam {\n /** 数据源Key值,筛选时匹配数据源用(多数据源场景) */\n key: string;\n columnName: string;\n name: string;\n defaultValue: any;\n dataType: DataSourceColumnDataType;\n selectorId?: string;\n type: string; // 'LIKE' | 'IN' | 'GT' | 'GT_EQ' | 'EQ' | 'LT' | 'LT_EQ' | 'LT_GT_EQ';\n isNull: boolean;\n isShow: boolean;\n}\n\n/** 数据源字段 */\nexport interface DataColumns {\n columnName: string;\n name: string;\n dataType: string;\n selectorId: string;\n description: string;\n}\n\nexport interface StatementData {\n source: {\n /** 数据键,数据源的id从sourceData 取数据用 */\n key?: string;\n /** 数据请求地址,获取筛选后的数据 */\n url?: string;\n /** 数据源名称 */\n name?: string;\n /** 数据源字段 */\n columns: DataColumns[];\n }[];\n /** 是否对数据源进行分页 */\n pagination?: boolean;\n /** 分页条数 */\n pageSize?: number;\n /** 分页下拉数据 */\n pageSizes?: string;\n /** 数据使用前的处理函数的函数体 */\n processData?: '';\n /** 静态数据 */\n staticData?: any[];\n}\n\nexport enum CellType {\n /** 行 */\n ROW = 'row',\n /** 列 */\n COL = 'col',\n /** 单元格 */\n CELL = 'cell',\n /** 表头 */\n HEAD = 'head',\n /** 文本 */\n TEXT = 'text',\n /** 图标 */\n ICON = 'icon',\n /** 函数 */\n FUN = 'fun',\n /** 图片 */\n IMAGE = 'img',\n /** 字段 */\n FIELD = 'field',\n}\n\nexport enum FormatType {\n /** 文本 */\n TEXT = 'text',\n /** 数值 */\n NUMBER = 'number',\n /** 货币 */\n CURRENCY = 'currency',\n /** 百分比 */\n PERCENT = 'percent',\n /** 千分比 */\n PROMILLE = 'promille',\n /** 科学计数 */\n SCIENTIFIC = 'scientific',\n /** 日期 */\n DATETIME = 'datetime',\n /** 字符串模板 */\n STRING = 'string',\n}\n\nexport interface CellStyle {\n /** 背景色 */\n backgroundColor?: string;\n /** 字体颜色 */\n color?: string;\n /** 文本对齐方式 */\n textAlign?: string;\n /** 文本垂直对齐方式 */\n verticalAlign?: string;\n /** 字体粗细 */\n fontWeight?: 'normal' | 'bold';\n /** 字体大小 */\n fontSize?: number;\n /** 字体 */\n fontFamily?: string;\n}\n\nexport interface Cell {\n /** 单元格类型 */\n type?: CellType;\n /** 格式化方式 */\n format?: FormatType;\n /** 格式化格式 */\n formatType?: any;\n /** 列跨度 */\n colSpan?: number;\n /** 行跨度 */\n rowSpan?: number;\n /** 合并目标 */\n mergeTarget?: [number, number];\n /** 列索引 */\n col?: number;\n /** 行索引 */\n row?: number;\n /** 单元格内容 */\n text?: string;\n /** 自定义字符串渲染 */\n fun?: string;\n /** 自定义渲染函数 */\n customRender?: string;\n /** 单元格数据 */\n data?: any;\n /** 渲染时:列数据 */\n colData?: any;\n /** 渲染时:行数据 */\n rowData?: any;\n /** 是否分组 */\n isGroup?: boolean;\n /** 行列组合数据 */\n isRowColCombine?: boolean;\n /** 行列组合交叉单元格设计列渲染键名 */\n combineKeys?: string[];\n /** 行列组合交叉单元格设计列渲染值 */\n combineValues?: any[];\n /** 单元格样式 */\n style?: CellStyle;\n}\n\nexport interface GroupHeap extends Cell {\n children?: GroupHeap[];\n}\n\nexport interface Head {\n /** 行高度/列宽度 */\n size: number;\n /** 是否悬浮 */\n isFixed?: boolean | 'left' | 'right';\n /** 数据源键值 (StatementData.srouce.key 字段) */\n data?: string;\n /** 数据下标 */\n dataIndex?: number;\n /** 是否循环数据源 */\n loop?: boolean;\n /** 排序标志 */\n index?: number;\n}\n\n/** 图表数据配置接口 */\nexport interface ChartOption {\n data: {\n source: {\n /** 数据键,数据源的id从sourceData 取数据用 */\n key?: string;\n /** 数据请求地址,获取筛选后的数据 */\n url?: string;\n /** 数据源名称 */\n name?: string;\n /** 数据源字段 */\n columns: DataColumns[];\n }[];\n };\n /** X 轴数据处理函数 */\n xAisData: string;\n /** Y 轴数据处理函数 */\n yAisData: string;\n /** 数据处理函数 */\n seriesData: string;\n /** 图表名 */\n name: string;\n /** 图表图标 */\n icon: string;\n /** 图表类型 */\n type: string;\n /** id */\n id: string;\n /** fixed固定定位后,距离视口左侧的距离 */\n left: number;\n /** fixed固定定位后,距离视口顶部的距离 */\n top: number;\n /** 平滑 */\n smooth: boolean;\n /** 显示点 */\n symbol: string;\n /** 显示标签 */\n showLabel: boolean;\n /** 面积图 */\n areaStyle: string;\n /** 标签颜色 */\n labelColor: string;\n /** 标签位置 */\n labelPosition: string;\n /** 环形图 */\n radius: boolean;\n /** 宽度单位 */\n widthUnit: 'px' | '%';\n /** 宽 */\n width: Number;\n /** 高度单位 */\n heightUnit: 'px' | '%';\n /** 高 */\n height: Number;\n /** 悬浮 */\n isSuspend: boolean;\n /** 数据是否分组 */\n groupBy: boolean;\n /** 数据是否排序 */\n orderBy: 'ASC' | 'DESC' | 'NONE';\n /** 数据处理中截取数据长度 */\n cutLength: number;\n /** 垂直轴 层级 */\n zIndex: number;\n /** 图表配置 */\n option: any;\n}\n/** 数据表配置 */\nexport interface StatementOption {\n id: string;\n /** 报表类型 */\n type: string;\n /** 单元格配置 */\n config: Cell[][];\n /** 行配置 */\n rowConfig: Head[];\n /** 列配置 */\n colConfig: Head[];\n /** 宽度类型 */\n widthType: 'px' | '%';\n /** 报表宽度 */\n width: number;\n /** 是否占据内容高度,单报表适用 */\n fullHeight: boolean;\n /** 报表高度 */\n height: number;\n /** 是否展示数据 */\n seriesEnable: boolean;\n /** 数据列头 */\n seriesHeadText: string;\n /** 冻结行列数 */\n frozen: {\n rowCount: 0;\n colCount: 0;\n trailingColCount: 0;\n trailingRowCount: 0;\n };\n /** 报表筛选条件 */\n params: DataParam[];\n /** 报表主题设置 */\n theme: 'blue' | 'green' | 'gray' | 'dark' | 'red';\n /** 报表数据设置 */\n data: StatementData;\n}\n\n/** 报表/图表配置 */\nexport type Options = StatementOption & ChartOption;\n\n/** 数据表类型 */\nexport enum StatementType {\n /** 数据报表 */\n DATA = 1,\n}\n\n/** 数据表存储数据对象 */\nexport interface Statement {\n id?: string;\n name: string;\n code: string;\n description: string;\n options: Options[];\n}\n\n/** 数据源访问级别 */\nexport enum DataSourceAccessLevel {\n /** 组织机构 */\n ORG,\n /** 用户 */\n USER,\n /** 用户或部门领导 */\n USER_OR_LEADER,\n /** 租户 */\n CLIENT,\n /** 所有 */\n ALL,\n /** 仅系统 */\n SYSTEM,\n}\n\n/** 布尔值字符串字面量 */\nexport enum BooleanStr {\n /** false 不是 */\n N,\n /** true 是 */\n Y,\n}\n\n/** 数据源接口 */\nexport interface DataSource {\n /** 所属模块 */\n SYS_MODULE_ID: string;\n /** 所属模块名称 */\n _SYS_MODULE_ID_NAME: string;\n /** 数据源ID */\n SYS_DATASOURCE_ID: string;\n /** 数据源名称 */\n NAME: string;\n /** 数据源描述 */\n DESCRIPTION: string;\n /** 数据源关联表名 */\n TABLE_NAME: string;\n /** 访问地址 */\n URL: string;\n /** 是否树型结构 */\n IS_TREE: BooleanStr;\n /** 访问级别 */\n ACCESS_LEVEL: DataSourceAccessLevel;\n}\n\n/** 数据源字段数据类型 */\nexport enum DataSourceColumnDataType {\n /** 字符 */\n STRING,\n /** 正整数 */\n PLONG,\n /** 整数 */\n LONG,\n /** 浮点 */\n DOUBLE,\n /** 文本 */\n TEXT,\n /** 是否 */\n BOOL,\n /** 日期 */\n DATE,\n /** 时间 */\n TIME,\n /** 日期时间 */\n DATETIME,\n /** 密码 */\n PASSWORD,\n /** ID */\n ID,\n /** 列表 */\n LIST,\n /** 表 */\n TABLE,\n /** 下拉树 */\n TREE,\n /** 图片 */\n IMG,\n /** 弹窗 */\n OPEN,\n /** 子查询 */\n SQL,\n /** 颜色 */\n COLOR,\n /** 代码编辑器 */\n EDITOR,\n}\n\n/** 数据源字段 */\nexport interface DataSourceColumn {\n /** 字段键 */\n COLUMN_NAME: string;\n /** 字段名 */\n NAME: string;\n /** 数据类型 */\n DATA_TYPE: DataSourceColumnDataType;\n /** 小数位数 */\n C_FIXED: 0;\n /** 数据长度 */\n C_LENGTH: 32;\n /** 描述 */\n DESCRIPTION: null;\n /** 数据源列ID */\n SYS_DATASOURCE_COLUMN_ID: '7FF63853240B4A349C05F0856E9C5458';\n /** 数据源ID */\n SYS_DATASOURCE_ID: '096551D3229341418188B46918297A8B';\n /** 下拉数据ID */\n SYS_SELECTOR_ID: null;\n}\n\n/** 图表数据 */\nexport interface TypeItem {\n /** 图表名 */\n name: string;\n /** 图表图标 */\n icon: string;\n /** 图表类型 */\n type: string;\n}\n","import {defaultReport} from './chartReportDefaultOption';\nimport {Statement, StatementOption, CellType, FormatType, Cell, Head} from '../types';\n\nconst defaultCell: Cell = {\n type: CellType.TEXT,\n format: FormatType.TEXT,\n formatType: {\n date: '',\n numberDecimal: '',\n numberUseGrouping: '',\n currencySymbol: '',\n scientificNotation: '',\n },\n style: {},\n colSpan: 1,\n rowSpan: 1,\n col: 1,\n row: 1,\n text: '',\n data: undefined,\n};\n\nconst defaultRow: Head = {\n size: 25,\n data: undefined,\n loop: false,\n index: 0,\n};\n\nconst defaultCol: Head = {\n size: 80,\n data: undefined,\n loop: false,\n index: 0,\n};\n\nlet isComplete = false;\nfunction validateAndCompleteOptions(statement: Partial<Statement>): {isComplete: boolean; data: Statement} {\n /** 是否有补全 */\n isComplete = false;\n const completedStatement: Statement = {\n ...statement,\n // @ts-ignore\n options:\n statement.options?.map((option) => {\n if (option.type === 'report') {\n return validateAndCompleteStatementOption(option as Partial<StatementOption>);\n } else {\n return option;\n }\n }) || [],\n };\n\n return {\n isComplete,\n data: completedStatement,\n };\n}\n\nexport function validateAndCompleteStatementOption(option: Partial<StatementOption>): StatementOption {\n if (Object.keys(defaultReport).length !== Object.keys(option).length) {\n isComplete = true;\n }\n const completedOption: StatementOption = {\n ...defaultReport,\n ...option,\n id: `report-${Date.now()}`\n };\n\n // 处理 rowConfig 和 colConfig 的默认值\n if (completedOption.rowConfig.length === 0) {\n isComplete = true;\n completedOption.rowConfig = Array.from({length: 5}, (_, index) => ({\n size: 25,\n data: undefined,\n loop: false,\n index,\n }));\n }\n\n if (completedOption.colConfig.length === 0) {\n isComplete = true;\n completedOption.colConfig = Array.from({length: 10}, (_, index) => ({\n ...defaultCol,\n }));\n }\n\n // 确保 config 的长度与 rowConfig 和 colConfig 匹配\n const rowLength = completedOption.rowConfig.length;\n const colLength = completedOption.colConfig.length;\n isComplete = completedOption.config.length !== rowLength;\n completedOption.config = completedOption.config\n .map((row, rowIndex) => {\n isComplete = row.length !== colLength;\n return row\n .slice(0, colLength)\n .map((item, colIndex) => {\n isComplete = Object.keys(item).length !== Object.keys(defaultCell).length;\n return {\n ...defaultCell,\n ...item,\n row: rowIndex,\n col: colIndex,\n };\n })\n .concat(\n Array.from({length: colLength - row.length}, (_, index) => ({\n ...defaultCell,\n row: rowIndex,\n col: row.length + index, // 填充列时,列索引从当前行已有列数开始\n }))\n );\n })\n .concat(\n Array.from({length: rowLength - completedOption.config.length}, (_, rowIndexOffset) => {\n const newRow = completedOption.config.length + rowIndexOffset; // 新增行的行索引\n return Array(colLength)\n .fill(0)\n .map((_, colIndex) => ({\n ...defaultCell,\n row: newRow,\n col: colIndex,\n }));\n })\n );\n\n completedOption.rowConfig = completedOption.rowConfig.map((row) => {\n isComplete = Object.keys(row).length !== Object.keys(defaultRow).length;\n return {\n ...defaultRow,\n ...row,\n };\n });\n\n completedOption.colConfig = completedOption.colConfig.map((col) => {\n isComplete = Object.keys(col) !== Object.keys(defaultCol);\n return {\n ...defaultCol,\n ...col,\n };\n });\n\n return completedOption;\n}\n\nexport default validateAndCompleteOptions;\n","import {ref, computed} from 'vue';\nimport type {ChartOption, StatementOption, TypeItem} from '../types';\nimport {cloneDeep} from 'lodash-es';\nimport {validateAndCompleteStatementOption} from './validateAndCompleteOptions';\n\n/** 设计器左侧可拖拽列表 */\nexport const TypeItems = ref<TypeItem[]>([\n {\n name: '报表',\n icon: 'icon-table',\n type: 'report',\n },\n {\n name: '折线图',\n icon: 'icon-linechart',\n type: 'line',\n },\n {\n name: '条形图',\n icon: 'icon-align-left',\n type: 'rowBar',\n },\n {\n name: '柱状图',\n icon: 'icon-barchart',\n type: 'bar',\n },\n {\n name: '饼状图',\n icon: 'icon-piechart',\n type: 'pie',\n },\n {\n name: '散点图',\n icon: 'icon-chart-bubble',\n type: 'scatter',\n },\n {\n name: '雷达图',\n icon: 'icon-radarchart',\n type: 'radar',\n },\n {\n name: '矩形树图',\n icon: 'icon-s-grid',\n type: 'treemap',\n },\n {\n name: '自定义标签',\n icon: 'icon-books',\n type: 'label',\n },\n]);\n\nexport const ItemTypes = computed(() => {\n return TypeItems.value.map((item) => item.type);\n});\n\nconst colors = ['#5470c6', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272'];\nexport const renderItem = (params, api) => {\n const dataIndex = params.dataIndex;\n const value = api.value();\n let name = api.value(1);\n if (Array.isArray(name)) {\n name = name.map((str) => String.fromCharCode(str)).join('');\n }\n const containerWidth = api.getWidth(); // 获取容器宽度\n const containerHeight = api.getHeight();\n // 从调色盘获取颜色(自动循环)\n const color = colors[dataIndex % 6];\n\n // 动态计算宽度(考虑间距)\n const itemCount = params.dataInsideLength; // 获取数据总数\n let spacing = containerWidth * 0.01;\n if (spacing < 10) {\n spacing = 10;\n }\n if (spacing > 15) {\n spacing = 15;\n }\n let rectHeight = containerHeight * 0.5;\n if (rectHeight < 60) {\n rectHeight = 60;\n }\n const rectWidth = (containerWidth - spacing * 2 - spacing * (itemCount - 1)) / itemCount;\n\n // 调整其他参数\n const borderRadius = 8;\n\n // 位置计算\n const xPos = spacing + dataIndex * (rectWidth + spacing);\n const yPos = (api.getHeight() - rectHeight) / 2;\n\n return {\n type: 'group',\n children: [\n {\n type: 'rect',\n shape: {\n x: xPos,\n y: yPos,\n width: rectWidth,\n height: rectHeight,\n r: borderRadius,\n },\n style: {\n fill: color,\n stroke: '#fff',\n lineWidth: 1,\n shadowBlur: 4,\n shadowColor: 'rgba(0,0,0,0.1)',\n },\n },\n {\n type: 'text',\n style: {\n text: `${name}\\n\\n${value}`,\n fill: '#fff', // 自动反色可改为:echarts.color.lift(color, 0.8)\n fontSize: 14,\n fontWeight: 'bold',\n align: 'center',\n verticalAlign: 'middle',\n },\n position: [xPos + rectWidth / 2, yPos + rectHeight / 2],\n },\n ],\n };\n};\n\nexport const chartsOption = {\n line: {\n backgroundColor: '#fff',\n title: {\n text: 'Title Line',\n },\n tooltip: {\n trigger: 'axis',\n },\n legend: {\n top: '8%',\n },\n grid: {\n left: '3%',\n right: '9%',\n top: '20%',\n bottom: '3%',\n containLabel: true,\n },\n xAxis: {\n name: '天',\n type: 'category',\n boundaryGap: false,\n data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],\n },\n yAxis: {\n name: '值',\n type: 'value',\n },\n dataZoom: [\n {\n type: 'inside',\n start: 0,\n end: 100,\n },\n ],\n series: [\n {\n name: 'Email',\n type: 'line',\n stack: 'Total',\n data: [120, 132, 101, 134, 90, 230, 210],\n },\n {\n name: 'Union',\n type: 'line',\n stack: 'Total',\n data: [220, 182, 191, 234, 290, 330, 310],\n },\n {\n name: 'Video',\n type: 'line',\n stack: 'Total',\n data: [150, 232, 201, 154, 190, 330, 410],\n },\n ],\n },\n rowBar: {\n backgroundColor: '#fff',\n title: {\n text: 'Title Bar',\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'shadow',\n },\n },\n legend: {\n top: '8%',\n },\n grid: {\n left: '3%',\n right: '9%',\n top: '20%',\n bottom: '3%',\n containLabel: true,\n },\n yAxis: {\n name: '天',\n type: 'category',\n axisTick: {\n alignWithLabel: true,\n },\n data: ['2012', '2013', '2014', '2015', '2016'],\n },\n xAxis: {\n name: '值',\n type: 'value',\n },\n dataZoom: [\n {\n type: 'inside',\n start: 0,\n end: 100,\n },\n ],\n series: [\n {\n name: 'Forest',\n type: 'bar',\n barGap: 0,\n emphasis: {\n focus: 'series',\n },\n data: [320, 332, 301, 334, 390],\n },\n {\n name: 'Steppe',\n type: 'bar',\n emphasis: {\n focus: 'series',\n },\n data: [220, 182, 191, 234, 290],\n },\n {\n name: 'Desert',\n type: 'bar',\n emphasis: {\n focus: 'series',\n },\n data: [150, 232, 201, 154, 190],\n },\n ],\n },\n bar: {\n backgroundColor: '#fff',\n title: {\n text: 'Title Bar',\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'shadow',\n },\n },\n legend: {\n top: '8%',\n },\n grid: {\n left: '3%',\n right: '9%',\n top: '20%',\n bottom: '3%',\n containLabel: true,\n },\n xAxis: {\n name: '天',\n type: 'category',\n axisTick: {\n alignWithLabel: true,\n },\n data: ['2012', '2013', '2014', '2015', '2016'],\n },\n yAxis: {\n name: '值',\n type: 'value',\n },\n dataZoom: [\n {\n type: 'inside',\n start: 0,\n end: 100,\n },\n ],\n series: [\n {\n name: 'Forest',\n type: 'bar',\n barGap: 0,\n emphasis: {\n focus: 'series',\n },\n data: [320, 332, 301, 334, 390],\n },\n {\n name: 'Steppe',\n type: 'bar',\n emphasis: {\n focus: 'series',\n },\n data: [220, 182, 191, 234, 290],\n },\n {\n name: 'Desert',\n type: 'bar',\n emphasis: {\n focus: 'series',\n },\n data: [150, 232, 201, 154, 190],\n },\n ],\n },\n pie: {\n backgroundColor: '#fff',\n title: {\n text: 'Title Pie',\n },\n tooltip: {\n trigger: 'item',\n },\n legend: {\n top: '8%',\n },\n xAxis: {\n show: false,\n },\n yAxis: {\n show: false,\n },\n series: [\n {\n name: 'Access From',\n type: 'pie',\n radius: '50%',\n top: '10%',\n data: [\n {value: 1048, name: 'Search'},\n {value: 735, name: 'Direct'},\n {value: 580, name: 'Email'},\n {value: 484, name: 'Union'},\n {value: 300, name: 'Video'},\n ],\n labelLine: {\n show: true,\n },\n emphasis: {\n itemStyle: {\n shadowBlur: 10,\n shadowOffsetX: 0,\n shadowColor: 'rgba(0, 0, 0, 0.5)',\n },\n },\n },\n ],\n },\n scatter: {\n backgroundColor: '#fff',\n title: {\n text: 'Title Scatter',\n },\n tooltip: {},\n legend: {\n top: '8%',\n data: ['1990', '2015'],\n },\n grid: {\n left: '5%',\n right: '5%',\n top: '20%',\n bottom: '3%',\n containLabel: true,\n },\n xAxis: {\n splitLine: {\n lineStyle: {\n type: 'dashed',\n },\n },\n },\n yAxis: {\n splitLine: {\n lineStyle: {\n type: 'dashed',\n },\n },\n scale: true,\n },\n dataZoom: [\n {\n type: 'inside',\n start: 0,\n end: 100,\n },\n ],\n series: [\n {\n name: '1990',\n data: [\n [1516, 68],\n [13670, 74.7],\n [28599, 75],\n [29476, 77.1],\n [31476, 75.4],\n [28666, 78.1],\n [1777, 57.7],\n [29550, 79.1],\n [2076, 67.9],\n [12087, 72],\n [24021, 75.4],\n [43296, 76.8],\n [10088, 70.8],\n [19349, 69.6],\n [10670, 67.3],\n [26424, 75.7],\n [37062, 75.4],\n ],\n type: 'scatter',\n symbolSize: 20,\n emphasis: {\n focus: 'series',\n label: {\n show: true,\n position: 'top',\n },\n },\n itemStyle: {\n shadowBlur: 10,\n shadowColor: 'rgba(0, 0, 0, 0.2)',\n shadowOffsetY: 5,\n },\n },\n {\n name: '2015',\n data: [\n [13334, 76.9],\n [21291, 78.5],\n [38923, 80.8],\n [37599, 81.9],\n [44053, 81.1],\n [42182, 82.8],\n [5903, 66.8],\n [36162, 83.5],\n [1390, 71.4],\n [34644, 80.7],\n [34186, 80.6],\n [64304, 81.6],\n [24787, 77.3],\n [23038, 73.13],\n [19360, 76.5],\n [38225, 81.4],\n [53354, 79.1],\n ],\n type: 'scatter',\n symbolSize: 20,\n emphasis: {\n focus: 'series',\n label: {\n show: true,\n position: 'top',\n },\n },\n itemStyle: {\n shadowBlur: 10,\n shadowColor: 'rgba(0, 0, 0, 0.2)',\n shadowOffsetY: 5,\n },\n },\n ],\n },\n radar: {\n backgroundColor: '#fff',\n title: {\n text: 'Title Radar',\n },\n tooltip: {\n trigger: 'axis',\n },\n legend: {\n top: '8%',\n data: ['Budget', 'Spending'],\n },\n radar: {\n indicator: [{name: 'Sales'}, {name: 'Administration'}, {name: 'Technology'}, {name: 'Customer'}, {name: 'Development'}, {name: 'Marketing'}],\n radius: 80,\n },\n series: [\n {\n name: 'Radar',\n type: 'radar',\n tooltip: {\n trigger: 'item',\n },\n areaStyle: {},\n data: [\n {\n value: [4200, 3000, 20000, 35000, 50000, 18000],\n name: 'Budget',\n },\n {\n value: [5000, 14000, 28000, 26000, 42000, 21000],\n name: 'Spending',\n },\n ],\n },\n ],\n },\n treemap: {\n backgroundColor: '#fff',\n title: {\n show: false,\n },\n legend: {\n show: false,\n },\n grid: {\n left: '0px',\n right: '0px',\n top: '0px',\n bottom: '0px',\n },\n series: [\n {\n type: 'treemap',\n label: {\n fontSize: 50,\n },\n width: '100%',\n height: '100%',\n breadcrumb: {\n show: false,\n },\n data: [\n {\n name: '标签',\n value: 20,\n },\n ],\n symbol: 'none',\n areaStyle: null,\n },\n ],\n },\n label: {\n backgroundColor: '#fff',\n title: {\n show: false,\n },\n legend: {\n show: false,\n },\n grid: {\n left: '0px',\n right: '0px',\n top: '0px',\n bottom: '0px',\n },\n xAxis: {\n show: false,\n type: 'category',\n data: [],\n },\n yAxis: {\n show: false,\n type: 'category',\n data: [],\n },\n series: [\n {\n type: 'custom',\n renderItem,\n data: [\n [20, '标签1:20'],\n [35, '标签2: 35'],\n [15, '标签3: 15'],\n ],\n },\n ],\n },\n};\n\nexport const defaultChart: ChartOption = {\n type: 'chart',\n data: {\n source: [],\n },\n xAisData: '',\n yAisData: '',\n name: '',\n icon: '',\n id: '',\n left: 0,\n top: 0,\n smooth: false,\n symbol: '',\n showLabel: false,\n areaStyle: '',\n labelColor: '',\n labelPosition: '',\n radius: false,\n widthUnit: 'px',\n width: 600,\n heightUnit: 'px',\n height: 400,\n isSuspend: false,\n zIndex: 0,\n option: undefined,\n seriesData: '',\n groupBy: false,\n orderBy: 'NONE',\n cutLength: 5,\n};\n\nexport const defaultReport: StatementOption = {\n id: '',\n type: 'report',\n config: [],\n widthType: 'px',\n width: 600,\n fullHeight: false,\n height: 400,\n seriesEnable: true,\n seriesHeadText: '#',\n frozen: {\n rowCount: 0,\n colCount: 0,\n trailingColCount: 0,\n trailingRowCount: 0,\n },\n params: [],\n theme: 'blue',\n data: {\n source: [],\n pagination: true,\n pageSize: 10,\n processData: '',\n },\n rowConfig: [],\n colConfig: [],\n};\n\nexport const setXAxisData = (selectedChart, sourceData) => {\n let {option: chartConfigForm} = selectedChart;\n let {xDataId: value} = chartConfigForm;\n let localData, xKey;\n if (value.length === 3) {\n if (sourceData && sourceData[value[0]]) {\n localData = sourceData[value[0]][value[1]];\n }\n xKey = value[2];\n } else {\n localData = sourceData[value[0]];\n xKey = value[1];\n }\n if (!localData) {\n return chartConfigForm;\n }\n let data: any[] = [];\n if (selectedChart.groupBy) {\n let dataSet = new Set();\n localData.forEach((item) => {\n dataSet.add(item[xKey]);\n });\n data = [...dataSet];\n } else {\n data = localData.map((item) => item[xKey]);\n }\n if (selectedChart.type == 'rowBar') {\n chartConfigForm.yAxis.data = data;\n } else if (['line', 'bar'].includes(selectedChart.type)) {\n chartConfigForm.xAxis.data = data;\n } else if (selectedChart.type == 'radar') {\n chartConfigForm.radar.indicator = data;\n }\n return chartConfigForm;\n};\n\nexport const setYAxisData = (selectedChart, sourceData) => {\n let {option: chartConfigForm} = selectedChart;\n let {yDataId: value} = chartConfigForm;\n let xData: any[] = [],\n xKey = '';\n if (chartConfigForm.xDataId) {\n if (chartConfigForm.xDataId.length === 3) {\n if (sourceData && sourceData[chartConfigForm.xDataId[0]]) {\n xData = sourceData[chartConfigForm.xDataId[0]][chartConfigForm.xDataId[1]];\n }\n xKey = chartConfigForm.xDataId[2];\n } else {\n xData = sourceData[chartConfigForm.xDataId[0]];\n xKey = chartConfigForm.xDataId[1];\n }\n }\n if (xData) {\n if (selectedChart.groupBy) {\n let dataSet = new Set();\n xData.forEach((item) => {\n dataSet.add(item[xKey]);\n });\n xData = [...dataSet];\n } else {\n xData = xData.map((item) => item[xKey]);\n }\n }\n\n if (selectedChart.type == 'radar') {\n chartConfigForm.series[0].data = [];\n for (let item of value) {\n let yData, yKey;\n if (item.length === 3) {\n if (sourceData[item[0]]) {\n yData = sourceData[item[0]][item[1]];\n }\n yKey = item[2];\n } else {\n yData = sourceData[item[0]];\n yKey = item[1];\n }\n let data: any[] = [];\n if (selectedChart.groupBy && xData) {\n let dataObj: any = {};\n yData.forEach((el) => {\n let xVal = el[xKey];\n let yVal = el[yKey];\n if (xVal && !isNaN(yVal)) {\n if (!dataObj[xVal]) {\n dataObj[xVal] = 0;\n }\n dataObj[xVal] = yVal;\n }\n });\n data = xData.map((xVal) => {\n return dataObj[xVal];\n });\n } else {\n data = yData.map((el) => el[yKey]);\n }\n if (selectedChart.orderBy && selectedChart.orderBy !== 'NONE') {\n data = data.sort((a, b) => {\n if (selectedChart.orderBy === 'ASC') {\n return a - b;\n } else {\n return b - a;\n }\n });\n\n if (!isNaN(selectedChart.cutLength) && selectedChart.cutLength > 0) {\n data = data.slice(0, selectedChart.cutLength);\n }\n }\n chartConfigForm.series[0].data.push({\n value: data,\n });\n }\n } else if (selectedChart.type == 'treemap') {\n if (value && value.length) {\n let [id, key] = value[0];\n if (sourceData[id][0]) {\n let val = sourceData[id][0][key];\n if (val) {\n let name = chartConfigForm.series[0].data[0]['name'].split(':')[0];\n chartConfigForm.series[0].data[0]['name'] = `${name}:${val}`;\n }\n }\n }\n } else {\n let serieCopy = cloneDeep(chartConfigForm.series);\n if (value.length) {\n chartConfigForm.series = [];\n }\n for (let i = 0; i < value.length; i++) {\n let item = value[i];\n let yData, yKey;\n if (item.length === 3) {\n if (sourceData[item[0]]) {\n yData = sourceData[item[0]][item[1]];\n }\n yKey = item[2];\n } else {\n yData = sourceData[item[0]];\n yKey = item[1];\n }\n let serie = cloneDeep(serieCopy[0]);\n serie.data = [];\n let data: any[] = [];\n if (yData && xKey && xData) {\n switch (selectedChart.type) {\n case 'line':\n case 'rowBar':\n case 'bar':\n if (selectedChart.groupBy) {\n let dataObj: any = {};\n yData.forEach((el) => {\n let xVal = el[xKey];\n let yVal = el[yKey];\n if (xVal && !isNaN(yVal)) {\n if (!dataObj[xVal]) {\n dataObj[xVal] = 0;\n }\n dataObj[xVal] = yVal;\n }\n });\n data = xData.map((xVal) => {\n return dataObj[xVal];\n });\n } else {\n data = yData.map((el) => el[yKey]);\n }\n if (selectedChart.orderBy && selectedChart.orderBy !== 'NONE') {\n data = data.sort((a, b) => {\n if (selectedChart.orderBy === 'ASC') {\n return a - b;\n } else {\n return b - a;\n }\n });\n\n if (!isNaN(selectedChart.cutLength) && selectedChart.cutLength > 0) {\n data = data.slice(0, selectedChart.cutLength);\n }\n }\n break;\n case 'pie':\n if (selectedChart.groupBy) {\n let dataObj: any = {};\n yData.forEach((el) => {\n let xVal = el[xKey];\n let yVal = el[yKey];\n if (xVal && !isNaN(yVal)) {\n if (!dataObj[xVal]) {\n dataObj[xVal] = 0;\n }\n dataObj[xVal] = yVal;\n }\n });\n data = xData.map((xVal) => {\n return {value: dataObj[xVal], name: xVal};\n });\n } else {\n data = yData.map((el) => {\n return {value: el[yKey], name: el[xKey]};\n });\n }\n if (selectedChart.orderBy && selectedChart.orderBy !== 'NONE') {\n data = data.sort((a, b) => {\n if (selectedChart.orderBy === 'ASC') {\n return a - b;\n } else {\n return b - a;\n }\n });\n\n if (!isNaN(selectedChart.cutLength) && selectedChart.cutLength > 0) {\n data = data.slice(0, selectedChart.cutLength);\n }\n }\n break;\n case 'scatter':\n if (selectedChart.groupBy) {\n let dataObj: any = {};\n yData.forEach((el) => {\n let xVal = el[xKey];\n let yVal = el[yKey];\n if (xVal && !isNaN(yVal)) {\n if (!dataObj[xVal]) {\n dataObj[xVal] = 0;\n }\n dataObj[xVal] = yVal;\n }\n });\n data = xData.map((xVal) => {\n return [xVal, dataObj[xVal]];\n });\n } else {\n data = yData.map((el) => {\n return [el[xKey], el[yKey]];\n });\n }\n if (selectedChart.orderBy && selectedChart.orderBy !== 'NONE') {\n data = data.sort((a, b) => {\n if (selectedChart.orderBy === 'ASC') {\n return a - b;\n } else {\n return b - a;\n }\n });\n\n if (!isNaN(selectedChart.cutLength) && selectedChart.cutLength > 0) {\n data = data.slice(0, selectedChart.cutLength);\n }\n }\n break;\n case 'label':\n if (selectedChart.groupBy) {\n let dataObj: any = {};\n yData.forEach((el) => {\n let xVal = el[xKey];\n let yVal = el[yKey];\n if (xVal && !isNaN(yVal)) {\n if (!dataObj[xVal]) {\n dataObj[xVal] = 0;\n }\n dataObj[xVal] = yVal;\n }\n });\n data = xData.map((xVal) => {\n const codes = xVal ? xVal.split('').map((str) => str.charCodeAt()) : [];\n return [dataObj[xVal], codes];\n });\n } else {\n data = yData.map((el) => {\n const codes = el[xKey] ? el[xKey].split('').map((str) => str.charCodeAt()) : [];\n\n return [el[yKey], codes];\n });\n }\n if (selectedChart.orderBy && selectedChart.orderBy !== 'NONE') {\n data = data.sort((a, b) => {\n if (selectedChart.orderBy === 'ASC') {\n return a - b;\n } else {\n return b - a;\n }\n });\n\n if (!isNaN(selectedChart.cutLength) && selectedChart.cutLength > 0) {\n data = data.slice(0, selectedChart.cutLength);\n }\n }\n serie.renderItem = renderItem;\n break;\n }\n serie.data = data;\n }\n chartConfigForm.series.push(serie);\n }\n }\n return chartConfigForm;\n};\n\nexport function getReportDefaultOption(type) {\n if (type === 'report') {\n return validateAndCompleteStatementOption(defaultReport);\n } else {\n let option = cloneDeep(defaultChart);\n option.id = `${type}-${Date.now()}`;\n option.type = type;\n option.option = chartsOption[type];\n return option;\n }\n}\nexport default TypeItems;\n","// @ts-ignore\nimport axios from '@/libs/api.request.js';\nimport {ChartOption, Statement, StatementOption} from '../types';\nimport {ItemTypes} from '../libs/chartReportDefaultOption';\nimport {ElMessage} from 'element-plus';\nimport {useRouter} from 'vue-router';\n\n/** 获取报表列表数据 */\nexport function getList(listForm): Promise<Statement[]> {\n // @ts-ignore\n return axios.request({\n url: 'sysReport/list',\n method: 'post',\n type: 'json',\n data: listForm,\n });\n}\n\nexport interface ConfigStatement extends Statement {\n remoteOptions: (StatementOption & ChartOption)[];\n}\n\n/** 获取报表数据 */\nexport function getConfig(id): Promise<ConfigStatement> {\n // @ts-ignore\n return axios\n .request({\n url: 'sysReport/config',\n method: 'post',\n params: {\n id,\n },\n })\n .then((res) => {\n let info = JSON.parse(res.data.info);\n let {id, name, code, description, config, chartConfig} = info;\n let remoteOptions: any[] = [];\n if (config) {\n config = JSON.parse(config);\n if (Array.isArray(config) && config.length) {\n if (config[0].type === 'tableSheet') {\n ElMessage.error('当前报表版本不支持老版本数据,请等待老版本数据转换工具上线');\n const router = useRouter();\n router.back();\n throw new Error('当前报表版本不支持老版本数据,请等待老版本数据转换工具上线');\n } else {\n config = config.map((item) => {\n if (!ItemTypes.value.includes(item.type)) {\n item.type = 'report';\n }\n return item;\n });\n remoteOptions = remoteOptions.concat(config);\n }\n }\n }\n if (chartConfig) {\n chartConfig = JSON.parse(chartConfig);\n if (Array.isArray(chartConfig)) {\n chartConfig.forEach((config) => {\n if (!config.data) {\n config.data = {source: []};\n }\n });\n remoteOptions = remoteOptions.concat(chartConfig);\n }\n }\n\n return Promise.resolve({\n id,\n name,\n code,\n description,\n remoteOptions,\n });\n });\n}\n\n/** 保存报表数据 */\nexport function save(form) {\n return axios.request({\n url: 'sysReport/save',\n method: 'post',\n type: 'json',\n data: form,\n });\n}\n\n/** 保存报表数据 */\nexport function del(id) {\n return axios.request({\n url: 'sysReport/delete',\n method: 'post',\n type: 'form',\n data: {id},\n });\n}\n\n/** 创建报表时的默认数据 */\n\nexport const defaultData: any[] = [\n {\n name: '张三',\n sex: '男',\n age: 18,\n },\n {\n name: '李四',\n sex: '男',\n age: 18,\n },\n {\n name: '王舞',\n sex: '女',\n age: 16,\n },\n {\n name: '赵柳',\n sex: '女',\n age: 17,\n },\n];\n","/**\n * 复制文本\n * @param {string} str 要复制的文本\n * @returns {Promise<void>}\n */\nexport function copyString(str) {\n if (navigator.clipboard && window.isSecureContext) {\n navigator.clipboard.writeText(str);\n return Promise.resolve();\n } else {\n let textArea = document.createElement('textarea');\n textArea.value = str;\n textArea.style.position = 'absolute';\n textArea.style.opacity = '0';\n textArea.style.left = '-200%';\n textArea.style.top = '-200%';\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n let flag = document.execCommand('copy');\n textArea.remove();\n if (flag) {\n return Promise.resolve();\n } else {\n return Promise.reject(new Error('copy error'));\n }\n }\n}\n\nexport function isColorLight(color) {\n let rgb;\n if (color.startsWith('#')) {\n color = color.slice(1).toUpperCase();\n\n if (color.length === 3) {\n color = color\n .split('')\n .map((char) => char + char)\n .join('');\n }\n rgb = color.match(/.{2}/g).map((hex) => parseInt(hex, 16));\n } else if (color.startsWith('rgb(')) {\n const rgbMatch = color.match(/\\d+/g);\n rgb = rgbMatch.map((num) => parseInt(num, 10));\n } else {\n console.error('Invalid color format');\n return false;\n }\n const luminance = (0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]) / 255;\n return luminance > 0.5;\n}\n\n/**\n * 根据数据类型,获取表单配置\n */\nexport function componentTransition(dataType, dateType = 'date') {\n let componentName = 'ElInput';\n let placeholerPrefix = '筛选';\n let type = '';\n switch (dataType) {\n case 'STRING':\n componentName = 'ElInput';\n placeholerPrefix = '筛选';\n type = 'text';\n break;\n case 'LIST':\n componentName = 'ElSelect';\n placeholerPrefix = '请选择';\n break;\n case 'TABLE':\n componentName = 'ElSelect';\n placeholerPrefix = '请选择';\n break;\n case 'TREE':\n componentName = 'ElTreeSelect';\n placeholerPrefix = '请选择';\n break;\n case 'EDITOR':\n componentName = 'ElInput';\n placeholerPrefix = '筛选';\n type = 'textarea';\n break;\n case 'BOOL':\n componentName = 'ElSwitch';\n placeholerPrefix = '请选择';\n break;\n case 'LONG':\n componentName = 'ElInputNumber';\n placeholerPrefix = '筛选';\n break;\n case 'PLONG':\n componentName = 'ElInputNumber';\n placeholerPrefix = '筛选';\n break;\n case 'DOUBLE':\n componentName = 'ElInputNumber';\n placeholerPrefix = '筛选';\n break;\n case 'DATE':\n componentName = 'ElDatePicker';\n placeholerPrefix = '请选择';\n type = dateType;\n break;\n case 'DATETIME':\n componentName = 'ElDatePicker';\n placeholerPrefix = '请选择';\n type = dateType;\n break;\n case 'TIME':\n componentName = 'ElTimePicker';\n placeholerPrefix = '请选择';\n type = 'time';\n break;\n case 'TEXT':\n componentName = 'ElInput';\n placeholerPrefix = '筛选';\n type = 'text';\n break;\n case 'COLOR':\n componentName = 'ElColorPicker';\n placeholerPrefix = '请选择';\n break;\n default:\n componentName = 'ElInput';\n placeholerPrefix = '筛选';\n type = 'text';\n break;\n }\n return {componentName, placeholerPrefix, type};\n}\n\nexport function getEnumOptions<T extends Record<string, any>>(enumObj: T, filters: string[] = []) {\n return Object.keys(enumObj)\n .filter((key) => !filters.includes(enumObj[key as keyof T]))\n .map((key) => ({\n value: enumObj[key as keyof T],\n label: key,\n }));\n}\n"],"names":["CellType","FormatType","DataSourceColumnDataType","DataSourceColumnDataType2","defaultCell","defaultRow","defaultCol","isComplete","validateAndCompleteOptions","statement","completedStatement","_a","option","validateAndCompleteStatementOption","defaultReport","completedOption","_","index","rowLength","colLength","row","rowIndex","item","colIndex","rowIndexOffset","newRow","col","TypeItems","ref","ItemTypes","computed","colors","renderItem","params","api","dataIndex","value","name","str","containerWidth","containerHeight","color","itemCount","spacing","rectHeight","rectWidth","borderRadius","xPos","yPos","chartsOption","defaultChart","setXAxisData","selectedChart","sourceData","chartConfigForm","localData","xKey","data","dataSet","setYAxisData","xData","yData","yKey","dataObj","el","xVal","yVal","a","b","id","key","val","serieCopy","cloneDeep","i","serie","codes","getReportDefaultOption","type","chartReportList","getList","listForm","axios","getConfig","res","info","code","description","config","chartConfig","remoteOptions","ElMessage","useRouter","save","form","del","copyString","textArea","flag","componentTransition","dataType","dateType","componentName","placeholerPrefix"],"mappings":"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"}
|