rapid-spreadjs 1.0.27 → 1.0.28
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/dist/index.cjs.js +65 -0
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.cjs.min.js +1 -1
- package/dist/index.cjs.min.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.esm.js +65 -0
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +1 -1
- package/dist/index.esm.min.js.map +1 -1
- package/dist/types/wookbook.d.ts +11 -0
- package/dist/utils/wookbook.d.ts +7 -0
- package/package.json +1 -1
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/utils/sheet.ts","../src/utils/business.ts","../node_modules/.pnpm/@rollup+plugin-typescript@1_ccba8aa16c5fc04bbd7ba036697931a3/node_modules/tslib/tslib.es6.js","../src/utils/common.ts","../src/utils/echarts-all.ts","../src/utils/echarts.ts","../src/utils/wookbook.ts"],"sourcesContent":["// 导入rapid-utils中的函数(注意:需要在tsconfig.json文件中设置moduleResolution为node,否则会提示:找不到模块“rapid-utils”。你的意思是要将 \"moduleResolution\" 选项设置为 \"nodenext\",还是要将别名添加到 \"paths\" 选项中?ts(2792))\r\nimport { forEachJson, orderByJson, groupByJson } from 'rapid-utils';\r\n// 导入单元格实体\r\nimport { CellModel, CellWatermarkModel, CellDateModel } from '../types/sheet';\r\n\r\n/**\r\n * SpreadJS工作表工具函数属性\r\n */\r\nexport const SheetUtils = {\r\n /**\r\n * 获取当前活动工作表选中的单元格集合\r\n * @param spread 工作簿对象\r\n * @returns 返回选中单元格的集合,格式如:[{ row: 0, col: 0, rowCount: 1, colCount: 1 }]\r\n */\r\n getActiveSheetSelectCells: (spread: any): CellModel[] => {\r\n const sheet = spread.getActiveSheet();\r\n\r\n const allCellObjs: CellModel[] = sheet.getSelections();\r\n\r\n return allCellObjs;\r\n },\r\n\r\n /**\r\n * 设置当前活动工作表某个或某些单元格范围为选中状态\r\n * @param spread 工作簿对象\r\n * @param cellObj 设置选中的单元格,格式如:{row:0,col:0,rowCount:1,colCount:1}\r\n */\r\n setActiveSheetSelectCells: (spread: any, cellObj: CellModel) => {\r\n const sheet = spread.getActiveSheet();\r\n\r\n sheet.setSelection(cellObj.row, cellObj.col, cellObj.rowCount, cellObj.colCount);\r\n },\r\n\r\n /**\r\n * 获取某工作表中某个范围中所有的单元格坐标对象集合\r\n * 该方法适用的场景如:手动选择了某个单元格范围,在这个范围中可能包含独立的单元格,也可能包含合并的单元格,这时候就需要用到如下方法获取到所有单元格对象\r\n * @param sheet 工作表实例\r\n * @param selectRange 单元格范围,格式如:{ row: 0, col: 0, rowCount: 2, colCount: 2 }\r\n * @param isMulColOrder 是否按照多列的顺序排序单元格(true:按照第一列从上到下、第二列从上到下……的顺序获取单元格数据、false:按照第一行从左到右、第二行从左到右……的顺序获取单元格数据)\r\n * @returns 返回数组集合,格式如:[{ row: 0, col: 0, rowCount: 1, colCount: 1 }]\r\n */\r\n getAllCellObjsByRange: (sheet: any, selectRange: CellModel, isMulColOrder: boolean = false): CellModel[] => {\r\n return SheetUtils.getAllCellObjsByRanges(sheet, [selectRange], isMulColOrder);\r\n },\r\n\r\n /**\r\n * 获取某工作表中多个范围集合中所有的单元格坐标对象集合\r\n * 该方法适用的场景如:手动选择了很多个单元格范围,在这些范围中可能包含独立的单元格,也可能包含合并的单元格,这时候就需要用到如下方法获取到所有单元格对象\r\n * @param sheet 工作表实例\r\n * @param selectRanges 单元格范围集合,格式如:[{ row: 0, col: 0, rowCount: 2, colCount: 2 }]\r\n * @param isMulColOrder 是否按照多列的顺序排序单元格(true:按照第一列从上到下、第二列从上到下……的顺序获取单元格数据、false:按照第一行从左到右、第二行从左到右……的顺序获取单元格数据)\r\n * @returns 返回数组集合,格式如:[{ row: 0, col: 0, rowCount: 1, colCount: 1 }]\r\n */\r\n getAllCellObjsByRanges: (sheet: any, selectRanges: CellModel[], isMulColOrder: boolean = false): CellModel[] => {\r\n // 得到所有的单元格坐标对象集合,格式如:[{ row: 0, col: 0, rowCount: 1, colCount: 1 }]\r\n let allCellObjs: CellModel[] = [];\r\n\r\n selectRanges.forEach((item, index) => {\r\n // 得到当前item中所有合并的单元格对象集合\r\n const itemSpanCells = sheet.getSpans(item);\r\n itemSpanCells.forEach((itemSpanCell: CellModel) => {\r\n allCellObjs.push({\r\n row: itemSpanCell.row,\r\n col: itemSpanCell.col,\r\n rowCount: itemSpanCell.rowCount,\r\n colCount: itemSpanCell.colCount,\r\n });\r\n });\r\n\r\n if (item.row === undefined || item.col === undefined || item.rowCount === undefined || item.colCount === undefined) {\r\n throw new Error('row、col、rowCount、colCount is required.');\r\n }\r\n\r\n // 遍历item中涉及到的所有单元格\r\n for (let i = item.row; i < +item.row + item.rowCount; i++) {\r\n for (let j = item.col; j < item.col + item.colCount; j++) {\r\n const curSpanCellObj = sheet.getSpan(i, j);\r\n\r\n // 检查当前单元格是否为合并单元格\r\n if (curSpanCellObj == null) {\r\n allCellObjs.push({\r\n row: i,\r\n col: j,\r\n rowCount: 1,\r\n colCount: 1,\r\n });\r\n }\r\n }\r\n }\r\n });\r\n\r\n // 对所有单元格坐标对象集合进行排序\r\n allCellObjs = orderByJson(allCellObjs, !isMulColOrder ? ['row', 'col'] : ['col', 'row'], ['asc', 'asc']);\r\n\r\n return allCellObjs;\r\n },\r\n\r\n /**\r\n * 获取某工作表中所有的单元格坐标对象集合\r\n * @param sheet 工作表实例\r\n * @returns 返回数组集合,格式如:[{ col: 0, colCount: 2, row: 0, rowCount: 1 }]\r\n */\r\n getSheetAllCellObjs: (sheet: any): CellModel[] => {\r\n // 得到当前Sheet单元格范围\r\n const curSheetCellRange = [\r\n {\r\n row: 0,\r\n col: 0,\r\n rowCount: sheet.getRowCount(),\r\n colCount: sheet.getColumnCount(),\r\n },\r\n ];\r\n\r\n // 得到所有的单元格坐标对象集合,格式如:[{ col: 0, colCount: 2, row: 0, rowCount: 1 }]\r\n const allCellObjs = SheetUtils.getAllCellObjsByRanges(sheet, curSheetCellRange);\r\n\r\n return allCellObjs;\r\n },\r\n\r\n /**\r\n * 获取某工作表中选中的所有单元格坐标对象集合\r\n * @param sheet 工作表实例\r\n * @param isMulColOrder 是否按照多列的顺序排序单元格(true:按照第一列从上到下、第二列从上到下……的顺序获取单元格数据、false:按照第一行从左到右、第二行从左到右……的顺序获取单元格数据)\r\n * @returns 返回数组集合,格式如:[{ col: 0, row: 0, \"rowCount\": 1, \"colCount\": 1 }]\r\n */\r\n getSheetSelectCellObjs: (sheet: any, isMulColOrder: boolean = false): CellModel[] => {\r\n // 得到当前Sheet中选择的单元格范围集合\r\n const curSheetCellRange = sheet.getSelections();\r\n\r\n // 得到所有的单元格坐标对象集合,格式如:[{ col: 0, colCount: 2, row: 0, rowCount: 1 }]\r\n const allCellObjs = SheetUtils.getAllCellObjsByRanges(sheet, curSheetCellRange, isMulColOrder);\r\n\r\n return allCellObjs;\r\n },\r\n\r\n /**\r\n * 获取活动工作表中选中的所有单元格坐标对象集合\r\n * @param spread 工作簿实例\r\n * @param isMulColOrder 是否按照多列的顺序排序单元格(true:按照第一列从上到下、第二列从上到下……的顺序获取单元格数据、false:按照第一行从左到右、第二行从左到右……的顺序获取单元格数据)\r\n * @returns 返回数组集合,格式如:[{ col: 0, row: 0, \"rowCount\": 1, \"colCount\": 1 }]\r\n */\r\n getActiveSheetSelectCellObjs: (spread: any, isMulColOrder: boolean = false): CellModel[] => {\r\n // 当前活动的Sheet\r\n const sheet = spread.getActiveSheet();\r\n\r\n return SheetUtils.getSheetSelectCellObjs(sheet, isMulColOrder);\r\n },\r\n\r\n /**\r\n * 获取某工作表指定范围单元格的坐标对象集合(二维数组,格式如:[[{row:0……}],[{row:0……}]])\r\n * @param sheet 工作表实例\r\n * @param cellRange 单元格范围\r\n * @param groupType 分组字段属性(row或col),默认为:row\r\n * @returns 返回某工作表指定范围单元格的坐标对象集合(二维数组,格式如:[[{row:0……}],[{row:0……}]])\r\n */\r\n getSheetCellObjsByGroup: (sheet: any, cellRange: CellModel, groupType: 'row' | 'col' = 'row'): Array<Array<CellModel>> => {\r\n // 暂停绘制\r\n sheet.suspendPaint();\r\n\r\n const valCells = SheetUtils.getAllCellObjsByRange(sheet, cellRange);\r\n\r\n // 按照JSON数组中某个字段进行分组(groupType为row或col)\r\n const groupByCells = groupByJson(valCells, groupType);\r\n\r\n // 最终返回结果(二维数组)\r\n const retCells: Array<Array<any>> = [];\r\n\r\n // 遍历分组JSON对象(groupByCells的格式为:{key1: [cell1, cell2, ...], key2: [cell1, cell2, ...], ...})\r\n forEachJson(groupByCells, (curGroupCells: CellModel[], key, source) => {\r\n retCells.push(curGroupCells);\r\n });\r\n\r\n // 恢复绘制\r\n sheet.resumePaint();\r\n\r\n return retCells;\r\n },\r\n\r\n /**\r\n * 获取某工作表选中单元格的值集合\r\n * @param sheet 工作表实例\r\n * @param isMulColOrder 是否按照多列的顺序排序单元格(true:按照第一列从上到下、第二列从上到下……的顺序获取单元格数据、false:按照第一行从左到右、第二行从左到右……的顺序获取单元格数据)\r\n * @param nullUndefinedReplaceVal 如果单元格的值为null或undefined,则将其替换为该值(如果不传入该参数,则不替换)\r\n * @returns 返回选中单元格的值集合\r\n */\r\n getSheetSelectVals: (\r\n sheet: any,\r\n isMulColOrder: boolean = false,\r\n nullUndefinedReplaceVal?: number | string\r\n ): (number | string | null | undefined)[] => {\r\n // 获取活动工作表选中单元格对象集合\r\n const selectCells = SheetUtils.getSheetSelectCellObjs(sheet, isMulColOrder);\r\n\r\n // 获取选中单元格的值集合\r\n let selectCellVals: (number | string | null | undefined)[] = [];\r\n selectCells.forEach((cell) => {\r\n let cellVal = sheet.getValue(cell.row, cell.col);\r\n\r\n // 如果cellVal为null或undefined,并且nullUndefinedReplaceVal不为null或undefined,则将cellVal替换为nullUndefinedReplaceVal\r\n if (nullUndefinedReplaceVal != null && nullUndefinedReplaceVal != undefined && (cellVal === null || cellVal === undefined)) {\r\n cellVal = nullUndefinedReplaceVal;\r\n }\r\n\r\n selectCellVals.push(cellVal);\r\n });\r\n\r\n return selectCellVals;\r\n },\r\n\r\n /**\r\n * 获取活动工作表选中单元格的值集合\r\n * @param spread 工作簿实例\r\n * @param isMulColOrder 是否按照多列的顺序排序单元格(true:按照第一列从上到下、第二列从上到下……的顺序获取单元格数据、false:按照第一行从左到右、第二行从左到右……的顺序获取单元格数据)\r\n * @param nullUndefinedReplaceVal 如果单元格的值为null或undefined,则将其替换为该值(如果不传入该参数,则不替换)\r\n * @returns 返回选中单元格的值集合\r\n */\r\n getActiveSheetSelectVals: (\r\n spread: any,\r\n isMulColOrder: boolean = false,\r\n nullUndefinedReplaceVal?: number | string\r\n ): (number | string | null | undefined)[] => {\r\n // 获取当前活动工作表\r\n const sheet = spread.getActiveSheet();\r\n\r\n return SheetUtils.getSheetSelectVals(sheet, isMulColOrder, nullUndefinedReplaceVal);\r\n },\r\n\r\n /**\r\n * 获取某工作表指定范围单元格的值集合(二维数组,格式如:[[1,2,3],[4,5,6]])\r\n * @param sheet 工作表实例\r\n * @param cellRange 单元格范围\r\n * @param groupType 分组字段属性(row或col),默认为:row\r\n * @param nullUndefinedReplaceVal 如果单元格的值为null或undefined,则将其替换为该值(如果不传入该参数,则不替换)\r\n * @returns 返回某工作表指定范围单元格的值集合(二维数组,格式如:[[1,2,3],[4,5,6]])\r\n */\r\n getSheetRangeValsByGroup: (\r\n sheet: any,\r\n cellRange: CellModel,\r\n groupType: 'row' | 'col' = 'row',\r\n nullUndefinedReplaceVal?: number | string | boolean\r\n ): Array<Array<any>> => {\r\n // 暂停绘制\r\n sheet.suspendPaint();\r\n\r\n const valCells = SheetUtils.getAllCellObjsByRange(sheet, cellRange);\r\n\r\n // 按照JSON数组中某个字段进行分组(groupType为row或col)\r\n const groupByCells = groupByJson(valCells, groupType);\r\n\r\n // 最终返回结果(二维数组)\r\n const retVals: Array<Array<any>> = [];\r\n\r\n // 遍历分组JSON对象(groupByCells的格式为:{key1: [cell1, cell2, ...], key2: [cell1, cell2, ...], ...})\r\n forEachJson(groupByCells, (curGroupCells: CellModel[], key, source) => {\r\n // 当前按照row或col分组的单元格的值集合\r\n const curVals: Array<any> = [];\r\n\r\n // 遍历当前分组的所有单元格\r\n forEachJson(curGroupCells, (item, index, source) => {\r\n let cellVal = sheet.getValue(item.row, item.col);\r\n\r\n // 如果cellVal为null或undefined,并且nullUndefinedReplaceVal不为null或undefined,则将cellVal替换为nullUndefinedReplaceVal\r\n if (nullUndefinedReplaceVal != null && nullUndefinedReplaceVal != undefined && (cellVal === null || cellVal === undefined)) {\r\n cellVal = nullUndefinedReplaceVal;\r\n }\r\n\r\n curVals.push(cellVal);\r\n });\r\n\r\n retVals.push(curVals);\r\n });\r\n\r\n // 恢复绘制\r\n sheet.resumePaint();\r\n\r\n return retVals;\r\n },\r\n\r\n /**\r\n * 获取单元格类型名称\r\n * @param GC GC对象\r\n * @param sheet 工作表实例\r\n * @param row 单元格行索引\r\n * @param col 单元格列索引\r\n * @returns 返回单元格类型名称,如:button、radio、checkbox、checkboxList、hyperLink、comboBox、date、dateRange、calc\r\n */\r\n getCellType: (GC: any, sheet: any, row: number, col: number): string | undefined => {\r\n let cellTypeName;\r\n\r\n // 先根据getCellType来获取\r\n const cellType = sheet.getCellType(row, col);\r\n\r\n if (cellType instanceof GC.Spread.Sheets.CellTypes.Button) {\r\n cellTypeName = 'button';\r\n } else if (cellType instanceof GC.Spread.Sheets.CellTypes.RadioButtonList) {\r\n cellTypeName = 'radio';\r\n } else if (cellType instanceof GC.Spread.Sheets.CellTypes.CheckBox) {\r\n cellTypeName = 'checkbox';\r\n } else if (cellType instanceof GC.Spread.Sheets.CellTypes.CheckBoxList) {\r\n cellTypeName = 'checkboxList';\r\n } else if (cellType instanceof GC.Spread.Sheets.CellTypes.HyperLink) {\r\n cellTypeName = 'hyperLink';\r\n } else if (cellType instanceof GC.Spread.Sheets.CellTypes.ComboBox) {\r\n cellTypeName = 'comboBox';\r\n }\r\n\r\n // 根据getStyle来获取\r\n if (cellTypeName == undefined || cellTypeName == null) {\r\n const cellStyle = sheet.getStyle(row, col);\r\n\r\n if (cellStyle && cellStyle.cellButtons && cellStyle.cellButtons.length > 0) {\r\n if (cellStyle.cellButtons[0].command == 'openDateTimePicker') {\r\n if (cellStyle.dropDowns && cellStyle.dropDowns.length > 0) {\r\n if (cellStyle.dropDowns[0].option.showDateRange) {\r\n cellTypeName = 'dateRange';\r\n } else {\r\n cellTypeName = 'date';\r\n }\r\n }\r\n } else if (cellStyle.cellButtons[0].command == 'openCalculator') {\r\n cellTypeName = 'calc';\r\n }\r\n }\r\n }\r\n\r\n return cellTypeName;\r\n },\r\n\r\n /**\r\n * 设置工作簿中所有工作表的缩放比例\r\n * @param spread 工作簿实例\r\n * @param scale 缩放比例,默认为:1(100%)\r\n */\r\n setSheetZoom: (spread: any, scale: number) => {\r\n // 暂停绘制\r\n spread.suspendPaint();\r\n\r\n const sheetCount = spread.getSheetCount();\r\n for (let i = 0; i < sheetCount; i++) {\r\n const sheet = spread.getSheet(i);\r\n\r\n sheet.zoom(scale);\r\n }\r\n\r\n // 恢复绘制\r\n spread.resumePaint();\r\n },\r\n\r\n /**\r\n * 设置当前活动工作表中选中的单元格背景颜色\r\n * @param spread 工作簿实例\r\n * @param color 背景颜色\r\n */\r\n setActiveSheetSelectBgColor: (spread: any, color: string) => {\r\n const sheet = spread.getActiveSheet();\r\n\r\n // 暂停绘制\r\n sheet.suspendPaint();\r\n\r\n //#region 方式1:通过getRange进行批量设置,推荐使用该方法来实现\r\n\r\n // 获取选择的多个单元格范围集合\r\n const selections = SheetUtils.getActiveSheetSelectCells(spread);\r\n\r\n // 循环每个选中的单元格范围\r\n selections.forEach((sel: CellModel) => {\r\n // 批量设置每个选中的单元格范围的背景颜色\r\n sheet.getRange(sel.row, sel.col, sel.rowCount, sel.colCount).backColor(color);\r\n });\r\n\r\n //#endregion\r\n\r\n //#region 方式2:通过getCell获取单元格样式对每个单元格进行设置,此方式效率相对较低,不推荐\r\n\r\n // // 当前活动的工作表中所有选择的单元格\r\n // const selectCells = SheetUtils.getActiveSheetSelectCellObjs(spread);\r\n\r\n // selectCells.forEach(item => {\r\n // // 获取单元格对象\r\n // const cellObj = sheet.getCell(item.row, item.col);\r\n\r\n // // 获取单元格样式\r\n // let cellStyle = sheet.getStyle(item.row, item.col);\r\n // if (!cellStyle) {\r\n // // 不存在样式则new一个\r\n // cellStyle = new GC.Spread.Sheets.Style();\r\n // }\r\n\r\n // // 设置单元格背景颜色\r\n // cellStyle.backColor = color;\r\n\r\n // // 重新设置单元格样式\r\n // cellObj.setStyle(cellStyle);\r\n // });\r\n\r\n //#endregion\r\n\r\n // 恢复绘制\r\n sheet.resumePaint();\r\n },\r\n\r\n /**\r\n * 设置某工作表中指定单元格背景颜色\r\n * @param sheet 工作表实例\r\n * @param cells 单元格集合\r\n * @param color 背景颜色\r\n */\r\n setSheetBgColor: (sheet: any, cells: CellModel[], color: string) => {\r\n // 暂停绘制\r\n sheet.suspendPaint();\r\n\r\n // 循环每个选中的单元格范围\r\n cells.forEach((sel: CellModel) => {\r\n // 批量设置每个选中的单元格范围的背景颜色\r\n sheet.getRange(sel.row, sel.col, sel.rowCount, sel.colCount).backColor(color);\r\n });\r\n\r\n // 恢复绘制\r\n sheet.resumePaint();\r\n },\r\n\r\n /**\r\n * 设置工作簿中所有工作表是否显示分页线\r\n * @param spread 工作簿实例\r\n * @param isShow 是否显示分页线(true:显示、false:不显示)\r\n */\r\n setSheetShowPrintPageLine: (spread: any, isShow: boolean) => {\r\n // 暂停绘制\r\n spread.suspendPaint();\r\n\r\n const sheetCount = spread.getSheetCount();\r\n for (let i = 0; i < sheetCount; i++) {\r\n const sheet = spread.getSheet(i);\r\n\r\n // 获取当前工作表是否显示分页线\r\n // var isVisible = sheet.isPrintLineVisible();\r\n\r\n sheet.isPrintLineVisible(isShow);\r\n }\r\n\r\n // 恢复绘制\r\n spread.resumePaint();\r\n },\r\n\r\n /**\r\n * 忽略工作工作表元格中指定字符串不显示,如:#DIV/0!、#VALUE!等\r\n * @param GC GC对象\r\n */\r\n ignoreSheetShowStrs: (GC: any) => {\r\n // 忽略的字符串集合\r\n const ignoreStrs: string[] = ['#DIV/0!', '#VALUE!', '#NAME?', '#N/A', '#NULL!', '#NUM!', '#REF!'];\r\n\r\n // paint对象\r\n const ignorePaint = GC.Spread.Sheets.CellTypes.Text.prototype.paint;\r\n\r\n // 重写paint函数\r\n GC.Spread.Sheets.CellTypes.Text.prototype.paint = function (ctx: any, value: any, x: any, y: any, w: any, h: any, style: any, options: any) {\r\n // 如果在忽略的字符串集合中有匹配的结果,则将其显示为空字符串\r\n if (ignoreStrs.some((item) => item == value)) {\r\n ignorePaint.call(this, ctx, '/', x, y, w, h, style, options);\r\n } else {\r\n ignorePaint.apply(this, arguments);\r\n }\r\n\r\n // // 或使用如下代码\r\n // if (ignoreStrs.some((item) => item == value)) {\r\n // \tvalue = '';\r\n // }\r\n // ignorePaint.apply(this, [ctx, value, x, y, w, h, style, options]);\r\n };\r\n },\r\n\r\n /**\r\n * 设置工作表显示辅助线(底部和右侧的辅助线)\r\n * @param sheet 工作表实例\r\n * @param width 宽度(像素)\r\n * @param height 高度(像素)\r\n * @param lineWidth 辅助线宽度(默认为:1像素)\r\n * @param colorStr 辅助线颜色(默认为:#409eff)\r\n * @param isHb 是否为横表(默认为:false)\r\n */\r\n setSheetAuxiliaryLine: (\r\n GC: any,\r\n sheet: any,\r\n width: number,\r\n height: number,\r\n lineWidth: number = 1,\r\n colorStr: string = '#409eff',\r\n isHb: boolean = false\r\n ) => {\r\n // 创建底部和右侧的浮动对象\r\n let floatBottom = new GC.Spread.Sheets.FloatingObjects.FloatingObject(`floatLineBottom${isHb ? 'Hb' : ''}`, 0, height, width, lineWidth),\r\n floatRight = new GC.Spread.Sheets.FloatingObjects.FloatingObject(`floatLineRight${isHb ? 'Hb' : ''}`, width, 0, lineWidth, height);\r\n\r\n // 创建底部和右侧的div对象\r\n let divBottom = document.createElement('div'),\r\n divRight = document.createElement('div');\r\n\r\n // 设置底部div对象样式\r\n divBottom.style.width = `${width}px`;\r\n divBottom.style.height = '1px';\r\n divBottom.style.borderBottom = `${lineWidth}px dashed ${colorStr}`;\r\n\r\n // 设置右侧div对象样式\r\n divRight.style.width = '1px';\r\n divRight.style.height = `${height}px`;\r\n divRight.style.borderLeft = `${lineWidth}px dashed ${colorStr}`;\r\n\r\n // floatBottom.fixedPosition(true);\r\n // floatRight.fixedPosition(true);\r\n\r\n // 设置底部和右侧浮动对象不允许改变大小、不允许拖动和设置浮动对象的内容\r\n floatBottom.allowResize(false);\r\n floatBottom.allowMove(false);\r\n floatBottom.content(divBottom);\r\n floatRight.allowResize(false);\r\n floatRight.allowMove(false);\r\n floatRight.content(divRight);\r\n\r\n // 将浮动元素添加到工作表中\r\n sheet.floatingObjects.add(floatBottom);\r\n sheet.floatingObjects.add(floatRight);\r\n },\r\n\r\n /**\r\n * 设置当前活动工作表的水印和数据绑定是否显示\r\n * @param spread 工作簿实例\r\n * @param cells 数据绑定单元格配置集合([{ row: number; col: number; title: string; pathPrev: string; pathField: string }])\r\n * @param isShow 是否显示\r\n */\r\n setActiveSheetWatermark: (spread: any, cells: CellWatermarkModel[], isShow: boolean) => {\r\n if (cells == null || cells == undefined) {\r\n return;\r\n }\r\n\r\n const sheet = spread.getActiveSheet();\r\n\r\n // 暂停绘制\r\n sheet.suspendPaint();\r\n\r\n cells.forEach((cell: CellWatermarkModel) => {\r\n // 设置或移除水印标签\r\n sheet.getCell(cell.row, cell.col).watermark(isShow ? `{${cell.title}}` : undefined);\r\n\r\n // 设置或移除绑定路径\r\n sheet.setBindingPath(cell.row, cell.col, isShow ? `${cell.pathPrev}.${cell.pathField}` : undefined);\r\n });\r\n\r\n // 恢复绘制\r\n sheet.resumePaint();\r\n },\r\n\r\n /**\r\n\t * 设置某工作表中单元格为日期选择控件\r\n\t * @param GC GC对象\r\n\t * @param sheet 工作表实例\r\n\t * @param cells 单元格集合,格式如:[{\r\n\t\t\tdateFormat: 'yyyy-MM-dd',\r\n\t\t\trow: 0,\r\n\t\t\tcol: 0\r\n\t\t}]\r\n\t * @param isAutoSize 是否自适应单元格大小(默认为:true)\r\n\t */\r\n setSheetCellDate: (GC: any, sheet: any, cells: CellDateModel[], isAutoSize: boolean = true) => {\r\n cells.forEach((item, index) => {\r\n // 先获取单元格样式,否则设置控件后样式会丢失\r\n let cellStyle = sheet.getStyle(item.row, item.col);\r\n if (!cellStyle) {\r\n cellStyle = new GC.Spread.Sheets.Style();\r\n }\r\n\r\n cellStyle.cellButtons = [\r\n {\r\n imageType: GC.Spread.Sheets.ButtonImageType.dropdown,\r\n command: 'openDateTimePicker',\r\n // 按钮宽度\r\n // width: 10,\r\n },\r\n ];\r\n cellStyle.dropDowns = [\r\n {\r\n type: GC.Spread.Sheets.DropDownType.dateTimePicker,\r\n option: {\r\n showTime: false,\r\n showDateRange: false,\r\n },\r\n },\r\n ];\r\n cellStyle.formatter = item.dateFormat;\r\n\r\n // 是否缩小以适应\r\n cellStyle.shrinkToFit = isAutoSize;\r\n\r\n // 设置单元格样式\r\n sheet.setStyle(item.row, item.col, cellStyle);\r\n });\r\n },\r\n};\r\n","import { chunkJson } from 'rapid-utils';\r\nimport { TestObjectAttrModel } from '../types/business';\r\nimport { SheetUtils } from '../utils/sheet';\r\n\r\n/**\r\n * SpreadJS业务相关工具函数属性\r\n */\r\nexport const BusinessUtils = {\r\n /**\r\n * 创建检测对象属性单元格\r\n * @param gc GC对象\r\n * @param sheet 工作表实例\r\n * @param testObjectAttrs 检测对象属性配置集合\r\n * @param isVertical 是否为纵表,默认为:true\r\n * @param contentColStartIndex 表格内容列起始索引,默认为:1\r\n * @param contentTotalColCount 表格内容列总数,默认为:77\r\n * @param addRowHeight 添加的表格行高,默认为:24\r\n */\r\n createTestObjectAttrsCells: (\r\n gc: any,\r\n sheet: any,\r\n testObjectAttrs: TestObjectAttrModel[],\r\n isVertical: boolean = true,\r\n contentColStartIndex: number = 1,\r\n contentTotalColCount: number = 77,\r\n addRowHeight: number = 24\r\n ) => {\r\n if (!testObjectAttrs || testObjectAttrs.length === 0) {\r\n return;\r\n }\r\n\r\n // 标题单元格列数量(纵表为12列,横表待定)\r\n const titleCellColumnCount = isVertical ? 12 : 10;\r\n // 标题对应的值单元格列数量(纵表:第一个值单元格为26、第二个值单元格为27,纵表待定)\r\n const titleCellValColumnCount = isVertical ? 26 : 15;\r\n\r\n // 一行中检测对象属性的个数(纵表为2个,横表为3个)\r\n const rowTestObjectCount = isVertical ? 2 : 3;\r\n\r\n // 将测试对象属性数据进行分块\r\n const testObjectAttrsChunk = chunkJson(testObjectAttrs, rowTestObjectCount);\r\n\r\n // 暂停绘制\r\n sheet.suspendPaint();\r\n\r\n // 设置工作表行数为0\r\n sheet.setRowCount(0);\r\n\r\n for (let i = 0; i < testObjectAttrsChunk.length; i++) {\r\n const rowAttrArr = testObjectAttrsChunk[i] as TestObjectAttrModel[];\r\n\r\n // 获取总行数\r\n const totalRowCount: number = sheet.getRowCount();\r\n\r\n // 添加一行\r\n sheet.addRows(totalRowCount, 1);\r\n\r\n // 设置添加这一行的行高\r\n sheet.setRowHeight(totalRowCount, addRowHeight, gc.Spread.Sheets.SheetArea.viewport);\r\n\r\n // 获取添加这一行的区域范围\r\n const addRowRange = sheet.getRange(totalRowCount, 1, contentColStartIndex, contentTotalColCount, gc.Spread.Sheets.SheetArea.viewport);\r\n // 设置添加这一行区域中的边框样式(最左边和最后边边框样式为粗线、中间的为细边框样式)\r\n addRowRange.setBorder(new gc.Spread.Sheets.LineBorder('#000', gc.Spread.Sheets.LineStyle.thin), { all: true });\r\n addRowRange.setBorder(new gc.Spread.Sheets.LineBorder('#000', gc.Spread.Sheets.LineStyle.medium), { left: true });\r\n addRowRange.setBorder(new gc.Spread.Sheets.LineBorder('#000', gc.Spread.Sheets.LineStyle.medium), { right: true });\r\n // 设置单元格水平和垂直居中\r\n addRowRange.hAlign(gc.Spread.Sheets.HorizontalAlign.center);\r\n addRowRange.vAlign(gc.Spread.Sheets.HorizontalAlign.center);\r\n\r\n // 合并第一个属性的标题列和值列,同时设置对应单元格的内容\r\n sheet.addSpan(totalRowCount, contentColStartIndex, 1, titleCellColumnCount, gc.Spread.Sheets.SheetArea.viewport);\r\n sheet.addSpan(\r\n totalRowCount,\r\n contentColStartIndex + titleCellColumnCount,\r\n 1,\r\n rowAttrArr.length > 1 ? titleCellValColumnCount : contentTotalColCount - titleCellColumnCount,\r\n gc.Spread.Sheets.SheetArea.viewport\r\n );\r\n sheet.setValue(totalRowCount, contentColStartIndex, rowAttrArr[0].title);\r\n sheet.setValue(totalRowCount, contentColStartIndex + titleCellColumnCount, rowAttrArr[0].value);\r\n\r\n // 合并第二个属性的标题列和值列,同时设置对应单元格的内容\r\n if (rowAttrArr.length > 1) {\r\n const colIndexTitle = contentColStartIndex + titleCellColumnCount + titleCellValColumnCount;\r\n const colIndexValue = colIndexTitle + titleCellColumnCount;\r\n\r\n sheet.addSpan(totalRowCount, colIndexTitle, 1, titleCellColumnCount, gc.Spread.Sheets.SheetArea.viewport);\r\n sheet.addSpan(\r\n totalRowCount,\r\n colIndexValue,\r\n 1,\r\n titleCellValColumnCount + 1 + (!isVertical && rowAttrArr.length == 2 ? titleCellColumnCount + titleCellValColumnCount + 1 : 0),\r\n gc.Spread.Sheets.SheetArea.viewport\r\n );\r\n sheet.setValue(totalRowCount, colIndexTitle, rowAttrArr[1].title);\r\n sheet.setValue(totalRowCount, colIndexValue, rowAttrArr[1].value);\r\n }\r\n // 合并第三个属性的标题列和值列,同时设置对应单元格的内容\r\n if (rowAttrArr.length > 2) {\r\n const colIndexTitle =\r\n contentColStartIndex + titleCellColumnCount + titleCellValColumnCount + titleCellColumnCount + titleCellValColumnCount + 1;\r\n const colIndexValue = colIndexTitle + titleCellColumnCount;\r\n\r\n sheet.addSpan(totalRowCount, colIndexTitle, 1, titleCellColumnCount, gc.Spread.Sheets.SheetArea.viewport);\r\n sheet.addSpan(totalRowCount, colIndexValue, 1, titleCellValColumnCount + 1, gc.Spread.Sheets.SheetArea.viewport);\r\n sheet.setValue(totalRowCount, colIndexTitle, rowAttrArr[2].title);\r\n sheet.setValue(totalRowCount, colIndexValue, rowAttrArr[2].value);\r\n }\r\n }\r\n\r\n // 恢复绘制\r\n sheet.resumePaint();\r\n },\r\n /**\r\n * 获取检测对象属性值集合\r\n * @param sheet 工作表实例\r\n * @param testObjectAttrs 检测对象属性配置集合\r\n * @param isVertical 是否为纵表,默认为:true\r\n * @param contentColStartIndex 表格内容列起始索引,默认为:1\r\n * @param contentTotalColCount 表格内容列总数,默认为:77\r\n */\r\n getTestObjectAttrsVals: (\r\n sheet: any,\r\n testObjectAttrs: TestObjectAttrModel[],\r\n isVertical: boolean = true,\r\n contentColStartIndex: number = 1,\r\n contentTotalColCount: number = 77\r\n ): TestObjectAttrModel[] => {\r\n // 一行中检测对象属性的个数(纵表为2个,横表为3个)\r\n const rowTestObjectCount = isVertical ? 2 : 3;\r\n\r\n // 将测试对象属性数据进行分块\r\n const testObjectAttrsChunk = chunkJson(testObjectAttrs, rowTestObjectCount);\r\n\r\n // 暂停绘制\r\n sheet.suspendPaint();\r\n\r\n // 所有单元格对象\r\n const allCells = SheetUtils.getAllCellObjsByRange(sheet, {\r\n row: 0,\r\n col: contentColStartIndex,\r\n rowCount: sheet.getRowCount(),\r\n colCount: contentTotalColCount,\r\n });\r\n // 将所有单元格对象进行分块\r\n const allCellsChunk = chunkJson(allCells, rowTestObjectCount * 2);\r\n\r\n // 将所有单元格对象按照testObjectAttrsChunk的结构进行组合\r\n const newAllCellsChunk = [];\r\n for (let i = 0; i < allCellsChunk.length; i++) {\r\n newAllCellsChunk.push(chunkJson(allCellsChunk[i], 2));\r\n }\r\n\r\n let retData: TestObjectAttrModel[] = [];\r\n\r\n for (let i = 0; i < testObjectAttrsChunk.length; i++) {\r\n const attrObjs = testObjectAttrsChunk[i] as TestObjectAttrModel[];\r\n\r\n for (let j = 0; j < attrObjs.length; j++) {\r\n const attrObj = attrObjs[j];\r\n\r\n retData.push({\r\n title: sheet.getValue(newAllCellsChunk[i][j][0].row, newAllCellsChunk[i][j][0].col), //attrObj.title,\r\n fieldName: attrObj.fieldName,\r\n value: sheet.getValue(newAllCellsChunk[i][j][1].row, newAllCellsChunk[i][j][1].col),\r\n });\r\n }\r\n }\r\n\r\n // 恢复绘制\r\n sheet.resumePaint();\r\n\r\n return retData;\r\n },\r\n};\r\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","/**\r\n * 公用工具函数属性\r\n */\r\nexport const CommonUtils = {\r\n /**\r\n * 获取文件的字节流对象\r\n * @param fileUrl 在线文件地址\r\n * @returns 文件的字节流对象\r\n */\r\n getFileBlob: async (fileUrl: string): Promise<Blob> | null => {\r\n // 获取文件响应结果\r\n const response = await fetch(fileUrl, { method: 'GET' });\r\n\r\n // 获取成功\r\n if (response.ok) {\r\n // 文件的字节流对象\r\n const blob = await response.blob();\r\n\r\n return blob;\r\n } else {\r\n return null;\r\n }\r\n },\r\n\r\n /**\r\n * 获取列的英文字母\r\n * @param colIndex 列的索引\r\n * @returns 返回英文字母\r\n */\r\n getColLetterName: (colIndex: number): string => {\r\n colIndex += 1;\r\n\r\n let letter = '';\r\n while (colIndex > 0) {\r\n const remainder = (colIndex - 1) % 26;\r\n letter = String.fromCharCode(remainder + 65) + letter;\r\n colIndex = Math.floor((colIndex - 1) / 26);\r\n }\r\n\r\n return letter.toUpperCase();\r\n },\r\n};\r\n","import * as math from 'mathjs';\r\nimport { type EChartsUtilsConfigModel } from '../types/echarts';\r\n\r\n/**\r\n * 公用方法,如:修约计算等\r\n */\r\nconst EChartsUtilsComm = {\r\n /**\r\n * 计算常规修约\r\n * @param roundingVal 修约值\r\n * @param accuracy 修约精度\r\n * @return 返回修约结果\r\n */\r\n getRound: (roundingVal, accuracy) => {\r\n // 验证修约的值是否为负数,为负数的话,取绝对值进行修约\r\n const valIsNegative = roundingVal < 0;\r\n if (valIsNegative) {\r\n roundingVal = Math.abs(roundingVal);\r\n }\r\n\r\n // 修约精度为0的时候\r\n if (accuracy == 0) {\r\n // 得到字符串形式\r\n let inputValStr = roundingVal.toString();\r\n\r\n // 判断是否有小数点,没有则直接返回换算后的修约值\r\n if (inputValStr.indexOf('.') == -1) {\r\n return valIsNegative ? -roundingVal : roundingVal;\r\n }\r\n\r\n // 获取整数数字部分和小数部分字符串\r\n let intVal = parseInt(inputValStr.split('.')[0]);\r\n let decimalStr = inputValStr.split('.')[1];\r\n\r\n // 小数部分大于或等于0.5的话,就给整数部分加1后返回,否则返回整数部分\r\n if (parseFloat(`0.${decimalStr}`) >= 0.5) {\r\n return valIsNegative ? -(intVal + 1) : intVal + 1;\r\n } else {\r\n return valIsNegative ? -intVal : intVal;\r\n }\r\n }\r\n\r\n // 系数\r\n let coefficient = 1 / accuracy;\r\n\r\n // 换算后的修约值(=修约值*系数)\r\n // 注意:此处使用到了toFixed,目的是可能会存在精度的问题\r\n let roundingValCal = Number((roundingVal * coefficient).toFixed(8));\r\n\r\n /**\r\n * 计算修约结果函数\r\n * @param inputVal 换算后的修约值\r\n * @returns 返回修约结果\r\n */\r\n const calcRoundingRet = (inputVal: number): number => {\r\n // 得到字符串形式\r\n let inputValStr = inputVal.toString();\r\n\r\n // 判断是否有小数点,没有则直接返回换算后的修约值\r\n if (inputValStr.indexOf('.') == -1) {\r\n return inputVal;\r\n }\r\n\r\n // 获取整数数字部分和小数部分字符串\r\n let intVal = parseInt(inputValStr.split('.')[0]);\r\n let decimalStr = inputValStr.split('.')[1];\r\n\r\n // 获取小数部分的第一位数字\r\n let decimalStrFirst = parseInt(decimalStr.substring(0, 1));\r\n\r\n // 大于等于6的时候,入\r\n if (decimalStrFirst >= 6) {\r\n return intVal + 1;\r\n }\r\n // 小于等于4的时候,舍\r\n else if (decimalStrFirst <= 4) {\r\n return intVal;\r\n }\r\n\r\n // 小数部分为5,并且只有一位小数的时候,前面的整数部分如果是奇数则入,反之则舍\r\n else if (decimalStrFirst == 5 && decimalStr.length == 1) {\r\n return intVal % 2 != 0 ? intVal + 1 : intVal;\r\n }\r\n\r\n // 小数部分为5,并且小数位数大于一位的时候,则入\r\n else if (decimalStrFirst == 5 && decimalStr.length > 1) {\r\n return intVal + 1;\r\n }\r\n\r\n return inputVal;\r\n };\r\n\r\n // 返回最终修约结果(=修约结果/系数)\r\n const retNum = calcRoundingRet(roundingValCal) / coefficient;\r\n\r\n //获取修约精度中的小数位数\r\n let accuracyStr = accuracy + '';\r\n\r\n // 如果修约精度中没有小数,则直接返回\r\n if (accuracyStr.indexOf('.') == -1) {\r\n return valIsNegative ? -retNum : retNum;\r\n } else {\r\n const retNumStr = retNum + '';\r\n\r\n // 补位的0的字符串\r\n let zeroStr = '';\r\n\r\n // 结果为整数的时候,需要补充小数点后面的小数位数为0,如:34→34.0\r\n if (retNumStr.indexOf('.') == -1) {\r\n let zeroStr = '';\r\n for (let index = 0; index < accuracyStr.split('.')[1].length; index++) {\r\n zeroStr += '0';\r\n }\r\n\r\n return (valIsNegative ? '-' : '') + `${retNum}.${zeroStr}`;\r\n }\r\n // 结果为小数的时候,需要补充修约精度的位数,如:0.3修约精度为0.01,则最终应该返回0.30\r\n else {\r\n const xsPart = retNumStr.split('.')[1];\r\n\r\n if (accuracyStr.split('.')[1].length > xsPart.length) {\r\n for (let index = 0; index < accuracyStr.split('.')[1].length - xsPart.length; index++) {\r\n zeroStr += '0';\r\n }\r\n }\r\n\r\n return (valIsNegative ? '-' : '') + `${retNum}${zeroStr}`;\r\n }\r\n }\r\n },\r\n /**\r\n * 实现Excel中TREND(返回线性回归拟合线的一组纵坐标值[y值])公式的计算\r\n * @param x x轴数据集合\r\n * @param y y轴数据集合\r\n * @param xVal x轴的值\r\n * @returns\r\n */\r\n calcTrend: (x: Array<number>, y: Array<number>, xVal: number) => {\r\n let n = x.length;\r\n let sumX = 0,\r\n sumY = 0,\r\n sumXY = 0,\r\n sumXX = 0;\r\n for (let i = 0; i < n; i++) {\r\n sumX += x[i];\r\n sumY += y[i];\r\n sumXY += x[i] * y[i];\r\n sumXX += x[i] * x[i];\r\n }\r\n let slope = (n * sumXY - sumX * sumY) / (n * sumXX - sumX * sumX);\r\n let intercept = (sumY - slope * sumX) / n;\r\n\r\n let predictedY = slope * xVal + intercept;\r\n\r\n if (slope + '' == 'NaN') {\r\n return { y: '', gs: '', xl: '', jj: '' };\r\n }\r\n\r\n //返回y轴趋势数据,以及公式\r\n return { y: predictedY, gs: `${slope}*x+${intercept}`, xl: slope, jj: intercept };\r\n },\r\n /**\r\n * 过滤掉数组中的null、空字符串或/符号等,并返回新的数组\r\n * @param dataSource 原始数组\r\n */\r\n filterNullEmptyErrArray: (dataSource: Array<any>) => {\r\n let retArr = dataSource.filter((item) => item != null && item != undefined && (item._error == null || item._error == undefined) && item != '/');\r\n\r\n return retArr;\r\n },\r\n};\r\n\r\n/**\r\n * 所有统计图表的ECharts配置\r\n */\r\nexport const EChartsUtilsAll = {\r\n /**\r\n * 沥青混合料-目标配合比设计-毛体积密度\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart10: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineJson = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n let xDataSource = xDataArr[0],\r\n yDataSource = yDataArr[0];\r\n\r\n // 原始数据\r\n let dxsJs = chartExtJson != null ? chartExtJson.dxsJs : 5,\r\n xData: any[] = [],\r\n yData: any[] = [];\r\n\r\n // 处理原始数据为空的值,不然参与mathjs计算会报错\r\n xDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n xData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n xData.push(item);\r\n }\r\n }\r\n });\r\n yDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n yData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n yData.push(item);\r\n }\r\n }\r\n });\r\n\r\n // y轴没有任何数据的时候,不参与绘制图表\r\n if (yData.length == 0) {\r\n return;\r\n }\r\n\r\n // 检查x轴的数据有多少个0,大于1个的时候,就不绘制图形\r\n let zeroCount = 0;\r\n xData.forEach((item) => {\r\n if (item == 0) {\r\n zeroCount++;\r\n }\r\n });\r\n // if (zeroCount > 1) {\r\n // \treturn;\r\n // }\r\n\r\n if (dxsJs >= yData.length) {\r\n dxsJs = yData.length - 1;\r\n }\r\n\r\n let xMin = Math.min(...xData),\r\n xMax = Math.max(...xData),\r\n yMin = Math.min(...yData),\r\n yMax = Math.max(...yData),\r\n /*xAxisMax = 5.5,\r\n xAxisMin = 3.5,\r\n yAxisMax = 2.35,\r\n yAxisMin = 2.25,\r\n */\r\n xAxisMax = xMax,\r\n xAxisMin = xMin,\r\n yAxisMax = Number(EChartsUtilsComm.getRound(yMax + 0.05, 0.01)),\r\n yAxisMin = Number(EChartsUtilsComm.getRound(yMin - 0.05, 0.01)),\r\n seriesData = [],\r\n upperLimit = null, // 上限\r\n lowerLimit = null,\r\n showLine = true; // 是否显示辅助线\r\n\r\n let points: any = [];\r\n xData.forEach((item, index) => {\r\n points.push([item, yData[index]]);\r\n });\r\n\r\n // 构造范德蒙德矩阵的函数\r\n function vandermondeMatrix(x, N) {\r\n const matrix = [];\r\n for (let i = 0; i < x.length; i++) {\r\n const row = [];\r\n for (let j = 0; j <= N; j++) {\r\n // 注意这里从0到N,包含N\r\n row.push(math.pow(x[i], j));\r\n }\r\n matrix.push(row);\r\n }\r\n return math.matrix(matrix);\r\n }\r\n\r\n // 构造原始的范德蒙德矩阵\r\n const vandermonde_matrix = vandermondeMatrix(xData, dxsJs); // 注意这里N=4,因为我们从0开始计数\r\n\r\n // 使用最小二乘法求解\r\n const A = vandermonde_matrix;\r\n const AT = math.transpose(A);\r\n const ATA = math.multiply(AT, A);\r\n const ATb = math.multiply(AT, math.matrix(yData));\r\n\r\n // 解线性方程组\r\n // const result = math.lusolve(ATA, ATb);\r\n // const coefficients = result.valueOf();\r\n\r\n let result: any = null,\r\n coefficients: any = [];\r\n try {\r\n result = math.lusolve(ATA, ATb);\r\n coefficients = result.valueOf();\r\n } catch (err) {\r\n for (let index = 0; index < xData.length; index++) {\r\n coefficients.push([0]);\r\n }\r\n console.log('无法解决该线性系统');\r\n }\r\n\r\n function funequation(x) {\r\n let y = 0;\r\n coefficients.forEach((item, index) => {\r\n //fx^0\r\n //fx^0+ax^1\r\n //fx^0+ax^1+bx^2\r\n //fx^0+ax^1+bx^2+cx^3\r\n //fx^0+x^1+x^2+x^3+x^4\r\n y += item * x ** index;\r\n });\r\n return y;\r\n }\r\n // console.log('计算公式:', coefficients);\r\n\r\n function lagrangeInterpolation(points, x) {\r\n let result = 0;\r\n for (let i = 0; i < points.length; i++) {\r\n let term = points[i][1];\r\n let xi = points[i][0];\r\n for (let j = 0; j < points.length; j++) {\r\n if (j !== i) {\r\n let xj = points[j][0];\r\n term *= (x - xj) / (xi - xj);\r\n }\r\n }\r\n result += term;\r\n }\r\n return result;\r\n }\r\n let arrX = [];\r\n let arrY = [];\r\n for (let i = xMin; i <= xMax; i += 0.01) {\r\n let temp = Number(EChartsUtilsComm.getRound(i, 0.01));\r\n //arrY.push(lagrangeInterpolation(points, temp));\r\n arrY.push(funequation(temp));\r\n arrX.push(temp);\r\n }\r\n let max = Math.max(...arrY);\r\n\r\n // 找到最大值的索引\r\n let maxIndex = arrY.findIndex((value) => value === max);\r\n\r\n // console.log('最大点数据:', arrX[maxIndex], max);\r\n\r\n let title = '', // config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n arrX.forEach((item, index) => {\r\n if (xData.includes(item)) {\r\n seriesData.push({ value: [item, arrY[index]] });\r\n } else {\r\n seriesData.push({\r\n value: [item, arrY[index]],\r\n symbol: 'none',\r\n });\r\n }\r\n });\r\n // 计算峰值\r\n const peakvalue = [arrX[maxIndex], Number(EChartsUtilsComm.getRound(max, 0.001))],\r\n coordX = [peakvalue[0], yAxisMin];\r\n\r\n // console.log('x范围:', xMin, xMax);\r\n // 输出开始和结束范围\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlKs != null && chartExtJson.lqhhlKs != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlKs.row, chartExtJson.lqhhlKs.col, xMin);\r\n sheet.setValue(chartExtJson.lqhhlJs.row, chartExtJson.lqhhlJs.col, xMax);\r\n }\r\n if (chartExtJson.lqhhlSc1 != null && chartExtJson.lqhhlSc1 != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlSc1.row, chartExtJson.lqhhlSc1.col, arrX[maxIndex]);\r\n }\r\n }\r\n\r\n let lineData = [];\r\n let pointData = [];\r\n if (showLine) {\r\n lineData = [\r\n [\r\n {\r\n coord: coordX,\r\n lineStyle: {\r\n color: '#333', // X轴\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: peakvalue,\r\n },\r\n ],\r\n ];\r\n pointData = [\r\n {\r\n xAxis: peakvalue[0],\r\n yAxis: peakvalue[1],\r\n symbolOffset: [0, 15],\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n if (Number(data.data.xAxis) == 0 && Number(data.data.yAxis) == 0) {\r\n return '';\r\n } else {\r\n return '( ' + data.data.xAxis + ',' + data.data.yAxis + ')';\r\n }\r\n //return '( ' + data.data.xAxis + ',' + data.data.yAxis + ')';\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n },\r\n {\r\n xAxis: peakvalue[0],\r\n yAxis: yAxisMin,\r\n symbolOffset: [0, 40],\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n return 'a1';\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n },\r\n ];\r\n }\r\n\r\n // 判断数据是否为/\r\n let yValIsAllNull = false;\r\n seriesData.forEach((item) => {\r\n yValIsAllNull = item.value.every((ele) => {\r\n return ele == 0;\r\n });\r\n });\r\n if (yValIsAllNull) {\r\n xAxisMin = null;\r\n xAxisMax = null;\r\n yAxisMin = null;\r\n yAxisMax = null;\r\n seriesData = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,// 是否显示外边框线\r\n // borderColor: '#f00',// 外边框线颜色\r\n top: 10,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: !yValIsAllNull ? 16 : 20,\r\n containLabel: true,\r\n },\r\n // 提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n //console.log(datas,\" datas\")\r\n return datas && datas.length > 0\r\n ? datas[0].seriesName + '(' + datas[0].value[0] + ')' + ':' + Number(EChartsUtilsComm.getRound(datas[0].value[1], 0.001))\r\n : datas[0].data;\r\n },\r\n },\r\n // 顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n // 图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, // 显示\r\n },\r\n selectedMode: 'multiple', // 用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n max: xAxisMax,\r\n min: xAxisMin,\r\n data: xData,\r\n axisTick: {\r\n alignWithLabel: true, // 使得刻度线和标签对齐\r\n },\r\n splitLine: { show: true },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n max: yAxisMax,\r\n min: yAxisMin,\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 40 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', // '#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n // splitNumber: 10, // 设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n // 设置y轴箭头效果\r\n show: true, // y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, // 平滑的线条\r\n // 设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', // 符号类型\r\n symbolSize: 6, // 符号大小 lineJson.lineColor\r\n // 线条的颜色\r\n lineStyle: {\r\n color: lineJson[0].lineColor,\r\n // 线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n // 线条上数据点的颜色\r\n itemStyle: {\r\n color: lineJson[0].lineColor,\r\n },\r\n data: seriesData,\r\n markPoint: {\r\n data: pointData,\r\n },\r\n markLine: {\r\n symbol: ['none', 'none'], // 去掉箭头\r\n itemStyle: {\r\n lineStyle: {\r\n type: 'solid',\r\n color: '#333',\r\n width: 2,\r\n },\r\n },\r\n data: lineData,\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 沥青混合料-目标配合比设计-稳定度\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart11: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineJson = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n let xDataSource = xDataArr[0],\r\n yDataSource = yDataArr[0];\r\n\r\n // 原始数据\r\n let dxsJs = chartExtJson != null ? chartExtJson.dxsJs : 5,\r\n xData = [],\r\n yData = [];\r\n\r\n // 处理原始数据为空的值,不然参与mathjs计算会报错\r\n xDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n xData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n xData.push(item);\r\n }\r\n }\r\n });\r\n yDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n yData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n yData.push(item);\r\n }\r\n }\r\n });\r\n\r\n // y轴没有任何数据的时候,不参与绘制图表\r\n if (yData.length == 0) {\r\n return;\r\n }\r\n\r\n // 检查x轴的数据有多少个0,大于1个的时候,就不绘制图形\r\n let zeroCount = 0;\r\n xData.forEach((item) => {\r\n if (item == 0) {\r\n zeroCount++;\r\n }\r\n });\r\n // if (zeroCount > 1) {\r\n // \treturn;\r\n // }\r\n\r\n if (dxsJs >= yData.length) {\r\n dxsJs = yData.length - 1;\r\n }\r\n\r\n let xMin = Math.min(...xData),\r\n xMax = Math.max(...xData),\r\n yMin = Math.min(...yData),\r\n yMax = Math.max(...yData),\r\n xAxisMax = xMax,\r\n xAxisMin = xMin,\r\n yAxisMax = Math.ceil(yMax + 2),\r\n yAxisMin = Math.floor(yMin - 2),\r\n seriesData = [],\r\n upperLimit = null, // 上限\r\n lowerLimit = 7.5, // 下限\r\n showLine = true; // 是否显示辅助线\r\n\r\n // 获取单元格中的上限和下限\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlSx != null && chartExtJson.lqhhlSx != undefined) {\r\n const curVal = sheet.getValue(chartExtJson.lqhhlSx.row, chartExtJson.lqhhlSx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curVal)) {\r\n upperLimit = curVal;\r\n }\r\n }\r\n if (chartExtJson.lqhhlXx != null && chartExtJson.lqhhlXx != undefined) {\r\n const curVal = sheet.getValue(chartExtJson.lqhhlXx.row, chartExtJson.lqhhlXx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curVal)) {\r\n lowerLimit = curVal;\r\n }\r\n }\r\n }\r\n\r\n if (upperLimit != null && upperLimit > yAxisMax) {\r\n yAxisMax = upperLimit + 2;\r\n }\r\n if (lowerLimit != null && lowerLimit > yAxisMax) {\r\n yAxisMin = lowerLimit - 2;\r\n }\r\n\r\n let points = [];\r\n xData.forEach((item, index) => {\r\n points.push([item, yData[index]]);\r\n });\r\n\r\n // 构造范德蒙德矩阵的函数\r\n function vandermondeMatrix(x, N) {\r\n const matrix = [];\r\n for (let i = 0; i < x.length; i++) {\r\n const row = [];\r\n for (let j = 0; j <= N; j++) {\r\n // 注意这里从0到N,包含N\r\n row.push(math.pow(x[i], j));\r\n }\r\n matrix.push(row);\r\n }\r\n return math.matrix(matrix);\r\n }\r\n\r\n // 构造原始的范德蒙德矩阵\r\n const vandermonde_matrix = vandermondeMatrix(xData, dxsJs); // 注意这里N=4,因为我们从0开始计数\r\n\r\n // 使用最小二乘法求解\r\n const A = vandermonde_matrix;\r\n const AT = math.transpose(A);\r\n const ATA = math.multiply(AT, A);\r\n const ATb = math.multiply(AT, math.matrix(yData));\r\n\r\n // 解线性方程组\r\n // const result = math.lusolve(ATA, ATb);\r\n // const coefficients = result.valueOf();\r\n\r\n let result: any = null,\r\n coefficients: any = [];\r\n try {\r\n result = math.lusolve(ATA, ATb);\r\n coefficients = result.valueOf();\r\n } catch (err) {\r\n for (let index = 0; index < xData.length; index++) {\r\n coefficients.push([0]);\r\n }\r\n console.log('无法解决该线性系统');\r\n }\r\n\r\n function funequation(x) {\r\n let y = 0;\r\n coefficients.forEach((item, index) => {\r\n //fx^0\r\n //fx^0+ax^1\r\n //fx^0+ax^1+bx^2\r\n //fx^0+ax^1+bx^2+cx^3\r\n //fx^0+x^1+x^2+x^3+x^4\r\n y += item * x ** index;\r\n });\r\n return y;\r\n }\r\n\r\n // console.log('计算公式:', coefficients);\r\n\r\n function lagrangeInterpolation(points, x) {\r\n let result = 0;\r\n for (let i = 0; i < points.length; i++) {\r\n let term = points[i][1];\r\n let xi = points[i][0];\r\n for (let j = 0; j < points.length; j++) {\r\n if (j !== i) {\r\n let xj = points[j][0];\r\n term *= (x - xj) / (xi - xj);\r\n }\r\n }\r\n result += term;\r\n }\r\n return result;\r\n }\r\n let arrX = [];\r\n let arrY = [];\r\n for (let i = xMin; i <= xMax; i += 0.01) {\r\n let temp = Number(EChartsUtilsComm.getRound(i, 0.01));\r\n // arrY.push(lagrangeInterpolation(points, temp));\r\n arrY.push(funequation(temp));\r\n arrX.push(temp);\r\n }\r\n let max = Math.max(...arrY);\r\n\r\n // 找到最大值的索引\r\n let maxIndex = arrY.findIndex((value) => value === max);\r\n\r\n // console.log('最大点数据:', arrX[maxIndex], max);\r\n\r\n let title = '', // config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n arrX.forEach((item, index) => {\r\n if (xData.includes(item)) {\r\n seriesData.push({ value: [item, arrY[index]] });\r\n } else {\r\n seriesData.push({\r\n value: [item, arrY[index]],\r\n symbol: 'none',\r\n });\r\n }\r\n });\r\n\r\n // 计算两条线段是否有交点\r\n function ifHaveIntersectionPoint(y1, y2, y3, y4) {\r\n if ((y1 >= y3 && y2 <= y4) || (y1 <= y3 && y2 >= y4)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n // 获取两点和香交线最接近的点\r\n function getIntersectionPoint(y1, y2, y) {\r\n if (Math.abs(y1 - y) > Math.abs(y2 - y)) {\r\n return 0;\r\n }\r\n return -1;\r\n }\r\n let upperIntersectionPoint = [],\r\n lowerIntersectionPoint = [];\r\n let upperIntersectionPointTrend = []; // 上限交点趋势(向上相交(1) 还是向下相交(0))\r\n let lowerIntersectionPointTrend = []; // 下限交点趋势\r\n arrX.forEach((item, index) => {\r\n if (index > 0) {\r\n // 上限交点\r\n if (upperLimit != null) {\r\n if (ifHaveIntersectionPoint(arrY[index - 1], arrY[index], upperLimit, upperLimit)) {\r\n let index1 = getIntersectionPoint(arrY[index - 1], arrY[index], upperLimit);\r\n // console.log(arrX[index + index1], arrY[index + index1]);\r\n upperIntersectionPoint.push([arrX[index + index1], arrY[index + index1]]);\r\n if (arrY[index - 1] > arrY[index]) {\r\n // 向下趋势\r\n upperIntersectionPointTrend.push(0);\r\n } else {\r\n upperIntersectionPointTrend.push(1);\r\n }\r\n }\r\n }\r\n // 下限交点\r\n if (lowerLimit != null) {\r\n if (ifHaveIntersectionPoint(arrY[index - 1], arrY[index], lowerLimit, lowerLimit)) {\r\n let index1 = getIntersectionPoint(arrY[index - 1], arrY[index], lowerLimit);\r\n // console.log(arrX[index + index1], arrY[index + index1]);\r\n lowerIntersectionPoint.push([arrX[index + index1], arrY[index + index1]]);\r\n if (arrY[index - 1] > arrY[index]) {\r\n // 向下趋势\r\n lowerIntersectionPointTrend.push(0);\r\n } else {\r\n lowerIntersectionPointTrend.push(1);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n let validX1 = xMin,\r\n validX2 = xMax;\r\n if (upperIntersectionPoint.length == 0 && lowerIntersectionPoint.length > 0) {\r\n // 上限无交点,下限有交点\r\n if (lowerIntersectionPointTrend[0] == 0) {\r\n // 下限向下相交\r\n validX1 = xMin;\r\n validX2 = lowerIntersectionPoint[0][0];\r\n } else {\r\n // 下限向上相交\r\n validX1 = lowerIntersectionPoint[0][0];\r\n if (lowerIntersectionPoint.length == 1) {\r\n // 只有一个交点\r\n validX2 = xMax;\r\n } else {\r\n validX2 = lowerIntersectionPoint[1][0];\r\n }\r\n }\r\n } else if (upperIntersectionPoint.length > 0 && lowerIntersectionPoint.length == 0) {\r\n // 上限有交点,下限无交点\r\n if (upperIntersectionPointTrend[0] == 0) {\r\n // 上限向下相交\r\n validX1 = upperIntersectionPoint[0][0];\r\n if (upperIntersectionPoint.length == 1) {\r\n // 只有一个交点\r\n validX2 = xMax;\r\n } else {\r\n validX2 = upperIntersectionPoint[1][0];\r\n }\r\n } else {\r\n // 上限向上相交\r\n validX1 = xMin;\r\n validX2 = upperIntersectionPoint[0][0];\r\n }\r\n } else if (upperIntersectionPoint.length > 0 && lowerIntersectionPoint.length > 0) {\r\n // 上下限都有交点,情况太多,我们只取中间\r\n if (upperIntersectionPointTrend[0] == 0) {\r\n // 上限向下相交\r\n validX1 = upperIntersectionPoint[0][0];\r\n validX2 = lowerIntersectionPoint[0][0];\r\n } else {\r\n // 上限向上相交\r\n validX1 = lowerIntersectionPoint[0][0];\r\n validX2 = upperIntersectionPoint[0][0];\r\n }\r\n }\r\n\r\n // console.log('x范围:', validX1, validX2);\r\n // 输出开始和结束范围\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlKs != null && chartExtJson.lqhhlKs != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlKs.row, chartExtJson.lqhhlKs.col, validX1);\r\n sheet.setValue(chartExtJson.lqhhlJs.row, chartExtJson.lqhhlJs.col, validX2);\r\n }\r\n if (chartExtJson.lqhhlSc1 != null && chartExtJson.lqhhlSc1 != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlSc1.row, chartExtJson.lqhhlSc1.col, arrX[maxIndex]);\r\n }\r\n }\r\n\r\n // 峰值\r\n const peakvalue = [arrX[maxIndex], Number(EChartsUtilsComm.getRound(max, 0.001))];\r\n\r\n let lineData = [];\r\n let pointData = [];\r\n if (showLine) {\r\n lineData = [\r\n [\r\n {\r\n coord: [peakvalue[0], yAxisMin],\r\n lineStyle: {\r\n color: '#333', // X轴\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: peakvalue,\r\n },\r\n ],\r\n ];\r\n pointData = [\r\n {\r\n xAxis: peakvalue[0],\r\n yAxis: peakvalue[1],\r\n symbolOffset: [0, 15],\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n if (Number(data.data.xAxis) == 0 && Number(data.data.yAxis) == 0) {\r\n return '';\r\n } else {\r\n return '( ' + data.data.xAxis + ',' + data.data.yAxis + ')';\r\n }\r\n //return '( ' + data.data.xAxis + ',' + data.data.yAxis + ')';\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n },\r\n {\r\n xAxis: peakvalue[0],\r\n yAxis: yAxisMin,\r\n symbolOffset: [0, 40],\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n return 'a2';\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n },\r\n ];\r\n }\r\n\r\n if (upperLimit != null) {\r\n lineData.push([\r\n {\r\n coord: [xAxisMin, upperLimit],\r\n lineStyle: {\r\n color: '#333', //上限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [xAxisMax, upperLimit],\r\n },\r\n ]);\r\n }\r\n\r\n if (lowerLimit != null) {\r\n lineData.push([\r\n {\r\n coord: [xAxisMin, lowerLimit],\r\n lineStyle: {\r\n color: '#333', //下限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [xAxisMax, lowerLimit],\r\n },\r\n ]);\r\n }\r\n\r\n //判断数据是否为/\r\n let yValIsAllNull = false;\r\n seriesData.forEach((item) => {\r\n yValIsAllNull = item.value.every((ele) => {\r\n return ele == 0;\r\n });\r\n });\r\n if (yValIsAllNull) {\r\n xAxisMin = null;\r\n xAxisMax = null;\r\n yAxisMin = null;\r\n yAxisMax = null;\r\n seriesData = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 10,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: !yValIsAllNull ? 16 : 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n //console.log(datas,\" datas\")\r\n return datas && datas.length > 0\r\n ? datas[0].seriesName + '(' + datas[0].value[0] + ')' + ':' + Number(EChartsUtilsComm.getRound(datas[0].value[1], 0.001))\r\n : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n max: xAxisMax,\r\n min: xAxisMin,\r\n data: xData,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n splitLine: { show: true },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n max: yAxisMax,\r\n min: yAxisMin,\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineJson[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineJson[0].lineColor,\r\n },\r\n data: seriesData,\r\n markPoint: {\r\n data: pointData,\r\n },\r\n markLine: {\r\n symbol: ['none', 'none'], //去掉箭头\r\n itemStyle: {\r\n lineStyle: {\r\n type: 'solid',\r\n color: '#333',\r\n width: 2,\r\n },\r\n },\r\n data: lineData,\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 沥青混合料-目标配合比设计-空隙率\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart12: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineJson = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n let xDataSource = xDataArr[0], // [3.5, 4, 4.5, 5, 5.5],\r\n yDataSource = yDataArr[0]; // [8.8, 5.9, 4.1, 3.3, 2.6];\r\n\r\n //原始数据\r\n let dxsJs = chartExtJson != null ? chartExtJson.dxsJs : 5,\r\n xData = [],\r\n yData = [];\r\n\r\n //处理原始数据为空的值,不然参与mathjs计算会报错\r\n xDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n xData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n xData.push(item);\r\n }\r\n }\r\n });\r\n yDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n yData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n yData.push(item);\r\n }\r\n }\r\n });\r\n\r\n //y轴没有任何数据的时候,不参与绘制图表\r\n if (yData.length == 0) {\r\n return;\r\n }\r\n\r\n //检查x轴的数据有多少个0,大于1个的时候,就不绘制图形\r\n let zeroCount = 0;\r\n xData.forEach((item) => {\r\n if (item == 0) {\r\n zeroCount++;\r\n }\r\n });\r\n // if (zeroCount > 1) {\r\n // \treturn;\r\n // }\r\n\r\n if (dxsJs >= yData.length) {\r\n dxsJs = yData.length - 1;\r\n }\r\n\r\n let xMin = Math.min(...xData),\r\n xMax = Math.max(...xData),\r\n yMin = Math.min(...yData),\r\n yMax = Math.max(...yData),\r\n /*\r\n\t\t\txAxisMax = 5.5,\r\n xAxisMin = 3.5,\r\n yAxisMax = 10,\r\n yAxisMin = 0,\r\n\t\t\t*/\r\n xAxisMax = xMax,\r\n xAxisMin = xMin,\r\n yAxisMax = Math.ceil(yMax + 2),\r\n yAxisMin = Math.floor(yMin - 2),\r\n seriesData = [],\r\n upperLimit = 5, //上限\r\n lowerLimit = 3, //下限\r\n showLine = true; //是否显示辅助线\r\n\r\n //获取单元格中的上限和下限\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlSx != null && chartExtJson.lqhhlSx != undefined) {\r\n const curVal = sheet.getValue(chartExtJson.lqhhlSx.row, chartExtJson.lqhhlSx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curVal)) {\r\n upperLimit = curVal;\r\n }\r\n }\r\n if (chartExtJson.lqhhlXx != null && chartExtJson.lqhhlXx != undefined) {\r\n const curVal = sheet.getValue(chartExtJson.lqhhlXx.row, chartExtJson.lqhhlXx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curVal)) {\r\n lowerLimit = curVal;\r\n }\r\n }\r\n }\r\n\r\n if (upperLimit != null && upperLimit > yAxisMax) {\r\n yAxisMax = upperLimit + 2;\r\n }\r\n if (lowerLimit != null && lowerLimit > yAxisMax) {\r\n yAxisMin = lowerLimit - 2;\r\n }\r\n\r\n let points = [];\r\n xData.forEach((item, index) => {\r\n points.push([item, yData[index]]);\r\n });\r\n\r\n // 构造范德蒙德矩阵的函数\r\n function vandermondeMatrix(x, N) {\r\n const matrix = [];\r\n for (let i = 0; i < x.length; i++) {\r\n const row = [];\r\n for (let j = 0; j <= N; j++) {\r\n // 注意这里从0到N,包含N\r\n row.push(math.pow(x[i], j));\r\n }\r\n matrix.push(row);\r\n }\r\n return math.matrix(matrix);\r\n }\r\n\r\n // 构造原始的范德蒙德矩阵\r\n const vandermonde_matrix = vandermondeMatrix(xData, dxsJs); // 注意这里N=4,因为我们从0开始计数\r\n\r\n // 使用最小二乘法求解\r\n const A = vandermonde_matrix;\r\n const AT = math.transpose(A);\r\n const ATA = math.multiply(AT, A);\r\n const ATb = math.multiply(AT, math.matrix(yData));\r\n\r\n // 解线性方程组\r\n // const result = math.lusolve(ATA, ATb);\r\n // const coefficients = result.valueOf();\r\n let result: any = null,\r\n coefficients: any = [];\r\n try {\r\n result = math.lusolve(ATA, ATb);\r\n coefficients = result.valueOf();\r\n } catch (err) {\r\n for (let index = 0; index < xData.length; index++) {\r\n coefficients.push([0]);\r\n }\r\n console.log('无法解决该线性系统');\r\n }\r\n\r\n function funequation(x) {\r\n let y = 0;\r\n coefficients.forEach((item, index) => {\r\n //fx^0\r\n //fx^0+ax^1\r\n //fx^0+ax^1+bx^2\r\n //fx^0+ax^1+bx^2+cx^3\r\n //fx^0+x^1+x^2+x^3+x^4\r\n y += item * x ** index;\r\n });\r\n return y;\r\n }\r\n\r\n // console.log('计算公式:', coefficients);\r\n\r\n function lagrangeInterpolation(points, x) {\r\n let result = 0;\r\n for (let i = 0; i < points.length; i++) {\r\n let term = points[i][1];\r\n let xi = points[i][0];\r\n for (let j = 0; j < points.length; j++) {\r\n if (j !== i) {\r\n let xj = points[j][0];\r\n term *= (x - xj) / (xi - xj);\r\n }\r\n }\r\n result += term;\r\n }\r\n return result;\r\n }\r\n let arrX = [];\r\n let arrY = [];\r\n for (let i = xMin; i <= xMax; i += 0.01) {\r\n let temp = Number(EChartsUtilsComm.getRound(i, 0.01));\r\n //arrY.push(lagrangeInterpolation(points, temp));\r\n arrY.push(funequation(temp));\r\n arrX.push(temp);\r\n }\r\n\r\n let title = '', // config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //计算两条线段是否有交点\r\n function ifHaveIntersectionPoint(y1, y2, y3, y4) {\r\n if ((y1 >= y3 && y2 <= y4) || (y1 <= y3 && y2 >= y4)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n //获取两点和香交线最接近的点\r\n function getIntersectionPoint(y1, y2, y) {\r\n if (Math.abs(y1 - y) > Math.abs(y2 - y)) {\r\n return 0;\r\n }\r\n return -1;\r\n }\r\n let upperIntersectionPoint = [],\r\n lowerIntersectionPoint = [];\r\n let upperIntersectionPointTrend = []; //上限交点趋势(向上相交(1) 还是向下相交(0))\r\n let lowerIntersectionPointTrend = []; //下限交点趋势\r\n arrX.forEach((item, index) => {\r\n if (xData.includes(item)) {\r\n seriesData.push({ value: [item, arrY[index]] });\r\n } else {\r\n seriesData.push({\r\n value: [item, arrY[index]],\r\n symbol: 'none',\r\n });\r\n }\r\n if (index > 0) {\r\n //上限交点\r\n if (upperLimit != null) {\r\n if (ifHaveIntersectionPoint(arrY[index - 1], arrY[index], upperLimit, upperLimit)) {\r\n let index1 = getIntersectionPoint(arrY[index - 1], arrY[index], upperLimit);\r\n // console.log(arrX[index + index1], arrY[index + index1]);\r\n upperIntersectionPoint.push([arrX[index + index1], arrY[index + index1]]);\r\n if (arrY[index - 1] > arrY[index]) {\r\n //向下趋势\r\n upperIntersectionPointTrend.push(0);\r\n } else {\r\n upperIntersectionPointTrend.push(1);\r\n }\r\n }\r\n }\r\n //下限交点\r\n if (lowerLimit != null) {\r\n if (ifHaveIntersectionPoint(arrY[index - 1], arrY[index], lowerLimit, lowerLimit)) {\r\n let index1 = getIntersectionPoint(arrY[index - 1], arrY[index], lowerLimit);\r\n // console.log(arrX[index + index1], arrY[index + index1]);\r\n lowerIntersectionPoint.push([arrX[index + index1], arrY[index + index1]]);\r\n if (arrY[index - 1] > arrY[index]) {\r\n //向下趋势\r\n lowerIntersectionPointTrend.push(0);\r\n } else {\r\n lowerIntersectionPointTrend.push(1);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n let validX1 = xMin,\r\n validX2 = xMax;\r\n if (upperIntersectionPoint.length == 0 && lowerIntersectionPoint.length > 0) {\r\n //上限无交点,下限有交点\r\n if (lowerIntersectionPointTrend[0] == 0) {\r\n //下限向下相交\r\n validX1 = xMin;\r\n validX2 = lowerIntersectionPoint[0][0];\r\n } else {\r\n //下限向上相交\r\n validX1 = lowerIntersectionPoint[0][0];\r\n if (lowerIntersectionPoint.length == 1) {\r\n //只有一个交点\r\n validX2 = xMax;\r\n } else {\r\n validX2 = lowerIntersectionPoint[1][0];\r\n }\r\n }\r\n } else if (upperIntersectionPoint.length > 0 && lowerIntersectionPoint.length == 0) {\r\n //上限有交点,下限无交点\r\n if (upperIntersectionPointTrend[0] == 0) {\r\n //上限向下相交\r\n validX1 = upperIntersectionPoint[0][0];\r\n if (upperIntersectionPoint.length == 1) {\r\n //只有一个交点\r\n validX2 = xMax;\r\n } else {\r\n validX2 = upperIntersectionPoint[1][0];\r\n }\r\n } else {\r\n //上限向上相交\r\n validX1 = xMin;\r\n validX2 = upperIntersectionPoint[0][0];\r\n }\r\n } else if (upperIntersectionPoint.length > 0 && lowerIntersectionPoint.length > 0) {\r\n //上下限都有交点,情况太多,我们只取中间\r\n if (upperIntersectionPointTrend[0] == 0) {\r\n //上限向下相交\r\n validX1 = upperIntersectionPoint[0][0];\r\n validX2 = lowerIntersectionPoint[0][0];\r\n } else {\r\n //上限向上相交\r\n validX1 = lowerIntersectionPoint[0][0];\r\n validX2 = upperIntersectionPoint[0][0];\r\n }\r\n }\r\n\r\n // console.log('x范围:', validX1, validX2);\r\n //输出开始和结束范围\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlKs != null && chartExtJson.lqhhlKs != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlKs.row, chartExtJson.lqhhlKs.col, validX1);\r\n sheet.setValue(chartExtJson.lqhhlJs.row, chartExtJson.lqhhlJs.col, validX2);\r\n }\r\n }\r\n\r\n let lineData = [];\r\n let pointData = [];\r\n if (showLine) {\r\n if (upperIntersectionPoint.length > 0) {\r\n upperIntersectionPoint.forEach((item, index) => {\r\n lineData.push([\r\n {\r\n coord: [item[0], yAxisMin],\r\n lineStyle: {\r\n color: '#333', //上限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [item[0], upperLimit],\r\n },\r\n ]);\r\n });\r\n }\r\n if (lowerIntersectionPoint.length > 0) {\r\n lowerIntersectionPoint.forEach((item, index) => {\r\n lineData.push([\r\n {\r\n coord: [item[0], yAxisMin],\r\n lineStyle: {\r\n color: '#333', //下限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [item[0], lowerLimit],\r\n },\r\n ]);\r\n });\r\n }\r\n\r\n //上下线交点分别只有一个才求平均值\r\n if (upperIntersectionPoint.length == 1 && lowerIntersectionPoint.length == 1) {\r\n const avg = ((upperIntersectionPoint[0][0] + lowerIntersectionPoint[0][0]) / 2).toFixed(2);\r\n const avgXIndex = arrX.findIndex((n) => n == avg);\r\n // console.log('输出:', avg, avgXIndex);\r\n //输出\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlSc1 != null && chartExtJson.lqhhlSc1 != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlSc1.row, chartExtJson.lqhhlSc1.col, avg);\r\n }\r\n }\r\n lineData.push([\r\n {\r\n coord: [avg, yAxisMin],\r\n lineStyle: {\r\n color: '#333', //下限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [avg, arrY[avgXIndex]],\r\n },\r\n ]);\r\n pointData.push({\r\n xAxis: avg,\r\n yAxis: yAxisMin,\r\n symbolOffset: [0, 40],\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n return 'a3';\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n });\r\n }\r\n }\r\n\r\n if (upperLimit != null) {\r\n lineData.push([\r\n {\r\n coord: [xAxisMin, upperLimit],\r\n lineStyle: {\r\n color: '#333', //上限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [xAxisMax, upperLimit],\r\n },\r\n ]);\r\n }\r\n\r\n if (lowerLimit != null) {\r\n lineData.push([\r\n {\r\n coord: [xAxisMin, lowerLimit],\r\n lineStyle: {\r\n color: '#333', //下限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [xAxisMax, lowerLimit],\r\n },\r\n ]);\r\n }\r\n\r\n //判断数据是否为/\r\n let yValIsAllNull = false;\r\n seriesData.forEach((item) => {\r\n yValIsAllNull = item.value.every((ele) => {\r\n return ele == 0;\r\n });\r\n });\r\n if (yValIsAllNull) {\r\n xAxisMin = null;\r\n xAxisMax = null;\r\n yAxisMin = null;\r\n yAxisMax = null;\r\n seriesData = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 10,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: !yValIsAllNull ? 16 : 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n //console.log(datas,\" datas\")\r\n return datas && datas.length > 0\r\n ? datas[0].seriesName + '(' + datas[0].value[0] + ')' + ':' + Number(EChartsUtilsComm.getRound(datas[0].value[1], 0.001))\r\n : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n max: xAxisMax,\r\n min: xAxisMin,\r\n data: xData,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n splitLine: { show: true },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n max: yAxisMax,\r\n min: yAxisMin,\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineJson[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineJson[0].lineColor,\r\n },\r\n data: seriesData,\r\n markPoint: {\r\n data: pointData,\r\n },\r\n markLine: {\r\n symbol: ['none', 'none'], //去掉箭头\r\n itemStyle: {\r\n lineStyle: {\r\n type: 'solid',\r\n color: '#333',\r\n width: 2,\r\n },\r\n },\r\n data: lineData,\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 沥青混合料-目标配合比设计-流值\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart13: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineJson = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n let xDataSource = xDataArr[0], // [3.5, 4, 4.5, 5, 5.5],\r\n yDataSource = yDataArr[0]; // [2.2, 2.5, 2.9, 3.4, 4.2];\r\n\r\n //原始数据\r\n let dxsJs = chartExtJson != null ? chartExtJson.dxsJs : 5,\r\n xData = [],\r\n yData = [];\r\n\r\n //处理原始数据为空的值,不然参与mathjs计算会报错\r\n xDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n xData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n xData.push(item);\r\n }\r\n }\r\n });\r\n yDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n yData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n yData.push(item);\r\n }\r\n }\r\n });\r\n\r\n //y轴没有任何数据的时候,不参与绘制图表\r\n if (yData.length == 0) {\r\n return;\r\n }\r\n\r\n //检查x轴的数据有多少个0,大于1个的时候,就不绘制图形\r\n let zeroCount = 0;\r\n xData.forEach((item) => {\r\n if (item == 0) {\r\n zeroCount++;\r\n }\r\n });\r\n // if (zeroCount > 1) {\r\n // \treturn;\r\n // }\r\n\r\n if (dxsJs >= yData.length) {\r\n dxsJs = yData.length - 1;\r\n }\r\n\r\n let xMin = Math.min(...xData),\r\n xMax = Math.max(...xData),\r\n yMin = Math.min(...yData),\r\n yMax = Math.max(...yData),\r\n /*\r\n xAxisMax = 5.5,\r\n xAxisMin = 3.5,\r\n yAxisMax = 5,\r\n yAxisMin = 1,\r\n\t\t\t*/\r\n xAxisMax = xMax,\r\n xAxisMin = xMin,\r\n yAxisMax = Math.ceil(yMax + 1),\r\n yAxisMin = Math.floor(yMin - 1),\r\n seriesData = [],\r\n upperLimit = null, //上限\r\n lowerLimit = 2, //下限\r\n showLine = true; //是否显示辅助线\r\n\r\n //获取单元格中的上限和下限\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlSx != null && chartExtJson.lqhhlSx != undefined) {\r\n const curVal = sheet.getValue(chartExtJson.lqhhlSx.row, chartExtJson.lqhhlSx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curVal)) {\r\n upperLimit = curVal;\r\n }\r\n }\r\n if (chartExtJson.lqhhlXx != null && chartExtJson.lqhhlXx != undefined) {\r\n const curVal = sheet.getValue(chartExtJson.lqhhlXx.row, chartExtJson.lqhhlXx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curVal)) {\r\n lowerLimit = curVal;\r\n }\r\n }\r\n }\r\n\r\n if (upperLimit != null && upperLimit > yAxisMax) {\r\n yAxisMax = upperLimit + 1;\r\n }\r\n if (lowerLimit != null && lowerLimit > yAxisMax) {\r\n yAxisMin = lowerLimit - 1;\r\n }\r\n\r\n let points = [];\r\n xData.forEach((item, index) => {\r\n points.push([item, yData[index]]);\r\n });\r\n\r\n // 构造范德蒙德矩阵的函数\r\n function vandermondeMatrix(x, N) {\r\n const matrix = [];\r\n for (let i = 0; i < x.length; i++) {\r\n const row = [];\r\n for (let j = 0; j <= N; j++) {\r\n // 注意这里从0到N,包含N\r\n row.push(math.pow(x[i], j));\r\n }\r\n matrix.push(row);\r\n }\r\n return math.matrix(matrix);\r\n }\r\n\r\n // 构造原始的范德蒙德矩阵\r\n const vandermonde_matrix = vandermondeMatrix(xData, dxsJs); // 注意这里N=4,因为我们从0开始计数\r\n\r\n // 使用最小二乘法求解\r\n const A = vandermonde_matrix;\r\n const AT = math.transpose(A);\r\n const ATA = math.multiply(AT, A);\r\n const ATb = math.multiply(AT, math.matrix(yData));\r\n\r\n // 解线性方程组\r\n // const result = math.lusolve(ATA, ATb);\r\n // const coefficients = result.valueOf();\r\n\r\n let result: any = null,\r\n coefficients: any = [];\r\n try {\r\n result = math.lusolve(ATA, ATb);\r\n coefficients = result.valueOf();\r\n } catch (err) {\r\n for (let index = 0; index < xData.length; index++) {\r\n coefficients.push([0]);\r\n }\r\n console.log('无法解决该线性系统');\r\n }\r\n\r\n function funequation(x) {\r\n let y = 0;\r\n coefficients.forEach((item, index) => {\r\n //fx^0\r\n //fx^0+ax^1\r\n //fx^0+ax^1+bx^2\r\n //fx^0+ax^1+bx^2+cx^3\r\n //fx^0+x^1+x^2+x^3+x^4\r\n y += item * x ** index;\r\n });\r\n return y;\r\n }\r\n\r\n // console.log('计算公式:', coefficients);\r\n\r\n function lagrangeInterpolation(points, x) {\r\n let result = 0;\r\n for (let i = 0; i < points.length; i++) {\r\n let term = points[i][1];\r\n let xi = points[i][0];\r\n for (let j = 0; j < points.length; j++) {\r\n if (j !== i) {\r\n let xj = points[j][0];\r\n term *= (x - xj) / (xi - xj);\r\n }\r\n }\r\n result += term;\r\n }\r\n return result;\r\n }\r\n let arrX = [];\r\n let arrY = [];\r\n for (let i = xMin; i <= xMax; i += 0.01) {\r\n let temp = Number(EChartsUtilsComm.getRound(i, 0.01));\r\n //arrY.push(lagrangeInterpolation(points, temp));\r\n arrY.push(funequation(temp));\r\n arrX.push(temp);\r\n }\r\n let max = Math.max(...arrY);\r\n\r\n // 找到最大值的索引\r\n let maxIndex = arrY.findIndex((value) => value === max);\r\n\r\n // console.log('最大点数据:', arrX[maxIndex], max);\r\n\r\n let title = '', // config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n arrX.forEach((item, index) => {\r\n if (xData.includes(item)) {\r\n seriesData.push({ value: [item, arrY[index]] });\r\n } else {\r\n seriesData.push({\r\n value: [item, arrY[index]],\r\n symbol: 'none',\r\n });\r\n }\r\n });\r\n\r\n //计算两条线段是否有交点\r\n function ifHaveIntersectionPoint(y1, y2, y3, y4) {\r\n if ((y1 >= y3 && y2 <= y4) || (y1 <= y3 && y2 >= y4)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n //获取两点和香交线最接近的点\r\n function getIntersectionPoint(y1, y2, y) {\r\n if (Math.abs(y1 - y) > Math.abs(y2 - y)) {\r\n return 0;\r\n }\r\n return -1;\r\n }\r\n let upperIntersectionPoint = [],\r\n lowerIntersectionPoint = [];\r\n let upperIntersectionPointTrend = []; //上限交点趋势(向上相交(1) 还是向下相交(0))\r\n let lowerIntersectionPointTrend = []; //下限交点趋势\r\n arrX.forEach((item, index) => {\r\n if (index > 0) {\r\n //上限交点\r\n if (upperLimit != null) {\r\n if (ifHaveIntersectionPoint(arrY[index - 1], arrY[index], upperLimit, upperLimit)) {\r\n let index1 = getIntersectionPoint(arrY[index - 1], arrY[index], upperLimit);\r\n // console.log(arrX[index + index1], arrY[index + index1]);\r\n upperIntersectionPoint.push([arrX[index + index1], arrY[index + index1]]);\r\n if (arrY[index - 1] > arrY[index]) {\r\n //向下趋势\r\n upperIntersectionPointTrend.push(0);\r\n } else {\r\n upperIntersectionPointTrend.push(1);\r\n }\r\n }\r\n }\r\n //下限交点\r\n if (lowerLimit != null) {\r\n if (ifHaveIntersectionPoint(arrY[index - 1], arrY[index], lowerLimit, lowerLimit)) {\r\n let index1 = getIntersectionPoint(arrY[index - 1], arrY[index], lowerLimit);\r\n // console.log(arrX[index + index1], arrY[index + index1]);\r\n lowerIntersectionPoint.push([arrX[index + index1], arrY[index + index1]]);\r\n if (arrY[index - 1] > arrY[index]) {\r\n //向下趋势\r\n lowerIntersectionPointTrend.push(0);\r\n } else {\r\n lowerIntersectionPointTrend.push(1);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n let validX1 = xMin,\r\n validX2 = xMax;\r\n if (upperIntersectionPoint.length == 0 && lowerIntersectionPoint.length > 0) {\r\n //上限无交点,下限有交点\r\n if (lowerIntersectionPointTrend[0] == 0) {\r\n //下限向下相交\r\n validX1 = xMin;\r\n validX2 = lowerIntersectionPoint[0][0];\r\n } else {\r\n //下限向上相交\r\n validX1 = lowerIntersectionPoint[0][0];\r\n if (lowerIntersectionPoint.length == 1) {\r\n //只有一个交点\r\n validX2 = xMax;\r\n } else {\r\n validX2 = lowerIntersectionPoint[1][0];\r\n }\r\n }\r\n } else if (upperIntersectionPoint.length > 0 && lowerIntersectionPoint.length == 0) {\r\n //上限有交点,下限无交点\r\n if (upperIntersectionPointTrend[0] == 0) {\r\n //上限向下相交\r\n validX1 = upperIntersectionPoint[0][0];\r\n if (upperIntersectionPoint.length == 1) {\r\n //只有一个交点\r\n validX2 = xMax;\r\n } else {\r\n validX2 = upperIntersectionPoint[1][0];\r\n }\r\n } else {\r\n //上限向上相交\r\n validX1 = xMin;\r\n validX2 = upperIntersectionPoint[0][0];\r\n }\r\n } else if (upperIntersectionPoint.length > 0 && lowerIntersectionPoint.length > 0) {\r\n //上下限都有交点,情况太多,我们只取中间\r\n if (upperIntersectionPointTrend[0] == 0) {\r\n //上限向下相交\r\n validX1 = upperIntersectionPoint[0][0];\r\n validX2 = lowerIntersectionPoint[0][0];\r\n } else {\r\n //上限向上相交\r\n validX1 = lowerIntersectionPoint[0][0];\r\n validX2 = upperIntersectionPoint[0][0];\r\n }\r\n }\r\n\r\n // console.log('x范围:', validX1, validX2);\r\n //输出开始和结束范围\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlKs != null && chartExtJson.lqhhlKs != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlKs.row, chartExtJson.lqhhlKs.col, validX1);\r\n sheet.setValue(chartExtJson.lqhhlJs.row, chartExtJson.lqhhlJs.col, validX2);\r\n }\r\n }\r\n\r\n let lineData = [];\r\n let pointData = [];\r\n if (showLine) {\r\n lineData = [];\r\n pointData = [];\r\n }\r\n\r\n if (upperLimit != null) {\r\n lineData.push([\r\n {\r\n coord: [xAxisMin, upperLimit],\r\n lineStyle: {\r\n color: '#333', //上限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [xAxisMax, upperLimit],\r\n },\r\n ]);\r\n }\r\n\r\n if (lowerLimit != null) {\r\n lineData.push([\r\n {\r\n coord: [xAxisMin, lowerLimit],\r\n lineStyle: {\r\n color: '#333', //下限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [xAxisMax, lowerLimit],\r\n },\r\n ]);\r\n }\r\n\r\n //判断数据是否为/\r\n let yValIsAllNull = false;\r\n seriesData.forEach((item) => {\r\n yValIsAllNull = item.value.every((ele) => {\r\n return ele == 0;\r\n });\r\n });\r\n if (yValIsAllNull) {\r\n xAxisMin = null;\r\n xAxisMax = null;\r\n yAxisMin = null;\r\n yAxisMax = null;\r\n seriesData = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 10,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: !yValIsAllNull ? 16 : 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n //console.log(datas,\" datas\")\r\n return datas && datas.length > 0\r\n ? datas[0].seriesName + '(' + datas[0].value[0] + ')' + ':' + Number(EChartsUtilsComm.getRound(datas[0].value[1], 0.001))\r\n : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n max: xAxisMax,\r\n min: xAxisMin,\r\n data: xData,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n splitLine: { show: true },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n max: yAxisMax,\r\n min: yAxisMin,\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 25 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineJson[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineJson[0].lineColor,\r\n },\r\n data: seriesData,\r\n markPoint: {\r\n data: pointData,\r\n },\r\n markLine: {\r\n symbol: ['none', 'none'], //去掉箭头\r\n itemStyle: {\r\n lineStyle: {\r\n type: 'solid',\r\n color: '#333',\r\n width: 2,\r\n },\r\n },\r\n data: lineData,\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 沥青混合料-目标配合比设计-矿料间隙率\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart14: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineJson = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n let xDataSource = xDataArr[0], // [3.5, 4, 4.5, 5, 5.5],\r\n yDataSource = yDataArr[0]; // [16.1, 15.2, 14.6, 14.8, 16];\r\n\r\n //原始数据\r\n let dxsJs = chartExtJson != null ? chartExtJson.dxsJs : 5,\r\n xData = [],\r\n yData = [];\r\n\r\n //处理原始数据为空的值,不然参与mathjs计算会报错\r\n xDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n xData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n xData.push(item);\r\n }\r\n }\r\n });\r\n yDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n yData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n yData.push(item);\r\n }\r\n }\r\n });\r\n\r\n //y轴没有任何数据的时候,不参与绘制图表\r\n if (yData.length == 0) {\r\n return;\r\n }\r\n\r\n //检查x轴的数据有多少个0,大于1个的时候,就不绘制图形\r\n let zeroCount = 0;\r\n xData.forEach((item) => {\r\n if (item == 0) {\r\n zeroCount++;\r\n }\r\n });\r\n // if (zeroCount > 1) {\r\n // \treturn;\r\n // }\r\n\r\n if (dxsJs >= yData.length) {\r\n dxsJs = yData.length - 1;\r\n }\r\n\r\n let xMin = Math.min(...xData),\r\n xMax = Math.max(...xData),\r\n yMin = Math.min(...yData),\r\n yMax = Math.max(...yData),\r\n /*\r\n\t\t\txAxisMax = 5.5,\r\n xAxisMin = 3.5,\r\n yAxisMax = 19.0,\r\n yAxisMin = 13.0,\r\n\t\t\t*/\r\n xAxisMax = xMax,\r\n xAxisMin = xMin,\r\n yAxisMax = Math.ceil(yMax + 1),\r\n yAxisMin = Math.floor(yMin - 1),\r\n seriesData = [],\r\n upperLimit = null, //上限\r\n lowerLimit = 13.5, //下限\r\n showLine = true; //是否显示辅助线\r\n\r\n //获取单元格中的上限和下限\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlSx != null && chartExtJson.lqhhlSx != undefined) {\r\n const curVal = sheet.getValue(chartExtJson.lqhhlSx.row, chartExtJson.lqhhlSx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curVal)) {\r\n upperLimit = curVal;\r\n }\r\n }\r\n if (chartExtJson.lqhhlXx != null && chartExtJson.lqhhlXx != undefined) {\r\n const curVal = sheet.getValue(chartExtJson.lqhhlXx.row, chartExtJson.lqhhlXx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curVal)) {\r\n lowerLimit = curVal;\r\n }\r\n }\r\n }\r\n\r\n if (upperLimit != null && upperLimit > yAxisMax) {\r\n yAxisMax = upperLimit + 1;\r\n }\r\n if (lowerLimit != null && lowerLimit > yAxisMax) {\r\n yAxisMin = lowerLimit - 1;\r\n }\r\n\r\n let points = [];\r\n xData.forEach((item, index) => {\r\n points.push([item, yData[index]]);\r\n });\r\n\r\n // 构造范德蒙德矩阵的函数\r\n function vandermondeMatrix(x, N) {\r\n const matrix = [];\r\n for (let i = 0; i < x.length; i++) {\r\n const row = [];\r\n for (let j = 0; j <= N; j++) {\r\n // 注意这里从0到N,包含N\r\n row.push(math.pow(x[i], j));\r\n }\r\n matrix.push(row);\r\n }\r\n return math.matrix(matrix);\r\n }\r\n\r\n // 构造原始的范德蒙德矩阵\r\n const vandermonde_matrix = vandermondeMatrix(xData, dxsJs); // 注意这里N=4,因为我们从0开始计数\r\n\r\n // 使用最小二乘法求解\r\n const A = vandermonde_matrix;\r\n const AT = math.transpose(A);\r\n const ATA = math.multiply(AT, A);\r\n const ATb = math.multiply(AT, math.matrix(yData));\r\n\r\n // 解线性方程组\r\n // const result = math.lusolve(ATA, ATb);\r\n // const coefficients = result.valueOf();\r\n\r\n let result: any = null,\r\n coefficients: any = [];\r\n try {\r\n result = math.lusolve(ATA, ATb);\r\n coefficients = result.valueOf();\r\n } catch (err) {\r\n for (let index = 0; index < xData.length; index++) {\r\n coefficients.push([0]);\r\n }\r\n console.log('无法解决该线性系统');\r\n }\r\n\r\n function funequation(x) {\r\n let y = 0;\r\n coefficients.forEach((item, index) => {\r\n //fx^0\r\n //fx^0+ax^1\r\n //fx^0+ax^1+bx^2\r\n //fx^0+ax^1+bx^2+cx^3\r\n //fx^0+x^1+x^2+x^3+x^4\r\n y += item * x ** index;\r\n });\r\n return y;\r\n }\r\n\r\n // console.log('计算公式:', coefficients);\r\n\r\n function lagrangeInterpolation(points, x) {\r\n let result = 0;\r\n for (let i = 0; i < points.length; i++) {\r\n let term = points[i][1];\r\n let xi = points[i][0];\r\n for (let j = 0; j < points.length; j++) {\r\n if (j !== i) {\r\n let xj = points[j][0];\r\n term *= (x - xj) / (xi - xj);\r\n }\r\n }\r\n result += term;\r\n }\r\n return result;\r\n }\r\n let arrX = [];\r\n let arrY = [];\r\n for (let i = xMin; i <= xMax; i += 0.01) {\r\n let temp = Number(EChartsUtilsComm.getRound(i, 0.01));\r\n //arrY.push(lagrangeInterpolation(points, temp));\r\n arrY.push(funequation(temp));\r\n arrX.push(temp);\r\n }\r\n let max = Math.max(...arrY);\r\n\r\n // 找到最大值的索引\r\n let maxIndex = arrY.findIndex((value) => value === max);\r\n\r\n // console.log('最大点数据:', arrX[maxIndex], max);\r\n\r\n let title = '', // config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n arrX.forEach((item, index) => {\r\n if (xData.includes(item)) {\r\n seriesData.push({ value: [item, arrY[index]] });\r\n } else {\r\n seriesData.push({\r\n value: [item, arrY[index]],\r\n symbol: 'none',\r\n });\r\n }\r\n });\r\n\r\n //计算两条线段是否有交点\r\n function ifHaveIntersectionPoint(y1, y2, y3, y4) {\r\n if ((y1 >= y3 && y2 <= y4) || (y1 <= y3 && y2 >= y4)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n //获取两点和香交线最接近的点\r\n function getIntersectionPoint(y1, y2, y) {\r\n if (Math.abs(y1 - y) > Math.abs(y2 - y)) {\r\n return 0;\r\n }\r\n return -1;\r\n }\r\n let upperIntersectionPoint = [],\r\n lowerIntersectionPoint = [];\r\n let upperIntersectionPointTrend = []; //上限交点趋势(向上相交(1) 还是向下相交(0))\r\n let lowerIntersectionPointTrend = []; //下限交点趋势\r\n arrX.forEach((item, index) => {\r\n if (index > 0) {\r\n //上限交点\r\n if (upperLimit != null) {\r\n if (ifHaveIntersectionPoint(arrY[index - 1], arrY[index], upperLimit, upperLimit)) {\r\n let index1 = getIntersectionPoint(arrY[index - 1], arrY[index], upperLimit);\r\n // console.log(arrX[index + index1], arrY[index + index1]);\r\n upperIntersectionPoint.push([arrX[index + index1], arrY[index + index1]]);\r\n if (arrY[index - 1] > arrY[index]) {\r\n //向下趋势\r\n upperIntersectionPointTrend.push(0);\r\n } else {\r\n upperIntersectionPointTrend.push(1);\r\n }\r\n }\r\n }\r\n //下限交点\r\n if (lowerLimit != null) {\r\n if (ifHaveIntersectionPoint(arrY[index - 1], arrY[index], lowerLimit, lowerLimit)) {\r\n let index1 = getIntersectionPoint(arrY[index - 1], arrY[index], lowerLimit);\r\n // console.log(arrX[index + index1], arrY[index + index1]);\r\n lowerIntersectionPoint.push([arrX[index + index1], arrY[index + index1]]);\r\n if (arrY[index - 1] > arrY[index]) {\r\n //向下趋势\r\n lowerIntersectionPointTrend.push(0);\r\n } else {\r\n lowerIntersectionPointTrend.push(1);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n let validX1 = xMin,\r\n validX2 = xMax;\r\n if (upperIntersectionPoint.length == 0 && lowerIntersectionPoint.length > 0) {\r\n //上限无交点,下限有交点\r\n if (lowerIntersectionPointTrend[0] == 0) {\r\n //下限向下相交\r\n validX1 = xMin;\r\n validX2 = lowerIntersectionPoint[0][0];\r\n } else {\r\n //下限向上相交\r\n validX1 = lowerIntersectionPoint[0][0];\r\n if (lowerIntersectionPoint.length == 1) {\r\n //只有一个交点\r\n validX2 = xMax;\r\n } else {\r\n validX2 = lowerIntersectionPoint[1][0];\r\n }\r\n }\r\n } else if (upperIntersectionPoint.length > 0 && lowerIntersectionPoint.length == 0) {\r\n //上限有交点,下限无交点\r\n if (upperIntersectionPointTrend[0] == 0) {\r\n //上限向下相交\r\n validX1 = upperIntersectionPoint[0][0];\r\n if (upperIntersectionPoint.length == 1) {\r\n //只有一个交点\r\n validX2 = xMax;\r\n } else {\r\n validX2 = upperIntersectionPoint[1][0];\r\n }\r\n } else {\r\n //上限向上相交\r\n validX1 = xMin;\r\n validX2 = upperIntersectionPoint[0][0];\r\n }\r\n } else if (upperIntersectionPoint.length > 0 && lowerIntersectionPoint.length > 0) {\r\n //上下限都有交点,情况太多,我们只取中间\r\n if (upperIntersectionPointTrend[0] == 0) {\r\n //上限向下相交\r\n validX1 = upperIntersectionPoint[0][0];\r\n validX2 = lowerIntersectionPoint[0][0];\r\n } else {\r\n //上限向上相交\r\n validX1 = lowerIntersectionPoint[0][0];\r\n validX2 = upperIntersectionPoint[0][0];\r\n }\r\n }\r\n\r\n // console.log('x范围:', validX1, validX2);\r\n //输出开始和结束范围\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlKs != null && chartExtJson.lqhhlKs != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlKs.row, chartExtJson.lqhhlKs.col, validX1);\r\n sheet.setValue(chartExtJson.lqhhlJs.row, chartExtJson.lqhhlJs.col, validX2);\r\n }\r\n }\r\n\r\n let lineData = [];\r\n let pointData = [];\r\n if (showLine) {\r\n lineData = [];\r\n pointData = [];\r\n }\r\n\r\n if (upperLimit != null) {\r\n lineData.push([\r\n {\r\n coord: [xAxisMin, upperLimit],\r\n lineStyle: {\r\n color: '#333', //上限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [xAxisMax, upperLimit],\r\n },\r\n ]);\r\n }\r\n\r\n if (lowerLimit != null) {\r\n lineData.push([\r\n {\r\n coord: [xAxisMin, lowerLimit],\r\n lineStyle: {\r\n color: '#333', //下限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [xAxisMax, lowerLimit],\r\n },\r\n ]);\r\n }\r\n\r\n //判断数据是否为/\r\n let yValIsAllNull = false;\r\n seriesData.forEach((item) => {\r\n yValIsAllNull = item.value.every((ele) => {\r\n return ele == 0;\r\n });\r\n });\r\n if (yValIsAllNull) {\r\n xAxisMin = null;\r\n xAxisMax = null;\r\n yAxisMin = null;\r\n yAxisMax = null;\r\n seriesData = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 10,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: !yValIsAllNull ? 16 : 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n //console.log(datas,\" datas\")\r\n return datas && datas.length > 0\r\n ? datas[0].seriesName + '(' + datas[0].value[0] + ')' + ':' + Number(EChartsUtilsComm.getRound(datas[0].value[1], 0.001))\r\n : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n max: xAxisMax,\r\n min: xAxisMin,\r\n data: xData,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n splitLine: { show: true },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n max: yAxisMax,\r\n min: yAxisMin,\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineJson[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineJson[0].lineColor,\r\n },\r\n data: seriesData,\r\n markPoint: {\r\n data: pointData,\r\n },\r\n markLine: {\r\n symbol: ['none', 'none'], //去掉箭头\r\n itemStyle: {\r\n lineStyle: {\r\n type: 'solid',\r\n color: '#333',\r\n width: 2,\r\n },\r\n },\r\n data: lineData,\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 沥青混合料-目标配合比设计-有效沥青饱和度\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart15: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineJson = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n let xDataSource = xDataArr[0], // [3.5, 4, 4.5, 5, 5.5],\r\n yDataSource = yDataArr[0]; // [40.1, 59.8, 66.8, 74.5, 78.2];\r\n\r\n //原始数据\r\n let dxsJs = chartExtJson != null ? chartExtJson.dxsJs : 5,\r\n xData = [],\r\n yData = [];\r\n\r\n //处理原始数据为空的值,不然参与mathjs计算会报错\r\n xDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n xData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n xData.push(item);\r\n }\r\n }\r\n });\r\n yDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n yData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n yData.push(item);\r\n }\r\n }\r\n });\r\n\r\n //y轴没有任何数据的时候,不参与绘制图表\r\n if (yData.length == 0) {\r\n return;\r\n }\r\n\r\n //检查x轴的数据有多少个0,大于1个的时候,就不绘制图形\r\n let zeroCount = 0;\r\n xData.forEach((item) => {\r\n if (item == 0) {\r\n zeroCount++;\r\n }\r\n });\r\n // if (zeroCount > 1) {\r\n // \treturn;\r\n // }\r\n\r\n if (dxsJs >= yData.length) {\r\n dxsJs = yData.length - 1;\r\n }\r\n\r\n let xMin = Math.min(...xData),\r\n xMax = Math.max(...xData),\r\n yMin = Math.min(...yData),\r\n yMax = Math.max(...yData),\r\n /*\r\n\t\t\txAxisMax = 5.5,\r\n xAxisMin = 3.5,\r\n yAxisMax = 80,\r\n yAxisMin = 30,\r\n\t\t\t*/\r\n xAxisMax = xMax,\r\n xAxisMin = xMin,\r\n yAxisMax = Math.ceil(yMax + 10),\r\n yAxisMin = Math.floor(yMin - 10),\r\n seriesData = [],\r\n upperLimit = 75, //上限\r\n lowerLimit = 60, //下限\r\n showLine = true; //是否显示辅助线\r\n\r\n //获取单元格中的上限和下限\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlSx != null && chartExtJson.lqhhlSx != undefined) {\r\n const curVal = sheet.getValue(chartExtJson.lqhhlSx.row, chartExtJson.lqhhlSx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curVal)) {\r\n upperLimit = curVal;\r\n }\r\n }\r\n if (chartExtJson.lqhhlXx != null && chartExtJson.lqhhlXx != undefined) {\r\n const curVal = sheet.getValue(chartExtJson.lqhhlXx.row, chartExtJson.lqhhlXx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curVal)) {\r\n lowerLimit = curVal;\r\n }\r\n }\r\n }\r\n\r\n if (upperLimit != null && upperLimit > yAxisMax) {\r\n yAxisMax = upperLimit + 10;\r\n }\r\n if (lowerLimit != null && lowerLimit > yAxisMax) {\r\n yAxisMin = lowerLimit - 10;\r\n }\r\n\r\n let points = [];\r\n xData.forEach((item, index) => {\r\n points.push([item, yData[index]]);\r\n });\r\n\r\n // 构造范德蒙德矩阵的函数\r\n function vandermondeMatrix(x, N) {\r\n const matrix = [];\r\n for (let i = 0; i < x.length; i++) {\r\n const row = [];\r\n for (let j = 0; j <= N; j++) {\r\n // 注意这里从0到N,包含N\r\n row.push(math.pow(x[i], j));\r\n }\r\n matrix.push(row);\r\n }\r\n return math.matrix(matrix);\r\n }\r\n\r\n // 构造原始的范德蒙德矩阵\r\n const vandermonde_matrix = vandermondeMatrix(xData, dxsJs); // 注意这里N=4,因为我们从0开始计数\r\n\r\n // 使用最小二乘法求解\r\n const A = vandermonde_matrix;\r\n const AT = math.transpose(A);\r\n const ATA = math.multiply(AT, A);\r\n const ATb = math.multiply(AT, math.matrix(yData));\r\n\r\n // 解线性方程组\r\n // const result = math.lusolve(ATA, ATb);\r\n // const coefficients = result.valueOf();\r\n\r\n let result: any = null,\r\n coefficients: any = [];\r\n try {\r\n result = math.lusolve(ATA, ATb);\r\n coefficients = result.valueOf();\r\n } catch (err) {\r\n for (let index = 0; index < xData.length; index++) {\r\n coefficients.push([0]);\r\n }\r\n console.log('无法解决该线性系统');\r\n }\r\n\r\n function funequation(x) {\r\n let y = 0;\r\n coefficients.forEach((item, index) => {\r\n //fx^0\r\n //fx^0+ax^1\r\n //fx^0+ax^1+bx^2\r\n //fx^0+ax^1+bx^2+cx^3\r\n //fx^0+x^1+x^2+x^3+x^4\r\n y += item * x ** index;\r\n });\r\n return y;\r\n }\r\n\r\n // console.log('计算公式:', coefficients);\r\n\r\n function lagrangeInterpolation(points, x) {\r\n let result = 0;\r\n for (let i = 0; i < points.length; i++) {\r\n let term = points[i][1];\r\n let xi = points[i][0];\r\n for (let j = 0; j < points.length; j++) {\r\n if (j !== i) {\r\n let xj = points[j][0];\r\n term *= (x - xj) / (xi - xj);\r\n }\r\n }\r\n result += term;\r\n }\r\n return result;\r\n }\r\n let arrX = [];\r\n let arrY = [];\r\n for (let i = xMin; i <= xMax; i += 0.01) {\r\n let temp = Number(EChartsUtilsComm.getRound(i, 0.01));\r\n //arrY.push(lagrangeInterpolation(points, temp));\r\n arrY.push(funequation(temp));\r\n arrX.push(temp);\r\n }\r\n\r\n let title = '', // config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //计算两条线段是否有交点\r\n function ifHaveIntersectionPoint(y1, y2, y3, y4) {\r\n if ((y1 >= y3 && y2 <= y4) || (y1 <= y3 && y2 >= y4)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n //获取两点和香交线最接近的点\r\n function getIntersectionPoint(y1, y2, y) {\r\n if (Math.abs(y1 - y) > Math.abs(y2 - y)) {\r\n return 0;\r\n }\r\n return -1;\r\n }\r\n let upperIntersectionPoint = [],\r\n lowerIntersectionPoint = [];\r\n let upperIntersectionPointTrend = []; //上限交点趋势(向上相交(1) 还是向下相交(0))\r\n let lowerIntersectionPointTrend = []; //下限交点趋势\r\n arrX.forEach((item, index) => {\r\n if (xData.includes(item)) {\r\n seriesData.push({ value: [item, arrY[index]] });\r\n } else {\r\n seriesData.push({\r\n value: [item, arrY[index]],\r\n symbol: 'none',\r\n });\r\n }\r\n if (index > 0) {\r\n //上限交点\r\n if (upperLimit != null) {\r\n if (ifHaveIntersectionPoint(arrY[index - 1], arrY[index], upperLimit, upperLimit)) {\r\n let index1 = getIntersectionPoint(arrY[index - 1], arrY[index], upperLimit);\r\n // console.log(arrX[index + index1], arrY[index + index1]);\r\n upperIntersectionPoint.push([arrX[index + index1], arrY[index + index1]]);\r\n if (arrY[index - 1] > arrY[index]) {\r\n //向下趋势\r\n upperIntersectionPointTrend.push(0);\r\n } else {\r\n upperIntersectionPointTrend.push(1);\r\n }\r\n }\r\n }\r\n //下限交点\r\n if (upperLimit != null) {\r\n if (ifHaveIntersectionPoint(arrY[index - 1], arrY[index], lowerLimit, lowerLimit)) {\r\n let index1 = getIntersectionPoint(arrY[index - 1], arrY[index], lowerLimit);\r\n // console.log(arrX[index + index1], arrY[index + index1]);\r\n lowerIntersectionPoint.push([arrX[index + index1], arrY[index + index1]]);\r\n if (arrY[index - 1] > arrY[index]) {\r\n //向下趋势\r\n lowerIntersectionPointTrend.push(0);\r\n } else {\r\n lowerIntersectionPointTrend.push(1);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n let validX1 = xMin,\r\n validX2 = xMax;\r\n if (upperIntersectionPoint.length == 0 && lowerIntersectionPoint.length > 0) {\r\n //上限无交点,下限有交点\r\n if (lowerIntersectionPointTrend[0] == 0) {\r\n //下限向下相交\r\n validX1 = xMin;\r\n validX2 = lowerIntersectionPoint[0][0];\r\n } else {\r\n //下限向上相交\r\n validX1 = lowerIntersectionPoint[0][0];\r\n if (lowerIntersectionPoint.length == 1) {\r\n //只有一个交点\r\n validX2 = xMax;\r\n } else {\r\n validX2 = lowerIntersectionPoint[1][0];\r\n }\r\n }\r\n } else if (upperIntersectionPoint.length > 0 && lowerIntersectionPoint.length == 0) {\r\n //上限有交点,下限无交点\r\n if (upperIntersectionPointTrend[0] == 0) {\r\n //上限向下相交\r\n validX1 = upperIntersectionPoint[0][0];\r\n if (upperIntersectionPoint.length == 1) {\r\n //只有一个交点\r\n validX2 = xMax;\r\n } else {\r\n validX2 = upperIntersectionPoint[1][0];\r\n }\r\n } else {\r\n //上限向上相交\r\n validX1 = xMin;\r\n validX2 = upperIntersectionPoint[0][0];\r\n }\r\n } else if (upperIntersectionPoint.length > 0 && lowerIntersectionPoint.length > 0) {\r\n //上下限都有交点,情况太多,我们只取中间\r\n if (upperIntersectionPointTrend[0] == 0) {\r\n //上限向下相交\r\n validX1 = upperIntersectionPoint[0][0];\r\n validX2 = lowerIntersectionPoint[0][0];\r\n } else {\r\n //上限向上相交\r\n validX1 = lowerIntersectionPoint[0][0];\r\n validX2 = upperIntersectionPoint[0][0];\r\n }\r\n }\r\n\r\n // console.log('x范围:', validX1, validX2);\r\n //输出开始和结束范围\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlKs != null && chartExtJson.lqhhlKs != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlKs.row, chartExtJson.lqhhlKs.col, validX1);\r\n sheet.setValue(chartExtJson.lqhhlJs.row, chartExtJson.lqhhlJs.col, validX2);\r\n }\r\n }\r\n\r\n let lineData = [];\r\n let pointData = [];\r\n if (showLine) {\r\n if (upperIntersectionPoint.length > 0) {\r\n upperIntersectionPoint.forEach((item, index) => {\r\n lineData.push([\r\n {\r\n coord: [item[0], yAxisMin],\r\n lineStyle: {\r\n color: '#333', //上限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [item[0], upperLimit],\r\n },\r\n ]);\r\n });\r\n }\r\n if (lowerIntersectionPoint.length > 0) {\r\n lowerIntersectionPoint.forEach((item, index) => {\r\n lineData.push([\r\n {\r\n coord: [item[0], yAxisMin],\r\n lineStyle: {\r\n color: '#333', //下限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [item[0], lowerLimit],\r\n },\r\n ]);\r\n });\r\n }\r\n //上下线交点分别只有一个才求平均值\r\n if (upperIntersectionPoint.length == 1 && lowerIntersectionPoint.length == 1) {\r\n const avg = ((upperIntersectionPoint[0][0] + lowerIntersectionPoint[0][0]) / 2).toFixed(2);\r\n const avgXIndex = arrX.findIndex((n) => n == avg);\r\n // console.log('输出:', avg, avgXIndex);\r\n //输出\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlSc1 != null && chartExtJson.lqhhlSc1 != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlSc1.row, chartExtJson.lqhhlSc1.col, avg);\r\n }\r\n }\r\n lineData.push([\r\n {\r\n coord: [avg, yAxisMin],\r\n lineStyle: {\r\n color: '#333', //下限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [avg, arrY[avgXIndex]],\r\n },\r\n ]);\r\n pointData.push({\r\n xAxis: avg,\r\n yAxis: yAxisMin,\r\n symbolOffset: [0, 40],\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n return 'a4';\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n });\r\n }\r\n }\r\n\r\n if (upperLimit != null) {\r\n lineData.push([\r\n {\r\n coord: [xAxisMin, upperLimit],\r\n lineStyle: {\r\n color: '#333', //上限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [xAxisMax, upperLimit],\r\n },\r\n ]);\r\n }\r\n\r\n if (lowerLimit != null) {\r\n lineData.push([\r\n {\r\n coord: [xAxisMin, lowerLimit],\r\n lineStyle: {\r\n color: '#333', //下限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [xAxisMax, lowerLimit],\r\n },\r\n ]);\r\n }\r\n\r\n //判断数据是否为/\r\n let yValIsAllNull = false;\r\n seriesData.forEach((item) => {\r\n yValIsAllNull = item.value.every((ele) => {\r\n return ele == 0;\r\n });\r\n });\r\n if (yValIsAllNull) {\r\n xAxisMin = null;\r\n xAxisMax = null;\r\n yAxisMin = null;\r\n yAxisMax = null;\r\n seriesData = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 10,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: !yValIsAllNull ? 16 : 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n //console.log(datas,\" datas\")\r\n return datas && datas.length > 0\r\n ? datas[0].seriesName + '(' + datas[0].value[0] + ')' + ':' + Number(EChartsUtilsComm.getRound(datas[0].value[1], 0.001))\r\n : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n max: xAxisMax,\r\n min: xAxisMin,\r\n data: xData,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n splitLine: { show: true },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n max: yAxisMax,\r\n min: yAxisMin,\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineJson[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineJson[0].lineColor,\r\n },\r\n data: seriesData,\r\n markPoint: {\r\n data: pointData,\r\n },\r\n markLine: {\r\n symbol: ['none', 'none'], //去掉箭头\r\n itemStyle: {\r\n lineStyle: {\r\n type: 'solid',\r\n color: '#333',\r\n width: 2,\r\n },\r\n },\r\n data: lineData,\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 沥青混合料-目标配合比设计-汇总\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart16: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineJson = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n // let lines = [\r\n // \t[3.5, 5.5],\r\n // \t[3.5, 5.5],\r\n // \t[4.21, 5.27],\r\n // \t[3.5, 5.5],\r\n // \t[3.5, 5.5],\r\n // \t[4.01, 5.03],\r\n // ],\r\n\r\n //原始数据\r\n let lines = [\r\n [\r\n sheet.getValue(chartExtJson.lqhhlHz[0].row, chartExtJson.lqhhlHz[0].col),\r\n sheet.getValue(chartExtJson.lqhhlHz[1].row, chartExtJson.lqhhlHz[1].col),\r\n ],\r\n [\r\n sheet.getValue(chartExtJson.lqhhlHz[2].row, chartExtJson.lqhhlHz[2].col),\r\n sheet.getValue(chartExtJson.lqhhlHz[3].row, chartExtJson.lqhhlHz[3].col),\r\n ],\r\n [\r\n sheet.getValue(chartExtJson.lqhhlHz[4].row, chartExtJson.lqhhlHz[4].col),\r\n sheet.getValue(chartExtJson.lqhhlHz[5].row, chartExtJson.lqhhlHz[5].col),\r\n ],\r\n [\r\n sheet.getValue(chartExtJson.lqhhlHz[6].row, chartExtJson.lqhhlHz[6].col),\r\n sheet.getValue(chartExtJson.lqhhlHz[7].row, chartExtJson.lqhhlHz[7].col),\r\n ],\r\n [\r\n sheet.getValue(chartExtJson.lqhhlHz[8].row, chartExtJson.lqhhlHz[8].col),\r\n sheet.getValue(chartExtJson.lqhhlHz[9].row, chartExtJson.lqhhlHz[9].col),\r\n ],\r\n [\r\n sheet.getValue(chartExtJson.lqhhlHz[10].row, chartExtJson.lqhhlHz[10].col),\r\n sheet.getValue(chartExtJson.lqhhlHz[11].row, chartExtJson.lqhhlHz[11].col),\r\n ],\r\n ],\r\n xData = xDataArr[0], // [3.5, 4, 4.5, 5, 5.5],\r\n xAxisMax = 5.5,\r\n xAxisMin = 3.5,\r\n yAxisMin = 0,\r\n yAxisMax = 6,\r\n yData = [0, 1, 2, 3, 4, 5, 6],\r\n yAxisData = ['VFA', 'VMA', '流值', '稳定度', '空隙率', '密度'],\r\n seriesData = [],\r\n showLine = true; //是否显示辅助线\r\n\r\n const title = 'OAC',\r\n xName = '油石比(%)',\r\n yName = 'VFA(%)',\r\n legendName = '图例1';\r\n let lineData = [];\r\n let pointData = [];\r\n let xMin = Math.max(...lines.map((item) => item[0]));\r\n let xMax = Math.min(...lines.map((item) => item[1]));\r\n\r\n lines.forEach((item, index) => {\r\n lineData.push([\r\n {\r\n coord: [item[0], lines.length - index],\r\n lineStyle: {\r\n color: lineJson[0].lineColor,\r\n type: 'solid',\r\n width: 2,\r\n },\r\n },\r\n {\r\n coord: [item[1], lines.length - index],\r\n },\r\n ]);\r\n });\r\n if (showLine && xMin <= xMax) {\r\n //最小\r\n lineData.push([\r\n {\r\n coord: [xMin, 0],\r\n lineStyle: {\r\n color: '#333',\r\n type: 'dashed',\r\n width: 2,\r\n },\r\n },\r\n {\r\n coord: [xMin, 6],\r\n },\r\n ]);\r\n //最大\r\n lineData.push([\r\n {\r\n coord: [xMax, 0],\r\n lineStyle: {\r\n color: '#333',\r\n type: 'dashed',\r\n width: 2,\r\n },\r\n },\r\n {\r\n coord: [xMax, 6],\r\n },\r\n ]);\r\n pointData = [\r\n {\r\n xAxis: xMin,\r\n yAxis: 0,\r\n symbolOffset: [0, 40],\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n return 'OACmin';\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n },\r\n {\r\n xAxis: xMax,\r\n yAxis: 0,\r\n symbolOffset: [0, 40],\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n return 'OACmax';\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n },\r\n ];\r\n }\r\n\r\n if (xMin <= xMax) {\r\n //平均值\r\n const avg = (xMin + xMax) / 2;\r\n lineData.push([\r\n {\r\n coord: [avg, 0],\r\n lineStyle: {\r\n color: '#333',\r\n type: 'dashed',\r\n width: 2,\r\n },\r\n },\r\n {\r\n coord: [avg, 6],\r\n },\r\n ]);\r\n pointData.push({\r\n xAxis: avg,\r\n yAxis: 0,\r\n symbolOffset: [0, 40],\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n return 'OAC2';\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n });\r\n }\r\n\r\n if (isNaN(xMin)) {\r\n xMin = 0;\r\n }\r\n if (isNaN(xMax)) {\r\n xMax = 0;\r\n }\r\n // console.log('输出:', xMin, xMax);\r\n //输出\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlSc1 != null && chartExtJson.lqhhlSc1 != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlSc1.row, chartExtJson.lqhhlSc1.col, xMin);\r\n }\r\n if (chartExtJson.lqhhlSc2 != null && chartExtJson.lqhhlSc2 != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlSc2.row, chartExtJson.lqhhlSc2.col, xMax);\r\n }\r\n }\r\n\r\n //判断数据是否为/\r\n let yValIsAllNull = false;\r\n lines.forEach((item) => {\r\n yValIsAllNull = item.every((ele) => {\r\n return ele == '/';\r\n });\r\n });\r\n if (yValIsAllNull) {\r\n xAxisMin = null;\r\n xAxisMax = null;\r\n yAxisMin = null;\r\n yAxisMax = null;\r\n seriesData = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 25,\r\n left: 10,\r\n right: 10,\r\n bottom: !yValIsAllNull ? 16 : 20,\r\n containLabel: true,\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n max: xAxisMax,\r\n min: xAxisMin,\r\n data: xData,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n splitLine: { show: true },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n max: yAxisMax,\r\n min: yAxisMin,\r\n axisLabel: {\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n if (data == 0) {\r\n return '';\r\n } else {\r\n return yAxisData[data - 1];\r\n }\r\n },\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n // data: seriesData,\r\n markPoint: {\r\n data: pointData,\r\n },\r\n markLine: {\r\n symbol: ['none', 'none'], //去掉箭头\r\n data: lineData,\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 击实\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart30: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n //设置是否选择校正jsIsJz的默认值\r\n if (chartExtJson != null && (chartExtJson.jsIsJz == null || chartExtJson.jsIsJz == undefined)) {\r\n chartExtJson.jsIsJz = true;\r\n }\r\n // console.log(config);\r\n\r\n let isTwoLine = xDataArr.length == 2;\r\n\r\n let xDataSource1 = xDataArr[0], // [1.6, 2.4, 3.5, 4.6, 5.3],\r\n xDataSource2 = isTwoLine ? xDataArr[1] : [], // [1.5, 2.4, 3.6, 4.3, 5.4],\r\n yDataSource1 = yDataArr[0], // [2.25, 2.29, 2.34, 2.29, 2.23],\r\n yDataSource2 = isTwoLine ? yDataArr[1] : []; // [2.27, 2.32, 2.36, 2.33, 2.26];\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n const lineFunc = (xDataSource, yDataSource, isShowMarkPoint, isShowMarkLine, isTwoLineData) => {\r\n //原始数据\r\n let dxsJs = chartExtJson != null ? chartExtJson.dxsJs : 5,\r\n xData = [],\r\n yData = [],\r\n seriesData = []; //处理原始数据为空的值,不然参与mathjs计算会报错\r\n\r\n //处理原始数据为空的值,不然参与mathjs计算会报错\r\n xDataSource.forEach((item, index) => {\r\n if (\r\n /^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item) &&\r\n item != 0 &&\r\n /^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(yDataSource[index]) &&\r\n yDataSource[index] != 0\r\n ) {\r\n xData.push(item);\r\n yData.push(yDataSource[index]);\r\n }\r\n });\r\n\r\n //y轴没有任何数据的时候,不参与绘制图表\r\n if (yData.length == 0) {\r\n return;\r\n }\r\n\r\n if (dxsJs >= yData.length) {\r\n dxsJs = yData.length - 1;\r\n }\r\n\r\n let xMin = Math.min(...xData),\r\n xMax = Math.max(...xData),\r\n yMin = Math.min(...yData),\r\n yMax = Math.max(...yData),\r\n xAxisMax = Math.ceil(xMax + 0.1),\r\n xAxisMin = Math.trunc(xMin - 0.1),\r\n yAxisMax = Number(EChartsUtilsComm.getRound(yMax + 0.02, 0.01)),\r\n yAxisMin = Number(EChartsUtilsComm.getRound(yMin - 0.02, 0.01));\r\n\r\n //如果界面设置了校正最佳含水率和最大干密度,则显示界面中的顶点坐标(此时就不显示辅助线了)\r\n let cellValJzZjhsl, cellValJzZdgmd;\r\n if (chartExtJson != null && chartExtJson.jsIsJz) {\r\n if (chartExtJson.jsZjhslJz != null && chartExtJson.jsZjhslJz != undefined) {\r\n cellValJzZjhsl = sheet.getValue(chartExtJson.jsZjhslJz.row, chartExtJson.jsZjhslJz.col);\r\n }\r\n if (chartExtJson.jsZdgmdJz != null && chartExtJson.jsZdgmdJz != undefined) {\r\n cellValJzZdgmd = sheet.getValue(chartExtJson.jsZdgmdJz.row, chartExtJson.jsZdgmdJz.col);\r\n }\r\n\r\n //如果界面输入的最大干密度大于了y轴最大值,则需要重新设置y轴的最大值\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(cellValJzZdgmd) && cellValJzZdgmd > yAxisMax) {\r\n yAxisMax = Number(EChartsUtilsComm.getRound(cellValJzZdgmd + 0.02, 0.01));\r\n }\r\n }\r\n\r\n let points = [];\r\n xData.forEach((item, index) => {\r\n points.push([item, yData[index]]);\r\n });\r\n\r\n // 构造范德蒙德矩阵的函数\r\n function vandermondeMatrix(x, N) {\r\n const matrix = [];\r\n for (let i = 0; i < x.length; i++) {\r\n const row = [];\r\n for (let j = 0; j <= N; j++) {\r\n // 注意这里从0到N,包含N\r\n row.push(math.pow(x[i], j));\r\n }\r\n matrix.push(row);\r\n }\r\n return math.matrix(matrix);\r\n }\r\n\r\n // 构造原始的范德蒙德矩阵\r\n const vandermonde_matrix = vandermondeMatrix(xData, dxsJs); // 注意这里N=4,因为我们从0开始计数\r\n\r\n // 使用最小二乘法求解\r\n const A = vandermonde_matrix;\r\n const AT = math.transpose(A);\r\n const ATA = math.multiply(AT, A);\r\n\r\n const ATb = math.multiply(AT, math.matrix(yData));\r\n\r\n // 解线性方程组\r\n let result: any = null,\r\n coefficients: any = [];\r\n try {\r\n result = math.lusolve(ATA, ATb);\r\n coefficients = result.valueOf();\r\n } catch (err) {\r\n for (let index = 0; index < xData.length; index++) {\r\n coefficients.push([0]);\r\n }\r\n // console.log('无法解决该线性系统');\r\n }\r\n // const result = math.lusolve(ATA, ATb);\r\n // const coefficients = result.valueOf();\r\n\r\n function funequation(x) {\r\n let y = 0;\r\n coefficients.forEach((item, index) => {\r\n //fx^0\r\n //fx^0+ax^1\r\n //fx^0+ax^1+bx^2\r\n //fx^0+ax^1+bx^2+cx^3\r\n //fx^0+x^1+x^2+x^3+x^4\r\n y += item * x ** index;\r\n });\r\n return y;\r\n }\r\n\r\n // console.log('计算公式:', coefficients);\r\n\r\n function lagrangeInterpolation(points, x) {\r\n let result = 0;\r\n for (let i = 0; i < points.length; i++) {\r\n let term = points[i][1];\r\n let xi = points[i][0];\r\n for (let j = 0; j < points.length; j++) {\r\n if (j !== i) {\r\n let xj = points[j][0];\r\n term *= (x - xj) / (xi - xj);\r\n }\r\n }\r\n result += term;\r\n }\r\n return result;\r\n }\r\n // x=[3.5, 4, 4.5, 5, 5.5,6 ],y= [2.262, 2.321, 2.319, 2.292, 2.285, 2.28]\r\n\r\n let arrX = [];\r\n let arrY = [];\r\n for (let i = xMin; i <= xMax; i += 0.01) {\r\n let temp = Number(EChartsUtilsComm.getRound(i, 0.01));\r\n //重新设置i,防止i丢失精度\r\n i = Number(temp);\r\n //arrY.push(lagrangeInterpolation(points, temp));\r\n arrY.push(funequation(temp));\r\n arrX.push(temp);\r\n }\r\n let max = Math.max(...arrY);\r\n\r\n // 找到最大值的索引\r\n let maxIndex = arrY.findIndex((value) => value === max);\r\n\r\n // console.log('最大点数据:', arrX[maxIndex], max);\r\n // console.log(chartExtJson);\r\n\r\n //默认输出精度\r\n let outJdZjhsl = 0.01,\r\n outJdZdgmd = 0.001;\r\n\r\n //顶点数据\r\n let outValZjhsl = 0,\r\n outValZdgmd = 0;\r\n\r\n //设置Sheet单元格的值(最佳含水率和最大干密度)\r\n if (chartExtJson != null) {\r\n // console.log(4444, chartExtJson.jsZjhsl.row, chartExtJson.jsZjhsl.col, arrX[maxIndex]);\r\n\r\n if (chartExtJson.jsZjhslJd != null && chartExtJson.jsZjhslJd != undefined) {\r\n outJdZjhsl = chartExtJson.jsZjhslJd;\r\n }\r\n if (chartExtJson.jsZdgmdJd != null && chartExtJson.jsZdgmdJd != undefined) {\r\n outJdZdgmd = chartExtJson.jsZdgmdJd;\r\n }\r\n\r\n if (arrX[maxIndex] == 0 && max == 0) {\r\n sheet.setValue(chartExtJson.jsZjhsl.row, chartExtJson.jsZjhsl.col, '/');\r\n sheet.setValue(chartExtJson.jsZdgmd.row, chartExtJson.jsZdgmd.col, '/');\r\n } else {\r\n outValZjhsl = EChartsUtilsComm.getRound(arrX[maxIndex], outJdZjhsl);\r\n outValZdgmd = EChartsUtilsComm.getRound(max, outJdZdgmd);\r\n\r\n sheet.setValue(chartExtJson.jsZjhsl.row, chartExtJson.jsZjhsl.col, outValZjhsl);\r\n sheet.setValue(chartExtJson.jsZdgmd.row, chartExtJson.jsZdgmd.col, outValZdgmd);\r\n }\r\n }\r\n\r\n arrX.forEach((item, index) => {\r\n if (xData.includes(item)) {\r\n seriesData.push({ value: [item, arrY[index]] });\r\n } else {\r\n seriesData.push({\r\n value: [item, arrY[index]],\r\n symbol: 'none',\r\n });\r\n }\r\n });\r\n\r\n //xData.forEach((item, index) => {\r\n //seriesData.push([item, yData[index]]);\r\n //});\r\n\r\n //计算峰值----目前没有公式 值写死的\r\n const peakvalue = [arrX[maxIndex], Number(EChartsUtilsComm.getRound(max, outJdZdgmd))],\r\n coordX = [peakvalue[0], yAxisMin],\r\n coordY = [xAxisMin, peakvalue[1]];\r\n\r\n let markPointObj = {\r\n data: [\r\n {\r\n xAxis: EChartsUtilsComm.getRound(peakvalue[0], outJdZjhsl),\r\n yAxis: EChartsUtilsComm.getRound(peakvalue[1], outJdZdgmd),\r\n symbolOffset: [0, 15],\r\n symbol: 'circle',\r\n symbolSize: 6,\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n if (Number(data.data.xAxis) == 0 && Number(data.data.yAxis) == 0) {\r\n return '';\r\n } else {\r\n return '( ' + data.data.xAxis + ',' + data.data.yAxis + ')';\r\n }\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n },\r\n ],\r\n },\r\n markLineObj = {\r\n symbol: ['none', 'none'], //去掉箭头\r\n itemStyle: {\r\n lineStyle: {\r\n type: 'solid',\r\n color: '#333',\r\n width: 2,\r\n },\r\n },\r\n data: [\r\n [\r\n {\r\n coord: coordX,\r\n lineStyle: {\r\n color: '#333', //X轴\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: peakvalue,\r\n },\r\n ],\r\n [\r\n {\r\n coord: coordY,\r\n lineStyle: {\r\n color: '#333', //y轴\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: peakvalue,\r\n },\r\n ],\r\n ],\r\n };\r\n\r\n //如果界面设置了校正最佳含水率和最大干密度,则显示界面中的顶点坐标(此时就不显示辅助线了)\r\n if (chartExtJson.jsIsJz && /^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(cellValJzZjhsl) && /^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(cellValJzZdgmd)) {\r\n markLineObj = null;\r\n markPointObj.data[0].label = null;\r\n markPointObj.data[0].symbolOffset = null;\r\n markPointObj.data[0].itemStyle.color = '#F56C6C';\r\n markPointObj.data[0].xAxis = cellValJzZjhsl;\r\n markPointObj.data[0].yAxis = cellValJzZdgmd;\r\n markLineObj = null;\r\n }\r\n\r\n let seriesDataObj = {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[isTwoLineData ? 1 : 0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n type: isTwoLineData ? 'dotted' : 'solid',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[isTwoLineData ? 1 : 0].lineColor,\r\n },\r\n data: seriesData,\r\n markPoint: isShowMarkPoint ? markPointObj : null,\r\n markLine: isShowMarkLine ? markLineObj : null,\r\n };\r\n\r\n return {\r\n xAxisMin: xAxisMin,\r\n xAxisMax: xAxisMax,\r\n yAxisMin: yAxisMin,\r\n yAxisMax: yAxisMax,\r\n xData: xData,\r\n seriesDataObj: seriesDataObj,\r\n maxPointData: [arrX[maxIndex], max],\r\n };\r\n };\r\n\r\n let xAxisMin = 0,\r\n xAxisMax = 0,\r\n yAxisMin = 0,\r\n yAxisMax = 0,\r\n xData = [],\r\n seriesData = [],\r\n maxPointDataX = 0,\r\n maxPointDataY = 0;\r\n\r\n let lineObj1 = lineFunc(xDataSource1, yDataSource1, !isTwoLine, !isTwoLine, false),\r\n lineObj2;\r\n if (isTwoLine) {\r\n lineObj2 = lineFunc(xDataSource2, yDataSource2, false, false, true);\r\n }\r\n\r\n //此处的作用是,有可能x和y轴的数据都为空,造成lineObj1为undefined,避免报错\r\n if (lineObj1 == undefined || lineObj1 == null) {\r\n return;\r\n }\r\n\r\n //一条线的时候\r\n if (!isTwoLine) {\r\n xAxisMin = lineObj1.xAxisMin;\r\n xAxisMax = lineObj1.xAxisMax;\r\n yAxisMin = lineObj1.yAxisMin;\r\n yAxisMax = lineObj1.yAxisMax;\r\n xData = lineObj1.xData;\r\n seriesData.push(lineObj1.seriesDataObj);\r\n }\r\n //2条线的时候\r\n else {\r\n if (lineObj2 == undefined || lineObj2 == null) {\r\n return;\r\n }\r\n\r\n xAxisMax = lineObj1.xAxisMax;\r\n if (lineObj2.xAxisMax > xAxisMax) {\r\n xAxisMax = lineObj2.xAxisMax;\r\n }\r\n xAxisMin = lineObj1.xAxisMin;\r\n if (lineObj2.xAxisMin < xAxisMin) {\r\n xAxisMin = lineObj2.xAxisMin;\r\n }\r\n yAxisMax = lineObj1.yAxisMax;\r\n if (lineObj2.yAxisMax > yAxisMax) {\r\n yAxisMax = lineObj2.yAxisMax;\r\n }\r\n yAxisMin = lineObj1.yAxisMin;\r\n if (lineObj2.yAxisMin < yAxisMin) {\r\n yAxisMin = lineObj2.yAxisMin;\r\n }\r\n\r\n lineObj1.xData.forEach((item) => {\r\n xData.push(item);\r\n });\r\n lineObj2.xData.forEach((item) => {\r\n xData.push(item);\r\n });\r\n\r\n seriesData.push(lineObj1.seriesDataObj);\r\n seriesData.push(lineObj2.seriesDataObj);\r\n\r\n maxPointDataX = (lineObj1.maxPointData[0] + lineObj2.maxPointData[0]) / 2;\r\n maxPointDataY = (lineObj1.maxPointData[1] + lineObj2.maxPointData[1]) / 2;\r\n\r\n // console.log(\r\n // \t\"两条线最大点的平均值:\",\r\n // \tmaxPointDataX,\r\n // \tmaxPointDataY\r\n // );\r\n\r\n //默认输出精度\r\n let outJdZjhsl = 0.01,\r\n outJdZdgmd = 0.001;\r\n\r\n //顶点数据\r\n let outValZjhsl = 0,\r\n outValZdgmd = 0;\r\n\r\n //设置Sheet单元格的值(最佳含水率和最大干密度)\r\n if (chartExtJson != null) {\r\n // console.log(4444, chartExtJson.jsZjhsl.row, chartExtJson.jsZjhsl.col, arrX[maxIndex]);\r\n\r\n if (chartExtJson.jsZjhslJd != null && chartExtJson.jsZjhslJd != undefined) {\r\n outJdZjhsl = chartExtJson.jsZjhslJd;\r\n }\r\n if (chartExtJson.jsZdgmdJd != null && chartExtJson.jsZdgmdJd != undefined) {\r\n outJdZdgmd = chartExtJson.jsZdgmdJd;\r\n }\r\n\r\n if (maxPointDataX == 0 && maxPointDataY == 0) {\r\n sheet.setValue(chartExtJson.jsZjhsl.row, chartExtJson.jsZjhsl.col, '/');\r\n sheet.setValue(chartExtJson.jsZdgmd.row, chartExtJson.jsZdgmd.col, '/');\r\n } else {\r\n outValZjhsl = EChartsUtilsComm.getRound(maxPointDataX, outJdZjhsl);\r\n outValZdgmd = EChartsUtilsComm.getRound(maxPointDataY, outJdZdgmd);\r\n\r\n sheet.setValue(chartExtJson.jsZjhsl.row, chartExtJson.jsZjhsl.col, outValZjhsl);\r\n sheet.setValue(chartExtJson.jsZdgmd.row, chartExtJson.jsZdgmd.col, outValZdgmd);\r\n }\r\n }\r\n }\r\n\r\n //判断数据是否为/,‘’,null,undefined\r\n let yValIsAllNull = false;\r\n seriesData.forEach((item) => {\r\n yValIsAllNull = item.data[0].value.every((ele) => {\r\n return ele == 0;\r\n });\r\n });\r\n if (yValIsAllNull) {\r\n xAxisMin = null;\r\n xAxisMax = null;\r\n yAxisMin = null;\r\n yAxisMax = null;\r\n seriesData = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 25,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n //console.log(datas,\" datas\")\r\n return datas && datas.length > 0\r\n ? datas[0].seriesName + '(' + datas[0].value[0] + ')' + ':' + Number(EChartsUtilsComm.getRound(datas[0].value[1], 0.001))\r\n : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n max: xAxisMax,\r\n min: xAxisMin,\r\n data: xData,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n splitLine: { show: true },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n max: yAxisMax,\r\n min: yAxisMin,\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 40 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: seriesData,\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 筛分\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart50: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = '', //config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName;\r\n\r\n // x轴原始数据、y轴原始数据、y轴原始数据(上限)、y轴原始数据(下限)\r\n const xDataSourceOld = xDataArr[0],\r\n yDataSourceOld = yDataArr[0],\r\n yDataSourceSxOld = yDataArr[1],\r\n yDataSourceXxOld = yDataArr[2];\r\n const allData: any[] = [];\r\n xDataSourceOld.forEach((item, index) => {\r\n allData.push({\r\n x: item,\r\n y: yDataSourceOld[index],\r\n ySx: yDataSourceSxOld[index],\r\n yXx: yDataSourceXxOld[index],\r\n });\r\n });\r\n allData.sort(function (a, b) {\r\n return a.x - b.x;\r\n });\r\n\r\n const xDataSource: any[] = [],\r\n yDataSource: any[] = [],\r\n yDataSourceSx: any[] = [],\r\n yDataSourceXx: any[] = [];\r\n\r\n // 记录上限或下限中值为null的个数\r\n let sxValNullCount = 0;\r\n yDataSourceSxOld.forEach((item, index) => {\r\n if (item == null || item == '/') {\r\n sxValNullCount++;\r\n }\r\n });\r\n\r\n // 如果上限或下限值中的所有值都为null,则只展示筛分曲线的折线\r\n if (sxValNullCount == yDataSourceSxOld.length) {\r\n allData.forEach((item, index) => {\r\n xDataSource.push(item.x);\r\n yDataSource.push(item.y);\r\n yDataSourceSx.push(item.ySx);\r\n yDataSourceXx.push(item.yXx);\r\n });\r\n } else {\r\n // 只获取上限或下限中值不为null的点\r\n allData.forEach((item, index) => {\r\n if (item.ySx != null && item.ySx != '/' && item.yXx != null && item.yXx != '/') {\r\n xDataSource.push(item.x);\r\n yDataSource.push(item.y);\r\n yDataSourceSx.push(item.ySx);\r\n yDataSourceXx.push(item.yXx);\r\n }\r\n });\r\n }\r\n\r\n // x轴需要的数据(x轴原始数据的0.45次方,并修约0.01)、x轴需要的上限数据(x轴原始数据的0.45次方,并修约0.01)、x轴需要的下限数据(x轴原始数据的0.45次方,并修约0.01)、标记线需要的数据\r\n let xData: any[] = [],\r\n xDataSx: any[] = [],\r\n xDataXx: any[] = [],\r\n markLineData: any[] = [];\r\n\r\n // x和y轴的字体大小\r\n const xyFontSize = 10;\r\n\r\n // 组装数据\r\n xDataSource.forEach((item, index) => {\r\n // 得到x轴原始数据的0.45次方值,并修约0.001\r\n const val045 = Number(EChartsUtilsComm.getRound(item ** 0.45, 0.001));\r\n\r\n xData.push([val045, yDataSource[index]]);\r\n markLineData.push({\r\n name: item + '',\r\n xAxis: val045,\r\n label: {\r\n show: xDataSource.length >= 6 && index % 2 != 0 && index < 6 ? false : true, // 控制x轴的名称某些点是否显示,避免重叠的情况\r\n fontSize: xyFontSize,\r\n },\r\n });\r\n\r\n xDataSx.push([val045, yDataSourceSx[index]]);\r\n xDataXx.push([val045, yDataSourceXx[index]]);\r\n });\r\n\r\n /**\r\n * 获取series需要的3条线配置\r\n * @param type 线类型(1:筛分曲线、2:上限、3:下限)\r\n * @param data 对应的坐标点数据\r\n */\r\n const getLineObj = (type, data) => {\r\n const name = type == 1 ? '筛分曲线' : type == 2 ? '上限' : '下限';\r\n const symbol = type == 1 ? 'rect' : type == 2 ? 'triangle' : 'circle';\r\n const lineType = type == 1 ? 'solid' : type == 2 ? 'dotted' : [10, 5];\r\n const color = type == 1 ? lineData[0].lineColor : type == 2 ? lineData[1].lineColor : lineData[2].lineColor; //type == 1 ? '#F56C6C' : type == 2 ? '#409EFF' : '#000';\r\n\r\n let obj = {\r\n name: name,\r\n type: 'line',\r\n smooth: true, // 平滑的线条\r\n // 设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: symbol,\r\n symbolSize: 5,\r\n z: 10, // 控制曲线的浮动层级,避免在markLine下方被遮住\r\n // 线条的颜色\r\n lineStyle: {\r\n color: color,\r\n // 线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n type: lineType,\r\n },\r\n // 线条上数据点的颜色\r\n itemStyle: {\r\n color: color,\r\n },\r\n data: data,\r\n connectNulls: true, // 是否连接空数据\r\n markLine: {\r\n symbol: '', // 取消箭头\r\n silent: true, // 取消鼠标hover事件\r\n label: {\r\n // 标线的文本,模拟x轴显示的内容\r\n position: 'start', // 改变label位置\r\n //rotate: 45, // 设置文字旋转度数(注意:ECharts官网文档居然没有rotate这个属性的说明)\r\n // backgroundColor:'#fff'\r\n // color:'#f00',// 文字颜色\r\n formatter: (data) => {\r\n return data.name;\r\n },\r\n },\r\n lineStyle: { color: '#e0e6f1', type: 'solid' },\r\n data: markLineData,\r\n },\r\n };\r\n\r\n return obj;\r\n };\r\n\r\n // 验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (xData.length == 0) {\r\n yValIsAllNull = true;\r\n }\r\n let nullCount = 0;\r\n xData.forEach((item) => {\r\n if (item[1] == null || item[1] == undefined || item[1] == '/') {\r\n nullCount++;\r\n }\r\n });\r\n if (nullCount == xData.length) {\r\n yValIsAllNull = true;\r\n }\r\n if (\r\n yDataSourceSxOld.some((item) => item != null && item != undefined && item != '/') ||\r\n yDataSourceXxOld.some((item) => item != null && item != undefined && item != '/')\r\n ) {\r\n yValIsAllNull = false;\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,// 是否显示外边框线\r\n // borderColor: '#f00',// 外边框线颜色\r\n top: 20,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: 35,\r\n containLabel: true,\r\n },\r\n // 提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n if (datas && datas[0].data.length > 1) {\r\n let xObj = markLineData.filter((item) => item.xAxis == datas[0].data[0]);\r\n\r\n return datas[0].seriesName + '(' + xObj[0].name + ')' + ':' + datas[0].data[1];\r\n } else {\r\n return datas[0].data;\r\n }\r\n },\r\n },\r\n // 顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 5,\r\n textStyle: {\r\n fontSize: 18,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n // 图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n left: 'center',\r\n data: ['筛分曲线', '上限', '下限'],\r\n selected: {\r\n 筛分曲线: true, // 显示\r\n 上限: true, // 显示\r\n 下限: true, // 显示\r\n },\r\n selectedMode: 'multiple', // 用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n axisTick: { show: false }, // 隐藏刻度线\r\n axisLabel: { show: false }, // 隐藏刻度值\r\n // 网格线,参考文档:https://echarts.apache.org/zh/option.html#xAxis.splitLine\r\n splitLine: {\r\n show: false, // 隐藏分割线\r\n },\r\n min: xData.length > 0 ? (xData[0][0] > 0.2 ? xData[0][0] - 0.2 : 0) : null, //控制x轴的最小值\r\n max: xData.length > 0 ? xData[xData.length - 1][0] + 0.1 : null,\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', // '#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n splitNumber: 10, // 设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLabel: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n ],\r\n series: [getLineObj(1, xData), getLineObj(2, xDataSx), getLineObj(3, xDataXx)],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 界限含水率\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart70: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n //此图形排除了图形数据不正确的情况,如果数据不对,则直接返回{}\r\n if (\r\n xDataArr[0].some((item) => item == null || item == '' || item == undefined) ||\r\n yDataArr[0].some((item) => item == null || item == '' || item == undefined)\r\n ) {\r\n return {};\r\n }\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //x和y轴的数据\r\n let xData = xDataArr[0], // [22.9, 32.4, 36.9],\r\n yData = yDataArr[0], // [2.2, 11.6, 19.8],\r\n ztzl = 100, //锥体质量(g),100或76\r\n cllx = '砂类土', //材料类型,砂类土或细粒土\r\n logx = [], // c,b,a\r\n logy = [];\r\n\r\n //获取锥体质量和材料类型\r\n if (chartExtJson != null) {\r\n let curZtzl = sheet.getValue(chartExtJson.jxhslZtzl.row, chartExtJson.jxhslZtzl.col),\r\n curCllx = sheet.getValue(chartExtJson.jxhslCllx.row, chartExtJson.jxhslCllx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curZtzl)) {\r\n curZtzl = Number(curZtzl);\r\n if (curZtzl == 100 || curZtzl == 76) {\r\n ztzl = curZtzl;\r\n }\r\n }\r\n if (curCllx == '砂类土' || curCllx == '细粒土') {\r\n cllx = curCllx;\r\n }\r\n }\r\n\r\n // console.log(ztzl, cllx);\r\n\r\n //先求对数\r\n for (const item1 of xData) {\r\n logx.push(Math.log(item1));\r\n }\r\n for (const item2 of yData) {\r\n logy.push(Math.log(item2));\r\n }\r\n //求ab / ac 斜率 公式k=y2-y1 / x2-x1\r\n let abk = (logy[2] - logy[1]) / (logx[2] - logx[1]);\r\n let ack = (logy[2] - logy[0]) / (logx[2] - logx[0]);\r\n\r\n const xMax = Math.max.apply(Math, xData),\r\n xMin = Math.min.apply(Math, xData),\r\n xAxisMax = xMax + 1,\r\n xAxisMin = xMin - 0.3,\r\n yMax = Math.max.apply(Math, yData),\r\n yMin = Math.min.apply(Math, yData),\r\n yAxisMax = yMax + 1,\r\n yAxisMin = yMin - 2,\r\n dropName = ['C', 'B', 'A'],\r\n seriesData = [];\r\n\r\n xData.forEach((item, index) => {\r\n seriesData.push([item, yData[index], dropName[index]]);\r\n });\r\n\r\n //求ab / ac 延长线方法\r\n function getYOnLine(point1, point2, point3X) {\r\n const logX1 = Math.log(point1[0]);\r\n const logY1 = Math.log(point1[1]);\r\n const logX2 = Math.log(point2[0]);\r\n const logY2 = Math.log(point2[1]);\r\n const slope = (logY2 - logY1) / (logX2 - logX1);\r\n const logPoint3X = Math.log(point3X);\r\n const logY = logY1 + slope * (logPoint3X - logX1);\r\n return Math.exp(logY);\r\n }\r\n\r\n let point3X = 20;\r\n let abd3 = getYOnLine([xData[2], yData[2]], [xData[1], yData[1]], point3X);\r\n let zero_ab = [20, abd3];\r\n let acd3 = getYOnLine([xData[2], yData[2]], [xData[0], yData[0]], point3X);\r\n let zero_ac = [20, acd3];\r\n\r\n // console.log(zero_ab, 'zero_ab');\r\n // console.log(zero_ac, 'zero_ac');\r\n\r\n //第一次计算D-y值,代入A点的X坐标\r\n function HpCoordinates(wl) {\r\n let hp;\r\n if (cllx == '砂类土') {\r\n //砂类土\r\n hp = 29.6 - 1.22 * wl + 0.017 * wl * wl - 0.0000744 * wl * wl * wl;\r\n } else {\r\n //细粒土\r\n hp = wl / (0.524 * wl - 7.606);\r\n }\r\n return hp;\r\n }\r\n\r\n let coordX = [];\r\n let coordY = [];\r\n let point_hp = [];\r\n\r\n let Dy = HpCoordinates(xData[2]);\r\n let Dylog = Math.log(Dy);\r\n let hp0_xab = (abk * logx[2] - (logy[2] - Dylog)) / abk;\r\n let hp0_xac = (ack * logx[2] - (logy[2] - Dylog)) / ack;\r\n if (hp0_xab - hp0_xac >= 2) {\r\n //return '超差!';\r\n }\r\n let hp0_xcenter = Math.exp((hp0_xab + hp0_xac) / 2);\r\n let Dxlog = Math.log(hp0_xcenter);\r\n let adk = (logy[2] - Dylog) / (logx[2] - Dxlog); //AD 斜率\r\n\r\n //输出的hp、wl和wp\r\n let scHp, scWl, scWp;\r\n\r\n //判断锥数\r\n if (ztzl == 76) {\r\n //计算wl ad直线上y=17时,对应的x值\r\n let wly = Math.log(17);\r\n let wlx = (adk * logx[2] - (logy[2] - wly)) / adk;\r\n let wl = Math.exp(wlx);\r\n\r\n //计算WP:ad直线上y=2时,对应的x值\r\n let wpy = Math.log(2);\r\n let wpx = (adk * logx[2] - (logy[2] - wpy)) / adk;\r\n let wp = Math.exp(wpx);\r\n\r\n point_hp = [hp0_xcenter, Dy];\r\n coordX = [hp0_xcenter, yAxisMin];\r\n coordY = [xAxisMin, Dy];\r\n seriesData.push([hp0_xcenter, Dy, 'Hp']);\r\n\r\n scHp = Dy;\r\n scWl = wl;\r\n scWp = wp;\r\n // console.log('输出:', wp, wl, Dy);\r\n } else if (ztzl == 100) {\r\n //计算wl的值----先求AD斜率再代入y=20,求X (X即Wl的值)\r\n let wly = Math.log(20);\r\n let wlx = (adk * logx[2] - (logy[2] - wly)) / adk;\r\n let wl = Math.exp(wlx);\r\n\r\n //第二次计算hp值\r\n let hpy2 = HpCoordinates(wl);\r\n let hpylog2 = Math.log(hpy2);\r\n let hp0_xab2 = (abk * logx[2] - (logy[2] - hpylog2)) / abk;\r\n let hp0_xac2 = (ack * logx[2] - (logy[2] - hpylog2)) / ack;\r\n\r\n let hp0_xcenter2 = Math.exp((hp0_xab2 + hp0_xac2) / 2);\r\n let wp = hp0_xcenter2;\r\n\r\n point_hp = [hp0_xcenter2, hpy2];\r\n\r\n coordX = [hp0_xcenter2, yAxisMin];\r\n coordY = [xAxisMin, hpy2];\r\n seriesData.push([hp0_xcenter2, hpy2, 'Hp']);\r\n\r\n scHp = hpy2;\r\n scWl = wl;\r\n scWp = wp;\r\n // console.log('输出:', wp, wl, hpy2);\r\n }\r\n\r\n //判断是否是一个数字\r\n if (isNaN(scHp) || isNaN(scWl) || isNaN(scWp)) {\r\n scHp = 0;\r\n scWl = 0;\r\n scWp = 0;\r\n }\r\n\r\n //设置Sheet单元格的值(输出hp、wl和wp)\r\n if (chartExtJson != null) {\r\n //默认输出精度\r\n let outJdHp = 0.01,\r\n outJdWl = 0.01,\r\n outJdWp = 0.01;\r\n if (chartExtJson.jxhslScHpJd != null && chartExtJson.jxhslScHpJd != undefined) {\r\n outJdHp = chartExtJson.jxhslScHpJd;\r\n }\r\n if (chartExtJson.jxhslScWlJd != null && chartExtJson.jxhslScWlJd != undefined) {\r\n outJdWl = chartExtJson.jxhslScWlJd;\r\n }\r\n if (chartExtJson.jxhslScWpJd != null && chartExtJson.jxhslScWpJd != undefined) {\r\n outJdWp = chartExtJson.jxhslScWpJd;\r\n }\r\n\r\n if (chartExtJson.jxhslScHp != null && chartExtJson.jxhslScHp != undefined) {\r\n if (scHp == 0) {\r\n sheet.setValue(chartExtJson.jxhslScHp.row, chartExtJson.jxhslScHp.col, '/');\r\n } else {\r\n sheet.setValue(chartExtJson.jxhslScHp.row, chartExtJson.jxhslScHp.col, EChartsUtilsComm.getRound(scHp, outJdHp));\r\n }\r\n }\r\n if (chartExtJson.jxhslScWl != null && chartExtJson.jxhslScWl != undefined) {\r\n if (scWl == 0) {\r\n sheet.setValue(chartExtJson.jxhslScWl.row, chartExtJson.jxhslScWl.col, '/');\r\n } else {\r\n sheet.setValue(chartExtJson.jxhslScWl.row, chartExtJson.jxhslScWl.col, EChartsUtilsComm.getRound(scWl, outJdWl));\r\n }\r\n }\r\n if (chartExtJson.jxhslScWp != null && chartExtJson.jxhslScWp != undefined) {\r\n if (scWp == 0) {\r\n sheet.setValue(chartExtJson.jxhslScWp.row, chartExtJson.jxhslScWp.col, '/');\r\n } else {\r\n sheet.setValue(chartExtJson.jxhslScWp.row, chartExtJson.jxhslScWp.col, EChartsUtilsComm.getRound(scWp, outJdWp));\r\n }\r\n }\r\n }\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (xData.length == 0) {\r\n yValIsAllNull = true;\r\n }\r\n let nullCount = 0;\r\n xData.forEach((item) => {\r\n if (item[1] == null || item[1] == undefined || item[1] == '/') {\r\n nullCount++;\r\n }\r\n });\r\n if (nullCount == xData.length) {\r\n yValIsAllNull = true;\r\n }\r\n if (\r\n yData.some((item) => item != null && item != undefined && item != '/') ||\r\n yData.some((item) => item != null && item != undefined && item != '/')\r\n ) {\r\n yValIsAllNull = false;\r\n }\r\n let option = {\r\n grid: {\r\n top: 20,\r\n left: !yValIsAllNull ? 50 : 25,\r\n right: 10,\r\n bottom: 35,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].value[0] + ')' + ':' + datas[0].value[1] : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'log',\r\n min: xAxisMin,\r\n max: xAxisMax,\r\n interval: 0,\r\n axisTick: {\r\n show: false,\r\n alignWithLabel: true,\r\n },\r\n splitLine: {\r\n show: false,\r\n },\r\n axisLabel: {\r\n show: false,\r\n },\r\n },\r\n yAxis: {\r\n type: 'log',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n min: yAxisMin,\r\n max: yAxisMax,\r\n interval: 0,\r\n axisTick: {\r\n show: false,\r\n alignWithLabel: true,\r\n },\r\n splitLine: {\r\n show: false,\r\n },\r\n axisLabel: {\r\n show: false,\r\n },\r\n },\r\n series: [\r\n {\r\n name: legendName,\r\n data: seriesData,\r\n type: 'scatter',\r\n symbol: 'circle',\r\n smooth: false,\r\n symbolSize: 6,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.data[2];\r\n },\r\n position: 'right',\r\n minMargin: 2,\r\n },\r\n markLine: {\r\n symbol: ['none', 'none'],\r\n silent: true,\r\n label: {\r\n show: true,\r\n position: 'start',\r\n color: '#000000',\r\n },\r\n lineStyle: {\r\n type: 'solid',\r\n color: '#333',\r\n },\r\n data: [\r\n { xAxis: seriesData[0][0] },\r\n { xAxis: seriesData[1][0] },\r\n { xAxis: seriesData[2][0] },\r\n { yAxis: seriesData[0][1] },\r\n { yAxis: seriesData[1][1] },\r\n { yAxis: seriesData[2][1] },\r\n [\r\n {\r\n coord: coordX,\r\n lineStyle: {\r\n color: '#333',\r\n type: 'dashed',\r\n },\r\n },\r\n { coord: point_hp }, //Hp---x\r\n ],\r\n [\r\n {\r\n coord: coordY,\r\n lineStyle: {\r\n color: '#333',\r\n type: 'dashed', //dashed dotted\r\n },\r\n },\r\n { coord: point_hp }, //Hp----y\r\n ],\r\n ],\r\n },\r\n },\r\n {\r\n //a-b连线\r\n type: 'line',\r\n data: [\r\n [xData[2], yData[2]],\r\n [xData[1], yData[1]],\r\n ],\r\n lineStyle: {\r\n color: '#0000FF',\r\n type: 'solid',\r\n width: 1,\r\n },\r\n symbol: 'none',\r\n },\r\n {\r\n //a-b 延长线\r\n type: 'line',\r\n data: [\r\n [xData[1], yData[1]],\r\n [zero_ab[0], zero_ab[1]],\r\n ],\r\n lineStyle: {\r\n color: '#000000',\r\n type: 'dashed',\r\n width: 1,\r\n },\r\n symbol: 'none',\r\n },\r\n {\r\n //a-c连线\r\n type: 'line',\r\n data: [\r\n [xData[2], yData[2]],\r\n [xData[0], yData[0]],\r\n ],\r\n lineStyle: {\r\n color: '#0000FF',\r\n type: 'solid',\r\n width: 1,\r\n },\r\n symbol: 'none',\r\n },\r\n {\r\n //a-c 延长线\r\n type: 'line',\r\n data: [\r\n [xData[0], yData[0]],\r\n [zero_ac[0], zero_ac[1]],\r\n ],\r\n lineStyle: {\r\n color: '#000000',\r\n type: 'dashed',\r\n width: 1,\r\n },\r\n symbol: 'none',\r\n },\r\n {\r\n //a-Hp连线\r\n type: 'line',\r\n data: [[xData[2], yData[2]], point_hp],\r\n lineStyle: {\r\n color: '#0000FF',\r\n type: 'solid',\r\n width: 1,\r\n },\r\n symbol: 'none',\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 水泥、石灰标准曲线\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart90: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n //y轴原始数据\r\n let yDataSource = yDataArr[0]; // [1.2, 5.6, 10.8, 16, 20.8];\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //x轴的数据\r\n let xData = xDataArr[0]; // [0, 2, 4, 6, 8];\r\n\r\n //重新处理x轴和y轴的数据,排除x轴后面为0的数据(因为有可能在单元格中,最后一个单元格的值可能没有填,这时候默认传的是0)\r\n let xDataCl = [],\r\n yDataSourceCl = [];\r\n for (let i = 0; i < xData.length; i++) {\r\n if (xData[i] != '/' && (i == 0 || (i > 0 && xData[i] != 0))) {\r\n xDataCl.push(xData[i]);\r\n yDataSourceCl.push(yDataSource[i]);\r\n } else if (i > 0 && xData[i] == 0) {\r\n break;\r\n }\r\n }\r\n xData = xDataCl;\r\n yDataSource = yDataSourceCl;\r\n\r\n //series的data数据、series的markPoint的data数据、series的markLine的data数据\r\n let seriesData = [],\r\n markPointData = [],\r\n markLineData = [...xData];\r\n\r\n //此目的是显示更多的x轴数据\r\n //假设x轴原始数据为[0, 2, 4, 6, 8],在这个数组中没有1、3、5等数据,此时就可以通过下面的方式进行增加\r\n /*\r\n\t\tfor (let i = 0; i < 20; i++) {\r\n\t\t\tif (!markLineData.some((item) => item == i)) {\r\n\t\t\t\tmarkLineData.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\t\t*/\r\n\r\n //获取y轴趋势公式对象\r\n const gsS = EChartsUtilsComm.calcTrend(xData, yDataSource, xData[0]);\r\n\r\n //输出方程表达式\r\n if (chartExtJson != null) {\r\n if (chartExtJson.jxhslSnShScfc != null && chartExtJson.jxhslSnShScfc != undefined) {\r\n // console.log('输出公式:',`Y=${getRound(gsS.xl,0.0001)}X+${getRound(gsS.jj,0.0001)}`)\r\n if (gsS.xl == '' || gsS.jj == '') {\r\n sheet.setValue(chartExtJson.jxhslSnShScfc.row, chartExtJson.jxhslSnShScfc.col, '/');\r\n } else {\r\n sheet.setValue(\r\n chartExtJson.jxhslSnShScfc.row,\r\n chartExtJson.jxhslSnShScfc.col,\r\n `Y=${EChartsUtilsComm.getRound(gsS.xl, 0.0001)}X+${EChartsUtilsComm.getRound(gsS.jj, 0.0001)}`\r\n );\r\n }\r\n }\r\n }\r\n\r\n let yDataCopy = [];\r\n //获取y轴原始数据对应的趋势数据\r\n xData.forEach((item, index) => {\r\n let curYData = Number(EChartsUtilsComm.getRound(eval(gsS.gs.replace('x', item + '')), 0.01));\r\n if (isNaN(curYData)) {\r\n curYData = 0;\r\n }\r\n\r\n seriesData.push([item, curYData]);\r\n yDataCopy.push(curYData);\r\n markPointData.push({\r\n xAxis: item,\r\n yAxis: yDataSource[index],\r\n symbol: 'circle',\r\n symbolSize: 6,\r\n });\r\n\r\n //console.log(curYData, \"curYData\")\r\n });\r\n\r\n let yValIsAllNull = false;\r\n if (xData.length == 0) {\r\n yValIsAllNull = true;\r\n }\r\n let nullCount = 0;\r\n xData.forEach((item) => {\r\n if (item[1] == 0 || item[1] == null || item[1] == undefined) {\r\n nullCount++;\r\n }\r\n });\r\n if (nullCount == xData.length) {\r\n yValIsAllNull = true;\r\n }\r\n if (yDataCopy.some((item) => item != 0 || item[1] == null || item[1] == undefined)) {\r\n yValIsAllNull = false;\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 22,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: 35,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].value[0] + ':' + datas[0].value[1] : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n splitLine: { show: false }, // 隐藏分割线\r\n axisLabel: { show: false }, // 隐藏刻度值\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n opacity: 0,\r\n },\r\n data: seriesData,\r\n markPoint: {\r\n data: markPointData,\r\n },\r\n markLine: {\r\n symbol: false, //取消箭头\r\n silent: true, //取消鼠标hover事件\r\n label: {\r\n position: 'start', //改变label位置\r\n formatter: (obj) => obj.value, //格式化显示的x轴标签内容\r\n },\r\n lineStyle: { color: '#ddd', type: 'solid' },\r\n data: markLineData.map((val) => {\r\n return {\r\n xAxis: val,\r\n };\r\n }),\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 延迟时间-强度曲线\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart110: (\r\n config: EChartsUtilsConfigModel,\r\n xDataArr: Array<Array<any>>,\r\n yDataArr: Array<Array<any>>,\r\n xDataArrSource: Array<Array<any>>,\r\n yDataArrSource: Array<Array<any>>\r\n ) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n const xDataSource = xDataArrSource[0]; // ['0.0','1.0','2.0','3.0','4.0','5.0'];\r\n\r\n let xData = [];\r\n xDataSource.forEach((item, index) => {\r\n if (item == '/') {\r\n xData.push(item);\r\n } else {\r\n xData.push(Number(item));\r\n }\r\n });\r\n\r\n //y轴的数据\r\n let yData = yDataArr[0]; // [4.4,4.3,4.3,4.2,4.1,3.7];\r\n let seriesData = [];\r\n xData.forEach((item, index) => {\r\n if (item != '/' && item != undefined && item != null) {\r\n seriesData.push([item, yData[index]]);\r\n }\r\n });\r\n\r\n let yValIsAllNull = false;\r\n if (seriesData.length == 0) {\r\n yValIsAllNull = true;\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 25,\r\n left: 25,\r\n right: 15,\r\n bottom: 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'category', //设置x轴为对数坐标轴\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n axisLabel: {\r\n // 使用formatter格式化标签\r\n formatter: function (value) {\r\n let curXName = '';\r\n for (let i = 0; i < xData.length; i++) {\r\n if (xData[i] == value) {\r\n curXName = xDataSource[i];\r\n if (curXName == '/') {\r\n curXName = '';\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return curXName;\r\n },\r\n },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n },\r\n data: seriesData,\r\n },\r\n ],\r\n };\r\n return option;\r\n },\r\n /**\r\n * 颗粒组成(筛分法)\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart130: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n // console.log(config);\r\n // console.log(xDataArr);\r\n // console.log(yDataArr);\r\n\r\n //x和y轴的数据\r\n const xData = xDataArr[0], // [60, 40, 20, 10, 5, 2, 1, 0.5, 0.25, 0.075],\r\n yData = yDataArr[0]; // [100.0, 100.0, 88.3, 69.3, 46.7, 27.0, 19.7, 5.6, 0.5, 0.3];\r\n let xMin = 0.01,\r\n xMax = 200;\r\n\r\n let seriesData = [];\r\n xData.forEach((item, index) => {\r\n seriesData.push([item == '筛底' ? 0 : item, yData[index]]);\r\n });\r\n\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (xData.length == 0) {\r\n yValIsAllNull = true;\r\n }\r\n let nullCount = 0;\r\n xData.forEach((item) => {\r\n if (item[1] == null || item[1] == undefined || item[1] == '/') {\r\n nullCount++;\r\n }\r\n });\r\n if (nullCount == xData.length) {\r\n yValIsAllNull = true;\r\n }\r\n if (yData.some((item) => item != null && item != undefined && item != '/')) {\r\n yValIsAllNull = false;\r\n }\r\n\r\n if (yValIsAllNull) {\r\n xMin = null;\r\n xMax = null;\r\n }\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 25,\r\n left: 20,\r\n right: 15,\r\n bottom: 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'log', //设置x轴为对数坐标轴\r\n logBase: 10, //可以设置对数轴的底数,默认为10\r\n inverse: true,\r\n min: xMin,\r\n max: xMax,\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n },\r\n data: seriesData,\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 回弹模量 (承载板法)\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart150: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //x和y轴的数据\r\n const xData = xDataArr[0], // [25, 50, 100, 150, 200],\r\n yData = yDataArr[0]; // [0.72, 1.07, 1.87, 2.63, 3.48];\r\n\r\n let seriesData = [];\r\n xData.forEach((item, index) => {\r\n seriesData.push([item, yData[index]]);\r\n });\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (xData.length == 0) {\r\n yValIsAllNull = true;\r\n }\r\n let nullCount = 0;\r\n xData.forEach((item) => {\r\n if (item[1] == null || item[1] == undefined || item[1] == '/') {\r\n nullCount++;\r\n }\r\n });\r\n if (nullCount == xData.length) {\r\n yValIsAllNull = true;\r\n }\r\n if (yData.some((item) => item != null && item != undefined && item != '/')) {\r\n yValIsAllNull = false;\r\n }\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 55,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: 10,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n top: 18,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n splitLine: { show: false }, // 隐藏分割线\r\n axisLabel: { show: false }, // 隐藏刻度值\r\n position: 'top', //设置x轴在顶部显示\r\n },\r\n yAxis: [\r\n //双y轴,目的是使用第二个y轴来配置字符L显示在y轴下方箭头的位置\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n inverse: true, //y轴坐标轴向下\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n },\r\n data: seriesData,\r\n markLine: {\r\n symbol: false, //取消箭头\r\n silent: true, //取消鼠标hover事件\r\n label: {\r\n position: 'start', //改变label位置\r\n formatter: (obj) => obj.value, //格式化显示的x轴标签内容\r\n },\r\n lineStyle: { color: '#ddd', type: 'solid' },\r\n data: xData.map((val) => {\r\n return {\r\n xAxis: val,\r\n };\r\n }),\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 土的回弹模量 (强度仪法)\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart170: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //x和y轴的数据\r\n const xData = xDataArr[0], // [25, 50, 100, 150, 200],\r\n yData = yDataArr[0]; // [0.72, 1.07, 1.87, 2.63, 3.48];\r\n\r\n let seriesData = [];\r\n xData.forEach((item, index) => {\r\n seriesData.push([item, yData[index]]);\r\n });\r\n\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (xData.length == 0) {\r\n yValIsAllNull = true;\r\n }\r\n let nullCount = 0;\r\n xData.forEach((item) => {\r\n if (item[1] == null || item[1] == undefined || item[1] == '/') {\r\n nullCount++;\r\n }\r\n });\r\n if (nullCount == xData.length) {\r\n yValIsAllNull = true;\r\n }\r\n if (yData.some((item) => item != null && item != undefined && item != '/')) {\r\n yValIsAllNull = false;\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 55,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: 10,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n top: 18,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n splitLine: { show: false }, // 隐藏分割线\r\n axisLabel: { show: false }, // 隐藏刻度值\r\n position: 'top', //设置x轴在顶部显示\r\n },\r\n yAxis: [\r\n //双y轴,目的是使用第二个y轴来配置字符L显示在y轴下方箭头的位置\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n inverse: true, //y轴坐标轴向下\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n },\r\n data: seriesData,\r\n markLine: {\r\n symbol: false, //取消箭头\r\n silent: true, //取消鼠标hover事件\r\n label: {\r\n position: 'start', //改变label位置\r\n formatter: (obj) => obj.value, //格式化显示的x轴标签内容\r\n },\r\n lineStyle: { color: '#ddd', type: 'solid' },\r\n data: xData.map((val) => {\r\n return {\r\n xAxis: val,\r\n };\r\n }),\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 28d抗压强度与胶水比关系\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart190: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = '', // config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //x和y轴的数据\r\n let xData = xDataArr[0], // [2.32, 2.5, 2.7],\r\n yData = yDataArr[0]; // [42.5, 47.1, 49.1];\r\n\r\n //处理数据\r\n xData = xData.filter((item) => item != null && item != undefined && item != '/' && (item._code == null || item._code == undefined));\r\n yData = yData.filter((item) => item != null && item != undefined && item != '/' && (item._code == null || item._code == undefined));\r\n\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (xData.length == 0) {\r\n yValIsAllNull = true;\r\n }\r\n let nullCount = 0;\r\n xData.forEach((item) => {\r\n if (item == null || item == undefined || item == '/') {\r\n nullCount++;\r\n }\r\n });\r\n if (nullCount == xData.length) {\r\n yValIsAllNull = true;\r\n xData = [];\r\n }\r\n if (yData.some((item) => item != null && item != undefined && item != '/')) {\r\n yValIsAllNull = false;\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 10,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 18,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'category',\r\n data: xData,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n axisLabel: {\r\n // 使用formatter格式化标签\r\n formatter: function (value) {\r\n if (value == '/') {\r\n return '';\r\n } else {\r\n return value;\r\n }\r\n },\r\n },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n },\r\n data: yData,\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 混凝土拌合物含气量\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart210: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n //x和y轴的原始数据\r\n let xDataSource = xDataArr[0], // [0.093, 0.081, 0.068, 0.063, 0.057, 0.052, 0.049, 0.044, 0.041, 0.038, 0.036],\r\n yDataSource = yDataArr[0]; // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //series需要的数据\r\n const seriesData = [];\r\n\r\n for (let i = xDataSource.length - 1; i >= 0; i--) {\r\n const item = xDataSource[i];\r\n\r\n if (item != null && item != undefined && item != '/' && (item._error == null || item._error == undefined)) {\r\n seriesData.push([item, yDataSource[i]]);\r\n }\r\n }\r\n\r\n //x和y轴的字体大小\r\n const xyFontSize = 10;\r\n\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (xDataSource.length == 0) {\r\n yValIsAllNull = true;\r\n }\r\n let nullCount = 0;\r\n xDataSource.forEach((item) => {\r\n if (item == null || item == undefined || item == '/' || (item._error != null && item._error != undefined)) {\r\n nullCount++;\r\n }\r\n });\r\n if (nullCount == xDataSource.length) {\r\n yValIsAllNull = true;\r\n //xDataSource = [];\r\n }\r\n if (yDataSource.some((item) => item != null && item != undefined && item != '/')) {\r\n yValIsAllNull = false;\r\n }\r\n\r\n const getXline = () => {\r\n let arr = [];\r\n [0, 0.02, 0.04, 0.06, 0.08, 0.1].forEach((val) => {\r\n xDataSource.forEach((item) => {\r\n let obj: any = { xAxis: '' };\r\n\r\n if (item == '/') {\r\n obj.xAxis = '';\r\n arr.push(obj);\r\n } else {\r\n obj.xAxis = val;\r\n arr.push(obj);\r\n }\r\n });\r\n });\r\n\r\n //去重\r\n let uniqueData = arr.filter((item, index, self) => index === self.findIndex((t) => t.xAxis == item.xAxis));\r\n return nullCount == xDataSource.length ? [] : uniqueData;\r\n };\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 25,\r\n left: !yValIsAllNull && seriesData.length > 0 ? 30 : 25,\r\n right: 10,\r\n bottom: 40,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].value[0] + ':' + datas[0].value[1] : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n splitLine: { show: false }, // 隐藏分割线\r\n axisLabel: { show: false }, // 隐藏刻度值\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull && seriesData.length > 0 ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n axisLabel: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n },\r\n data: seriesData,\r\n markLine: {\r\n symbol: false, //取消箭头\r\n silent: true, //取消鼠标hover事件\r\n label: {\r\n position: 'start', //改变label位置\r\n formatter: (obj) => obj.value, //格式化显示的x轴标签内容\r\n fontSize: xyFontSize,\r\n },\r\n lineStyle: { color: '#ddd', type: 'solid' },\r\n data: getXline(),\r\n // data: [0, 0.02, 0.04, 0.06, 0.08, 0.1].map((val) => {\r\n // return {\r\n // xAxis: val,\r\n // }\r\n // }),\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 混凝土拌合物凝结时间\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart230: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n /*\r\n\t\t\t此处需要注意的是,如果单元格A3=A1-A2,就需要将A3=TEXT(A1-A2, \"h\"\":\"\"m\")\r\n\r\n\t\t\tExcel中默认时间相减得到的是天为单位,因此此处使用了TEXT函数来格式化相减的时间差格式\r\n\r\n\t\t\t=TEXT(A1-A2, \"h\"\":\"\"m\")\r\n\t\t\t=INT(A1-A2) & \"天\" & TEXT(A1-A2, \"h\"\"小时\"\"m\"\"分\"\"\")\r\n\r\n\t\t*/\r\n\r\n //折线的数量\r\n let lineCount = xDataArr.length;\r\n\r\n //原始数据\r\n let xDataSource1 = [], // ['6:20', '6:50', '7:20', '7:50', '7:56', '8:26', '8:56', '9:26', '9:56', '10:11'],\r\n xDataSource2 = [], // ['6:27', '6:57', '7:32', '8:02', '8:05', '8:35', '9:05', '9:35', '10:05', '10:22'],\r\n xDataSource3 = [], // ['6:10', '6:40', '7:10', '7:40', '8:03', '8:13', '8:42', '9:12', '9:40', '10:12'],\r\n yDataSource1 = [], // [0.8, 1.2, 2.2, 3.4, 3.6, 7.8, 11.8, 16.6, 24.6, 28.2],\r\n yDataSource2 = [], // [0.8, 1.3, 2.4, 3.4, 3.5, 7.7, 12.2, 16.7, 25, 28.2],\r\n yDataSource3 = []; // [0.7, 1, 1.9, 3, 3.3, 3.5, 8.2, 13.8, 20.2, 28.2];\r\n\r\n //折线1\r\n xDataSource1 = EChartsUtilsComm.filterNullEmptyErrArray(xDataArr[0]); // ['6:20', '6:50', '7:20', '7:50', '7:56', '8:26', '8:56', '9:26', '9:56', '10:11'],\r\n yDataSource1 = EChartsUtilsComm.filterNullEmptyErrArray(yDataArr[0]); // [0.8, 1.2, 2.2, 3.4, 3.6, 7.8, 11.8, 16.6, 24.6, 28.2],\r\n\r\n //折线2\r\n if (lineCount == 2) {\r\n xDataSource2 = EChartsUtilsComm.filterNullEmptyErrArray(xDataArr[1]); // ['6:27', '6:57', '7:32', '8:02', '8:05', '8:35', '9:05', '9:35', '10:05', '10:22'],\r\n yDataSource2 = EChartsUtilsComm.filterNullEmptyErrArray(yDataArr[1]); // [0.8, 1.3, 2.4, 3.4, 3.5, 7.7, 12.2, 16.7, 25, 28.2],\r\n }\r\n //折线3\r\n if (lineCount == 3) {\r\n xDataSource2 = EChartsUtilsComm.filterNullEmptyErrArray(xDataArr[1]); // ['6:27', '6:57', '7:32', '8:02', '8:05', '8:35', '9:05', '9:35', '10:05', '10:22'],\r\n yDataSource2 = EChartsUtilsComm.filterNullEmptyErrArray(yDataArr[1]); // [0.8, 1.3, 2.4, 3.4, 3.5, 7.7, 12.2, 16.7, 25, 28.2],\r\n xDataSource3 = EChartsUtilsComm.filterNullEmptyErrArray(xDataArr[2]); // ['6:10', '6:40', '7:10', '7:40', '8:03', '8:13', '8:42', '9:12', '9:40', '10:12'],\r\n yDataSource3 = EChartsUtilsComm.filterNullEmptyErrArray(yDataArr[2]); // [0.7, 1, 1.9, 3, 3.3, 3.5, 8.2, 13.8, 20.2, 28.2];\r\n }\r\n\r\n //3条线的x轴数据\r\n let xData1 = [],\r\n xData2 = [],\r\n xData3 = [];\r\n\r\n //组装数据\r\n\r\n xDataSource1.forEach((item, index) => {\r\n //js的时间格式\r\n if (typeof item == 'object') {\r\n xData1.push(item.getHours() * 60 + item.getMinutes());\r\n }\r\n //数字\r\n else if (typeof item == 'number') {\r\n xData1.push(item);\r\n }\r\n //文本格式\r\n else {\r\n const curArr = item.split(':');\r\n const curItemMins = Number(curArr[0]) * 60 + Number(curArr[1]);\r\n xData1.push(curItemMins);\r\n }\r\n });\r\n\r\n xDataSource2.forEach((item, index) => {\r\n //js的时间格式\r\n if (typeof item == 'object') {\r\n xData2.push(item.getHours() * 60 + item.getMinutes());\r\n }\r\n //数字\r\n else if (typeof item == 'number') {\r\n xData2.push(item);\r\n }\r\n //文本格式\r\n else {\r\n const curArr = item.split(':');\r\n const curItemMins = Number(curArr[0]) * 60 + Number(curArr[1]);\r\n xData2.push(curItemMins);\r\n }\r\n });\r\n\r\n xDataSource3.forEach((item, index) => {\r\n //js的时间格式\r\n if (typeof item == 'object') {\r\n xData3.push(item.getHours() * 60 + item.getMinutes());\r\n }\r\n //数字\r\n else if (typeof item == 'number') {\r\n xData3.push(item);\r\n }\r\n //文本格式\r\n else {\r\n const curArr = item.split(':');\r\n const curItemMins = Number(curArr[0]) * 60 + Number(curArr[1]);\r\n xData3.push(curItemMins);\r\n }\r\n });\r\n\r\n //x轴数据前后增加一个点,y轴数据前后也增加一个点\r\n if (xDataSource1.length > 0) {\r\n xData1.push(xData1[xData1.length - 1] + 20);\r\n xData1.unshift(xData1[0] - 20);\r\n yDataSource1.push(null);\r\n yDataSource1.unshift(null);\r\n }\r\n\r\n if (lineCount == 2) {\r\n if (xDataSource2.length > 0) {\r\n xData2.push(xData2[xData2.length - 1] + 20);\r\n xData2.unshift(xData2[0] - 20);\r\n yDataSource2.push(null);\r\n yDataSource2.unshift(null);\r\n }\r\n }\r\n if (lineCount == 3) {\r\n if (xDataSource3.length == 0) {\r\n xData2.push(xData2[xData2.length - 1] + 20);\r\n xData2.unshift(xData2[0] - 20);\r\n yDataSource2.push(null);\r\n yDataSource2.unshift(null);\r\n xData3.push(xData3[xData3.length - 1] + 20);\r\n xData3.unshift(xData3[0] - 20);\r\n yDataSource3.push(null);\r\n yDataSource3.unshift(null);\r\n }\r\n }\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName;\r\n\r\n //获取xAxis需要的数据\r\n const getxAxisObj = (type, data) => {\r\n return {\r\n type: 'category',\r\n data: data,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n show: type == 1,\r\n splitLine: {\r\n show: true,\r\n },\r\n };\r\n };\r\n\r\n let xAxisData = [getxAxisObj(1, xData1)];\r\n if (lineCount == 2) {\r\n xAxisData.push(getxAxisObj(2, xData2));\r\n }\r\n if (lineCount == 3) {\r\n xAxisData.push(getxAxisObj(2, xData2));\r\n xAxisData.push(getxAxisObj(3, xData3));\r\n }\r\n\r\n //获取series需要的数据\r\n const getLineObj = (type, data) => {\r\n const name = type == 1 ? '第一组' : type == 2 ? '第二组' : '第三组';\r\n const symbol = type == 1 ? 'rect' : type == 2 ? 'triangle' : 'circle';\r\n const lineType = type == 1 ? 'solid' : type == 2 ? 'dotted' : [10, 5];\r\n const color =\r\n type == 1 && lineData.length >= 1\r\n ? lineData[0].lineColor\r\n : type == 2 && lineData.length >= 2\r\n ? lineData[1].lineColor\r\n : type == 3 && lineData.length >= 3\r\n ? lineData[2].lineColor\r\n : '#000';\r\n\r\n let obj = {\r\n name: name,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: symbol, //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: color,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n type: lineType,\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: color,\r\n },\r\n data: data,\r\n };\r\n\r\n return obj;\r\n };\r\n\r\n //series: [getLineObj(1, yDataSource1), getLineObj(2, yDataSource2), getLineObj(3, yDataSource3)],\r\n let seriesData = [getLineObj(1, yDataSource1)];\r\n if (lineCount == 2) {\r\n if (yDataSource2.length > 0) {\r\n seriesData.push(getLineObj(2, yDataSource2));\r\n }\r\n }\r\n if (lineCount == 3) {\r\n if (yDataSource2.length > 0) {\r\n seriesData.push(getLineObj(2, yDataSource2));\r\n }\r\n if (yDataSource3.length > 0) {\r\n seriesData.push(getLineObj(3, yDataSource3));\r\n }\r\n }\r\n\r\n let legendData = lineCount == 1 ? ['第一组'] : lineCount == 2 ? ['第一组', '第二组'] : ['第一组', '第二组', '第三组'],\r\n legendSelected: any =\r\n lineCount == 1 ? { 第一组: true } : lineCount == 2 ? { 第一组: true, 第二组: true } : { 第一组: true, 第二组: true, 第三组: true };\r\n\r\n //console.log(xData1,xData2,xData3,seriesData)\r\n let yValIsAllNull = false;\r\n let xValIsAllNull = false;\r\n let topmargin = 0;\r\n //为空不展示\r\n if (xDataSource1.length == 0) {\r\n xValIsAllNull = true;\r\n topmargin = 15;\r\n\r\n legendData = ['第二组', '第三组'];\r\n legendSelected = { 第一组: false, 第二组: true, 第三组: true };\r\n\r\n xAxisData = [];\r\n seriesData = [];\r\n\r\n xAxisData.push(getxAxisObj(1, xData2));\r\n xAxisData.push(getxAxisObj(3, xData3));\r\n seriesData.push(getLineObj(2, yDataSource2));\r\n seriesData.push(getLineObj(3, yDataSource3));\r\n\r\n if (xDataSource2.length == 0) {\r\n topmargin = 35;\r\n\r\n legendData = ['第三组'];\r\n legendSelected = { 第一组: false, 第二组: false, 第三组: true };\r\n\r\n xAxisData = [];\r\n seriesData = [];\r\n\r\n xAxisData.push(getxAxisObj(1, xData3));\r\n seriesData.push(getLineObj(3, yDataSource3));\r\n\r\n if (xDataSource3.length == 0) {\r\n topmargin = 0;\r\n\r\n yValIsAllNull = true;\r\n legendData = [];\r\n legendSelected = { 第一组: false, 第二组: false, 第三组: false };\r\n xAxisData = [];\r\n seriesData = [];\r\n xAxisData.push(getxAxisObj(1, []));\r\n seriesData.push(getLineObj(3, []));\r\n }\r\n }\r\n } else if (xDataSource2.length == 0) {\r\n topmargin = 15;\r\n xValIsAllNull = true;\r\n legendData = ['第一组', '第三组'];\r\n legendSelected = { 第一组: true, 第二组: false, 第三组: true };\r\n\r\n xAxisData = [];\r\n seriesData = [];\r\n\r\n xAxisData.push(getxAxisObj(1, xData1));\r\n xAxisData.push(getxAxisObj(3, xData3));\r\n\r\n seriesData.push(getLineObj(1, yDataSource1));\r\n seriesData.push(getLineObj(3, yDataSource3));\r\n\r\n if (xDataSource1.length == 0) {\r\n topmargin = 35;\r\n\r\n legendData = ['第三组'];\r\n legendSelected = { 第一组: false, 第二组: false, 第三组: true };\r\n\r\n xAxisData = [];\r\n seriesData = [];\r\n\r\n xAxisData.push(getxAxisObj(1, xData1));\r\n seriesData.push(getLineObj(3, yDataSource1));\r\n\r\n if (xDataSource3.length == 0) {\r\n topmargin = 0;\r\n\r\n yValIsAllNull = true;\r\n legendData = [];\r\n legendSelected = { 第一组: false, 第二组: false, 第三组: false };\r\n xAxisData = [];\r\n seriesData = [];\r\n xAxisData.push(getxAxisObj(1, []));\r\n seriesData.push(getLineObj(3, []));\r\n }\r\n }\r\n } else if (xDataSource3.length == 0) {\r\n topmargin = 15;\r\n xValIsAllNull = true;\r\n legendData = ['第一组', '第二组'];\r\n legendSelected = { 第一组: true, 第二组: true, 第三组: false };\r\n\r\n xAxisData = [];\r\n seriesData = [];\r\n xAxisData.push(getxAxisObj(1, xData1));\r\n xAxisData.push(getxAxisObj(2, xData2));\r\n seriesData.push(getLineObj(1, yDataSource1));\r\n seriesData.push(getLineObj(2, yDataSource2));\r\n\r\n if (xDataSource1.length == 0) {\r\n topmargin = 35;\r\n legendData = ['第二组'];\r\n legendSelected = { 第一组: false, 第二组: true, 第三组: false };\r\n\r\n xAxisData = [];\r\n seriesData = [];\r\n\r\n xAxisData.push(getxAxisObj(1, xData2));\r\n seriesData.push(getLineObj(2, yDataSource2));\r\n\r\n if (xDataSource2.length == 0) {\r\n topmargin = 0;\r\n yValIsAllNull = true;\r\n legendData = [];\r\n legendSelected = { 第一组: false, 第二组: false, 第三组: false };\r\n xAxisData = [];\r\n seriesData = [];\r\n xAxisData.push(getxAxisObj(1, []));\r\n seriesData.push(getLineObj(2, []));\r\n }\r\n }\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: !xValIsAllNull ? -5 : topmargin,\r\n left: 30,\r\n right: 10,\r\n bottom: 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n left: 'center',\r\n top: 16,\r\n data: legendData,\r\n selected: legendSelected,\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: xAxisData,\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: seriesData,\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 颗粒组成(密度计法)\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart250: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //x和y轴的数据\r\n const xData = xDataArr[0], // [0.0316, 0.0224, 0.0115, 0.0075, 0.0058, 0.0033, 0.0031, 0.0024, 0.001, 0.0008],\r\n yData = yDataArr[0]; // [83.0, 78.8, 53.8, 42.6, 33.7, 27.8, 23.2, 19.2, 13.0, 7.7];\r\n\r\n let seriesData = [];\r\n xData.forEach((item, index) => {\r\n seriesData.push([item, yData[index]]);\r\n });\r\n\r\n let xmin = 0.001,\r\n xmax = 100;\r\n\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (xData.length == 0) {\r\n yValIsAllNull = true;\r\n }\r\n let nullCount = 0;\r\n xData.forEach((item) => {\r\n if (item == null || item == undefined || item == '/') {\r\n nullCount++;\r\n }\r\n });\r\n if (nullCount == xData.length) {\r\n yValIsAllNull = true;\r\n xmin = null;\r\n xmax = null;\r\n }\r\n if (yData.some((item) => item != null && item != undefined && item != '/')) {\r\n yValIsAllNull = false;\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 25,\r\n left: 20,\r\n right: 15,\r\n bottom: 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'log', //设置x轴为对数坐标轴\r\n logBase: 10, //可以设置对数轴的底数,默认为10\r\n inverse: true,\r\n min: xmin,\r\n max: xmax,\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n },\r\n data: seriesData,\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 承载比(CBR)\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart270: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //x和y轴的数据\r\n // const xDataSource1 = xDataArr[0], // [36, 102, 316, 678, 917, 1177, 1396, 1478, 1620, 1651, 1753, 1789, 1855],\r\n // \txDataSource2 = xDataArr[1], // [56, 122, 357, 617, 958, 1223, 1376, 1493, 1631, 1682, 1783, 1824, 1885],\r\n // \txDataSource3 = xDataArr[2], // [66, 168, 443, 729, 994, 1213, 1411, 1529, 1651, 1722, 1783, 1824, 1890],\r\n // \tyDataSource1 = yDataArr[0], // [0.31, 0.51, 0.94, 1.47, 2.0, 2.48, 2.92, 3.41, 3.87, 4.37, 4.86, 5.36, 5.88],\r\n // \tyDataSource2 = yDataArr[1], // [0.26, 0.5, 1.01, 1.52, 2.02, 2.52, 2.98, 3.49, 3.99, 4.49, 4.98, 5.48, 5.98],\r\n // \tyDataSource3 = yDataArr[2]; // [0.32, 0.52, 1.01, 1.5, 1.99, 2.49, 2.98, 3.47, 3.96, 4.46, 4.95, 5.44, 5.93];\r\n\r\n let xDataSource1 = [],\r\n xDataSource2 = [],\r\n xDataSource3 = [],\r\n yDataSource1 = [],\r\n yDataSource2 = [],\r\n yDataSource3 = [];\r\n\r\n //排除原始数据为0的数据\r\n xDataArr[0].forEach((item, index) => {\r\n if (item != 0 && yDataArr[0][index] != 0) {\r\n xDataSource1.push(item);\r\n yDataSource1.push(yDataArr[0][index]);\r\n }\r\n });\r\n xDataArr[1].forEach((item, index) => {\r\n if (item != 0 && yDataArr[1][index] != 0) {\r\n xDataSource2.push(item);\r\n yDataSource2.push(yDataArr[1][index]);\r\n }\r\n });\r\n xDataArr[2].forEach((item, index) => {\r\n if (item != 0 && yDataArr[2][index] != 0) {\r\n xDataSource3.push(item);\r\n yDataSource3.push(yDataArr[2][index]);\r\n }\r\n });\r\n\r\n /**\r\n * 获取series需要的3条线配置\r\n * @param type 线类型(1:筛分曲线、2:上限、3:下限)\r\n * @param data 对应的坐标点数据\r\n */\r\n const getLineObj = (type, xData, yData) => {\r\n const name = `曲线${type}`;\r\n const symbol = type == 1 ? 'rect' : type == 2 ? 'triangle' : 'circle';\r\n const lineType = type == 1 ? 'solid' : type == 2 ? 'dotted' : [10, 5];\r\n const color = type == 1 ? lineData[0].lineColor : type == 2 ? lineData[1].lineColor : lineData[2].lineColor; //ttype == 1 ? '#F56C6C' : type == 2 ? '#409EFF' : '#000';\r\n\r\n const seriesData = [];\r\n xData.forEach((item, index) => {\r\n seriesData.push([item, yData[index]]);\r\n });\r\n\r\n return {\r\n name: name,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: symbol, //符号类型\r\n symbolSize: 5, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: color,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n type: lineType,\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: color,\r\n },\r\n data: seriesData,\r\n };\r\n };\r\n\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (\r\n xDataSource1.every((item) => item == '/') &&\r\n xDataSource2.every((item) => item == '/') &&\r\n xDataSource3.every((item) => item == '/') &&\r\n yDataSource1.every((item) => item == '/') &&\r\n yDataSource2.every((item) => item == '/') &&\r\n yDataSource3.every((item) => item == '/')\r\n ) {\r\n yValIsAllNull = true;\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 35,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 20,\r\n bottom: 5,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].value[0] + ')' + ':' + datas[0].value[1] : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n top: 16,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value', //category\r\n //data: xDataSource1,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n splitLine: { show: true },\r\n position: 'top', //设置x轴在顶部显示\r\n nameGap: 5, //坐标轴名称与轴线之间的距离\r\n nameLocation: 'end', //设置x轴显示的名称的位置在末端,注意:需要配置grid.right一起使用,不然可能会被遮住\r\n },\r\n yAxis: [\r\n //双y轴,目的是使用第二个y轴来配置字符L显示在y轴下方箭头的位置\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n inverse: true, //y轴坐标轴向下\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [getLineObj(1, xDataSource1, yDataSource1), getLineObj(2, xDataSource2, yDataSource2), getLineObj(3, xDataSource3, yDataSource3)],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 压实度-吸水量,膨胀率,CBR-279、280和281\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart279_280_281: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = config.chartTitle, //压实度-吸水量关系曲线 压实度-膨胀率关系曲线 压实度-CBR关系曲线\r\n xName = config.chartXName, //压实度(%) 压实度(%) 压实度(%)\r\n yName = config.chartYName, //吸水量(g) 膨胀率(%) CBR(%)\r\n legendName = '图例1';\r\n\r\n //y轴最大最小数据加减数字\r\n let jjNum = config.chartType == 279 ? 5 : config.chartType == 280 ? 0.1 : 0.15;\r\n\r\n //x和y轴的数据\r\n let xData = xDataArr[0], // [90.3, 95.6, 99.5],\r\n yData = yDataArr[0], // [245, 206, 163],\r\n xAxisMin = Math.min(...xData),\r\n yAxisMin = Number(EChartsUtilsComm.getRound(Math.min(...yData) - jjNum, 0.001)),\r\n yAxisMax = Number(EChartsUtilsComm.getRound(Math.max(...yData) + jjNum, 0.001));\r\n //yData1 = [245, 206, 163],\r\n //yData2 = [3.49, 2.69, 2.34];\r\n //yData3 = [4, 4.7, 5.7];\r\n //修约:0.001 0.001 0.001\r\n //y最大最小加减数:5 0.1 0.15\r\n\r\n xAxisMin = Number(EChartsUtilsComm.getRound(xAxisMin - xAxisMin * 0.01, 0.001));\r\n\r\n let seriesData = [];\r\n xData.forEach((item, index) => {\r\n seriesData.push([item, yData[index]]);\r\n });\r\n\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (yData.every((item) => item == '/')) {\r\n yValIsAllNull = true;\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 25,\r\n left: 20,\r\n right: 15,\r\n bottom: 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value', //设置x轴为对数坐标轴\r\n min: xAxisMin,\r\n max: 100,\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n show: true, //y轴默认是不显示的\r\n },\r\n min: yAxisMin,\r\n max: yAxisMax,\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n },\r\n data: seriesData,\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 承载比(CBR)(路强仪)\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart290: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //x和y轴的数据\r\n let xDataSource1 = xDataArr[0], // [36, 102, 316, 678, 917, 1177, 1396, 1478, 1620, 1651, 1753, 1789, 1855],\r\n xDataSource2 = xDataArr[0], // [56, 122, 357, 617, 958, 1223, 1376, 1493, 1631, 1682, 1783, 1824, 1885],\r\n xDataSource3 = xDataArr[0], // [66, 168, 443, 729, 994, 1213, 1411, 1529, 1651, 1722, 1783, 1824, 1890],\r\n yDataSource1 = yDataArr[0], // [0.31, 0.51, 0.94, 1.47, 2.0, 2.48, 2.92, 3.41, 3.87, 4.37, 4.86, 5.36, 5.88],\r\n yDataSource2 = yDataArr[1], // [0.26, 0.5, 1.01, 1.52, 2.02, 2.52, 2.98, 3.49, 3.99, 4.49, 4.98, 5.48, 5.98],\r\n yDataSource3 = yDataArr[2]; // [0.32, 0.52, 1.01, 1.5, 1.99, 2.49, 2.98, 3.47, 3.96, 4.46, 4.95, 5.44, 5.93];\r\n\r\n /**\r\n * 获取series需要的3条线配置\r\n * @param type 线类型(1:筛分曲线、2:上限、3:下限)\r\n * @param data 对应的坐标点数据\r\n */\r\n const getLineObj = (type, data) => {\r\n const name = `曲线${type}`;\r\n const symbol = type == 1 ? 'rect' : type == 2 ? 'triangle' : 'circle';\r\n const lineType = type == 1 ? 'solid' : type == 2 ? 'dotted' : [10, 5];\r\n const color = type == 1 ? lineData[0].lineColor : type == 2 ? lineData[1].lineColor : lineData[2].lineColor; //ttype == 1 ? '#F56C6C' : type == 2 ? '#409EFF' : '#000';\r\n\r\n return {\r\n name: name,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: symbol, //符号类型\r\n symbolSize: 5, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: color,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n type: lineType,\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: color,\r\n },\r\n data: data,\r\n };\r\n };\r\n\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (\r\n xDataSource1.every((item) => item == '/') &&\r\n xDataSource2.every((item) => item == '/') &&\r\n xDataSource3.every((item) => item == '/') &&\r\n yDataSource1.every((item) => item == '/') &&\r\n yDataSource2.every((item) => item == '/') &&\r\n yDataSource3.every((item) => item == '/')\r\n ) {\r\n yValIsAllNull = true;\r\n xDataSource1 = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 35,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: 5,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n top: 16,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'category',\r\n data: xDataSource1,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n splitLine: { show: true },\r\n position: 'top', //设置x轴在顶部显示\r\n nameGap: 5, //坐标轴名称与轴线之间的距离\r\n nameLocation: 'end', //设置x轴显示的名称的位置在末端,注意:需要配置grid.right一起使用,不然可能会被遮住\r\n axisLabel: {\r\n // 使用formatter格式化标签\r\n formatter: function (value) {\r\n if (value == '/') {\r\n return '';\r\n } else {\r\n return value;\r\n }\r\n },\r\n },\r\n },\r\n yAxis: [\r\n //双y轴,目的是使用第二个y轴来配置字符L显示在y轴下方箭头的位置\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n inverse: true, //y轴坐标轴向下\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [getLineObj(1, yDataSource1), getLineObj(2, yDataSource2), getLineObj(3, yDataSource3)],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 土基回弹模量\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart310: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //x和y轴的数据\r\n let xData = xDataArr[0], // [0.02, 0.04, 0.06, 0.08, 0.14, 0.18, 0.22, 0.26, 0.3, 0.34],\r\n yData = yDataArr[0]; // [6, 10, 12, 16, 20, 28, 36, 44, 54, 68];\r\n\r\n let xDataCl = [],\r\n yDataCl = [];\r\n xData.forEach((item, index) => {\r\n if (item != null && item != undefined && item != '/' && (item._code == null || item._code == undefined)) {\r\n xDataCl.push(item);\r\n yDataCl.push(yData[index]);\r\n }\r\n });\r\n xData = xDataCl;\r\n yData = yDataCl;\r\n\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (\r\n xData.every((item) => item == '/' || (item._code != null && item._code != undefined)) &&\r\n yData.every((item) => item == '/' || (item._code != null && item._code != undefined))\r\n ) {\r\n yValIsAllNull = true;\r\n xData = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 35,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 20,\r\n bottom: 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n top: 16,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'category',\r\n data: xData,\r\n axisLabel: {\r\n // 使用formatter格式化标签\r\n formatter: function (value) {\r\n if (value == '/') {\r\n return '';\r\n } else {\r\n return value;\r\n }\r\n },\r\n },\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n axisLine: {\r\n //设置x轴箭头效果\r\n symbol: ['none', 'arrow'], //默认是['none', 'none'],可以设置为['arrow', 'none']或['none', 'arrow']等来分别控制起始和结束的箭头\r\n symbolSize: 10, //箭头大小\r\n },\r\n splitLine: { show: true },\r\n position: 'top', //设置x轴在顶部显示\r\n name: 'p', //设置x轴显示的名称\r\n nameGap: 5, //坐标轴名称与轴线之间的距离\r\n nameLocation: 'end', //设置x轴显示的名称的位置在末端,注意:需要配置grid.right一起使用,不然可能会被遮住\r\n },\r\n yAxis: [\r\n //双y轴,目的是使用第二个y轴来配置字符L显示在y轴下方箭头的位置\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n inverse: true, //y轴坐标轴向下\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n symbol: ['arrow', 'none'], //默认是['none', 'none'],可以设置为['arrow', 'none']或['none', 'arrow']等来分别控制起始和结束的箭头\r\n symbolSize: 10, //箭头大小\r\n },\r\n },\r\n {\r\n //配置符号L的显示\r\n name: 'L',\r\n nameRotate: 0,\r\n nameLocation: 'end',\r\n nameGap: 5, //坐标轴名称与轴线之间的距离\r\n position: 'left',\r\n inverse: true, //y轴坐标轴向下\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n },\r\n data: yData,\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 布氏粘度计\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart330: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n let title = '', //config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //x和y轴的数据\r\n let xData = xDataArr[0],\r\n yData = yDataArr[0];\r\n\r\n //获取y轴趋势公式对象\r\n const gsS: any = EChartsUtilsComm.calcTrend(xData, yData, xData[0]);\r\n\r\n //黏度为0.15Pa·s、0.19Pa·s、0.25Pa·s、0.31Pa·s时的温度\r\n let wd015 = EChartsUtilsComm.getRound((0.15 - gsS.jj) / gsS.xl, 0),\r\n wd019 = EChartsUtilsComm.getRound((0.19 - gsS.jj) / gsS.xl, 0),\r\n wd025 = EChartsUtilsComm.getRound((0.25 - gsS.jj) / gsS.xl, 0),\r\n wd031 = EChartsUtilsComm.getRound((0.31 - gsS.jj) / gsS.xl, 0);\r\n\r\n if (wd015 == Infinity) {\r\n wd015 = 0;\r\n }\r\n if (wd019 == Infinity) {\r\n wd019 = 0;\r\n }\r\n if (wd025 == Infinity) {\r\n wd025 = 0;\r\n }\r\n if (wd031 == Infinity) {\r\n wd031 = 0;\r\n }\r\n //输出“拌合温度范围 ℃”和“压实成型温度范围 ℃”\r\n let wdBh = `${wd015}~${wd019}`,\r\n wdYs = `${wd025}~${wd031}`;\r\n // console.log('输出温度:', wdBh, wdYs);\r\n\r\n //设置Sheet单元格的值(拌合温度和压实成型温度范围)\r\n if (chartExtJson != null) {\r\n if (wd015 == 0 && wd019 == 0) {\r\n sheet.setValue(chartExtJson.bszdjBh.row, chartExtJson.bszdjBh.col, '/');\r\n } else {\r\n sheet.setValue(chartExtJson.bszdjBh.row, chartExtJson.bszdjBh.col, wdBh);\r\n }\r\n if (wd025 == 0 && wd031 == 0) {\r\n sheet.setValue(chartExtJson.bszdjYs.row, chartExtJson.bszdjYs.col, '/');\r\n } else {\r\n sheet.setValue(chartExtJson.bszdjYs.row, chartExtJson.bszdjYs.col, wdYs);\r\n }\r\n }\r\n\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (xData.every((item) => item == '/') && yData.every((item) => item == '/')) {\r\n yValIsAllNull = true;\r\n xData = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 10,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 18,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'category',\r\n data: xData,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n axisLabel: {\r\n // 使用formatter格式化标签\r\n formatter: function (value) {\r\n if (value == '/') {\r\n return '';\r\n } else {\r\n return value;\r\n }\r\n },\r\n },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 25 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n },\r\n data: yData,\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 液限碟式仪\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart350: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson),\r\n lineColor = lineData[0].lineColor;\r\n\r\n //击数N(次)、含水率w(%)、y轴第一个趋势数据、y轴第二个趋势数据、25的趋势数据、y轴最小值、y轴最大值\r\n const jsN = [xDataArr[0][0], xDataArr[0][1]], // [18, 30],\r\n hsl = [yDataArr[0][0], yDataArr[0][1]], // [22.1, 11.5],\r\n //通过calcTrend获取y轴第一个趋势数据、y轴第二个趋势数据、25的趋势数据\r\n yVal1 = Number(EChartsUtilsComm.getRound(EChartsUtilsComm.calcTrend(jsN, hsl, jsN[0]).y, 0.1)),\r\n yVal2 = Number(EChartsUtilsComm.getRound(EChartsUtilsComm.calcTrend(jsN, hsl, jsN[1]).y, 0.1)),\r\n yVal25 = Number(EChartsUtilsComm.getRound(EChartsUtilsComm.calcTrend(jsN, hsl, 25).y, 0.1)),\r\n //通过calcTrend获取y轴的趋势数据,然后分别-2和+2\r\n yAxisMin = Math.floor(Number(yVal2)) - 2,\r\n yAxisMax = Math.floor(Number(yVal1)) + 2;\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //检测是否所有数据都为空\r\n let isAllNull = true;\r\n isAllNull = xDataArr[0].filter((item) => item != null && item != undefined && item != '/').length == 0;\r\n if (isAllNull) {\r\n isAllNull = yDataArr[0].filter((item) => item != null && item != undefined && item != '/').length == 0;\r\n }\r\n\r\n //x和y轴的字体大小\r\n const xyFontSize = 8;\r\n\r\n let seriesObjs = [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle',\r\n z: 10, //控制曲线的浮动层级,避免在markLine下方被遮住\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineColor,\r\n },\r\n connectNulls: true, //是否连接空数据\r\n data: [\r\n [0, null],\r\n [2, null],\r\n [3.5, null],\r\n [4.9, null],\r\n [5.9, null],\r\n [6.9, null],\r\n {\r\n //延长线1\r\n value: [10.4, yVal25 - (2.7 * (yVal25 - yVal1)) / 2.1],\r\n symbol: 'none', //隐藏线条上的数据点\r\n },\r\n [11, yVal1], //第一个点\r\n [11.8, null],\r\n [13.1, yVal25], //第二个点\r\n [14.6, yVal2], //第三个点\r\n {\r\n //延长线2\r\n value: [15.2, (2.1 / 1.5) * (yVal2 - yVal25) + yVal25],\r\n symbol: 'none', //隐藏线条上的数据点\r\n },\r\n [16.4, null],\r\n [17.4, null],\r\n [18.9, null],\r\n [19.8, null],\r\n [20.7, null],\r\n [21.6, null],\r\n [22.6, null],\r\n ],\r\n markPoint: {\r\n data: [\r\n {\r\n xAxis: 13.1,\r\n yAxis: yVal25,\r\n symbolOffset: [40, 25],\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n //显示25这个坐标点数据\r\n return isAllNull ? '' : '( ' + 25 + ' , ' + data.data.yAxis + ')';\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n },\r\n ],\r\n },\r\n markLine: {\r\n symbol: '', //取消箭头\r\n silent: true, //取消鼠标hover事件\r\n label: {\r\n //标线的文本,模拟x轴显示的内容\r\n position: 'start', //改变label位置\r\n // rotate: 45, //设置文字旋转度数(注意:ECharts官网文档居然没有rotate这个属性的说明)\r\n // backgroundColor:'#fff'\r\n // color:'#f00',//文字颜色\r\n formatter: (data) => {\r\n return data.name;\r\n },\r\n },\r\n lineStyle: { color: '#e0e6f1', type: 'solid' },\r\n data: [\r\n {\r\n name: '5',\r\n xAxis: 0,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n name: '6',\r\n xAxis: 2,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n name: '7',\r\n xAxis: 3.5,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n name: '8',\r\n xAxis: 4.9,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n name: '9',\r\n xAxis: 5.9,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n name: '10',\r\n xAxis: 6.9,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n //延长线1\r\n name: '',\r\n xAxis: 10.4,\r\n lineStyle: {\r\n opacity: 0,\r\n },\r\n },\r\n {\r\n //第一个点\r\n name: '',\r\n xAxis: 11,\r\n },\r\n {\r\n name: '20',\r\n xAxis: 11.8,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n //第二个点\r\n name: '25',\r\n xAxis: 13.1,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n //第三个点\r\n name: '30',\r\n xAxis: 14.6,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n //延长线2\r\n name: '',\r\n xAxis: 15.2,\r\n lineStyle: {\r\n opacity: 0,\r\n },\r\n },\r\n {\r\n name: '40',\r\n xAxis: 16.4,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n name: '50',\r\n xAxis: 17.4,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n name: '',\r\n xAxis: 18.9,\r\n },\r\n {\r\n name: '',\r\n xAxis: 19.8,\r\n },\r\n {\r\n name: '',\r\n xAxis: 20.7,\r\n },\r\n {\r\n name: '',\r\n xAxis: 21.6,\r\n },\r\n {\r\n name: '100',\r\n xAxis: 22.6,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n\r\n //横线\r\n [\r\n {\r\n coord: [0, yVal25],\r\n lineStyle: {\r\n color: '#529b2e',\r\n type: 'solid',\r\n },\r\n },\r\n { coord: [13.1, yVal25] },\r\n ],\r\n //纵线\r\n [\r\n {\r\n coord: [13.1, yAxisMin],\r\n lineStyle: {\r\n color: '#000',\r\n type: 'silid',\r\n },\r\n },\r\n { coord: [13.1, yVal25] },\r\n ],\r\n ],\r\n },\r\n },\r\n ];\r\n if (isAllNull) {\r\n seriesObjs = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 25,\r\n left: 30,\r\n right: 10,\r\n bottom: 35,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas[0].data.length > 1\r\n ? datas[0].data[1] == null\r\n ? ''\r\n : datas[0].seriesName + '(' + datas[0].data[0] + ')' + ':' + datas[0].data[1]\r\n : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n axisTick: { show: false }, //隐藏刻度线\r\n axisLabel: { show: false }, //隐藏刻度值\r\n //网格线,参考文档:https://echarts.apache.org/zh/option.html#xAxis.splitLine\r\n splitLine: {\r\n show: false, //隐藏分割线\r\n },\r\n min: 0,\r\n max: 23.5,\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !isAllNull ? 30 : 10,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n splitNumber: 4, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n min: !isAllNull ? yAxisMin : null,\r\n max: yAxisMax,\r\n axisLabel: {\r\n show: !isAllNull ? true : false,\r\n fontSize: xyFontSize,\r\n },\r\n axisTick: {\r\n show: !isAllNull ? true : false,\r\n },\r\n },\r\n ],\r\n series: seriesObjs,\r\n };\r\n\r\n return option;\r\n },\r\n};\r\n","import * as echarts from 'echarts';\r\nimport { type CellModel } from '../types/sheet';\r\nimport { type EChartsUtilsConfigModel, type EChartsUtilsChartLinesJsonModel } from '../types/echarts';\r\nimport { EChartsUtilsAll } from './echarts-all';\r\n\r\n/**\r\n * ECharts图表工具类\r\n */\r\nexport const EChartsUtils = {\r\n /**\r\n * 创建图表\r\n * @param GC GC对象\r\n * @param spread 工作簿对象\r\n * @param sheet 工作表对象\r\n * @param config 折现配置\r\n * @param isHideChart 是否隐藏图表\r\n */\r\n create: async (\r\n GC: any,\r\n spread: any,\r\n sheet: any,\r\n config: EChartsUtilsConfigModel,\r\n isHideChart: boolean = false\r\n ): Promise<{\r\n fObj: any;\r\n fObjPosition: {\r\n x: number;\r\n y: number;\r\n w: number;\r\n h: number;\r\n };\r\n ecObj: echarts.ECharts;\r\n }> => {\r\n // 获取扩展配置\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n // 如果isShowCon配置存在,则验证isShowCon对应单元格的值是否和输入的配置chartExtJson.isShowVal相等,不相等的话,就不创建图表\r\n if (chartExtJson != null && chartExtJson.isShowCon != null && chartExtJson.isShowCon != undefined) {\r\n const conVal = sheet.getValue(chartExtJson.isShowCon.row, chartExtJson.isShowCon.col);\r\n\r\n if (conVal != chartExtJson.isShowVal) {\r\n sheet.floatingObjects.remove(config.chartId);\r\n return;\r\n }\r\n }\r\n\r\n // 获取图表单元格之上的所有行的高度总和、所有列的宽度总和、距离左侧的距离和图表所在单元格的高度\r\n let allRowsTotalHeight = 0,\r\n allRowsTotalWidth = 0,\r\n allRowsTotalLeft = 0,\r\n chartCellHeight = 0;\r\n for (let i = 0; i < config.row; i++) {\r\n allRowsTotalHeight += sheet.getRowHeight(i);\r\n }\r\n allRowsTotalHeight += sheet.getRowHeight(0, GC.Spread.Sheets.SheetArea.colHeader);\r\n for (let i = config.col; i < config.col + config.colCount; i++) {\r\n allRowsTotalWidth += sheet.getColumnWidth(i);\r\n }\r\n for (let i = 0; i < config.col; i++) {\r\n allRowsTotalLeft += sheet.getColumnWidth(i);\r\n }\r\n allRowsTotalLeft += sheet.getColumnWidth(0, GC.Spread.Sheets.SheetArea.rowHeader);\r\n for (let i = config.row; i < config.row + config.rowCount; i++) {\r\n chartCellHeight += sheet.getRowHeight(i);\r\n }\r\n\r\n // 设置浮动对象的呈现位置(实际情况根据需要进行调整)\r\n const fObjPosition = {\r\n x: allRowsTotalLeft - 40 + 2,\r\n y: allRowsTotalHeight - 20 + 2,\r\n w: allRowsTotalWidth - 6,\r\n h: chartCellHeight - 6,\r\n };\r\n\r\n // 获取浮动对象\r\n let fcObj = sheet.floatingObjects.get(config.chartId);\r\n\r\n // 浮动对象不存在时\r\n if (fcObj == null || fcObj == undefined) {\r\n // 创建浮动对象\r\n fcObj = new GC.Spread.Sheets.FloatingObjects.FloatingObject(config.chartId, fObjPosition.x, fObjPosition.y, fObjPosition.w, fObjPosition.h);\r\n\r\n // 不允许改变大小、不允许拖动\r\n fcObj.allowResize(false);\r\n fcObj.allowMove(false);\r\n\r\n // 将浮动对象添加到表单\r\n sheet.floatingObjects.add(fcObj);\r\n }\r\n // 浮动对象存在时\r\n else {\r\n fcObj.x(fObjPosition.x);\r\n fcObj.y(fObjPosition.y);\r\n fcObj.width(fObjPosition.w);\r\n fcObj.height(fObjPosition.h);\r\n }\r\n\r\n // 设置浮动对象的内容为divObj(当document.getElementById(config.chartId + '_ec')为null的时候)\r\n if (document.getElementById(config.chartId + '_ec') == null) {\r\n // 创建用于放置ECharts的div容器\r\n const divObj = document.createElement('div');\r\n divObj.setAttribute('style', `background-color:#fff;width:100%;height:100%;`);\r\n divObj.innerHTML = `<div id=\"${config.chartId}_ec\" style=\"width:100%;height:100%;\"></div>`;\r\n\r\n fcObj.content(divObj);\r\n }\r\n\r\n // 定义ECharts对象\r\n let ecObj: echarts.ECharts | null = null;\r\n\r\n // 获取ECharts对象的函数(这里使用到了Promise和setTimeout,原因是:ECharts所在的div可能还没有及时在浮动元素中渲染完成,导致ECharts展示部出来)\r\n const getEcObj = (): any => {\r\n return new Promise((resolve, reject) => {\r\n setTimeout(() => {\r\n // 初始化图表并获取ECharts对象\r\n resolve({ ecObj: EChartsUtils.initChart(spread, sheet, config, isHideChart) });\r\n }, 10);\r\n });\r\n };\r\n ecObj = (await getEcObj()).ecObj;\r\n\r\n return {\r\n fObj: fcObj,\r\n fObjPosition: fObjPosition,\r\n ecObj: ecObj,\r\n };\r\n },\r\n\r\n /**\r\n * 初始化图表\r\n * @param spread 工作簿对象\r\n * @param sheet 工作表对象\r\n * @param config 图表配置\r\n * @param isHideChart 是否隐藏图表\r\n */\r\n initChart: (spread: any, sheet: any, config: EChartsUtilsConfigModel, isHideChart: boolean = false): echarts.ECharts => {\r\n // 此时可能ECharts所在的div还没有渲染(如浮动元素还没有在可视区域的时候是不会创建的)\r\n if (document.getElementById(config.chartId + '_ec') == null) {\r\n return null;\r\n }\r\n\r\n // 获取多条x轴的数组(类似[[1,2,3,4],[1,2,3,4]])\r\n let xDataArr: any = [],\r\n yDataArr: any = [];\r\n\r\n // 获取多条x轴的数组(单元格原始数据,类似[['1.0','2.0','3.0'],['1.0','2.0','3.0']],此数据可能在有些情况下需要使用原始数据,如:原始数据为字符串的1.0,可能需要在x轴显示为1.0这个字符文本)\r\n let xDataArrSource: any = [],\r\n yDataArrSource: any = [];\r\n\r\n /**\r\n * 获取x或y轴单元格的值集合\r\n * @param spread 工作簿对象\r\n * @param sheet 工作表对象\r\n * @param sheetName x轴或y轴数据所在的Sheet名称,如果没有值,则说明是当前操作的Sheet\r\n * @param cells 单元格集合\r\n * @returns 返回x或y轴数据的值集合\r\n */\r\n const getCellVals = (\r\n spread: any,\r\n sheet: any,\r\n sheetName?: string,\r\n cells?: CellModel[]\r\n ): {\r\n dataOneArr: any[];\r\n dataOneSourceArr: any[];\r\n } => {\r\n let retArr: {\r\n dataOneArr: any[];\r\n dataOneSourceArr: any[];\r\n } = {\r\n dataOneArr: [],\r\n dataOneSourceArr: [],\r\n };\r\n\r\n // 获取x或y轴数据所在的Sheet对象(如果sheetName有值,则说明是跨Sheet的)\r\n let curSheet: any = null;\r\n if (sheetName != null && sheetName != undefined && sheetName.length > 0) {\r\n curSheet = spread.getSheetFromName(sheetName);\r\n }\r\n\r\n cells?.forEach((itemCell, indexCell) => {\r\n // 如果单元格的值为数字,就转换为数字,否则在后期参与各个ECharts图表计算的时候会出错\r\n const curCellVal = curSheet != null ? curSheet.getValue(itemCell.row, itemCell.col) : sheet.getValue(itemCell.row, itemCell.col);\r\n retArr.dataOneSourceArr.push(curCellVal);\r\n\r\n // 严格的数字验证(包括科学计数法)\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curCellVal)) {\r\n retArr.dataOneArr.push(Number(curCellVal));\r\n } else {\r\n retArr.dataOneArr.push(curCellVal == null ? 0 : curCellVal);\r\n }\r\n });\r\n\r\n return retArr;\r\n };\r\n\r\n let lineData: EChartsUtilsChartLinesJsonModel[] = JSON.parse(config.chartLinesJson);\r\n lineData.forEach((item, index) => {\r\n let xDataOne: any = [],\r\n yDataOne: any = [];\r\n let xDataOneSource: any = [],\r\n yDataOneSource: any = [];\r\n\r\n const curItemValsX = getCellVals(spread, sheet, item.sheetNameX, item.xCells);\r\n xDataOne = curItemValsX.dataOneArr;\r\n xDataOneSource = curItemValsX.dataOneSourceArr;\r\n const curItemValsY = getCellVals(spread, sheet, item.sheetNameY, item.yCells);\r\n yDataOne = curItemValsY.dataOneArr;\r\n yDataOneSource = curItemValsY.dataOneSourceArr;\r\n\r\n xDataArr.push(xDataOne);\r\n yDataArr.push(yDataOne);\r\n xDataArrSource.push(xDataOneSource);\r\n yDataArrSource.push(yDataOneSource);\r\n });\r\n\r\n // 获取ECharts图表所在div容器\r\n const ecDom = document.getElementById(config.chartId + '_ec') as HTMLElement;\r\n\r\n // 获取ECharts对象\r\n let ecObj = echarts.getInstanceByDom(ecDom);\r\n if (ecObj == null || ecObj == undefined) {\r\n ecObj = echarts.init(ecDom, null, {\r\n renderer: 'canvas',\r\n useDirtyRect: false,\r\n });\r\n }\r\n\r\n let option;\r\n\r\n if (config.chartType == 10) {\r\n option = EChartsUtilsAll.chart10(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 11) {\r\n option = EChartsUtilsAll.chart11(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 12) {\r\n option = EChartsUtilsAll.chart12(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 13) {\r\n option = EChartsUtilsAll.chart13(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 14) {\r\n option = EChartsUtilsAll.chart14(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 15) {\r\n option = EChartsUtilsAll.chart15(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 16) {\r\n option = EChartsUtilsAll.chart16(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 30) {\r\n option = EChartsUtilsAll.chart30(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 50) {\r\n option = EChartsUtilsAll.chart50(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 70) {\r\n option = EChartsUtilsAll.chart70(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 90) {\r\n option = EChartsUtilsAll.chart90(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 110) {\r\n option = EChartsUtilsAll.chart110(config, xDataArr, yDataArr, xDataArrSource, yDataArrSource);\r\n } else if (config.chartType == 130) {\r\n option = EChartsUtilsAll.chart130(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 150) {\r\n option = EChartsUtilsAll.chart150(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 170) {\r\n option = EChartsUtilsAll.chart170(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 190) {\r\n option = EChartsUtilsAll.chart190(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 210) {\r\n option = EChartsUtilsAll.chart210(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 230) {\r\n option = EChartsUtilsAll.chart230(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 250) {\r\n option = EChartsUtilsAll.chart250(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 270) {\r\n option = EChartsUtilsAll.chart270(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 279 || config.chartType == 280 || config.chartType == 281) {\r\n option = EChartsUtilsAll.chart279_280_281(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 290) {\r\n option = EChartsUtilsAll.chart290(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 310) {\r\n option = EChartsUtilsAll.chart310(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 330) {\r\n option = EChartsUtilsAll.chart330(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 350) {\r\n option = EChartsUtilsAll.chart350(config, xDataArr, yDataArr);\r\n }\r\n\r\n if (option && typeof option === 'object') {\r\n //如果是隐藏的图表,则需要禁用ECharts的动画效果\r\n //原因是:如果ECharts使用了动画效果,图表渲染完成可能需要0.5秒,但是在导出ECharts统计图为图片的场景下时,可能在图表还没有渲染完成(动画效果还没结束)前就要获取图像了,此时可能就会造成获取到的图像内容丢失的情况\r\n if (isHideChart) {\r\n option.animation = false;\r\n }\r\n\r\n ecObj.setOption(option);\r\n }\r\n\r\n ecObj.setOption(option);\r\n\r\n return ecObj;\r\n },\r\n\r\n /**\r\n * 获取ECharts对象\r\n * @param chartId 图表ID\r\n * @returns 返回ECharts对象,如果不存在则返回null\r\n */\r\n getEChartsObj: (chartId: string): echarts.ECharts | null => {\r\n // 获取ECharts图表所在div容器\r\n const ecDom = document.getElementById(chartId + '_ec') as HTMLElement;\r\n\r\n // 获取ECharts对象\r\n let ecObj = echarts.getInstanceByDom(ecDom);\r\n if (ecObj == null || ecObj == undefined) {\r\n return null;\r\n }\r\n\r\n return ecObj;\r\n },\r\n};\r\n","// 导出Excel文件所需的第三方包\r\nimport { saveAs } from 'file-saver';\r\n\r\n/**\r\n * SpreadJS工作簿工具函数属性\r\n */\r\nexport const WorkbookUtils = {\r\n /**\r\n * 加载在线sjs文件\r\n * @param spread 工作簿对象\r\n * @param fileUrl 在线sjs文件地址\r\n * @param succFunc 文件打开成功后的回调函数,返回的第一个参数为spread工作簿对象\r\n * @param errorFunc 文件打开失败后的回调函数,返回的第一个参数为错误信息\r\n */\r\n loadSjsFile: async (spread: any, fileUrl: string, succFunc?: (spreadObj) => Promise<void>, errorFunc?: (error) => Promise<void>): Promise<void> => {\r\n // 获取文件响应结果\r\n const response = await fetch(fileUrl, { method: 'GET' });\r\n\r\n // 获取成功\r\n if (response.ok) {\r\n // 文件的字节流对象\r\n const blob = await response.blob();\r\n // 将Blob转换为File或Blob对象\r\n // const file = new File([blob], 'template.sjs', { type: 'application/octet-stream' });\r\n const sjsBlob = new Blob([blob], { type: 'application/zip' });\r\n\r\n // SpreadJS打开文件\r\n spread.open(\r\n sjsBlob,\r\n async () => {\r\n if (typeof succFunc === 'function') {\r\n await succFunc(spread);\r\n\r\n // // 或者使用then回调\r\n // succFunc(spread).then((ret) => {\r\n // // return ret;\r\n // });\r\n }\r\n },\r\n async (e: any) => {\r\n if (typeof errorFunc === 'function') {\r\n await errorFunc(e);\r\n }\r\n }\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * 获取工作簿的Blob对象\r\n * @param spread 工作簿实例\r\n * @returns 返回异步的Promise对象(Blob对象)\r\n * @example\r\n * const saveSpread = async (spread: any) => {\r\n * try {\r\n * const blob = await WorkbookUtils.getWookbookBlob(spread);\r\n * console.log('获取成功:', blob);\r\n * } catch (error) {\r\n * console.error('获取失败:', error);\r\n * }\r\n * };\r\n */\r\n getWookbookBlob: async (spread: any): Promise<Blob> => {\r\n return new Promise((resolve, reject) => {\r\n spread.save(\r\n // 成功回调\r\n (blob) => resolve(blob),\r\n // 失败回调\r\n (error) => reject(error)\r\n );\r\n });\r\n },\r\n\r\n /**\r\n * 打印所有工作表\r\n * @param GC GC对象\r\n * @param spread 工作簿实例\r\n */\r\n print: (GC: any, spread: any) => {\r\n // 得到Sheet个数\r\n const sheetCount = spread.getSheetCount();\r\n\r\n for (let i = 0; i < sheetCount; i++) {\r\n const sheet = spread.getSheet(i);\r\n\r\n // 获取每个工作表的打印信息\r\n let printInfo = sheet.printInfo();\r\n\r\n // 隐藏行和列的头部信息\r\n printInfo.showRowHeader(GC.Spread.Sheets.Print.PrintVisibilityType.hide);\r\n printInfo.showColumnHeader(GC.Spread.Sheets.Print.PrintVisibilityType.hide);\r\n\r\n // // 显示和隐藏打印区域的辅助线\r\n // spread.getSheet(0).isPrintLineVisible(true);\r\n // spread.getSheet(0).isPrintLineVisible(!true);\r\n\r\n // 设置打印区域,这里是固定的,在业务应用中需要根据实际情况修改打印区域\r\n printInfo.rowStart(0);\r\n printInfo.rowEnd(sheet.getRowCount()); //printInfo.rowEnd(41);\r\n printInfo.columnStart(0);\r\n printInfo.columnEnd(76);\r\n\r\n // 设置SpreadJS自身的边距为合适的距离\r\n printInfo.margin({\r\n /**\r\n * 设置默认边距\r\n * 单位是:以百分之一英寸为单位\r\n * 也就是,如果我们需要设置左边距为25mm,需要将25mm先转换为英寸,然后再用这个英寸*100就是要设置的边距\r\n * 即:(25mm转换为英寸的结果)*100\r\n *\r\n * 参考文档:\r\n * https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheets.Print.PrintInfo#margin\r\n * https://www.67tool.com/converter/length\r\n */\r\n // 纵表\r\n top: 0.5905511999999999 * 100,\r\n bottom: 0.5905511999999999 * 100,\r\n left: 0.9842520000000001 * 100,\r\n right: 0.5905511999999999 * 100,\r\n\r\n // // 横表\r\n // top: 0.9842520000000001 * 100,\r\n // bottom: 0.5905511999999999 * 100,\r\n // left: 0.5905511999999999 * 100,\r\n // right: 0.5905511999999999 * 100,\r\n\r\n // top: 0,\r\n // bottom: 0,\r\n // left: 0,\r\n // right: 0,\r\n header: 0,\r\n footer: 0,\r\n });\r\n\r\n // 设置打印的纸张\r\n printInfo.paperSize(new GC.Spread.Sheets.Print.PaperSize(GC.Spread.Sheets.Print.PaperKind.a4));\r\n\r\n sheet.printInfo(printInfo);\r\n }\r\n\r\n // 调用打印方法\r\n spread.print();\r\n },\r\n\r\n /**\r\n * 导出为Excel文件\r\n * 如支持导出自定义公式的值等功能\r\n * @param GC Spread的GC对象\r\n * @param spread 原始Spread对象\r\n * @param fileName 导出的文件名称,不传则为第一个工作表的名称\r\n */\r\n exportToExcel: (GC: any, spread: any, fileName: string = '') => {\r\n // 导出模板为JSON对象,此处设置了参数includeBindingSource,改参数代表包含数据绑定的值\r\n const json = spread.toJSON({ includeBindingSource: true });\r\n\r\n // 需要移除的自定义公式名称集合(该变量的作用是,在导出Excel前,将工作簿中所有的自定义公式移除掉,其他内置的公式保留)\r\n const removeCustomFormulas = ['YJMAX', 'YJMIN', 'YJMID', 'YJGETNUM', 'YJGETS', 'YJGETCV', 'YJINTERPOLATIONMETHOD', 'YJINTERPOLATIONMETHOD_Y'];\r\n\r\n // 临时工作簿\r\n const tempSpread = new GC.Spread.Sheets.Workbook();\r\n tempSpread.fromJSON(json);\r\n\r\n // 暂停绘制\r\n tempSpread.suspendPaint();\r\n\r\n // 获取Sheet数量\r\n const sheetCount = tempSpread.getSheetCount();\r\n\r\n for (let iSheet = 0; iSheet < sheetCount; iSheet++) {\r\n // 当前工作表\r\n const sheet = tempSpread.getSheet(iSheet);\r\n\r\n // 暂停公式的计算,提高性能\r\n sheet.suspendCalcService();\r\n\r\n for (var i = 0; i < sheet.getRowCount(); i++) {\r\n for (var j = 0; j < sheet.getColumnCount(); j++) {\r\n // 获取单元格的公式\r\n const cellFormula = sheet.getFormula(i, j);\r\n\r\n // 如果cellFormula不为null或undefined,则说明该单元格引用了公式\r\n if (cellFormula != null && cellFormula != undefined && removeCustomFormulas.some((item) => cellFormula.indexOf(item) > -1)) {\r\n // 获取单元格的值\r\n const cellVal = sheet.getValue(i, j);\r\n\r\n // 移除单元格引用的公式\r\n sheet.getCell(i, j).formula(undefined);\r\n\r\n // 设置单元格的值\r\n sheet.setValue(i, j, cellVal);\r\n }\r\n }\r\n }\r\n\r\n // 恢复计算\r\n sheet.resumeCalcService(false);\r\n }\r\n\r\n // 恢复绘制\r\n tempSpread.resumePaint();\r\n\r\n if (fileName == '') {\r\n fileName = tempSpread.getSheet(0).name();\r\n }\r\n\r\n let options = {\r\n fileType: GC.Spread.Sheets.FileType.excel,\r\n includeBindingSource: true,\r\n includeStyles: true,\r\n includeFormulas: true,\r\n saveAsView: false,\r\n rowHeadersAsFrozenColumns: false,\r\n columnHeadersAsFrozenRows: false,\r\n includeAutoMergedCells: false,\r\n includeCalcModelCache: false,\r\n includeUnusedNames: true,\r\n includeEmptyRegionCells: true,\r\n };\r\n\r\n tempSpread.export(\r\n (blob: any) => {\r\n saveAs(blob, `${fileName}.xlsx`);\r\n },\r\n () => {},\r\n options\r\n );\r\n\r\n // 销毁临时工作簿\r\n tempSpread.destroy();\r\n },\r\n\r\n /**\r\n * 合并多个工作簿并导出Excel(同时返回合并后的工作簿实例)\r\n * @param GC Spread的GC对象\r\n * @param spreads 工作簿实例集合\r\n * @param exportName 导出的文件名称,不传则为第一个Sheet的名称\r\n * @returns 合并后的工作簿实例\r\n */\r\n mergeWorkbooksToExcel: async (GC: any, spreads: any[], exportName?: string) => {\r\n if (!spreads || spreads.length == 0) {\r\n return;\r\n }\r\n\r\n // 主工作簿\r\n const mainWorkbook = new GC.Spread.Sheets.Workbook();\r\n\r\n // 暂停绘制\r\n mainWorkbook.suspendPaint();\r\n\r\n mainWorkbook.fromJSON(spreads[0].toJSON());\r\n\r\n for (let i = 1; i < spreads.length; i++) {\r\n // 临时工作簿\r\n const tempSpread = new GC.Spread.Sheets.Workbook();\r\n\r\n // 暂停绘制\r\n tempSpread.suspendPaint();\r\n\r\n tempSpread.fromJSON(spreads[i].toJSON());\r\n\r\n // 重命名样式表\r\n const styleSign = i + '';\r\n tempSpread.getNamedStyles().forEach(function (namedStyle) {\r\n namedStyle.name = `new_${styleSign}_${namedStyle.name}`;\r\n mainWorkbook.addNamedStyle(namedStyle);\r\n });\r\n\r\n // 当前临时工作簿的第一个工作表\r\n let tempSheet = tempSpread.getSheet(0);\r\n // 导出为JSON字符串\r\n let tempSheetJSON = JSON.stringify(tempSheet.toJSON());\r\n // 替换当前JSON字符串的style或parentName配置,目的是重命名样式名称,和上述的tempSpread重命名样式表保持一致\r\n tempSheetJSON = tempSheetJSON.replace(/\"style\":\"/g, '\"style\":\"new_' + styleSign + '_');\r\n tempSheetJSON = tempSheetJSON.replace(/\"parentName\":\"/g, '\"parentName\":\"new_' + styleSign + '_');\r\n\r\n // 创建新的工作表并添加到主工作簿中\r\n let newSheet = new GC.Spread.Sheets.Worksheet(`newSheet${styleSign}_`);\r\n mainWorkbook.addSheet(mainWorkbook.getSheetCount(), newSheet);\r\n newSheet.fromJSON(JSON.parse(tempSheetJSON));\r\n\r\n // 获取新创建的工作表newSheet的行数\r\n const newSheetRowCount = newSheet.getRowCount();\r\n\r\n // 当前操作的主工作簿的Sheet\r\n const curMainSheet = mainWorkbook.getSheet(0);\r\n\r\n // 如果是表尾,则在表单的最后一行开始添加\r\n curMainSheet.addRows(curMainSheet.getRowCount(), newSheetRowCount);\r\n\r\n // 设置复制和粘贴的范围\r\n let pastedRangesStartRow = curMainSheet.getRowCount() - newSheetRowCount;\r\n\r\n const fromRanges = [new GC.Spread.Sheets.Range(-1, -1, -1, -1)],\r\n pastedRanges = [new GC.Spread.Sheets.Range(pastedRangesStartRow, 0, newSheetRowCount, newSheet.getColumnCount())];\r\n mainWorkbook.commandManager().execute({\r\n cmd: 'clipboardPaste',\r\n sheetName: curMainSheet.name(), //此参数的作用是:粘贴到某个名称的Sheet中\r\n fromSheet: newSheet,\r\n fromRanges: fromRanges,\r\n pastedRanges: pastedRanges,\r\n isCutting: false,\r\n clipboardText: '',\r\n pasteOption: GC.Spread.Sheets.ClipboardPasteOptions.all,\r\n });\r\n\r\n // 删除最后的Sheet,也就是newSheet对象\r\n mainWorkbook.removeSheet(mainWorkbook.getSheetCount() - 1);\r\n\r\n // 取消选中状态\r\n curMainSheet.clearSelection();\r\n\r\n // 恢复绘制\r\n tempSpread.resumePaint();\r\n\r\n // 销毁临时工作簿\r\n tempSpread.destroy();\r\n }\r\n\r\n // 获取当前活动的工作表\r\n const sheet = mainWorkbook.getActiveSheet();\r\n\r\n // 设置缩放比为1\r\n sheet.zoom(1);\r\n\r\n // 隐藏行和列的头部\r\n sheet.options.rowHeaderVisible = true;\r\n sheet.options.colHeaderVisible = true;\r\n\r\n // 隐藏Tab、水平和垂直的滚动条\r\n mainWorkbook.options.tabStripVisible = true;\r\n mainWorkbook.options.showHorizontalScrollbar = true;\r\n mainWorkbook.options.showVerticalScrollbar = true;\r\n\r\n // 滚动条是否与活动工作表的最后一行和最后一列对齐(避免滚动的时候出现灰色区域)\r\n mainWorkbook.options.scrollbarMaxAlign = false;\r\n\r\n // 恢复绘制\r\n mainWorkbook.resumePaint();\r\n\r\n // 导出Excel文件\r\n WorkbookUtils.exportToExcel(GC, mainWorkbook, exportName);\r\n\r\n return mainWorkbook;\r\n },\r\n};\r\n"],"names":["orderByJson","groupByJson","forEachJson","chunkJson","math","echarts","saveAs"],"mappings":"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","x_google_ignoreList":[2]}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/utils/sheet.ts","../src/utils/business.ts","../node_modules/.pnpm/@rollup+plugin-typescript@1_ccba8aa16c5fc04bbd7ba036697931a3/node_modules/tslib/tslib.es6.js","../src/utils/common.ts","../src/utils/echarts-all.ts","../src/utils/echarts.ts","../src/utils/wookbook.ts"],"sourcesContent":["// 导入rapid-utils中的函数(注意:需要在tsconfig.json文件中设置moduleResolution为node,否则会提示:找不到模块“rapid-utils”。你的意思是要将 \"moduleResolution\" 选项设置为 \"nodenext\",还是要将别名添加到 \"paths\" 选项中?ts(2792))\r\nimport { forEachJson, orderByJson, groupByJson } from 'rapid-utils';\r\n// 导入单元格实体\r\nimport { CellModel, CellWatermarkModel, CellDateModel } from '../types/sheet';\r\n\r\n/**\r\n * SpreadJS工作表工具函数属性\r\n */\r\nexport const SheetUtils = {\r\n /**\r\n * 获取当前活动工作表选中的单元格集合\r\n * @param spread 工作簿对象\r\n * @returns 返回选中单元格的集合,格式如:[{ row: 0, col: 0, rowCount: 1, colCount: 1 }]\r\n */\r\n getActiveSheetSelectCells: (spread: any): CellModel[] => {\r\n const sheet = spread.getActiveSheet();\r\n\r\n const allCellObjs: CellModel[] = sheet.getSelections();\r\n\r\n return allCellObjs;\r\n },\r\n\r\n /**\r\n * 设置当前活动工作表某个或某些单元格范围为选中状态\r\n * @param spread 工作簿对象\r\n * @param cellObj 设置选中的单元格,格式如:{row:0,col:0,rowCount:1,colCount:1}\r\n */\r\n setActiveSheetSelectCells: (spread: any, cellObj: CellModel) => {\r\n const sheet = spread.getActiveSheet();\r\n\r\n sheet.setSelection(cellObj.row, cellObj.col, cellObj.rowCount, cellObj.colCount);\r\n },\r\n\r\n /**\r\n * 获取某工作表中某个范围中所有的单元格坐标对象集合\r\n * 该方法适用的场景如:手动选择了某个单元格范围,在这个范围中可能包含独立的单元格,也可能包含合并的单元格,这时候就需要用到如下方法获取到所有单元格对象\r\n * @param sheet 工作表实例\r\n * @param selectRange 单元格范围,格式如:{ row: 0, col: 0, rowCount: 2, colCount: 2 }\r\n * @param isMulColOrder 是否按照多列的顺序排序单元格(true:按照第一列从上到下、第二列从上到下……的顺序获取单元格数据、false:按照第一行从左到右、第二行从左到右……的顺序获取单元格数据)\r\n * @returns 返回数组集合,格式如:[{ row: 0, col: 0, rowCount: 1, colCount: 1 }]\r\n */\r\n getAllCellObjsByRange: (sheet: any, selectRange: CellModel, isMulColOrder: boolean = false): CellModel[] => {\r\n return SheetUtils.getAllCellObjsByRanges(sheet, [selectRange], isMulColOrder);\r\n },\r\n\r\n /**\r\n * 获取某工作表中多个范围集合中所有的单元格坐标对象集合\r\n * 该方法适用的场景如:手动选择了很多个单元格范围,在这些范围中可能包含独立的单元格,也可能包含合并的单元格,这时候就需要用到如下方法获取到所有单元格对象\r\n * @param sheet 工作表实例\r\n * @param selectRanges 单元格范围集合,格式如:[{ row: 0, col: 0, rowCount: 2, colCount: 2 }]\r\n * @param isMulColOrder 是否按照多列的顺序排序单元格(true:按照第一列从上到下、第二列从上到下……的顺序获取单元格数据、false:按照第一行从左到右、第二行从左到右……的顺序获取单元格数据)\r\n * @returns 返回数组集合,格式如:[{ row: 0, col: 0, rowCount: 1, colCount: 1 }]\r\n */\r\n getAllCellObjsByRanges: (sheet: any, selectRanges: CellModel[], isMulColOrder: boolean = false): CellModel[] => {\r\n // 得到所有的单元格坐标对象集合,格式如:[{ row: 0, col: 0, rowCount: 1, colCount: 1 }]\r\n let allCellObjs: CellModel[] = [];\r\n\r\n selectRanges.forEach((item, index) => {\r\n // 得到当前item中所有合并的单元格对象集合\r\n const itemSpanCells = sheet.getSpans(item);\r\n itemSpanCells.forEach((itemSpanCell: CellModel) => {\r\n allCellObjs.push({\r\n row: itemSpanCell.row,\r\n col: itemSpanCell.col,\r\n rowCount: itemSpanCell.rowCount,\r\n colCount: itemSpanCell.colCount,\r\n });\r\n });\r\n\r\n if (item.row === undefined || item.col === undefined || item.rowCount === undefined || item.colCount === undefined) {\r\n throw new Error('row、col、rowCount、colCount is required.');\r\n }\r\n\r\n // 遍历item中涉及到的所有单元格\r\n for (let i = item.row; i < +item.row + item.rowCount; i++) {\r\n for (let j = item.col; j < item.col + item.colCount; j++) {\r\n const curSpanCellObj = sheet.getSpan(i, j);\r\n\r\n // 检查当前单元格是否为合并单元格\r\n if (curSpanCellObj == null) {\r\n allCellObjs.push({\r\n row: i,\r\n col: j,\r\n rowCount: 1,\r\n colCount: 1,\r\n });\r\n }\r\n }\r\n }\r\n });\r\n\r\n // 对所有单元格坐标对象集合进行排序\r\n allCellObjs = orderByJson(allCellObjs, !isMulColOrder ? ['row', 'col'] : ['col', 'row'], ['asc', 'asc']);\r\n\r\n return allCellObjs;\r\n },\r\n\r\n /**\r\n * 获取某工作表中所有的单元格坐标对象集合\r\n * @param sheet 工作表实例\r\n * @returns 返回数组集合,格式如:[{ col: 0, colCount: 2, row: 0, rowCount: 1 }]\r\n */\r\n getSheetAllCellObjs: (sheet: any): CellModel[] => {\r\n // 得到当前Sheet单元格范围\r\n const curSheetCellRange = [\r\n {\r\n row: 0,\r\n col: 0,\r\n rowCount: sheet.getRowCount(),\r\n colCount: sheet.getColumnCount(),\r\n },\r\n ];\r\n\r\n // 得到所有的单元格坐标对象集合,格式如:[{ col: 0, colCount: 2, row: 0, rowCount: 1 }]\r\n const allCellObjs = SheetUtils.getAllCellObjsByRanges(sheet, curSheetCellRange);\r\n\r\n return allCellObjs;\r\n },\r\n\r\n /**\r\n * 获取某工作表中选中的所有单元格坐标对象集合\r\n * @param sheet 工作表实例\r\n * @param isMulColOrder 是否按照多列的顺序排序单元格(true:按照第一列从上到下、第二列从上到下……的顺序获取单元格数据、false:按照第一行从左到右、第二行从左到右……的顺序获取单元格数据)\r\n * @returns 返回数组集合,格式如:[{ col: 0, row: 0, \"rowCount\": 1, \"colCount\": 1 }]\r\n */\r\n getSheetSelectCellObjs: (sheet: any, isMulColOrder: boolean = false): CellModel[] => {\r\n // 得到当前Sheet中选择的单元格范围集合\r\n const curSheetCellRange = sheet.getSelections();\r\n\r\n // 得到所有的单元格坐标对象集合,格式如:[{ col: 0, colCount: 2, row: 0, rowCount: 1 }]\r\n const allCellObjs = SheetUtils.getAllCellObjsByRanges(sheet, curSheetCellRange, isMulColOrder);\r\n\r\n return allCellObjs;\r\n },\r\n\r\n /**\r\n * 获取活动工作表中选中的所有单元格坐标对象集合\r\n * @param spread 工作簿实例\r\n * @param isMulColOrder 是否按照多列的顺序排序单元格(true:按照第一列从上到下、第二列从上到下……的顺序获取单元格数据、false:按照第一行从左到右、第二行从左到右……的顺序获取单元格数据)\r\n * @returns 返回数组集合,格式如:[{ col: 0, row: 0, \"rowCount\": 1, \"colCount\": 1 }]\r\n */\r\n getActiveSheetSelectCellObjs: (spread: any, isMulColOrder: boolean = false): CellModel[] => {\r\n // 当前活动的Sheet\r\n const sheet = spread.getActiveSheet();\r\n\r\n return SheetUtils.getSheetSelectCellObjs(sheet, isMulColOrder);\r\n },\r\n\r\n /**\r\n * 获取某工作表指定范围单元格的坐标对象集合(二维数组,格式如:[[{row:0……}],[{row:0……}]])\r\n * @param sheet 工作表实例\r\n * @param cellRange 单元格范围\r\n * @param groupType 分组字段属性(row或col),默认为:row\r\n * @returns 返回某工作表指定范围单元格的坐标对象集合(二维数组,格式如:[[{row:0……}],[{row:0……}]])\r\n */\r\n getSheetCellObjsByGroup: (sheet: any, cellRange: CellModel, groupType: 'row' | 'col' = 'row'): Array<Array<CellModel>> => {\r\n // 暂停绘制\r\n sheet.suspendPaint();\r\n\r\n const valCells = SheetUtils.getAllCellObjsByRange(sheet, cellRange);\r\n\r\n // 按照JSON数组中某个字段进行分组(groupType为row或col)\r\n const groupByCells = groupByJson(valCells, groupType);\r\n\r\n // 最终返回结果(二维数组)\r\n const retCells: Array<Array<any>> = [];\r\n\r\n // 遍历分组JSON对象(groupByCells的格式为:{key1: [cell1, cell2, ...], key2: [cell1, cell2, ...], ...})\r\n forEachJson(groupByCells, (curGroupCells: CellModel[], key, source) => {\r\n retCells.push(curGroupCells);\r\n });\r\n\r\n // 恢复绘制\r\n sheet.resumePaint();\r\n\r\n return retCells;\r\n },\r\n\r\n /**\r\n * 获取某工作表选中单元格的值集合\r\n * @param sheet 工作表实例\r\n * @param isMulColOrder 是否按照多列的顺序排序单元格(true:按照第一列从上到下、第二列从上到下……的顺序获取单元格数据、false:按照第一行从左到右、第二行从左到右……的顺序获取单元格数据)\r\n * @param nullUndefinedReplaceVal 如果单元格的值为null或undefined,则将其替换为该值(如果不传入该参数,则不替换)\r\n * @returns 返回选中单元格的值集合\r\n */\r\n getSheetSelectVals: (\r\n sheet: any,\r\n isMulColOrder: boolean = false,\r\n nullUndefinedReplaceVal?: number | string\r\n ): (number | string | null | undefined)[] => {\r\n // 获取活动工作表选中单元格对象集合\r\n const selectCells = SheetUtils.getSheetSelectCellObjs(sheet, isMulColOrder);\r\n\r\n // 获取选中单元格的值集合\r\n let selectCellVals: (number | string | null | undefined)[] = [];\r\n selectCells.forEach((cell) => {\r\n let cellVal = sheet.getValue(cell.row, cell.col);\r\n\r\n // 如果cellVal为null或undefined,并且nullUndefinedReplaceVal不为null或undefined,则将cellVal替换为nullUndefinedReplaceVal\r\n if (nullUndefinedReplaceVal != null && nullUndefinedReplaceVal != undefined && (cellVal === null || cellVal === undefined)) {\r\n cellVal = nullUndefinedReplaceVal;\r\n }\r\n\r\n selectCellVals.push(cellVal);\r\n });\r\n\r\n return selectCellVals;\r\n },\r\n\r\n /**\r\n * 获取活动工作表选中单元格的值集合\r\n * @param spread 工作簿实例\r\n * @param isMulColOrder 是否按照多列的顺序排序单元格(true:按照第一列从上到下、第二列从上到下……的顺序获取单元格数据、false:按照第一行从左到右、第二行从左到右……的顺序获取单元格数据)\r\n * @param nullUndefinedReplaceVal 如果单元格的值为null或undefined,则将其替换为该值(如果不传入该参数,则不替换)\r\n * @returns 返回选中单元格的值集合\r\n */\r\n getActiveSheetSelectVals: (\r\n spread: any,\r\n isMulColOrder: boolean = false,\r\n nullUndefinedReplaceVal?: number | string\r\n ): (number | string | null | undefined)[] => {\r\n // 获取当前活动工作表\r\n const sheet = spread.getActiveSheet();\r\n\r\n return SheetUtils.getSheetSelectVals(sheet, isMulColOrder, nullUndefinedReplaceVal);\r\n },\r\n\r\n /**\r\n * 获取某工作表指定范围单元格的值集合(二维数组,格式如:[[1,2,3],[4,5,6]])\r\n * @param sheet 工作表实例\r\n * @param cellRange 单元格范围\r\n * @param groupType 分组字段属性(row或col),默认为:row\r\n * @param nullUndefinedReplaceVal 如果单元格的值为null或undefined,则将其替换为该值(如果不传入该参数,则不替换)\r\n * @returns 返回某工作表指定范围单元格的值集合(二维数组,格式如:[[1,2,3],[4,5,6]])\r\n */\r\n getSheetRangeValsByGroup: (\r\n sheet: any,\r\n cellRange: CellModel,\r\n groupType: 'row' | 'col' = 'row',\r\n nullUndefinedReplaceVal?: number | string | boolean\r\n ): Array<Array<any>> => {\r\n // 暂停绘制\r\n sheet.suspendPaint();\r\n\r\n const valCells = SheetUtils.getAllCellObjsByRange(sheet, cellRange);\r\n\r\n // 按照JSON数组中某个字段进行分组(groupType为row或col)\r\n const groupByCells = groupByJson(valCells, groupType);\r\n\r\n // 最终返回结果(二维数组)\r\n const retVals: Array<Array<any>> = [];\r\n\r\n // 遍历分组JSON对象(groupByCells的格式为:{key1: [cell1, cell2, ...], key2: [cell1, cell2, ...], ...})\r\n forEachJson(groupByCells, (curGroupCells: CellModel[], key, source) => {\r\n // 当前按照row或col分组的单元格的值集合\r\n const curVals: Array<any> = [];\r\n\r\n // 遍历当前分组的所有单元格\r\n forEachJson(curGroupCells, (item, index, source) => {\r\n let cellVal = sheet.getValue(item.row, item.col);\r\n\r\n // 如果cellVal为null或undefined,并且nullUndefinedReplaceVal不为null或undefined,则将cellVal替换为nullUndefinedReplaceVal\r\n if (nullUndefinedReplaceVal != null && nullUndefinedReplaceVal != undefined && (cellVal === null || cellVal === undefined)) {\r\n cellVal = nullUndefinedReplaceVal;\r\n }\r\n\r\n curVals.push(cellVal);\r\n });\r\n\r\n retVals.push(curVals);\r\n });\r\n\r\n // 恢复绘制\r\n sheet.resumePaint();\r\n\r\n return retVals;\r\n },\r\n\r\n /**\r\n * 获取单元格类型名称\r\n * @param GC GC对象\r\n * @param sheet 工作表实例\r\n * @param row 单元格行索引\r\n * @param col 单元格列索引\r\n * @returns 返回单元格类型名称,如:button、radio、checkbox、checkboxList、hyperLink、comboBox、date、dateRange、calc\r\n */\r\n getCellType: (GC: any, sheet: any, row: number, col: number): string | undefined => {\r\n let cellTypeName;\r\n\r\n // 先根据getCellType来获取\r\n const cellType = sheet.getCellType(row, col);\r\n\r\n if (cellType instanceof GC.Spread.Sheets.CellTypes.Button) {\r\n cellTypeName = 'button';\r\n } else if (cellType instanceof GC.Spread.Sheets.CellTypes.RadioButtonList) {\r\n cellTypeName = 'radio';\r\n } else if (cellType instanceof GC.Spread.Sheets.CellTypes.CheckBox) {\r\n cellTypeName = 'checkbox';\r\n } else if (cellType instanceof GC.Spread.Sheets.CellTypes.CheckBoxList) {\r\n cellTypeName = 'checkboxList';\r\n } else if (cellType instanceof GC.Spread.Sheets.CellTypes.HyperLink) {\r\n cellTypeName = 'hyperLink';\r\n } else if (cellType instanceof GC.Spread.Sheets.CellTypes.ComboBox) {\r\n cellTypeName = 'comboBox';\r\n }\r\n\r\n // 根据getStyle来获取\r\n if (cellTypeName == undefined || cellTypeName == null) {\r\n const cellStyle = sheet.getStyle(row, col);\r\n\r\n if (cellStyle && cellStyle.cellButtons && cellStyle.cellButtons.length > 0) {\r\n if (cellStyle.cellButtons[0].command == 'openDateTimePicker') {\r\n if (cellStyle.dropDowns && cellStyle.dropDowns.length > 0) {\r\n if (cellStyle.dropDowns[0].option.showDateRange) {\r\n cellTypeName = 'dateRange';\r\n } else {\r\n cellTypeName = 'date';\r\n }\r\n }\r\n } else if (cellStyle.cellButtons[0].command == 'openCalculator') {\r\n cellTypeName = 'calc';\r\n }\r\n }\r\n }\r\n\r\n return cellTypeName;\r\n },\r\n\r\n /**\r\n * 设置工作簿中所有工作表的缩放比例\r\n * @param spread 工作簿实例\r\n * @param scale 缩放比例,默认为:1(100%)\r\n */\r\n setSheetZoom: (spread: any, scale: number) => {\r\n // 暂停绘制\r\n spread.suspendPaint();\r\n\r\n const sheetCount = spread.getSheetCount();\r\n for (let i = 0; i < sheetCount; i++) {\r\n const sheet = spread.getSheet(i);\r\n\r\n sheet.zoom(scale);\r\n }\r\n\r\n // 恢复绘制\r\n spread.resumePaint();\r\n },\r\n\r\n /**\r\n * 设置当前活动工作表中选中的单元格背景颜色\r\n * @param spread 工作簿实例\r\n * @param color 背景颜色\r\n */\r\n setActiveSheetSelectBgColor: (spread: any, color: string) => {\r\n const sheet = spread.getActiveSheet();\r\n\r\n // 暂停绘制\r\n sheet.suspendPaint();\r\n\r\n //#region 方式1:通过getRange进行批量设置,推荐使用该方法来实现\r\n\r\n // 获取选择的多个单元格范围集合\r\n const selections = SheetUtils.getActiveSheetSelectCells(spread);\r\n\r\n // 循环每个选中的单元格范围\r\n selections.forEach((sel: CellModel) => {\r\n // 批量设置每个选中的单元格范围的背景颜色\r\n sheet.getRange(sel.row, sel.col, sel.rowCount, sel.colCount).backColor(color);\r\n });\r\n\r\n //#endregion\r\n\r\n //#region 方式2:通过getCell获取单元格样式对每个单元格进行设置,此方式效率相对较低,不推荐\r\n\r\n // // 当前活动的工作表中所有选择的单元格\r\n // const selectCells = SheetUtils.getActiveSheetSelectCellObjs(spread);\r\n\r\n // selectCells.forEach(item => {\r\n // // 获取单元格对象\r\n // const cellObj = sheet.getCell(item.row, item.col);\r\n\r\n // // 获取单元格样式\r\n // let cellStyle = sheet.getStyle(item.row, item.col);\r\n // if (!cellStyle) {\r\n // // 不存在样式则new一个\r\n // cellStyle = new GC.Spread.Sheets.Style();\r\n // }\r\n\r\n // // 设置单元格背景颜色\r\n // cellStyle.backColor = color;\r\n\r\n // // 重新设置单元格样式\r\n // cellObj.setStyle(cellStyle);\r\n // });\r\n\r\n //#endregion\r\n\r\n // 恢复绘制\r\n sheet.resumePaint();\r\n },\r\n\r\n /**\r\n * 设置某工作表中指定单元格背景颜色\r\n * @param sheet 工作表实例\r\n * @param cells 单元格集合\r\n * @param color 背景颜色\r\n */\r\n setSheetBgColor: (sheet: any, cells: CellModel[], color: string) => {\r\n // 暂停绘制\r\n sheet.suspendPaint();\r\n\r\n // 循环每个选中的单元格范围\r\n cells.forEach((sel: CellModel) => {\r\n // 批量设置每个选中的单元格范围的背景颜色\r\n sheet.getRange(sel.row, sel.col, sel.rowCount, sel.colCount).backColor(color);\r\n });\r\n\r\n // 恢复绘制\r\n sheet.resumePaint();\r\n },\r\n\r\n /**\r\n * 设置工作簿中所有工作表是否显示分页线\r\n * @param spread 工作簿实例\r\n * @param isShow 是否显示分页线(true:显示、false:不显示)\r\n */\r\n setSheetShowPrintPageLine: (spread: any, isShow: boolean) => {\r\n // 暂停绘制\r\n spread.suspendPaint();\r\n\r\n const sheetCount = spread.getSheetCount();\r\n for (let i = 0; i < sheetCount; i++) {\r\n const sheet = spread.getSheet(i);\r\n\r\n // 获取当前工作表是否显示分页线\r\n // var isVisible = sheet.isPrintLineVisible();\r\n\r\n sheet.isPrintLineVisible(isShow);\r\n }\r\n\r\n // 恢复绘制\r\n spread.resumePaint();\r\n },\r\n\r\n /**\r\n * 忽略工作工作表元格中指定字符串不显示,如:#DIV/0!、#VALUE!等\r\n * @param GC GC对象\r\n */\r\n ignoreSheetShowStrs: (GC: any) => {\r\n // 忽略的字符串集合\r\n const ignoreStrs: string[] = ['#DIV/0!', '#VALUE!', '#NAME?', '#N/A', '#NULL!', '#NUM!', '#REF!'];\r\n\r\n // paint对象\r\n const ignorePaint = GC.Spread.Sheets.CellTypes.Text.prototype.paint;\r\n\r\n // 重写paint函数\r\n GC.Spread.Sheets.CellTypes.Text.prototype.paint = function (ctx: any, value: any, x: any, y: any, w: any, h: any, style: any, options: any) {\r\n // 如果在忽略的字符串集合中有匹配的结果,则将其显示为空字符串\r\n if (ignoreStrs.some((item) => item == value)) {\r\n ignorePaint.call(this, ctx, '/', x, y, w, h, style, options);\r\n } else {\r\n ignorePaint.apply(this, arguments);\r\n }\r\n\r\n // // 或使用如下代码\r\n // if (ignoreStrs.some((item) => item == value)) {\r\n // \tvalue = '';\r\n // }\r\n // ignorePaint.apply(this, [ctx, value, x, y, w, h, style, options]);\r\n };\r\n },\r\n\r\n /**\r\n * 设置工作表显示辅助线(底部和右侧的辅助线)\r\n * @param sheet 工作表实例\r\n * @param width 宽度(像素)\r\n * @param height 高度(像素)\r\n * @param lineWidth 辅助线宽度(默认为:1像素)\r\n * @param colorStr 辅助线颜色(默认为:#409eff)\r\n * @param isHb 是否为横表(默认为:false)\r\n */\r\n setSheetAuxiliaryLine: (\r\n GC: any,\r\n sheet: any,\r\n width: number,\r\n height: number,\r\n lineWidth: number = 1,\r\n colorStr: string = '#409eff',\r\n isHb: boolean = false\r\n ) => {\r\n // 创建底部和右侧的浮动对象\r\n let floatBottom = new GC.Spread.Sheets.FloatingObjects.FloatingObject(`floatLineBottom${isHb ? 'Hb' : ''}`, 0, height, width, lineWidth),\r\n floatRight = new GC.Spread.Sheets.FloatingObjects.FloatingObject(`floatLineRight${isHb ? 'Hb' : ''}`, width, 0, lineWidth, height);\r\n\r\n // 创建底部和右侧的div对象\r\n let divBottom = document.createElement('div'),\r\n divRight = document.createElement('div');\r\n\r\n // 设置底部div对象样式\r\n divBottom.style.width = `${width}px`;\r\n divBottom.style.height = '1px';\r\n divBottom.style.borderBottom = `${lineWidth}px dashed ${colorStr}`;\r\n\r\n // 设置右侧div对象样式\r\n divRight.style.width = '1px';\r\n divRight.style.height = `${height}px`;\r\n divRight.style.borderLeft = `${lineWidth}px dashed ${colorStr}`;\r\n\r\n // floatBottom.fixedPosition(true);\r\n // floatRight.fixedPosition(true);\r\n\r\n // 设置底部和右侧浮动对象不允许改变大小、不允许拖动和设置浮动对象的内容\r\n floatBottom.allowResize(false);\r\n floatBottom.allowMove(false);\r\n floatBottom.content(divBottom);\r\n floatRight.allowResize(false);\r\n floatRight.allowMove(false);\r\n floatRight.content(divRight);\r\n\r\n // 将浮动元素添加到工作表中\r\n sheet.floatingObjects.add(floatBottom);\r\n sheet.floatingObjects.add(floatRight);\r\n },\r\n\r\n /**\r\n * 设置当前活动工作表的水印和数据绑定是否显示\r\n * @param spread 工作簿实例\r\n * @param cells 数据绑定单元格配置集合([{ row: number; col: number; title: string; pathPrev: string; pathField: string }])\r\n * @param isShow 是否显示\r\n */\r\n setActiveSheetWatermark: (spread: any, cells: CellWatermarkModel[], isShow: boolean) => {\r\n if (cells == null || cells == undefined) {\r\n return;\r\n }\r\n\r\n const sheet = spread.getActiveSheet();\r\n\r\n // 暂停绘制\r\n sheet.suspendPaint();\r\n\r\n cells.forEach((cell: CellWatermarkModel) => {\r\n // 设置或移除水印标签\r\n sheet.getCell(cell.row, cell.col).watermark(isShow ? `{${cell.title}}` : undefined);\r\n\r\n // 设置或移除绑定路径\r\n sheet.setBindingPath(cell.row, cell.col, isShow ? `${cell.pathPrev}.${cell.pathField}` : undefined);\r\n });\r\n\r\n // 恢复绘制\r\n sheet.resumePaint();\r\n },\r\n\r\n /**\r\n\t * 设置某工作表中单元格为日期选择控件\r\n\t * @param GC GC对象\r\n\t * @param sheet 工作表实例\r\n\t * @param cells 单元格集合,格式如:[{\r\n\t\t\tdateFormat: 'yyyy-MM-dd',\r\n\t\t\trow: 0,\r\n\t\t\tcol: 0\r\n\t\t}]\r\n\t * @param isAutoSize 是否自适应单元格大小(默认为:true)\r\n\t */\r\n setSheetCellDate: (GC: any, sheet: any, cells: CellDateModel[], isAutoSize: boolean = true) => {\r\n cells.forEach((item, index) => {\r\n // 先获取单元格样式,否则设置控件后样式会丢失\r\n let cellStyle = sheet.getStyle(item.row, item.col);\r\n if (!cellStyle) {\r\n cellStyle = new GC.Spread.Sheets.Style();\r\n }\r\n\r\n cellStyle.cellButtons = [\r\n {\r\n imageType: GC.Spread.Sheets.ButtonImageType.dropdown,\r\n command: 'openDateTimePicker',\r\n // 按钮宽度\r\n // width: 10,\r\n },\r\n ];\r\n cellStyle.dropDowns = [\r\n {\r\n type: GC.Spread.Sheets.DropDownType.dateTimePicker,\r\n option: {\r\n showTime: false,\r\n showDateRange: false,\r\n },\r\n },\r\n ];\r\n cellStyle.formatter = item.dateFormat;\r\n\r\n // 是否缩小以适应\r\n cellStyle.shrinkToFit = isAutoSize;\r\n\r\n // 设置单元格样式\r\n sheet.setStyle(item.row, item.col, cellStyle);\r\n });\r\n },\r\n};\r\n","import { chunkJson } from 'rapid-utils';\r\nimport { TestObjectAttrModel } from '../types/business';\r\nimport { SheetUtils } from '../utils/sheet';\r\n\r\n/**\r\n * SpreadJS业务相关工具函数属性\r\n */\r\nexport const BusinessUtils = {\r\n /**\r\n * 创建检测对象属性单元格\r\n * @param gc GC对象\r\n * @param sheet 工作表实例\r\n * @param testObjectAttrs 检测对象属性配置集合\r\n * @param isVertical 是否为纵表,默认为:true\r\n * @param contentColStartIndex 表格内容列起始索引,默认为:1\r\n * @param contentTotalColCount 表格内容列总数,默认为:77\r\n * @param addRowHeight 添加的表格行高,默认为:24\r\n */\r\n createTestObjectAttrsCells: (\r\n gc: any,\r\n sheet: any,\r\n testObjectAttrs: TestObjectAttrModel[],\r\n isVertical: boolean = true,\r\n contentColStartIndex: number = 1,\r\n contentTotalColCount: number = 77,\r\n addRowHeight: number = 24\r\n ) => {\r\n if (!testObjectAttrs || testObjectAttrs.length === 0) {\r\n return;\r\n }\r\n\r\n // 标题单元格列数量(纵表为12列,横表待定)\r\n const titleCellColumnCount = isVertical ? 12 : 10;\r\n // 标题对应的值单元格列数量(纵表:第一个值单元格为26、第二个值单元格为27,纵表待定)\r\n const titleCellValColumnCount = isVertical ? 26 : 15;\r\n\r\n // 一行中检测对象属性的个数(纵表为2个,横表为3个)\r\n const rowTestObjectCount = isVertical ? 2 : 3;\r\n\r\n // 将测试对象属性数据进行分块\r\n const testObjectAttrsChunk = chunkJson(testObjectAttrs, rowTestObjectCount);\r\n\r\n // 暂停绘制\r\n sheet.suspendPaint();\r\n\r\n // 设置工作表行数为0\r\n sheet.setRowCount(0);\r\n\r\n for (let i = 0; i < testObjectAttrsChunk.length; i++) {\r\n const rowAttrArr = testObjectAttrsChunk[i] as TestObjectAttrModel[];\r\n\r\n // 获取总行数\r\n const totalRowCount: number = sheet.getRowCount();\r\n\r\n // 添加一行\r\n sheet.addRows(totalRowCount, 1);\r\n\r\n // 设置添加这一行的行高\r\n sheet.setRowHeight(totalRowCount, addRowHeight, gc.Spread.Sheets.SheetArea.viewport);\r\n\r\n // 获取添加这一行的区域范围\r\n const addRowRange = sheet.getRange(totalRowCount, 1, contentColStartIndex, contentTotalColCount, gc.Spread.Sheets.SheetArea.viewport);\r\n // 设置添加这一行区域中的边框样式(最左边和最后边边框样式为粗线、中间的为细边框样式)\r\n addRowRange.setBorder(new gc.Spread.Sheets.LineBorder('#000', gc.Spread.Sheets.LineStyle.thin), { all: true });\r\n addRowRange.setBorder(new gc.Spread.Sheets.LineBorder('#000', gc.Spread.Sheets.LineStyle.medium), { left: true });\r\n addRowRange.setBorder(new gc.Spread.Sheets.LineBorder('#000', gc.Spread.Sheets.LineStyle.medium), { right: true });\r\n // 设置单元格水平和垂直居中\r\n addRowRange.hAlign(gc.Spread.Sheets.HorizontalAlign.center);\r\n addRowRange.vAlign(gc.Spread.Sheets.HorizontalAlign.center);\r\n\r\n // 合并第一个属性的标题列和值列,同时设置对应单元格的内容\r\n sheet.addSpan(totalRowCount, contentColStartIndex, 1, titleCellColumnCount, gc.Spread.Sheets.SheetArea.viewport);\r\n sheet.addSpan(\r\n totalRowCount,\r\n contentColStartIndex + titleCellColumnCount,\r\n 1,\r\n rowAttrArr.length > 1 ? titleCellValColumnCount : contentTotalColCount - titleCellColumnCount,\r\n gc.Spread.Sheets.SheetArea.viewport\r\n );\r\n sheet.setValue(totalRowCount, contentColStartIndex, rowAttrArr[0].title);\r\n sheet.setValue(totalRowCount, contentColStartIndex + titleCellColumnCount, rowAttrArr[0].value);\r\n\r\n // 合并第二个属性的标题列和值列,同时设置对应单元格的内容\r\n if (rowAttrArr.length > 1) {\r\n const colIndexTitle = contentColStartIndex + titleCellColumnCount + titleCellValColumnCount;\r\n const colIndexValue = colIndexTitle + titleCellColumnCount;\r\n\r\n sheet.addSpan(totalRowCount, colIndexTitle, 1, titleCellColumnCount, gc.Spread.Sheets.SheetArea.viewport);\r\n sheet.addSpan(\r\n totalRowCount,\r\n colIndexValue,\r\n 1,\r\n titleCellValColumnCount + 1 + (!isVertical && rowAttrArr.length == 2 ? titleCellColumnCount + titleCellValColumnCount + 1 : 0),\r\n gc.Spread.Sheets.SheetArea.viewport\r\n );\r\n sheet.setValue(totalRowCount, colIndexTitle, rowAttrArr[1].title);\r\n sheet.setValue(totalRowCount, colIndexValue, rowAttrArr[1].value);\r\n }\r\n // 合并第三个属性的标题列和值列,同时设置对应单元格的内容\r\n if (rowAttrArr.length > 2) {\r\n const colIndexTitle =\r\n contentColStartIndex + titleCellColumnCount + titleCellValColumnCount + titleCellColumnCount + titleCellValColumnCount + 1;\r\n const colIndexValue = colIndexTitle + titleCellColumnCount;\r\n\r\n sheet.addSpan(totalRowCount, colIndexTitle, 1, titleCellColumnCount, gc.Spread.Sheets.SheetArea.viewport);\r\n sheet.addSpan(totalRowCount, colIndexValue, 1, titleCellValColumnCount + 1, gc.Spread.Sheets.SheetArea.viewport);\r\n sheet.setValue(totalRowCount, colIndexTitle, rowAttrArr[2].title);\r\n sheet.setValue(totalRowCount, colIndexValue, rowAttrArr[2].value);\r\n }\r\n }\r\n\r\n // 恢复绘制\r\n sheet.resumePaint();\r\n },\r\n /**\r\n * 获取检测对象属性值集合\r\n * @param sheet 工作表实例\r\n * @param testObjectAttrs 检测对象属性配置集合\r\n * @param isVertical 是否为纵表,默认为:true\r\n * @param contentColStartIndex 表格内容列起始索引,默认为:1\r\n * @param contentTotalColCount 表格内容列总数,默认为:77\r\n */\r\n getTestObjectAttrsVals: (\r\n sheet: any,\r\n testObjectAttrs: TestObjectAttrModel[],\r\n isVertical: boolean = true,\r\n contentColStartIndex: number = 1,\r\n contentTotalColCount: number = 77\r\n ): TestObjectAttrModel[] => {\r\n // 一行中检测对象属性的个数(纵表为2个,横表为3个)\r\n const rowTestObjectCount = isVertical ? 2 : 3;\r\n\r\n // 将测试对象属性数据进行分块\r\n const testObjectAttrsChunk = chunkJson(testObjectAttrs, rowTestObjectCount);\r\n\r\n // 暂停绘制\r\n sheet.suspendPaint();\r\n\r\n // 所有单元格对象\r\n const allCells = SheetUtils.getAllCellObjsByRange(sheet, {\r\n row: 0,\r\n col: contentColStartIndex,\r\n rowCount: sheet.getRowCount(),\r\n colCount: contentTotalColCount,\r\n });\r\n // 将所有单元格对象进行分块\r\n const allCellsChunk = chunkJson(allCells, rowTestObjectCount * 2);\r\n\r\n // 将所有单元格对象按照testObjectAttrsChunk的结构进行组合\r\n const newAllCellsChunk = [];\r\n for (let i = 0; i < allCellsChunk.length; i++) {\r\n newAllCellsChunk.push(chunkJson(allCellsChunk[i], 2));\r\n }\r\n\r\n let retData: TestObjectAttrModel[] = [];\r\n\r\n for (let i = 0; i < testObjectAttrsChunk.length; i++) {\r\n const attrObjs = testObjectAttrsChunk[i] as TestObjectAttrModel[];\r\n\r\n for (let j = 0; j < attrObjs.length; j++) {\r\n const attrObj = attrObjs[j];\r\n\r\n retData.push({\r\n title: sheet.getValue(newAllCellsChunk[i][j][0].row, newAllCellsChunk[i][j][0].col), //attrObj.title,\r\n fieldName: attrObj.fieldName,\r\n value: sheet.getValue(newAllCellsChunk[i][j][1].row, newAllCellsChunk[i][j][1].col),\r\n });\r\n }\r\n }\r\n\r\n // 恢复绘制\r\n sheet.resumePaint();\r\n\r\n return retData;\r\n },\r\n};\r\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","/**\r\n * 公用工具函数属性\r\n */\r\nexport const CommonUtils = {\r\n /**\r\n * 获取文件的字节流对象\r\n * @param fileUrl 在线文件地址\r\n * @returns 文件的字节流对象\r\n */\r\n getFileBlob: async (fileUrl: string): Promise<Blob> | null => {\r\n // 获取文件响应结果\r\n const response = await fetch(fileUrl, { method: 'GET' });\r\n\r\n // 获取成功\r\n if (response.ok) {\r\n // 文件的字节流对象\r\n const blob = await response.blob();\r\n\r\n return blob;\r\n } else {\r\n return null;\r\n }\r\n },\r\n\r\n /**\r\n * 获取列的英文字母\r\n * @param colIndex 列的索引\r\n * @returns 返回英文字母\r\n */\r\n getColLetterName: (colIndex: number): string => {\r\n colIndex += 1;\r\n\r\n let letter = '';\r\n while (colIndex > 0) {\r\n const remainder = (colIndex - 1) % 26;\r\n letter = String.fromCharCode(remainder + 65) + letter;\r\n colIndex = Math.floor((colIndex - 1) / 26);\r\n }\r\n\r\n return letter.toUpperCase();\r\n },\r\n};\r\n","import * as math from 'mathjs';\r\nimport { type EChartsUtilsConfigModel } from '../types/echarts';\r\n\r\n/**\r\n * 公用方法,如:修约计算等\r\n */\r\nconst EChartsUtilsComm = {\r\n /**\r\n * 计算常规修约\r\n * @param roundingVal 修约值\r\n * @param accuracy 修约精度\r\n * @return 返回修约结果\r\n */\r\n getRound: (roundingVal, accuracy) => {\r\n // 验证修约的值是否为负数,为负数的话,取绝对值进行修约\r\n const valIsNegative = roundingVal < 0;\r\n if (valIsNegative) {\r\n roundingVal = Math.abs(roundingVal);\r\n }\r\n\r\n // 修约精度为0的时候\r\n if (accuracy == 0) {\r\n // 得到字符串形式\r\n let inputValStr = roundingVal.toString();\r\n\r\n // 判断是否有小数点,没有则直接返回换算后的修约值\r\n if (inputValStr.indexOf('.') == -1) {\r\n return valIsNegative ? -roundingVal : roundingVal;\r\n }\r\n\r\n // 获取整数数字部分和小数部分字符串\r\n let intVal = parseInt(inputValStr.split('.')[0]);\r\n let decimalStr = inputValStr.split('.')[1];\r\n\r\n // 小数部分大于或等于0.5的话,就给整数部分加1后返回,否则返回整数部分\r\n if (parseFloat(`0.${decimalStr}`) >= 0.5) {\r\n return valIsNegative ? -(intVal + 1) : intVal + 1;\r\n } else {\r\n return valIsNegative ? -intVal : intVal;\r\n }\r\n }\r\n\r\n // 系数\r\n let coefficient = 1 / accuracy;\r\n\r\n // 换算后的修约值(=修约值*系数)\r\n // 注意:此处使用到了toFixed,目的是可能会存在精度的问题\r\n let roundingValCal = Number((roundingVal * coefficient).toFixed(8));\r\n\r\n /**\r\n * 计算修约结果函数\r\n * @param inputVal 换算后的修约值\r\n * @returns 返回修约结果\r\n */\r\n const calcRoundingRet = (inputVal: number): number => {\r\n // 得到字符串形式\r\n let inputValStr = inputVal.toString();\r\n\r\n // 判断是否有小数点,没有则直接返回换算后的修约值\r\n if (inputValStr.indexOf('.') == -1) {\r\n return inputVal;\r\n }\r\n\r\n // 获取整数数字部分和小数部分字符串\r\n let intVal = parseInt(inputValStr.split('.')[0]);\r\n let decimalStr = inputValStr.split('.')[1];\r\n\r\n // 获取小数部分的第一位数字\r\n let decimalStrFirst = parseInt(decimalStr.substring(0, 1));\r\n\r\n // 大于等于6的时候,入\r\n if (decimalStrFirst >= 6) {\r\n return intVal + 1;\r\n }\r\n // 小于等于4的时候,舍\r\n else if (decimalStrFirst <= 4) {\r\n return intVal;\r\n }\r\n\r\n // 小数部分为5,并且只有一位小数的时候,前面的整数部分如果是奇数则入,反之则舍\r\n else if (decimalStrFirst == 5 && decimalStr.length == 1) {\r\n return intVal % 2 != 0 ? intVal + 1 : intVal;\r\n }\r\n\r\n // 小数部分为5,并且小数位数大于一位的时候,则入\r\n else if (decimalStrFirst == 5 && decimalStr.length > 1) {\r\n return intVal + 1;\r\n }\r\n\r\n return inputVal;\r\n };\r\n\r\n // 返回最终修约结果(=修约结果/系数)\r\n const retNum = calcRoundingRet(roundingValCal) / coefficient;\r\n\r\n //获取修约精度中的小数位数\r\n let accuracyStr = accuracy + '';\r\n\r\n // 如果修约精度中没有小数,则直接返回\r\n if (accuracyStr.indexOf('.') == -1) {\r\n return valIsNegative ? -retNum : retNum;\r\n } else {\r\n const retNumStr = retNum + '';\r\n\r\n // 补位的0的字符串\r\n let zeroStr = '';\r\n\r\n // 结果为整数的时候,需要补充小数点后面的小数位数为0,如:34→34.0\r\n if (retNumStr.indexOf('.') == -1) {\r\n let zeroStr = '';\r\n for (let index = 0; index < accuracyStr.split('.')[1].length; index++) {\r\n zeroStr += '0';\r\n }\r\n\r\n return (valIsNegative ? '-' : '') + `${retNum}.${zeroStr}`;\r\n }\r\n // 结果为小数的时候,需要补充修约精度的位数,如:0.3修约精度为0.01,则最终应该返回0.30\r\n else {\r\n const xsPart = retNumStr.split('.')[1];\r\n\r\n if (accuracyStr.split('.')[1].length > xsPart.length) {\r\n for (let index = 0; index < accuracyStr.split('.')[1].length - xsPart.length; index++) {\r\n zeroStr += '0';\r\n }\r\n }\r\n\r\n return (valIsNegative ? '-' : '') + `${retNum}${zeroStr}`;\r\n }\r\n }\r\n },\r\n /**\r\n * 实现Excel中TREND(返回线性回归拟合线的一组纵坐标值[y值])公式的计算\r\n * @param x x轴数据集合\r\n * @param y y轴数据集合\r\n * @param xVal x轴的值\r\n * @returns\r\n */\r\n calcTrend: (x: Array<number>, y: Array<number>, xVal: number) => {\r\n let n = x.length;\r\n let sumX = 0,\r\n sumY = 0,\r\n sumXY = 0,\r\n sumXX = 0;\r\n for (let i = 0; i < n; i++) {\r\n sumX += x[i];\r\n sumY += y[i];\r\n sumXY += x[i] * y[i];\r\n sumXX += x[i] * x[i];\r\n }\r\n let slope = (n * sumXY - sumX * sumY) / (n * sumXX - sumX * sumX);\r\n let intercept = (sumY - slope * sumX) / n;\r\n\r\n let predictedY = slope * xVal + intercept;\r\n\r\n if (slope + '' == 'NaN') {\r\n return { y: '', gs: '', xl: '', jj: '' };\r\n }\r\n\r\n //返回y轴趋势数据,以及公式\r\n return { y: predictedY, gs: `${slope}*x+${intercept}`, xl: slope, jj: intercept };\r\n },\r\n /**\r\n * 过滤掉数组中的null、空字符串或/符号等,并返回新的数组\r\n * @param dataSource 原始数组\r\n */\r\n filterNullEmptyErrArray: (dataSource: Array<any>) => {\r\n let retArr = dataSource.filter((item) => item != null && item != undefined && (item._error == null || item._error == undefined) && item != '/');\r\n\r\n return retArr;\r\n },\r\n};\r\n\r\n/**\r\n * 所有统计图表的ECharts配置\r\n */\r\nexport const EChartsUtilsAll = {\r\n /**\r\n * 沥青混合料-目标配合比设计-毛体积密度\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart10: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineJson = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n let xDataSource = xDataArr[0],\r\n yDataSource = yDataArr[0];\r\n\r\n // 原始数据\r\n let dxsJs = chartExtJson != null ? chartExtJson.dxsJs : 5,\r\n xData: any[] = [],\r\n yData: any[] = [];\r\n\r\n // 处理原始数据为空的值,不然参与mathjs计算会报错\r\n xDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n xData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n xData.push(item);\r\n }\r\n }\r\n });\r\n yDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n yData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n yData.push(item);\r\n }\r\n }\r\n });\r\n\r\n // y轴没有任何数据的时候,不参与绘制图表\r\n if (yData.length == 0) {\r\n return;\r\n }\r\n\r\n // 检查x轴的数据有多少个0,大于1个的时候,就不绘制图形\r\n let zeroCount = 0;\r\n xData.forEach((item) => {\r\n if (item == 0) {\r\n zeroCount++;\r\n }\r\n });\r\n // if (zeroCount > 1) {\r\n // \treturn;\r\n // }\r\n\r\n if (dxsJs >= yData.length) {\r\n dxsJs = yData.length - 1;\r\n }\r\n\r\n let xMin = Math.min(...xData),\r\n xMax = Math.max(...xData),\r\n yMin = Math.min(...yData),\r\n yMax = Math.max(...yData),\r\n /*xAxisMax = 5.5,\r\n xAxisMin = 3.5,\r\n yAxisMax = 2.35,\r\n yAxisMin = 2.25,\r\n */\r\n xAxisMax = xMax,\r\n xAxisMin = xMin,\r\n yAxisMax = Number(EChartsUtilsComm.getRound(yMax + 0.05, 0.01)),\r\n yAxisMin = Number(EChartsUtilsComm.getRound(yMin - 0.05, 0.01)),\r\n seriesData = [],\r\n upperLimit = null, // 上限\r\n lowerLimit = null,\r\n showLine = true; // 是否显示辅助线\r\n\r\n let points: any = [];\r\n xData.forEach((item, index) => {\r\n points.push([item, yData[index]]);\r\n });\r\n\r\n // 构造范德蒙德矩阵的函数\r\n function vandermondeMatrix(x, N) {\r\n const matrix = [];\r\n for (let i = 0; i < x.length; i++) {\r\n const row = [];\r\n for (let j = 0; j <= N; j++) {\r\n // 注意这里从0到N,包含N\r\n row.push(math.pow(x[i], j));\r\n }\r\n matrix.push(row);\r\n }\r\n return math.matrix(matrix);\r\n }\r\n\r\n // 构造原始的范德蒙德矩阵\r\n const vandermonde_matrix = vandermondeMatrix(xData, dxsJs); // 注意这里N=4,因为我们从0开始计数\r\n\r\n // 使用最小二乘法求解\r\n const A = vandermonde_matrix;\r\n const AT = math.transpose(A);\r\n const ATA = math.multiply(AT, A);\r\n const ATb = math.multiply(AT, math.matrix(yData));\r\n\r\n // 解线性方程组\r\n // const result = math.lusolve(ATA, ATb);\r\n // const coefficients = result.valueOf();\r\n\r\n let result: any = null,\r\n coefficients: any = [];\r\n try {\r\n result = math.lusolve(ATA, ATb);\r\n coefficients = result.valueOf();\r\n } catch (err) {\r\n for (let index = 0; index < xData.length; index++) {\r\n coefficients.push([0]);\r\n }\r\n console.log('无法解决该线性系统');\r\n }\r\n\r\n function funequation(x) {\r\n let y = 0;\r\n coefficients.forEach((item, index) => {\r\n //fx^0\r\n //fx^0+ax^1\r\n //fx^0+ax^1+bx^2\r\n //fx^0+ax^1+bx^2+cx^3\r\n //fx^0+x^1+x^2+x^3+x^4\r\n y += item * x ** index;\r\n });\r\n return y;\r\n }\r\n // console.log('计算公式:', coefficients);\r\n\r\n function lagrangeInterpolation(points, x) {\r\n let result = 0;\r\n for (let i = 0; i < points.length; i++) {\r\n let term = points[i][1];\r\n let xi = points[i][0];\r\n for (let j = 0; j < points.length; j++) {\r\n if (j !== i) {\r\n let xj = points[j][0];\r\n term *= (x - xj) / (xi - xj);\r\n }\r\n }\r\n result += term;\r\n }\r\n return result;\r\n }\r\n let arrX = [];\r\n let arrY = [];\r\n for (let i = xMin; i <= xMax; i += 0.01) {\r\n let temp = Number(EChartsUtilsComm.getRound(i, 0.01));\r\n //arrY.push(lagrangeInterpolation(points, temp));\r\n arrY.push(funequation(temp));\r\n arrX.push(temp);\r\n }\r\n let max = Math.max(...arrY);\r\n\r\n // 找到最大值的索引\r\n let maxIndex = arrY.findIndex((value) => value === max);\r\n\r\n // console.log('最大点数据:', arrX[maxIndex], max);\r\n\r\n let title = '', // config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n arrX.forEach((item, index) => {\r\n if (xData.includes(item)) {\r\n seriesData.push({ value: [item, arrY[index]] });\r\n } else {\r\n seriesData.push({\r\n value: [item, arrY[index]],\r\n symbol: 'none',\r\n });\r\n }\r\n });\r\n // 计算峰值\r\n const peakvalue = [arrX[maxIndex], Number(EChartsUtilsComm.getRound(max, 0.001))],\r\n coordX = [peakvalue[0], yAxisMin];\r\n\r\n // console.log('x范围:', xMin, xMax);\r\n // 输出开始和结束范围\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlKs != null && chartExtJson.lqhhlKs != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlKs.row, chartExtJson.lqhhlKs.col, xMin);\r\n sheet.setValue(chartExtJson.lqhhlJs.row, chartExtJson.lqhhlJs.col, xMax);\r\n }\r\n if (chartExtJson.lqhhlSc1 != null && chartExtJson.lqhhlSc1 != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlSc1.row, chartExtJson.lqhhlSc1.col, arrX[maxIndex]);\r\n }\r\n }\r\n\r\n let lineData = [];\r\n let pointData = [];\r\n if (showLine) {\r\n lineData = [\r\n [\r\n {\r\n coord: coordX,\r\n lineStyle: {\r\n color: '#333', // X轴\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: peakvalue,\r\n },\r\n ],\r\n ];\r\n pointData = [\r\n {\r\n xAxis: peakvalue[0],\r\n yAxis: peakvalue[1],\r\n symbolOffset: [0, 15],\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n if (Number(data.data.xAxis) == 0 && Number(data.data.yAxis) == 0) {\r\n return '';\r\n } else {\r\n return '( ' + data.data.xAxis + ',' + data.data.yAxis + ')';\r\n }\r\n //return '( ' + data.data.xAxis + ',' + data.data.yAxis + ')';\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n },\r\n {\r\n xAxis: peakvalue[0],\r\n yAxis: yAxisMin,\r\n symbolOffset: [0, 40],\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n return 'a1';\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n },\r\n ];\r\n }\r\n\r\n // 判断数据是否为/\r\n let yValIsAllNull = false;\r\n seriesData.forEach((item) => {\r\n yValIsAllNull = item.value.every((ele) => {\r\n return ele == 0;\r\n });\r\n });\r\n if (yValIsAllNull) {\r\n xAxisMin = null;\r\n xAxisMax = null;\r\n yAxisMin = null;\r\n yAxisMax = null;\r\n seriesData = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,// 是否显示外边框线\r\n // borderColor: '#f00',// 外边框线颜色\r\n top: 10,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: !yValIsAllNull ? 16 : 20,\r\n containLabel: true,\r\n },\r\n // 提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n //console.log(datas,\" datas\")\r\n return datas && datas.length > 0\r\n ? datas[0].seriesName + '(' + datas[0].value[0] + ')' + ':' + Number(EChartsUtilsComm.getRound(datas[0].value[1], 0.001))\r\n : datas[0].data;\r\n },\r\n },\r\n // 顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n // 图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, // 显示\r\n },\r\n selectedMode: 'multiple', // 用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n max: xAxisMax,\r\n min: xAxisMin,\r\n data: xData,\r\n axisTick: {\r\n alignWithLabel: true, // 使得刻度线和标签对齐\r\n },\r\n splitLine: { show: true },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n max: yAxisMax,\r\n min: yAxisMin,\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 40 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', // '#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n // splitNumber: 10, // 设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n // 设置y轴箭头效果\r\n show: true, // y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, // 平滑的线条\r\n // 设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', // 符号类型\r\n symbolSize: 6, // 符号大小 lineJson.lineColor\r\n // 线条的颜色\r\n lineStyle: {\r\n color: lineJson[0].lineColor,\r\n // 线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n // 线条上数据点的颜色\r\n itemStyle: {\r\n color: lineJson[0].lineColor,\r\n },\r\n data: seriesData,\r\n markPoint: {\r\n data: pointData,\r\n },\r\n markLine: {\r\n symbol: ['none', 'none'], // 去掉箭头\r\n itemStyle: {\r\n lineStyle: {\r\n type: 'solid',\r\n color: '#333',\r\n width: 2,\r\n },\r\n },\r\n data: lineData,\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 沥青混合料-目标配合比设计-稳定度\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart11: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineJson = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n let xDataSource = xDataArr[0],\r\n yDataSource = yDataArr[0];\r\n\r\n // 原始数据\r\n let dxsJs = chartExtJson != null ? chartExtJson.dxsJs : 5,\r\n xData = [],\r\n yData = [];\r\n\r\n // 处理原始数据为空的值,不然参与mathjs计算会报错\r\n xDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n xData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n xData.push(item);\r\n }\r\n }\r\n });\r\n yDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n yData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n yData.push(item);\r\n }\r\n }\r\n });\r\n\r\n // y轴没有任何数据的时候,不参与绘制图表\r\n if (yData.length == 0) {\r\n return;\r\n }\r\n\r\n // 检查x轴的数据有多少个0,大于1个的时候,就不绘制图形\r\n let zeroCount = 0;\r\n xData.forEach((item) => {\r\n if (item == 0) {\r\n zeroCount++;\r\n }\r\n });\r\n // if (zeroCount > 1) {\r\n // \treturn;\r\n // }\r\n\r\n if (dxsJs >= yData.length) {\r\n dxsJs = yData.length - 1;\r\n }\r\n\r\n let xMin = Math.min(...xData),\r\n xMax = Math.max(...xData),\r\n yMin = Math.min(...yData),\r\n yMax = Math.max(...yData),\r\n xAxisMax = xMax,\r\n xAxisMin = xMin,\r\n yAxisMax = Math.ceil(yMax + 2),\r\n yAxisMin = Math.floor(yMin - 2),\r\n seriesData = [],\r\n upperLimit = null, // 上限\r\n lowerLimit = 7.5, // 下限\r\n showLine = true; // 是否显示辅助线\r\n\r\n // 获取单元格中的上限和下限\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlSx != null && chartExtJson.lqhhlSx != undefined) {\r\n const curVal = sheet.getValue(chartExtJson.lqhhlSx.row, chartExtJson.lqhhlSx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curVal)) {\r\n upperLimit = curVal;\r\n }\r\n }\r\n if (chartExtJson.lqhhlXx != null && chartExtJson.lqhhlXx != undefined) {\r\n const curVal = sheet.getValue(chartExtJson.lqhhlXx.row, chartExtJson.lqhhlXx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curVal)) {\r\n lowerLimit = curVal;\r\n }\r\n }\r\n }\r\n\r\n if (upperLimit != null && upperLimit > yAxisMax) {\r\n yAxisMax = upperLimit + 2;\r\n }\r\n if (lowerLimit != null && lowerLimit > yAxisMax) {\r\n yAxisMin = lowerLimit - 2;\r\n }\r\n\r\n let points = [];\r\n xData.forEach((item, index) => {\r\n points.push([item, yData[index]]);\r\n });\r\n\r\n // 构造范德蒙德矩阵的函数\r\n function vandermondeMatrix(x, N) {\r\n const matrix = [];\r\n for (let i = 0; i < x.length; i++) {\r\n const row = [];\r\n for (let j = 0; j <= N; j++) {\r\n // 注意这里从0到N,包含N\r\n row.push(math.pow(x[i], j));\r\n }\r\n matrix.push(row);\r\n }\r\n return math.matrix(matrix);\r\n }\r\n\r\n // 构造原始的范德蒙德矩阵\r\n const vandermonde_matrix = vandermondeMatrix(xData, dxsJs); // 注意这里N=4,因为我们从0开始计数\r\n\r\n // 使用最小二乘法求解\r\n const A = vandermonde_matrix;\r\n const AT = math.transpose(A);\r\n const ATA = math.multiply(AT, A);\r\n const ATb = math.multiply(AT, math.matrix(yData));\r\n\r\n // 解线性方程组\r\n // const result = math.lusolve(ATA, ATb);\r\n // const coefficients = result.valueOf();\r\n\r\n let result: any = null,\r\n coefficients: any = [];\r\n try {\r\n result = math.lusolve(ATA, ATb);\r\n coefficients = result.valueOf();\r\n } catch (err) {\r\n for (let index = 0; index < xData.length; index++) {\r\n coefficients.push([0]);\r\n }\r\n console.log('无法解决该线性系统');\r\n }\r\n\r\n function funequation(x) {\r\n let y = 0;\r\n coefficients.forEach((item, index) => {\r\n //fx^0\r\n //fx^0+ax^1\r\n //fx^0+ax^1+bx^2\r\n //fx^0+ax^1+bx^2+cx^3\r\n //fx^0+x^1+x^2+x^3+x^4\r\n y += item * x ** index;\r\n });\r\n return y;\r\n }\r\n\r\n // console.log('计算公式:', coefficients);\r\n\r\n function lagrangeInterpolation(points, x) {\r\n let result = 0;\r\n for (let i = 0; i < points.length; i++) {\r\n let term = points[i][1];\r\n let xi = points[i][0];\r\n for (let j = 0; j < points.length; j++) {\r\n if (j !== i) {\r\n let xj = points[j][0];\r\n term *= (x - xj) / (xi - xj);\r\n }\r\n }\r\n result += term;\r\n }\r\n return result;\r\n }\r\n let arrX = [];\r\n let arrY = [];\r\n for (let i = xMin; i <= xMax; i += 0.01) {\r\n let temp = Number(EChartsUtilsComm.getRound(i, 0.01));\r\n // arrY.push(lagrangeInterpolation(points, temp));\r\n arrY.push(funequation(temp));\r\n arrX.push(temp);\r\n }\r\n let max = Math.max(...arrY);\r\n\r\n // 找到最大值的索引\r\n let maxIndex = arrY.findIndex((value) => value === max);\r\n\r\n // console.log('最大点数据:', arrX[maxIndex], max);\r\n\r\n let title = '', // config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n arrX.forEach((item, index) => {\r\n if (xData.includes(item)) {\r\n seriesData.push({ value: [item, arrY[index]] });\r\n } else {\r\n seriesData.push({\r\n value: [item, arrY[index]],\r\n symbol: 'none',\r\n });\r\n }\r\n });\r\n\r\n // 计算两条线段是否有交点\r\n function ifHaveIntersectionPoint(y1, y2, y3, y4) {\r\n if ((y1 >= y3 && y2 <= y4) || (y1 <= y3 && y2 >= y4)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n // 获取两点和香交线最接近的点\r\n function getIntersectionPoint(y1, y2, y) {\r\n if (Math.abs(y1 - y) > Math.abs(y2 - y)) {\r\n return 0;\r\n }\r\n return -1;\r\n }\r\n let upperIntersectionPoint = [],\r\n lowerIntersectionPoint = [];\r\n let upperIntersectionPointTrend = []; // 上限交点趋势(向上相交(1) 还是向下相交(0))\r\n let lowerIntersectionPointTrend = []; // 下限交点趋势\r\n arrX.forEach((item, index) => {\r\n if (index > 0) {\r\n // 上限交点\r\n if (upperLimit != null) {\r\n if (ifHaveIntersectionPoint(arrY[index - 1], arrY[index], upperLimit, upperLimit)) {\r\n let index1 = getIntersectionPoint(arrY[index - 1], arrY[index], upperLimit);\r\n // console.log(arrX[index + index1], arrY[index + index1]);\r\n upperIntersectionPoint.push([arrX[index + index1], arrY[index + index1]]);\r\n if (arrY[index - 1] > arrY[index]) {\r\n // 向下趋势\r\n upperIntersectionPointTrend.push(0);\r\n } else {\r\n upperIntersectionPointTrend.push(1);\r\n }\r\n }\r\n }\r\n // 下限交点\r\n if (lowerLimit != null) {\r\n if (ifHaveIntersectionPoint(arrY[index - 1], arrY[index], lowerLimit, lowerLimit)) {\r\n let index1 = getIntersectionPoint(arrY[index - 1], arrY[index], lowerLimit);\r\n // console.log(arrX[index + index1], arrY[index + index1]);\r\n lowerIntersectionPoint.push([arrX[index + index1], arrY[index + index1]]);\r\n if (arrY[index - 1] > arrY[index]) {\r\n // 向下趋势\r\n lowerIntersectionPointTrend.push(0);\r\n } else {\r\n lowerIntersectionPointTrend.push(1);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n let validX1 = xMin,\r\n validX2 = xMax;\r\n if (upperIntersectionPoint.length == 0 && lowerIntersectionPoint.length > 0) {\r\n // 上限无交点,下限有交点\r\n if (lowerIntersectionPointTrend[0] == 0) {\r\n // 下限向下相交\r\n validX1 = xMin;\r\n validX2 = lowerIntersectionPoint[0][0];\r\n } else {\r\n // 下限向上相交\r\n validX1 = lowerIntersectionPoint[0][0];\r\n if (lowerIntersectionPoint.length == 1) {\r\n // 只有一个交点\r\n validX2 = xMax;\r\n } else {\r\n validX2 = lowerIntersectionPoint[1][0];\r\n }\r\n }\r\n } else if (upperIntersectionPoint.length > 0 && lowerIntersectionPoint.length == 0) {\r\n // 上限有交点,下限无交点\r\n if (upperIntersectionPointTrend[0] == 0) {\r\n // 上限向下相交\r\n validX1 = upperIntersectionPoint[0][0];\r\n if (upperIntersectionPoint.length == 1) {\r\n // 只有一个交点\r\n validX2 = xMax;\r\n } else {\r\n validX2 = upperIntersectionPoint[1][0];\r\n }\r\n } else {\r\n // 上限向上相交\r\n validX1 = xMin;\r\n validX2 = upperIntersectionPoint[0][0];\r\n }\r\n } else if (upperIntersectionPoint.length > 0 && lowerIntersectionPoint.length > 0) {\r\n // 上下限都有交点,情况太多,我们只取中间\r\n if (upperIntersectionPointTrend[0] == 0) {\r\n // 上限向下相交\r\n validX1 = upperIntersectionPoint[0][0];\r\n validX2 = lowerIntersectionPoint[0][0];\r\n } else {\r\n // 上限向上相交\r\n validX1 = lowerIntersectionPoint[0][0];\r\n validX2 = upperIntersectionPoint[0][0];\r\n }\r\n }\r\n\r\n // console.log('x范围:', validX1, validX2);\r\n // 输出开始和结束范围\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlKs != null && chartExtJson.lqhhlKs != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlKs.row, chartExtJson.lqhhlKs.col, validX1);\r\n sheet.setValue(chartExtJson.lqhhlJs.row, chartExtJson.lqhhlJs.col, validX2);\r\n }\r\n if (chartExtJson.lqhhlSc1 != null && chartExtJson.lqhhlSc1 != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlSc1.row, chartExtJson.lqhhlSc1.col, arrX[maxIndex]);\r\n }\r\n }\r\n\r\n // 峰值\r\n const peakvalue = [arrX[maxIndex], Number(EChartsUtilsComm.getRound(max, 0.001))];\r\n\r\n let lineData = [];\r\n let pointData = [];\r\n if (showLine) {\r\n lineData = [\r\n [\r\n {\r\n coord: [peakvalue[0], yAxisMin],\r\n lineStyle: {\r\n color: '#333', // X轴\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: peakvalue,\r\n },\r\n ],\r\n ];\r\n pointData = [\r\n {\r\n xAxis: peakvalue[0],\r\n yAxis: peakvalue[1],\r\n symbolOffset: [0, 15],\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n if (Number(data.data.xAxis) == 0 && Number(data.data.yAxis) == 0) {\r\n return '';\r\n } else {\r\n return '( ' + data.data.xAxis + ',' + data.data.yAxis + ')';\r\n }\r\n //return '( ' + data.data.xAxis + ',' + data.data.yAxis + ')';\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n },\r\n {\r\n xAxis: peakvalue[0],\r\n yAxis: yAxisMin,\r\n symbolOffset: [0, 40],\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n return 'a2';\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n },\r\n ];\r\n }\r\n\r\n if (upperLimit != null) {\r\n lineData.push([\r\n {\r\n coord: [xAxisMin, upperLimit],\r\n lineStyle: {\r\n color: '#333', //上限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [xAxisMax, upperLimit],\r\n },\r\n ]);\r\n }\r\n\r\n if (lowerLimit != null) {\r\n lineData.push([\r\n {\r\n coord: [xAxisMin, lowerLimit],\r\n lineStyle: {\r\n color: '#333', //下限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [xAxisMax, lowerLimit],\r\n },\r\n ]);\r\n }\r\n\r\n //判断数据是否为/\r\n let yValIsAllNull = false;\r\n seriesData.forEach((item) => {\r\n yValIsAllNull = item.value.every((ele) => {\r\n return ele == 0;\r\n });\r\n });\r\n if (yValIsAllNull) {\r\n xAxisMin = null;\r\n xAxisMax = null;\r\n yAxisMin = null;\r\n yAxisMax = null;\r\n seriesData = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 10,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: !yValIsAllNull ? 16 : 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n //console.log(datas,\" datas\")\r\n return datas && datas.length > 0\r\n ? datas[0].seriesName + '(' + datas[0].value[0] + ')' + ':' + Number(EChartsUtilsComm.getRound(datas[0].value[1], 0.001))\r\n : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n max: xAxisMax,\r\n min: xAxisMin,\r\n data: xData,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n splitLine: { show: true },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n max: yAxisMax,\r\n min: yAxisMin,\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineJson[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineJson[0].lineColor,\r\n },\r\n data: seriesData,\r\n markPoint: {\r\n data: pointData,\r\n },\r\n markLine: {\r\n symbol: ['none', 'none'], //去掉箭头\r\n itemStyle: {\r\n lineStyle: {\r\n type: 'solid',\r\n color: '#333',\r\n width: 2,\r\n },\r\n },\r\n data: lineData,\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 沥青混合料-目标配合比设计-空隙率\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart12: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineJson = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n let xDataSource = xDataArr[0], // [3.5, 4, 4.5, 5, 5.5],\r\n yDataSource = yDataArr[0]; // [8.8, 5.9, 4.1, 3.3, 2.6];\r\n\r\n //原始数据\r\n let dxsJs = chartExtJson != null ? chartExtJson.dxsJs : 5,\r\n xData = [],\r\n yData = [];\r\n\r\n //处理原始数据为空的值,不然参与mathjs计算会报错\r\n xDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n xData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n xData.push(item);\r\n }\r\n }\r\n });\r\n yDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n yData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n yData.push(item);\r\n }\r\n }\r\n });\r\n\r\n //y轴没有任何数据的时候,不参与绘制图表\r\n if (yData.length == 0) {\r\n return;\r\n }\r\n\r\n //检查x轴的数据有多少个0,大于1个的时候,就不绘制图形\r\n let zeroCount = 0;\r\n xData.forEach((item) => {\r\n if (item == 0) {\r\n zeroCount++;\r\n }\r\n });\r\n // if (zeroCount > 1) {\r\n // \treturn;\r\n // }\r\n\r\n if (dxsJs >= yData.length) {\r\n dxsJs = yData.length - 1;\r\n }\r\n\r\n let xMin = Math.min(...xData),\r\n xMax = Math.max(...xData),\r\n yMin = Math.min(...yData),\r\n yMax = Math.max(...yData),\r\n /*\r\n\t\t\txAxisMax = 5.5,\r\n xAxisMin = 3.5,\r\n yAxisMax = 10,\r\n yAxisMin = 0,\r\n\t\t\t*/\r\n xAxisMax = xMax,\r\n xAxisMin = xMin,\r\n yAxisMax = Math.ceil(yMax + 2),\r\n yAxisMin = Math.floor(yMin - 2),\r\n seriesData = [],\r\n upperLimit = 5, //上限\r\n lowerLimit = 3, //下限\r\n showLine = true; //是否显示辅助线\r\n\r\n //获取单元格中的上限和下限\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlSx != null && chartExtJson.lqhhlSx != undefined) {\r\n const curVal = sheet.getValue(chartExtJson.lqhhlSx.row, chartExtJson.lqhhlSx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curVal)) {\r\n upperLimit = curVal;\r\n }\r\n }\r\n if (chartExtJson.lqhhlXx != null && chartExtJson.lqhhlXx != undefined) {\r\n const curVal = sheet.getValue(chartExtJson.lqhhlXx.row, chartExtJson.lqhhlXx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curVal)) {\r\n lowerLimit = curVal;\r\n }\r\n }\r\n }\r\n\r\n if (upperLimit != null && upperLimit > yAxisMax) {\r\n yAxisMax = upperLimit + 2;\r\n }\r\n if (lowerLimit != null && lowerLimit > yAxisMax) {\r\n yAxisMin = lowerLimit - 2;\r\n }\r\n\r\n let points = [];\r\n xData.forEach((item, index) => {\r\n points.push([item, yData[index]]);\r\n });\r\n\r\n // 构造范德蒙德矩阵的函数\r\n function vandermondeMatrix(x, N) {\r\n const matrix = [];\r\n for (let i = 0; i < x.length; i++) {\r\n const row = [];\r\n for (let j = 0; j <= N; j++) {\r\n // 注意这里从0到N,包含N\r\n row.push(math.pow(x[i], j));\r\n }\r\n matrix.push(row);\r\n }\r\n return math.matrix(matrix);\r\n }\r\n\r\n // 构造原始的范德蒙德矩阵\r\n const vandermonde_matrix = vandermondeMatrix(xData, dxsJs); // 注意这里N=4,因为我们从0开始计数\r\n\r\n // 使用最小二乘法求解\r\n const A = vandermonde_matrix;\r\n const AT = math.transpose(A);\r\n const ATA = math.multiply(AT, A);\r\n const ATb = math.multiply(AT, math.matrix(yData));\r\n\r\n // 解线性方程组\r\n // const result = math.lusolve(ATA, ATb);\r\n // const coefficients = result.valueOf();\r\n let result: any = null,\r\n coefficients: any = [];\r\n try {\r\n result = math.lusolve(ATA, ATb);\r\n coefficients = result.valueOf();\r\n } catch (err) {\r\n for (let index = 0; index < xData.length; index++) {\r\n coefficients.push([0]);\r\n }\r\n console.log('无法解决该线性系统');\r\n }\r\n\r\n function funequation(x) {\r\n let y = 0;\r\n coefficients.forEach((item, index) => {\r\n //fx^0\r\n //fx^0+ax^1\r\n //fx^0+ax^1+bx^2\r\n //fx^0+ax^1+bx^2+cx^3\r\n //fx^0+x^1+x^2+x^3+x^4\r\n y += item * x ** index;\r\n });\r\n return y;\r\n }\r\n\r\n // console.log('计算公式:', coefficients);\r\n\r\n function lagrangeInterpolation(points, x) {\r\n let result = 0;\r\n for (let i = 0; i < points.length; i++) {\r\n let term = points[i][1];\r\n let xi = points[i][0];\r\n for (let j = 0; j < points.length; j++) {\r\n if (j !== i) {\r\n let xj = points[j][0];\r\n term *= (x - xj) / (xi - xj);\r\n }\r\n }\r\n result += term;\r\n }\r\n return result;\r\n }\r\n let arrX = [];\r\n let arrY = [];\r\n for (let i = xMin; i <= xMax; i += 0.01) {\r\n let temp = Number(EChartsUtilsComm.getRound(i, 0.01));\r\n //arrY.push(lagrangeInterpolation(points, temp));\r\n arrY.push(funequation(temp));\r\n arrX.push(temp);\r\n }\r\n\r\n let title = '', // config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //计算两条线段是否有交点\r\n function ifHaveIntersectionPoint(y1, y2, y3, y4) {\r\n if ((y1 >= y3 && y2 <= y4) || (y1 <= y3 && y2 >= y4)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n //获取两点和香交线最接近的点\r\n function getIntersectionPoint(y1, y2, y) {\r\n if (Math.abs(y1 - y) > Math.abs(y2 - y)) {\r\n return 0;\r\n }\r\n return -1;\r\n }\r\n let upperIntersectionPoint = [],\r\n lowerIntersectionPoint = [];\r\n let upperIntersectionPointTrend = []; //上限交点趋势(向上相交(1) 还是向下相交(0))\r\n let lowerIntersectionPointTrend = []; //下限交点趋势\r\n arrX.forEach((item, index) => {\r\n if (xData.includes(item)) {\r\n seriesData.push({ value: [item, arrY[index]] });\r\n } else {\r\n seriesData.push({\r\n value: [item, arrY[index]],\r\n symbol: 'none',\r\n });\r\n }\r\n if (index > 0) {\r\n //上限交点\r\n if (upperLimit != null) {\r\n if (ifHaveIntersectionPoint(arrY[index - 1], arrY[index], upperLimit, upperLimit)) {\r\n let index1 = getIntersectionPoint(arrY[index - 1], arrY[index], upperLimit);\r\n // console.log(arrX[index + index1], arrY[index + index1]);\r\n upperIntersectionPoint.push([arrX[index + index1], arrY[index + index1]]);\r\n if (arrY[index - 1] > arrY[index]) {\r\n //向下趋势\r\n upperIntersectionPointTrend.push(0);\r\n } else {\r\n upperIntersectionPointTrend.push(1);\r\n }\r\n }\r\n }\r\n //下限交点\r\n if (lowerLimit != null) {\r\n if (ifHaveIntersectionPoint(arrY[index - 1], arrY[index], lowerLimit, lowerLimit)) {\r\n let index1 = getIntersectionPoint(arrY[index - 1], arrY[index], lowerLimit);\r\n // console.log(arrX[index + index1], arrY[index + index1]);\r\n lowerIntersectionPoint.push([arrX[index + index1], arrY[index + index1]]);\r\n if (arrY[index - 1] > arrY[index]) {\r\n //向下趋势\r\n lowerIntersectionPointTrend.push(0);\r\n } else {\r\n lowerIntersectionPointTrend.push(1);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n let validX1 = xMin,\r\n validX2 = xMax;\r\n if (upperIntersectionPoint.length == 0 && lowerIntersectionPoint.length > 0) {\r\n //上限无交点,下限有交点\r\n if (lowerIntersectionPointTrend[0] == 0) {\r\n //下限向下相交\r\n validX1 = xMin;\r\n validX2 = lowerIntersectionPoint[0][0];\r\n } else {\r\n //下限向上相交\r\n validX1 = lowerIntersectionPoint[0][0];\r\n if (lowerIntersectionPoint.length == 1) {\r\n //只有一个交点\r\n validX2 = xMax;\r\n } else {\r\n validX2 = lowerIntersectionPoint[1][0];\r\n }\r\n }\r\n } else if (upperIntersectionPoint.length > 0 && lowerIntersectionPoint.length == 0) {\r\n //上限有交点,下限无交点\r\n if (upperIntersectionPointTrend[0] == 0) {\r\n //上限向下相交\r\n validX1 = upperIntersectionPoint[0][0];\r\n if (upperIntersectionPoint.length == 1) {\r\n //只有一个交点\r\n validX2 = xMax;\r\n } else {\r\n validX2 = upperIntersectionPoint[1][0];\r\n }\r\n } else {\r\n //上限向上相交\r\n validX1 = xMin;\r\n validX2 = upperIntersectionPoint[0][0];\r\n }\r\n } else if (upperIntersectionPoint.length > 0 && lowerIntersectionPoint.length > 0) {\r\n //上下限都有交点,情况太多,我们只取中间\r\n if (upperIntersectionPointTrend[0] == 0) {\r\n //上限向下相交\r\n validX1 = upperIntersectionPoint[0][0];\r\n validX2 = lowerIntersectionPoint[0][0];\r\n } else {\r\n //上限向上相交\r\n validX1 = lowerIntersectionPoint[0][0];\r\n validX2 = upperIntersectionPoint[0][0];\r\n }\r\n }\r\n\r\n // console.log('x范围:', validX1, validX2);\r\n //输出开始和结束范围\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlKs != null && chartExtJson.lqhhlKs != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlKs.row, chartExtJson.lqhhlKs.col, validX1);\r\n sheet.setValue(chartExtJson.lqhhlJs.row, chartExtJson.lqhhlJs.col, validX2);\r\n }\r\n }\r\n\r\n let lineData = [];\r\n let pointData = [];\r\n if (showLine) {\r\n if (upperIntersectionPoint.length > 0) {\r\n upperIntersectionPoint.forEach((item, index) => {\r\n lineData.push([\r\n {\r\n coord: [item[0], yAxisMin],\r\n lineStyle: {\r\n color: '#333', //上限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [item[0], upperLimit],\r\n },\r\n ]);\r\n });\r\n }\r\n if (lowerIntersectionPoint.length > 0) {\r\n lowerIntersectionPoint.forEach((item, index) => {\r\n lineData.push([\r\n {\r\n coord: [item[0], yAxisMin],\r\n lineStyle: {\r\n color: '#333', //下限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [item[0], lowerLimit],\r\n },\r\n ]);\r\n });\r\n }\r\n\r\n //上下线交点分别只有一个才求平均值\r\n if (upperIntersectionPoint.length == 1 && lowerIntersectionPoint.length == 1) {\r\n const avg = ((upperIntersectionPoint[0][0] + lowerIntersectionPoint[0][0]) / 2).toFixed(2);\r\n const avgXIndex = arrX.findIndex((n) => n == avg);\r\n // console.log('输出:', avg, avgXIndex);\r\n //输出\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlSc1 != null && chartExtJson.lqhhlSc1 != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlSc1.row, chartExtJson.lqhhlSc1.col, avg);\r\n }\r\n }\r\n lineData.push([\r\n {\r\n coord: [avg, yAxisMin],\r\n lineStyle: {\r\n color: '#333', //下限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [avg, arrY[avgXIndex]],\r\n },\r\n ]);\r\n pointData.push({\r\n xAxis: avg,\r\n yAxis: yAxisMin,\r\n symbolOffset: [0, 40],\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n return 'a3';\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n });\r\n }\r\n }\r\n\r\n if (upperLimit != null) {\r\n lineData.push([\r\n {\r\n coord: [xAxisMin, upperLimit],\r\n lineStyle: {\r\n color: '#333', //上限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [xAxisMax, upperLimit],\r\n },\r\n ]);\r\n }\r\n\r\n if (lowerLimit != null) {\r\n lineData.push([\r\n {\r\n coord: [xAxisMin, lowerLimit],\r\n lineStyle: {\r\n color: '#333', //下限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [xAxisMax, lowerLimit],\r\n },\r\n ]);\r\n }\r\n\r\n //判断数据是否为/\r\n let yValIsAllNull = false;\r\n seriesData.forEach((item) => {\r\n yValIsAllNull = item.value.every((ele) => {\r\n return ele == 0;\r\n });\r\n });\r\n if (yValIsAllNull) {\r\n xAxisMin = null;\r\n xAxisMax = null;\r\n yAxisMin = null;\r\n yAxisMax = null;\r\n seriesData = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 10,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: !yValIsAllNull ? 16 : 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n //console.log(datas,\" datas\")\r\n return datas && datas.length > 0\r\n ? datas[0].seriesName + '(' + datas[0].value[0] + ')' + ':' + Number(EChartsUtilsComm.getRound(datas[0].value[1], 0.001))\r\n : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n max: xAxisMax,\r\n min: xAxisMin,\r\n data: xData,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n splitLine: { show: true },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n max: yAxisMax,\r\n min: yAxisMin,\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineJson[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineJson[0].lineColor,\r\n },\r\n data: seriesData,\r\n markPoint: {\r\n data: pointData,\r\n },\r\n markLine: {\r\n symbol: ['none', 'none'], //去掉箭头\r\n itemStyle: {\r\n lineStyle: {\r\n type: 'solid',\r\n color: '#333',\r\n width: 2,\r\n },\r\n },\r\n data: lineData,\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 沥青混合料-目标配合比设计-流值\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart13: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineJson = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n let xDataSource = xDataArr[0], // [3.5, 4, 4.5, 5, 5.5],\r\n yDataSource = yDataArr[0]; // [2.2, 2.5, 2.9, 3.4, 4.2];\r\n\r\n //原始数据\r\n let dxsJs = chartExtJson != null ? chartExtJson.dxsJs : 5,\r\n xData = [],\r\n yData = [];\r\n\r\n //处理原始数据为空的值,不然参与mathjs计算会报错\r\n xDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n xData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n xData.push(item);\r\n }\r\n }\r\n });\r\n yDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n yData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n yData.push(item);\r\n }\r\n }\r\n });\r\n\r\n //y轴没有任何数据的时候,不参与绘制图表\r\n if (yData.length == 0) {\r\n return;\r\n }\r\n\r\n //检查x轴的数据有多少个0,大于1个的时候,就不绘制图形\r\n let zeroCount = 0;\r\n xData.forEach((item) => {\r\n if (item == 0) {\r\n zeroCount++;\r\n }\r\n });\r\n // if (zeroCount > 1) {\r\n // \treturn;\r\n // }\r\n\r\n if (dxsJs >= yData.length) {\r\n dxsJs = yData.length - 1;\r\n }\r\n\r\n let xMin = Math.min(...xData),\r\n xMax = Math.max(...xData),\r\n yMin = Math.min(...yData),\r\n yMax = Math.max(...yData),\r\n /*\r\n xAxisMax = 5.5,\r\n xAxisMin = 3.5,\r\n yAxisMax = 5,\r\n yAxisMin = 1,\r\n\t\t\t*/\r\n xAxisMax = xMax,\r\n xAxisMin = xMin,\r\n yAxisMax = Math.ceil(yMax + 1),\r\n yAxisMin = Math.floor(yMin - 1),\r\n seriesData = [],\r\n upperLimit = null, //上限\r\n lowerLimit = 2, //下限\r\n showLine = true; //是否显示辅助线\r\n\r\n //获取单元格中的上限和下限\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlSx != null && chartExtJson.lqhhlSx != undefined) {\r\n const curVal = sheet.getValue(chartExtJson.lqhhlSx.row, chartExtJson.lqhhlSx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curVal)) {\r\n upperLimit = curVal;\r\n }\r\n }\r\n if (chartExtJson.lqhhlXx != null && chartExtJson.lqhhlXx != undefined) {\r\n const curVal = sheet.getValue(chartExtJson.lqhhlXx.row, chartExtJson.lqhhlXx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curVal)) {\r\n lowerLimit = curVal;\r\n }\r\n }\r\n }\r\n\r\n if (upperLimit != null && upperLimit > yAxisMax) {\r\n yAxisMax = upperLimit + 1;\r\n }\r\n if (lowerLimit != null && lowerLimit > yAxisMax) {\r\n yAxisMin = lowerLimit - 1;\r\n }\r\n\r\n let points = [];\r\n xData.forEach((item, index) => {\r\n points.push([item, yData[index]]);\r\n });\r\n\r\n // 构造范德蒙德矩阵的函数\r\n function vandermondeMatrix(x, N) {\r\n const matrix = [];\r\n for (let i = 0; i < x.length; i++) {\r\n const row = [];\r\n for (let j = 0; j <= N; j++) {\r\n // 注意这里从0到N,包含N\r\n row.push(math.pow(x[i], j));\r\n }\r\n matrix.push(row);\r\n }\r\n return math.matrix(matrix);\r\n }\r\n\r\n // 构造原始的范德蒙德矩阵\r\n const vandermonde_matrix = vandermondeMatrix(xData, dxsJs); // 注意这里N=4,因为我们从0开始计数\r\n\r\n // 使用最小二乘法求解\r\n const A = vandermonde_matrix;\r\n const AT = math.transpose(A);\r\n const ATA = math.multiply(AT, A);\r\n const ATb = math.multiply(AT, math.matrix(yData));\r\n\r\n // 解线性方程组\r\n // const result = math.lusolve(ATA, ATb);\r\n // const coefficients = result.valueOf();\r\n\r\n let result: any = null,\r\n coefficients: any = [];\r\n try {\r\n result = math.lusolve(ATA, ATb);\r\n coefficients = result.valueOf();\r\n } catch (err) {\r\n for (let index = 0; index < xData.length; index++) {\r\n coefficients.push([0]);\r\n }\r\n console.log('无法解决该线性系统');\r\n }\r\n\r\n function funequation(x) {\r\n let y = 0;\r\n coefficients.forEach((item, index) => {\r\n //fx^0\r\n //fx^0+ax^1\r\n //fx^0+ax^1+bx^2\r\n //fx^0+ax^1+bx^2+cx^3\r\n //fx^0+x^1+x^2+x^3+x^4\r\n y += item * x ** index;\r\n });\r\n return y;\r\n }\r\n\r\n // console.log('计算公式:', coefficients);\r\n\r\n function lagrangeInterpolation(points, x) {\r\n let result = 0;\r\n for (let i = 0; i < points.length; i++) {\r\n let term = points[i][1];\r\n let xi = points[i][0];\r\n for (let j = 0; j < points.length; j++) {\r\n if (j !== i) {\r\n let xj = points[j][0];\r\n term *= (x - xj) / (xi - xj);\r\n }\r\n }\r\n result += term;\r\n }\r\n return result;\r\n }\r\n let arrX = [];\r\n let arrY = [];\r\n for (let i = xMin; i <= xMax; i += 0.01) {\r\n let temp = Number(EChartsUtilsComm.getRound(i, 0.01));\r\n //arrY.push(lagrangeInterpolation(points, temp));\r\n arrY.push(funequation(temp));\r\n arrX.push(temp);\r\n }\r\n let max = Math.max(...arrY);\r\n\r\n // 找到最大值的索引\r\n let maxIndex = arrY.findIndex((value) => value === max);\r\n\r\n // console.log('最大点数据:', arrX[maxIndex], max);\r\n\r\n let title = '', // config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n arrX.forEach((item, index) => {\r\n if (xData.includes(item)) {\r\n seriesData.push({ value: [item, arrY[index]] });\r\n } else {\r\n seriesData.push({\r\n value: [item, arrY[index]],\r\n symbol: 'none',\r\n });\r\n }\r\n });\r\n\r\n //计算两条线段是否有交点\r\n function ifHaveIntersectionPoint(y1, y2, y3, y4) {\r\n if ((y1 >= y3 && y2 <= y4) || (y1 <= y3 && y2 >= y4)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n //获取两点和香交线最接近的点\r\n function getIntersectionPoint(y1, y2, y) {\r\n if (Math.abs(y1 - y) > Math.abs(y2 - y)) {\r\n return 0;\r\n }\r\n return -1;\r\n }\r\n let upperIntersectionPoint = [],\r\n lowerIntersectionPoint = [];\r\n let upperIntersectionPointTrend = []; //上限交点趋势(向上相交(1) 还是向下相交(0))\r\n let lowerIntersectionPointTrend = []; //下限交点趋势\r\n arrX.forEach((item, index) => {\r\n if (index > 0) {\r\n //上限交点\r\n if (upperLimit != null) {\r\n if (ifHaveIntersectionPoint(arrY[index - 1], arrY[index], upperLimit, upperLimit)) {\r\n let index1 = getIntersectionPoint(arrY[index - 1], arrY[index], upperLimit);\r\n // console.log(arrX[index + index1], arrY[index + index1]);\r\n upperIntersectionPoint.push([arrX[index + index1], arrY[index + index1]]);\r\n if (arrY[index - 1] > arrY[index]) {\r\n //向下趋势\r\n upperIntersectionPointTrend.push(0);\r\n } else {\r\n upperIntersectionPointTrend.push(1);\r\n }\r\n }\r\n }\r\n //下限交点\r\n if (lowerLimit != null) {\r\n if (ifHaveIntersectionPoint(arrY[index - 1], arrY[index], lowerLimit, lowerLimit)) {\r\n let index1 = getIntersectionPoint(arrY[index - 1], arrY[index], lowerLimit);\r\n // console.log(arrX[index + index1], arrY[index + index1]);\r\n lowerIntersectionPoint.push([arrX[index + index1], arrY[index + index1]]);\r\n if (arrY[index - 1] > arrY[index]) {\r\n //向下趋势\r\n lowerIntersectionPointTrend.push(0);\r\n } else {\r\n lowerIntersectionPointTrend.push(1);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n let validX1 = xMin,\r\n validX2 = xMax;\r\n if (upperIntersectionPoint.length == 0 && lowerIntersectionPoint.length > 0) {\r\n //上限无交点,下限有交点\r\n if (lowerIntersectionPointTrend[0] == 0) {\r\n //下限向下相交\r\n validX1 = xMin;\r\n validX2 = lowerIntersectionPoint[0][0];\r\n } else {\r\n //下限向上相交\r\n validX1 = lowerIntersectionPoint[0][0];\r\n if (lowerIntersectionPoint.length == 1) {\r\n //只有一个交点\r\n validX2 = xMax;\r\n } else {\r\n validX2 = lowerIntersectionPoint[1][0];\r\n }\r\n }\r\n } else if (upperIntersectionPoint.length > 0 && lowerIntersectionPoint.length == 0) {\r\n //上限有交点,下限无交点\r\n if (upperIntersectionPointTrend[0] == 0) {\r\n //上限向下相交\r\n validX1 = upperIntersectionPoint[0][0];\r\n if (upperIntersectionPoint.length == 1) {\r\n //只有一个交点\r\n validX2 = xMax;\r\n } else {\r\n validX2 = upperIntersectionPoint[1][0];\r\n }\r\n } else {\r\n //上限向上相交\r\n validX1 = xMin;\r\n validX2 = upperIntersectionPoint[0][0];\r\n }\r\n } else if (upperIntersectionPoint.length > 0 && lowerIntersectionPoint.length > 0) {\r\n //上下限都有交点,情况太多,我们只取中间\r\n if (upperIntersectionPointTrend[0] == 0) {\r\n //上限向下相交\r\n validX1 = upperIntersectionPoint[0][0];\r\n validX2 = lowerIntersectionPoint[0][0];\r\n } else {\r\n //上限向上相交\r\n validX1 = lowerIntersectionPoint[0][0];\r\n validX2 = upperIntersectionPoint[0][0];\r\n }\r\n }\r\n\r\n // console.log('x范围:', validX1, validX2);\r\n //输出开始和结束范围\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlKs != null && chartExtJson.lqhhlKs != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlKs.row, chartExtJson.lqhhlKs.col, validX1);\r\n sheet.setValue(chartExtJson.lqhhlJs.row, chartExtJson.lqhhlJs.col, validX2);\r\n }\r\n }\r\n\r\n let lineData = [];\r\n let pointData = [];\r\n if (showLine) {\r\n lineData = [];\r\n pointData = [];\r\n }\r\n\r\n if (upperLimit != null) {\r\n lineData.push([\r\n {\r\n coord: [xAxisMin, upperLimit],\r\n lineStyle: {\r\n color: '#333', //上限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [xAxisMax, upperLimit],\r\n },\r\n ]);\r\n }\r\n\r\n if (lowerLimit != null) {\r\n lineData.push([\r\n {\r\n coord: [xAxisMin, lowerLimit],\r\n lineStyle: {\r\n color: '#333', //下限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [xAxisMax, lowerLimit],\r\n },\r\n ]);\r\n }\r\n\r\n //判断数据是否为/\r\n let yValIsAllNull = false;\r\n seriesData.forEach((item) => {\r\n yValIsAllNull = item.value.every((ele) => {\r\n return ele == 0;\r\n });\r\n });\r\n if (yValIsAllNull) {\r\n xAxisMin = null;\r\n xAxisMax = null;\r\n yAxisMin = null;\r\n yAxisMax = null;\r\n seriesData = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 10,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: !yValIsAllNull ? 16 : 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n //console.log(datas,\" datas\")\r\n return datas && datas.length > 0\r\n ? datas[0].seriesName + '(' + datas[0].value[0] + ')' + ':' + Number(EChartsUtilsComm.getRound(datas[0].value[1], 0.001))\r\n : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n max: xAxisMax,\r\n min: xAxisMin,\r\n data: xData,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n splitLine: { show: true },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n max: yAxisMax,\r\n min: yAxisMin,\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 25 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineJson[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineJson[0].lineColor,\r\n },\r\n data: seriesData,\r\n markPoint: {\r\n data: pointData,\r\n },\r\n markLine: {\r\n symbol: ['none', 'none'], //去掉箭头\r\n itemStyle: {\r\n lineStyle: {\r\n type: 'solid',\r\n color: '#333',\r\n width: 2,\r\n },\r\n },\r\n data: lineData,\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 沥青混合料-目标配合比设计-矿料间隙率\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart14: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineJson = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n let xDataSource = xDataArr[0], // [3.5, 4, 4.5, 5, 5.5],\r\n yDataSource = yDataArr[0]; // [16.1, 15.2, 14.6, 14.8, 16];\r\n\r\n //原始数据\r\n let dxsJs = chartExtJson != null ? chartExtJson.dxsJs : 5,\r\n xData = [],\r\n yData = [];\r\n\r\n //处理原始数据为空的值,不然参与mathjs计算会报错\r\n xDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n xData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n xData.push(item);\r\n }\r\n }\r\n });\r\n yDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n yData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n yData.push(item);\r\n }\r\n }\r\n });\r\n\r\n //y轴没有任何数据的时候,不参与绘制图表\r\n if (yData.length == 0) {\r\n return;\r\n }\r\n\r\n //检查x轴的数据有多少个0,大于1个的时候,就不绘制图形\r\n let zeroCount = 0;\r\n xData.forEach((item) => {\r\n if (item == 0) {\r\n zeroCount++;\r\n }\r\n });\r\n // if (zeroCount > 1) {\r\n // \treturn;\r\n // }\r\n\r\n if (dxsJs >= yData.length) {\r\n dxsJs = yData.length - 1;\r\n }\r\n\r\n let xMin = Math.min(...xData),\r\n xMax = Math.max(...xData),\r\n yMin = Math.min(...yData),\r\n yMax = Math.max(...yData),\r\n /*\r\n\t\t\txAxisMax = 5.5,\r\n xAxisMin = 3.5,\r\n yAxisMax = 19.0,\r\n yAxisMin = 13.0,\r\n\t\t\t*/\r\n xAxisMax = xMax,\r\n xAxisMin = xMin,\r\n yAxisMax = Math.ceil(yMax + 1),\r\n yAxisMin = Math.floor(yMin - 1),\r\n seriesData = [],\r\n upperLimit = null, //上限\r\n lowerLimit = 13.5, //下限\r\n showLine = true; //是否显示辅助线\r\n\r\n //获取单元格中的上限和下限\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlSx != null && chartExtJson.lqhhlSx != undefined) {\r\n const curVal = sheet.getValue(chartExtJson.lqhhlSx.row, chartExtJson.lqhhlSx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curVal)) {\r\n upperLimit = curVal;\r\n }\r\n }\r\n if (chartExtJson.lqhhlXx != null && chartExtJson.lqhhlXx != undefined) {\r\n const curVal = sheet.getValue(chartExtJson.lqhhlXx.row, chartExtJson.lqhhlXx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curVal)) {\r\n lowerLimit = curVal;\r\n }\r\n }\r\n }\r\n\r\n if (upperLimit != null && upperLimit > yAxisMax) {\r\n yAxisMax = upperLimit + 1;\r\n }\r\n if (lowerLimit != null && lowerLimit > yAxisMax) {\r\n yAxisMin = lowerLimit - 1;\r\n }\r\n\r\n let points = [];\r\n xData.forEach((item, index) => {\r\n points.push([item, yData[index]]);\r\n });\r\n\r\n // 构造范德蒙德矩阵的函数\r\n function vandermondeMatrix(x, N) {\r\n const matrix = [];\r\n for (let i = 0; i < x.length; i++) {\r\n const row = [];\r\n for (let j = 0; j <= N; j++) {\r\n // 注意这里从0到N,包含N\r\n row.push(math.pow(x[i], j));\r\n }\r\n matrix.push(row);\r\n }\r\n return math.matrix(matrix);\r\n }\r\n\r\n // 构造原始的范德蒙德矩阵\r\n const vandermonde_matrix = vandermondeMatrix(xData, dxsJs); // 注意这里N=4,因为我们从0开始计数\r\n\r\n // 使用最小二乘法求解\r\n const A = vandermonde_matrix;\r\n const AT = math.transpose(A);\r\n const ATA = math.multiply(AT, A);\r\n const ATb = math.multiply(AT, math.matrix(yData));\r\n\r\n // 解线性方程组\r\n // const result = math.lusolve(ATA, ATb);\r\n // const coefficients = result.valueOf();\r\n\r\n let result: any = null,\r\n coefficients: any = [];\r\n try {\r\n result = math.lusolve(ATA, ATb);\r\n coefficients = result.valueOf();\r\n } catch (err) {\r\n for (let index = 0; index < xData.length; index++) {\r\n coefficients.push([0]);\r\n }\r\n console.log('无法解决该线性系统');\r\n }\r\n\r\n function funequation(x) {\r\n let y = 0;\r\n coefficients.forEach((item, index) => {\r\n //fx^0\r\n //fx^0+ax^1\r\n //fx^0+ax^1+bx^2\r\n //fx^0+ax^1+bx^2+cx^3\r\n //fx^0+x^1+x^2+x^3+x^4\r\n y += item * x ** index;\r\n });\r\n return y;\r\n }\r\n\r\n // console.log('计算公式:', coefficients);\r\n\r\n function lagrangeInterpolation(points, x) {\r\n let result = 0;\r\n for (let i = 0; i < points.length; i++) {\r\n let term = points[i][1];\r\n let xi = points[i][0];\r\n for (let j = 0; j < points.length; j++) {\r\n if (j !== i) {\r\n let xj = points[j][0];\r\n term *= (x - xj) / (xi - xj);\r\n }\r\n }\r\n result += term;\r\n }\r\n return result;\r\n }\r\n let arrX = [];\r\n let arrY = [];\r\n for (let i = xMin; i <= xMax; i += 0.01) {\r\n let temp = Number(EChartsUtilsComm.getRound(i, 0.01));\r\n //arrY.push(lagrangeInterpolation(points, temp));\r\n arrY.push(funequation(temp));\r\n arrX.push(temp);\r\n }\r\n let max = Math.max(...arrY);\r\n\r\n // 找到最大值的索引\r\n let maxIndex = arrY.findIndex((value) => value === max);\r\n\r\n // console.log('最大点数据:', arrX[maxIndex], max);\r\n\r\n let title = '', // config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n arrX.forEach((item, index) => {\r\n if (xData.includes(item)) {\r\n seriesData.push({ value: [item, arrY[index]] });\r\n } else {\r\n seriesData.push({\r\n value: [item, arrY[index]],\r\n symbol: 'none',\r\n });\r\n }\r\n });\r\n\r\n //计算两条线段是否有交点\r\n function ifHaveIntersectionPoint(y1, y2, y3, y4) {\r\n if ((y1 >= y3 && y2 <= y4) || (y1 <= y3 && y2 >= y4)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n //获取两点和香交线最接近的点\r\n function getIntersectionPoint(y1, y2, y) {\r\n if (Math.abs(y1 - y) > Math.abs(y2 - y)) {\r\n return 0;\r\n }\r\n return -1;\r\n }\r\n let upperIntersectionPoint = [],\r\n lowerIntersectionPoint = [];\r\n let upperIntersectionPointTrend = []; //上限交点趋势(向上相交(1) 还是向下相交(0))\r\n let lowerIntersectionPointTrend = []; //下限交点趋势\r\n arrX.forEach((item, index) => {\r\n if (index > 0) {\r\n //上限交点\r\n if (upperLimit != null) {\r\n if (ifHaveIntersectionPoint(arrY[index - 1], arrY[index], upperLimit, upperLimit)) {\r\n let index1 = getIntersectionPoint(arrY[index - 1], arrY[index], upperLimit);\r\n // console.log(arrX[index + index1], arrY[index + index1]);\r\n upperIntersectionPoint.push([arrX[index + index1], arrY[index + index1]]);\r\n if (arrY[index - 1] > arrY[index]) {\r\n //向下趋势\r\n upperIntersectionPointTrend.push(0);\r\n } else {\r\n upperIntersectionPointTrend.push(1);\r\n }\r\n }\r\n }\r\n //下限交点\r\n if (lowerLimit != null) {\r\n if (ifHaveIntersectionPoint(arrY[index - 1], arrY[index], lowerLimit, lowerLimit)) {\r\n let index1 = getIntersectionPoint(arrY[index - 1], arrY[index], lowerLimit);\r\n // console.log(arrX[index + index1], arrY[index + index1]);\r\n lowerIntersectionPoint.push([arrX[index + index1], arrY[index + index1]]);\r\n if (arrY[index - 1] > arrY[index]) {\r\n //向下趋势\r\n lowerIntersectionPointTrend.push(0);\r\n } else {\r\n lowerIntersectionPointTrend.push(1);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n let validX1 = xMin,\r\n validX2 = xMax;\r\n if (upperIntersectionPoint.length == 0 && lowerIntersectionPoint.length > 0) {\r\n //上限无交点,下限有交点\r\n if (lowerIntersectionPointTrend[0] == 0) {\r\n //下限向下相交\r\n validX1 = xMin;\r\n validX2 = lowerIntersectionPoint[0][0];\r\n } else {\r\n //下限向上相交\r\n validX1 = lowerIntersectionPoint[0][0];\r\n if (lowerIntersectionPoint.length == 1) {\r\n //只有一个交点\r\n validX2 = xMax;\r\n } else {\r\n validX2 = lowerIntersectionPoint[1][0];\r\n }\r\n }\r\n } else if (upperIntersectionPoint.length > 0 && lowerIntersectionPoint.length == 0) {\r\n //上限有交点,下限无交点\r\n if (upperIntersectionPointTrend[0] == 0) {\r\n //上限向下相交\r\n validX1 = upperIntersectionPoint[0][0];\r\n if (upperIntersectionPoint.length == 1) {\r\n //只有一个交点\r\n validX2 = xMax;\r\n } else {\r\n validX2 = upperIntersectionPoint[1][0];\r\n }\r\n } else {\r\n //上限向上相交\r\n validX1 = xMin;\r\n validX2 = upperIntersectionPoint[0][0];\r\n }\r\n } else if (upperIntersectionPoint.length > 0 && lowerIntersectionPoint.length > 0) {\r\n //上下限都有交点,情况太多,我们只取中间\r\n if (upperIntersectionPointTrend[0] == 0) {\r\n //上限向下相交\r\n validX1 = upperIntersectionPoint[0][0];\r\n validX2 = lowerIntersectionPoint[0][0];\r\n } else {\r\n //上限向上相交\r\n validX1 = lowerIntersectionPoint[0][0];\r\n validX2 = upperIntersectionPoint[0][0];\r\n }\r\n }\r\n\r\n // console.log('x范围:', validX1, validX2);\r\n //输出开始和结束范围\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlKs != null && chartExtJson.lqhhlKs != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlKs.row, chartExtJson.lqhhlKs.col, validX1);\r\n sheet.setValue(chartExtJson.lqhhlJs.row, chartExtJson.lqhhlJs.col, validX2);\r\n }\r\n }\r\n\r\n let lineData = [];\r\n let pointData = [];\r\n if (showLine) {\r\n lineData = [];\r\n pointData = [];\r\n }\r\n\r\n if (upperLimit != null) {\r\n lineData.push([\r\n {\r\n coord: [xAxisMin, upperLimit],\r\n lineStyle: {\r\n color: '#333', //上限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [xAxisMax, upperLimit],\r\n },\r\n ]);\r\n }\r\n\r\n if (lowerLimit != null) {\r\n lineData.push([\r\n {\r\n coord: [xAxisMin, lowerLimit],\r\n lineStyle: {\r\n color: '#333', //下限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [xAxisMax, lowerLimit],\r\n },\r\n ]);\r\n }\r\n\r\n //判断数据是否为/\r\n let yValIsAllNull = false;\r\n seriesData.forEach((item) => {\r\n yValIsAllNull = item.value.every((ele) => {\r\n return ele == 0;\r\n });\r\n });\r\n if (yValIsAllNull) {\r\n xAxisMin = null;\r\n xAxisMax = null;\r\n yAxisMin = null;\r\n yAxisMax = null;\r\n seriesData = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 10,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: !yValIsAllNull ? 16 : 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n //console.log(datas,\" datas\")\r\n return datas && datas.length > 0\r\n ? datas[0].seriesName + '(' + datas[0].value[0] + ')' + ':' + Number(EChartsUtilsComm.getRound(datas[0].value[1], 0.001))\r\n : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n max: xAxisMax,\r\n min: xAxisMin,\r\n data: xData,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n splitLine: { show: true },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n max: yAxisMax,\r\n min: yAxisMin,\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineJson[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineJson[0].lineColor,\r\n },\r\n data: seriesData,\r\n markPoint: {\r\n data: pointData,\r\n },\r\n markLine: {\r\n symbol: ['none', 'none'], //去掉箭头\r\n itemStyle: {\r\n lineStyle: {\r\n type: 'solid',\r\n color: '#333',\r\n width: 2,\r\n },\r\n },\r\n data: lineData,\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 沥青混合料-目标配合比设计-有效沥青饱和度\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart15: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineJson = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n let xDataSource = xDataArr[0], // [3.5, 4, 4.5, 5, 5.5],\r\n yDataSource = yDataArr[0]; // [40.1, 59.8, 66.8, 74.5, 78.2];\r\n\r\n //原始数据\r\n let dxsJs = chartExtJson != null ? chartExtJson.dxsJs : 5,\r\n xData = [],\r\n yData = [];\r\n\r\n //处理原始数据为空的值,不然参与mathjs计算会报错\r\n xDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n xData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n xData.push(item);\r\n }\r\n }\r\n });\r\n yDataSource.forEach((item, index) => {\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item)) {\r\n yData.push(item);\r\n } else {\r\n if (item == '/' || item == undefined || item == null || item == '') {\r\n item = 0;\r\n yData.push(item);\r\n }\r\n }\r\n });\r\n\r\n //y轴没有任何数据的时候,不参与绘制图表\r\n if (yData.length == 0) {\r\n return;\r\n }\r\n\r\n //检查x轴的数据有多少个0,大于1个的时候,就不绘制图形\r\n let zeroCount = 0;\r\n xData.forEach((item) => {\r\n if (item == 0) {\r\n zeroCount++;\r\n }\r\n });\r\n // if (zeroCount > 1) {\r\n // \treturn;\r\n // }\r\n\r\n if (dxsJs >= yData.length) {\r\n dxsJs = yData.length - 1;\r\n }\r\n\r\n let xMin = Math.min(...xData),\r\n xMax = Math.max(...xData),\r\n yMin = Math.min(...yData),\r\n yMax = Math.max(...yData),\r\n /*\r\n\t\t\txAxisMax = 5.5,\r\n xAxisMin = 3.5,\r\n yAxisMax = 80,\r\n yAxisMin = 30,\r\n\t\t\t*/\r\n xAxisMax = xMax,\r\n xAxisMin = xMin,\r\n yAxisMax = Math.ceil(yMax + 10),\r\n yAxisMin = Math.floor(yMin - 10),\r\n seriesData = [],\r\n upperLimit = 75, //上限\r\n lowerLimit = 60, //下限\r\n showLine = true; //是否显示辅助线\r\n\r\n //获取单元格中的上限和下限\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlSx != null && chartExtJson.lqhhlSx != undefined) {\r\n const curVal = sheet.getValue(chartExtJson.lqhhlSx.row, chartExtJson.lqhhlSx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curVal)) {\r\n upperLimit = curVal;\r\n }\r\n }\r\n if (chartExtJson.lqhhlXx != null && chartExtJson.lqhhlXx != undefined) {\r\n const curVal = sheet.getValue(chartExtJson.lqhhlXx.row, chartExtJson.lqhhlXx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curVal)) {\r\n lowerLimit = curVal;\r\n }\r\n }\r\n }\r\n\r\n if (upperLimit != null && upperLimit > yAxisMax) {\r\n yAxisMax = upperLimit + 10;\r\n }\r\n if (lowerLimit != null && lowerLimit > yAxisMax) {\r\n yAxisMin = lowerLimit - 10;\r\n }\r\n\r\n let points = [];\r\n xData.forEach((item, index) => {\r\n points.push([item, yData[index]]);\r\n });\r\n\r\n // 构造范德蒙德矩阵的函数\r\n function vandermondeMatrix(x, N) {\r\n const matrix = [];\r\n for (let i = 0; i < x.length; i++) {\r\n const row = [];\r\n for (let j = 0; j <= N; j++) {\r\n // 注意这里从0到N,包含N\r\n row.push(math.pow(x[i], j));\r\n }\r\n matrix.push(row);\r\n }\r\n return math.matrix(matrix);\r\n }\r\n\r\n // 构造原始的范德蒙德矩阵\r\n const vandermonde_matrix = vandermondeMatrix(xData, dxsJs); // 注意这里N=4,因为我们从0开始计数\r\n\r\n // 使用最小二乘法求解\r\n const A = vandermonde_matrix;\r\n const AT = math.transpose(A);\r\n const ATA = math.multiply(AT, A);\r\n const ATb = math.multiply(AT, math.matrix(yData));\r\n\r\n // 解线性方程组\r\n // const result = math.lusolve(ATA, ATb);\r\n // const coefficients = result.valueOf();\r\n\r\n let result: any = null,\r\n coefficients: any = [];\r\n try {\r\n result = math.lusolve(ATA, ATb);\r\n coefficients = result.valueOf();\r\n } catch (err) {\r\n for (let index = 0; index < xData.length; index++) {\r\n coefficients.push([0]);\r\n }\r\n console.log('无法解决该线性系统');\r\n }\r\n\r\n function funequation(x) {\r\n let y = 0;\r\n coefficients.forEach((item, index) => {\r\n //fx^0\r\n //fx^0+ax^1\r\n //fx^0+ax^1+bx^2\r\n //fx^0+ax^1+bx^2+cx^3\r\n //fx^0+x^1+x^2+x^3+x^4\r\n y += item * x ** index;\r\n });\r\n return y;\r\n }\r\n\r\n // console.log('计算公式:', coefficients);\r\n\r\n function lagrangeInterpolation(points, x) {\r\n let result = 0;\r\n for (let i = 0; i < points.length; i++) {\r\n let term = points[i][1];\r\n let xi = points[i][0];\r\n for (let j = 0; j < points.length; j++) {\r\n if (j !== i) {\r\n let xj = points[j][0];\r\n term *= (x - xj) / (xi - xj);\r\n }\r\n }\r\n result += term;\r\n }\r\n return result;\r\n }\r\n let arrX = [];\r\n let arrY = [];\r\n for (let i = xMin; i <= xMax; i += 0.01) {\r\n let temp = Number(EChartsUtilsComm.getRound(i, 0.01));\r\n //arrY.push(lagrangeInterpolation(points, temp));\r\n arrY.push(funequation(temp));\r\n arrX.push(temp);\r\n }\r\n\r\n let title = '', // config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //计算两条线段是否有交点\r\n function ifHaveIntersectionPoint(y1, y2, y3, y4) {\r\n if ((y1 >= y3 && y2 <= y4) || (y1 <= y3 && y2 >= y4)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n //获取两点和香交线最接近的点\r\n function getIntersectionPoint(y1, y2, y) {\r\n if (Math.abs(y1 - y) > Math.abs(y2 - y)) {\r\n return 0;\r\n }\r\n return -1;\r\n }\r\n let upperIntersectionPoint = [],\r\n lowerIntersectionPoint = [];\r\n let upperIntersectionPointTrend = []; //上限交点趋势(向上相交(1) 还是向下相交(0))\r\n let lowerIntersectionPointTrend = []; //下限交点趋势\r\n arrX.forEach((item, index) => {\r\n if (xData.includes(item)) {\r\n seriesData.push({ value: [item, arrY[index]] });\r\n } else {\r\n seriesData.push({\r\n value: [item, arrY[index]],\r\n symbol: 'none',\r\n });\r\n }\r\n if (index > 0) {\r\n //上限交点\r\n if (upperLimit != null) {\r\n if (ifHaveIntersectionPoint(arrY[index - 1], arrY[index], upperLimit, upperLimit)) {\r\n let index1 = getIntersectionPoint(arrY[index - 1], arrY[index], upperLimit);\r\n // console.log(arrX[index + index1], arrY[index + index1]);\r\n upperIntersectionPoint.push([arrX[index + index1], arrY[index + index1]]);\r\n if (arrY[index - 1] > arrY[index]) {\r\n //向下趋势\r\n upperIntersectionPointTrend.push(0);\r\n } else {\r\n upperIntersectionPointTrend.push(1);\r\n }\r\n }\r\n }\r\n //下限交点\r\n if (upperLimit != null) {\r\n if (ifHaveIntersectionPoint(arrY[index - 1], arrY[index], lowerLimit, lowerLimit)) {\r\n let index1 = getIntersectionPoint(arrY[index - 1], arrY[index], lowerLimit);\r\n // console.log(arrX[index + index1], arrY[index + index1]);\r\n lowerIntersectionPoint.push([arrX[index + index1], arrY[index + index1]]);\r\n if (arrY[index - 1] > arrY[index]) {\r\n //向下趋势\r\n lowerIntersectionPointTrend.push(0);\r\n } else {\r\n lowerIntersectionPointTrend.push(1);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n let validX1 = xMin,\r\n validX2 = xMax;\r\n if (upperIntersectionPoint.length == 0 && lowerIntersectionPoint.length > 0) {\r\n //上限无交点,下限有交点\r\n if (lowerIntersectionPointTrend[0] == 0) {\r\n //下限向下相交\r\n validX1 = xMin;\r\n validX2 = lowerIntersectionPoint[0][0];\r\n } else {\r\n //下限向上相交\r\n validX1 = lowerIntersectionPoint[0][0];\r\n if (lowerIntersectionPoint.length == 1) {\r\n //只有一个交点\r\n validX2 = xMax;\r\n } else {\r\n validX2 = lowerIntersectionPoint[1][0];\r\n }\r\n }\r\n } else if (upperIntersectionPoint.length > 0 && lowerIntersectionPoint.length == 0) {\r\n //上限有交点,下限无交点\r\n if (upperIntersectionPointTrend[0] == 0) {\r\n //上限向下相交\r\n validX1 = upperIntersectionPoint[0][0];\r\n if (upperIntersectionPoint.length == 1) {\r\n //只有一个交点\r\n validX2 = xMax;\r\n } else {\r\n validX2 = upperIntersectionPoint[1][0];\r\n }\r\n } else {\r\n //上限向上相交\r\n validX1 = xMin;\r\n validX2 = upperIntersectionPoint[0][0];\r\n }\r\n } else if (upperIntersectionPoint.length > 0 && lowerIntersectionPoint.length > 0) {\r\n //上下限都有交点,情况太多,我们只取中间\r\n if (upperIntersectionPointTrend[0] == 0) {\r\n //上限向下相交\r\n validX1 = upperIntersectionPoint[0][0];\r\n validX2 = lowerIntersectionPoint[0][0];\r\n } else {\r\n //上限向上相交\r\n validX1 = lowerIntersectionPoint[0][0];\r\n validX2 = upperIntersectionPoint[0][0];\r\n }\r\n }\r\n\r\n // console.log('x范围:', validX1, validX2);\r\n //输出开始和结束范围\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlKs != null && chartExtJson.lqhhlKs != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlKs.row, chartExtJson.lqhhlKs.col, validX1);\r\n sheet.setValue(chartExtJson.lqhhlJs.row, chartExtJson.lqhhlJs.col, validX2);\r\n }\r\n }\r\n\r\n let lineData = [];\r\n let pointData = [];\r\n if (showLine) {\r\n if (upperIntersectionPoint.length > 0) {\r\n upperIntersectionPoint.forEach((item, index) => {\r\n lineData.push([\r\n {\r\n coord: [item[0], yAxisMin],\r\n lineStyle: {\r\n color: '#333', //上限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [item[0], upperLimit],\r\n },\r\n ]);\r\n });\r\n }\r\n if (lowerIntersectionPoint.length > 0) {\r\n lowerIntersectionPoint.forEach((item, index) => {\r\n lineData.push([\r\n {\r\n coord: [item[0], yAxisMin],\r\n lineStyle: {\r\n color: '#333', //下限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [item[0], lowerLimit],\r\n },\r\n ]);\r\n });\r\n }\r\n //上下线交点分别只有一个才求平均值\r\n if (upperIntersectionPoint.length == 1 && lowerIntersectionPoint.length == 1) {\r\n const avg = ((upperIntersectionPoint[0][0] + lowerIntersectionPoint[0][0]) / 2).toFixed(2);\r\n const avgXIndex = arrX.findIndex((n) => n == avg);\r\n // console.log('输出:', avg, avgXIndex);\r\n //输出\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlSc1 != null && chartExtJson.lqhhlSc1 != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlSc1.row, chartExtJson.lqhhlSc1.col, avg);\r\n }\r\n }\r\n lineData.push([\r\n {\r\n coord: [avg, yAxisMin],\r\n lineStyle: {\r\n color: '#333', //下限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [avg, arrY[avgXIndex]],\r\n },\r\n ]);\r\n pointData.push({\r\n xAxis: avg,\r\n yAxis: yAxisMin,\r\n symbolOffset: [0, 40],\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n return 'a4';\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n });\r\n }\r\n }\r\n\r\n if (upperLimit != null) {\r\n lineData.push([\r\n {\r\n coord: [xAxisMin, upperLimit],\r\n lineStyle: {\r\n color: '#333', //上限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [xAxisMax, upperLimit],\r\n },\r\n ]);\r\n }\r\n\r\n if (lowerLimit != null) {\r\n lineData.push([\r\n {\r\n coord: [xAxisMin, lowerLimit],\r\n lineStyle: {\r\n color: '#333', //下限\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: [xAxisMax, lowerLimit],\r\n },\r\n ]);\r\n }\r\n\r\n //判断数据是否为/\r\n let yValIsAllNull = false;\r\n seriesData.forEach((item) => {\r\n yValIsAllNull = item.value.every((ele) => {\r\n return ele == 0;\r\n });\r\n });\r\n if (yValIsAllNull) {\r\n xAxisMin = null;\r\n xAxisMax = null;\r\n yAxisMin = null;\r\n yAxisMax = null;\r\n seriesData = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 10,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: !yValIsAllNull ? 16 : 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n //console.log(datas,\" datas\")\r\n return datas && datas.length > 0\r\n ? datas[0].seriesName + '(' + datas[0].value[0] + ')' + ':' + Number(EChartsUtilsComm.getRound(datas[0].value[1], 0.001))\r\n : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n max: xAxisMax,\r\n min: xAxisMin,\r\n data: xData,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n splitLine: { show: true },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n max: yAxisMax,\r\n min: yAxisMin,\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineJson[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineJson[0].lineColor,\r\n },\r\n data: seriesData,\r\n markPoint: {\r\n data: pointData,\r\n },\r\n markLine: {\r\n symbol: ['none', 'none'], //去掉箭头\r\n itemStyle: {\r\n lineStyle: {\r\n type: 'solid',\r\n color: '#333',\r\n width: 2,\r\n },\r\n },\r\n data: lineData,\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 沥青混合料-目标配合比设计-汇总\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart16: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineJson = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n // let lines = [\r\n // \t[3.5, 5.5],\r\n // \t[3.5, 5.5],\r\n // \t[4.21, 5.27],\r\n // \t[3.5, 5.5],\r\n // \t[3.5, 5.5],\r\n // \t[4.01, 5.03],\r\n // ],\r\n\r\n //原始数据\r\n let lines = [\r\n [\r\n sheet.getValue(chartExtJson.lqhhlHz[0].row, chartExtJson.lqhhlHz[0].col),\r\n sheet.getValue(chartExtJson.lqhhlHz[1].row, chartExtJson.lqhhlHz[1].col),\r\n ],\r\n [\r\n sheet.getValue(chartExtJson.lqhhlHz[2].row, chartExtJson.lqhhlHz[2].col),\r\n sheet.getValue(chartExtJson.lqhhlHz[3].row, chartExtJson.lqhhlHz[3].col),\r\n ],\r\n [\r\n sheet.getValue(chartExtJson.lqhhlHz[4].row, chartExtJson.lqhhlHz[4].col),\r\n sheet.getValue(chartExtJson.lqhhlHz[5].row, chartExtJson.lqhhlHz[5].col),\r\n ],\r\n [\r\n sheet.getValue(chartExtJson.lqhhlHz[6].row, chartExtJson.lqhhlHz[6].col),\r\n sheet.getValue(chartExtJson.lqhhlHz[7].row, chartExtJson.lqhhlHz[7].col),\r\n ],\r\n [\r\n sheet.getValue(chartExtJson.lqhhlHz[8].row, chartExtJson.lqhhlHz[8].col),\r\n sheet.getValue(chartExtJson.lqhhlHz[9].row, chartExtJson.lqhhlHz[9].col),\r\n ],\r\n [\r\n sheet.getValue(chartExtJson.lqhhlHz[10].row, chartExtJson.lqhhlHz[10].col),\r\n sheet.getValue(chartExtJson.lqhhlHz[11].row, chartExtJson.lqhhlHz[11].col),\r\n ],\r\n ],\r\n xData = xDataArr[0], // [3.5, 4, 4.5, 5, 5.5],\r\n xAxisMax = 5.5,\r\n xAxisMin = 3.5,\r\n yAxisMin = 0,\r\n yAxisMax = 6,\r\n yData = [0, 1, 2, 3, 4, 5, 6],\r\n yAxisData = ['VFA', 'VMA', '流值', '稳定度', '空隙率', '密度'],\r\n seriesData = [],\r\n showLine = true; //是否显示辅助线\r\n\r\n const title = 'OAC',\r\n xName = '油石比(%)',\r\n yName = 'VFA(%)',\r\n legendName = '图例1';\r\n let lineData = [];\r\n let pointData = [];\r\n let xMin = Math.max(...lines.map((item) => item[0]));\r\n let xMax = Math.min(...lines.map((item) => item[1]));\r\n\r\n lines.forEach((item, index) => {\r\n lineData.push([\r\n {\r\n coord: [item[0], lines.length - index],\r\n lineStyle: {\r\n color: lineJson[0].lineColor,\r\n type: 'solid',\r\n width: 2,\r\n },\r\n },\r\n {\r\n coord: [item[1], lines.length - index],\r\n },\r\n ]);\r\n });\r\n if (showLine && xMin <= xMax) {\r\n //最小\r\n lineData.push([\r\n {\r\n coord: [xMin, 0],\r\n lineStyle: {\r\n color: '#333',\r\n type: 'dashed',\r\n width: 2,\r\n },\r\n },\r\n {\r\n coord: [xMin, 6],\r\n },\r\n ]);\r\n //最大\r\n lineData.push([\r\n {\r\n coord: [xMax, 0],\r\n lineStyle: {\r\n color: '#333',\r\n type: 'dashed',\r\n width: 2,\r\n },\r\n },\r\n {\r\n coord: [xMax, 6],\r\n },\r\n ]);\r\n pointData = [\r\n {\r\n xAxis: xMin,\r\n yAxis: 0,\r\n symbolOffset: [0, 40],\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n return 'OACmin';\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n },\r\n {\r\n xAxis: xMax,\r\n yAxis: 0,\r\n symbolOffset: [0, 40],\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n return 'OACmax';\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n },\r\n ];\r\n }\r\n\r\n if (xMin <= xMax) {\r\n //平均值\r\n const avg = (xMin + xMax) / 2;\r\n lineData.push([\r\n {\r\n coord: [avg, 0],\r\n lineStyle: {\r\n color: '#333',\r\n type: 'dashed',\r\n width: 2,\r\n },\r\n },\r\n {\r\n coord: [avg, 6],\r\n },\r\n ]);\r\n pointData.push({\r\n xAxis: avg,\r\n yAxis: 0,\r\n symbolOffset: [0, 40],\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n return 'OAC2';\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n });\r\n }\r\n\r\n if (isNaN(xMin)) {\r\n xMin = 0;\r\n }\r\n if (isNaN(xMax)) {\r\n xMax = 0;\r\n }\r\n // console.log('输出:', xMin, xMax);\r\n //输出\r\n if (chartExtJson != null) {\r\n if (chartExtJson.lqhhlSc1 != null && chartExtJson.lqhhlSc1 != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlSc1.row, chartExtJson.lqhhlSc1.col, xMin);\r\n }\r\n if (chartExtJson.lqhhlSc2 != null && chartExtJson.lqhhlSc2 != undefined) {\r\n sheet.setValue(chartExtJson.lqhhlSc2.row, chartExtJson.lqhhlSc2.col, xMax);\r\n }\r\n }\r\n\r\n //判断数据是否为/\r\n let yValIsAllNull = false;\r\n lines.forEach((item) => {\r\n yValIsAllNull = item.every((ele) => {\r\n return ele == '/';\r\n });\r\n });\r\n if (yValIsAllNull) {\r\n xAxisMin = null;\r\n xAxisMax = null;\r\n yAxisMin = null;\r\n yAxisMax = null;\r\n seriesData = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 25,\r\n left: 10,\r\n right: 10,\r\n bottom: !yValIsAllNull ? 16 : 20,\r\n containLabel: true,\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n max: xAxisMax,\r\n min: xAxisMin,\r\n data: xData,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n splitLine: { show: true },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n max: yAxisMax,\r\n min: yAxisMin,\r\n axisLabel: {\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n if (data == 0) {\r\n return '';\r\n } else {\r\n return yAxisData[data - 1];\r\n }\r\n },\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n // data: seriesData,\r\n markPoint: {\r\n data: pointData,\r\n },\r\n markLine: {\r\n symbol: ['none', 'none'], //去掉箭头\r\n data: lineData,\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 击实\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart30: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n //设置是否选择校正jsIsJz的默认值\r\n if (chartExtJson != null && (chartExtJson.jsIsJz == null || chartExtJson.jsIsJz == undefined)) {\r\n chartExtJson.jsIsJz = true;\r\n }\r\n // console.log(config);\r\n\r\n let isTwoLine = xDataArr.length == 2;\r\n\r\n let xDataSource1 = xDataArr[0], // [1.6, 2.4, 3.5, 4.6, 5.3],\r\n xDataSource2 = isTwoLine ? xDataArr[1] : [], // [1.5, 2.4, 3.6, 4.3, 5.4],\r\n yDataSource1 = yDataArr[0], // [2.25, 2.29, 2.34, 2.29, 2.23],\r\n yDataSource2 = isTwoLine ? yDataArr[1] : []; // [2.27, 2.32, 2.36, 2.33, 2.26];\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n const lineFunc = (xDataSource, yDataSource, isShowMarkPoint, isShowMarkLine, isTwoLineData) => {\r\n //原始数据\r\n let dxsJs = chartExtJson != null ? chartExtJson.dxsJs : 5,\r\n xData = [],\r\n yData = [],\r\n seriesData = []; //处理原始数据为空的值,不然参与mathjs计算会报错\r\n\r\n //处理原始数据为空的值,不然参与mathjs计算会报错\r\n xDataSource.forEach((item, index) => {\r\n if (\r\n /^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(item) &&\r\n item != 0 &&\r\n /^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(yDataSource[index]) &&\r\n yDataSource[index] != 0\r\n ) {\r\n xData.push(item);\r\n yData.push(yDataSource[index]);\r\n }\r\n });\r\n\r\n //y轴没有任何数据的时候,不参与绘制图表\r\n if (yData.length == 0) {\r\n return;\r\n }\r\n\r\n if (dxsJs >= yData.length) {\r\n dxsJs = yData.length - 1;\r\n }\r\n\r\n let xMin = Math.min(...xData),\r\n xMax = Math.max(...xData),\r\n yMin = Math.min(...yData),\r\n yMax = Math.max(...yData),\r\n xAxisMax = Math.ceil(xMax + 0.1),\r\n xAxisMin = Math.trunc(xMin - 0.1),\r\n yAxisMax = Number(EChartsUtilsComm.getRound(yMax + 0.02, 0.01)),\r\n yAxisMin = Number(EChartsUtilsComm.getRound(yMin - 0.02, 0.01));\r\n\r\n //如果界面设置了校正最佳含水率和最大干密度,则显示界面中的顶点坐标(此时就不显示辅助线了)\r\n let cellValJzZjhsl, cellValJzZdgmd;\r\n if (chartExtJson != null && chartExtJson.jsIsJz) {\r\n if (chartExtJson.jsZjhslJz != null && chartExtJson.jsZjhslJz != undefined) {\r\n cellValJzZjhsl = sheet.getValue(chartExtJson.jsZjhslJz.row, chartExtJson.jsZjhslJz.col);\r\n }\r\n if (chartExtJson.jsZdgmdJz != null && chartExtJson.jsZdgmdJz != undefined) {\r\n cellValJzZdgmd = sheet.getValue(chartExtJson.jsZdgmdJz.row, chartExtJson.jsZdgmdJz.col);\r\n }\r\n\r\n //如果界面输入的最大干密度大于了y轴最大值,则需要重新设置y轴的最大值\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(cellValJzZdgmd) && cellValJzZdgmd > yAxisMax) {\r\n yAxisMax = Number(EChartsUtilsComm.getRound(cellValJzZdgmd + 0.02, 0.01));\r\n }\r\n }\r\n\r\n let points = [];\r\n xData.forEach((item, index) => {\r\n points.push([item, yData[index]]);\r\n });\r\n\r\n // 构造范德蒙德矩阵的函数\r\n function vandermondeMatrix(x, N) {\r\n const matrix = [];\r\n for (let i = 0; i < x.length; i++) {\r\n const row = [];\r\n for (let j = 0; j <= N; j++) {\r\n // 注意这里从0到N,包含N\r\n row.push(math.pow(x[i], j));\r\n }\r\n matrix.push(row);\r\n }\r\n return math.matrix(matrix);\r\n }\r\n\r\n // 构造原始的范德蒙德矩阵\r\n const vandermonde_matrix = vandermondeMatrix(xData, dxsJs); // 注意这里N=4,因为我们从0开始计数\r\n\r\n // 使用最小二乘法求解\r\n const A = vandermonde_matrix;\r\n const AT = math.transpose(A);\r\n const ATA = math.multiply(AT, A);\r\n\r\n const ATb = math.multiply(AT, math.matrix(yData));\r\n\r\n // 解线性方程组\r\n let result: any = null,\r\n coefficients: any = [];\r\n try {\r\n result = math.lusolve(ATA, ATb);\r\n coefficients = result.valueOf();\r\n } catch (err) {\r\n for (let index = 0; index < xData.length; index++) {\r\n coefficients.push([0]);\r\n }\r\n // console.log('无法解决该线性系统');\r\n }\r\n // const result = math.lusolve(ATA, ATb);\r\n // const coefficients = result.valueOf();\r\n\r\n function funequation(x) {\r\n let y = 0;\r\n coefficients.forEach((item, index) => {\r\n //fx^0\r\n //fx^0+ax^1\r\n //fx^0+ax^1+bx^2\r\n //fx^0+ax^1+bx^2+cx^3\r\n //fx^0+x^1+x^2+x^3+x^4\r\n y += item * x ** index;\r\n });\r\n return y;\r\n }\r\n\r\n // console.log('计算公式:', coefficients);\r\n\r\n function lagrangeInterpolation(points, x) {\r\n let result = 0;\r\n for (let i = 0; i < points.length; i++) {\r\n let term = points[i][1];\r\n let xi = points[i][0];\r\n for (let j = 0; j < points.length; j++) {\r\n if (j !== i) {\r\n let xj = points[j][0];\r\n term *= (x - xj) / (xi - xj);\r\n }\r\n }\r\n result += term;\r\n }\r\n return result;\r\n }\r\n // x=[3.5, 4, 4.5, 5, 5.5,6 ],y= [2.262, 2.321, 2.319, 2.292, 2.285, 2.28]\r\n\r\n let arrX = [];\r\n let arrY = [];\r\n for (let i = xMin; i <= xMax; i += 0.01) {\r\n let temp = Number(EChartsUtilsComm.getRound(i, 0.01));\r\n //重新设置i,防止i丢失精度\r\n i = Number(temp);\r\n //arrY.push(lagrangeInterpolation(points, temp));\r\n arrY.push(funequation(temp));\r\n arrX.push(temp);\r\n }\r\n let max = Math.max(...arrY);\r\n\r\n // 找到最大值的索引\r\n let maxIndex = arrY.findIndex((value) => value === max);\r\n\r\n // console.log('最大点数据:', arrX[maxIndex], max);\r\n // console.log(chartExtJson);\r\n\r\n //默认输出精度\r\n let outJdZjhsl = 0.01,\r\n outJdZdgmd = 0.001;\r\n\r\n //顶点数据\r\n let outValZjhsl = 0,\r\n outValZdgmd = 0;\r\n\r\n //设置Sheet单元格的值(最佳含水率和最大干密度)\r\n if (chartExtJson != null) {\r\n // console.log(4444, chartExtJson.jsZjhsl.row, chartExtJson.jsZjhsl.col, arrX[maxIndex]);\r\n\r\n if (chartExtJson.jsZjhslJd != null && chartExtJson.jsZjhslJd != undefined) {\r\n outJdZjhsl = chartExtJson.jsZjhslJd;\r\n }\r\n if (chartExtJson.jsZdgmdJd != null && chartExtJson.jsZdgmdJd != undefined) {\r\n outJdZdgmd = chartExtJson.jsZdgmdJd;\r\n }\r\n\r\n if (arrX[maxIndex] == 0 && max == 0) {\r\n sheet.setValue(chartExtJson.jsZjhsl.row, chartExtJson.jsZjhsl.col, '/');\r\n sheet.setValue(chartExtJson.jsZdgmd.row, chartExtJson.jsZdgmd.col, '/');\r\n } else {\r\n outValZjhsl = EChartsUtilsComm.getRound(arrX[maxIndex], outJdZjhsl);\r\n outValZdgmd = EChartsUtilsComm.getRound(max, outJdZdgmd);\r\n\r\n sheet.setValue(chartExtJson.jsZjhsl.row, chartExtJson.jsZjhsl.col, outValZjhsl);\r\n sheet.setValue(chartExtJson.jsZdgmd.row, chartExtJson.jsZdgmd.col, outValZdgmd);\r\n }\r\n }\r\n\r\n arrX.forEach((item, index) => {\r\n if (xData.includes(item)) {\r\n seriesData.push({ value: [item, arrY[index]] });\r\n } else {\r\n seriesData.push({\r\n value: [item, arrY[index]],\r\n symbol: 'none',\r\n });\r\n }\r\n });\r\n\r\n //xData.forEach((item, index) => {\r\n //seriesData.push([item, yData[index]]);\r\n //});\r\n\r\n //计算峰值----目前没有公式 值写死的\r\n const peakvalue = [arrX[maxIndex], Number(EChartsUtilsComm.getRound(max, outJdZdgmd))],\r\n coordX = [peakvalue[0], yAxisMin],\r\n coordY = [xAxisMin, peakvalue[1]];\r\n\r\n let markPointObj = {\r\n data: [\r\n {\r\n xAxis: EChartsUtilsComm.getRound(peakvalue[0], outJdZjhsl),\r\n yAxis: EChartsUtilsComm.getRound(peakvalue[1], outJdZdgmd),\r\n symbolOffset: [0, 15],\r\n symbol: 'circle',\r\n symbolSize: 6,\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n // 自定义标签内容\r\n if (Number(data.data.xAxis) == 0 && Number(data.data.yAxis) == 0) {\r\n return '';\r\n } else {\r\n return '( ' + data.data.xAxis + ',' + data.data.yAxis + ')';\r\n }\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n },\r\n ],\r\n },\r\n markLineObj = {\r\n symbol: ['none', 'none'], //去掉箭头\r\n itemStyle: {\r\n lineStyle: {\r\n type: 'solid',\r\n color: '#333',\r\n width: 2,\r\n },\r\n },\r\n data: [\r\n [\r\n {\r\n coord: coordX,\r\n lineStyle: {\r\n color: '#333', //X轴\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: peakvalue,\r\n },\r\n ],\r\n [\r\n {\r\n coord: coordY,\r\n lineStyle: {\r\n color: '#333', //y轴\r\n type: 'dashed',\r\n },\r\n },\r\n {\r\n coord: peakvalue,\r\n },\r\n ],\r\n ],\r\n };\r\n\r\n //如果界面设置了校正最佳含水率和最大干密度,则显示界面中的顶点坐标(此时就不显示辅助线了)\r\n if (chartExtJson.jsIsJz && /^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(cellValJzZjhsl) && /^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(cellValJzZdgmd)) {\r\n markLineObj = null;\r\n markPointObj.data[0].label = null;\r\n markPointObj.data[0].symbolOffset = null;\r\n markPointObj.data[0].itemStyle.color = '#F56C6C';\r\n markPointObj.data[0].xAxis = cellValJzZjhsl;\r\n markPointObj.data[0].yAxis = cellValJzZdgmd;\r\n markLineObj = null;\r\n }\r\n\r\n let seriesDataObj = {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[isTwoLineData ? 1 : 0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n type: isTwoLineData ? 'dotted' : 'solid',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[isTwoLineData ? 1 : 0].lineColor,\r\n },\r\n data: seriesData,\r\n markPoint: isShowMarkPoint ? markPointObj : null,\r\n markLine: isShowMarkLine ? markLineObj : null,\r\n };\r\n\r\n return {\r\n xAxisMin: xAxisMin,\r\n xAxisMax: xAxisMax,\r\n yAxisMin: yAxisMin,\r\n yAxisMax: yAxisMax,\r\n xData: xData,\r\n seriesDataObj: seriesDataObj,\r\n maxPointData: [arrX[maxIndex], max],\r\n };\r\n };\r\n\r\n let xAxisMin = 0,\r\n xAxisMax = 0,\r\n yAxisMin = 0,\r\n yAxisMax = 0,\r\n xData = [],\r\n seriesData = [],\r\n maxPointDataX = 0,\r\n maxPointDataY = 0;\r\n\r\n let lineObj1 = lineFunc(xDataSource1, yDataSource1, !isTwoLine, !isTwoLine, false),\r\n lineObj2;\r\n if (isTwoLine) {\r\n lineObj2 = lineFunc(xDataSource2, yDataSource2, false, false, true);\r\n }\r\n\r\n //此处的作用是,有可能x和y轴的数据都为空,造成lineObj1为undefined,避免报错\r\n if (lineObj1 == undefined || lineObj1 == null) {\r\n return;\r\n }\r\n\r\n //一条线的时候\r\n if (!isTwoLine) {\r\n xAxisMin = lineObj1.xAxisMin;\r\n xAxisMax = lineObj1.xAxisMax;\r\n yAxisMin = lineObj1.yAxisMin;\r\n yAxisMax = lineObj1.yAxisMax;\r\n xData = lineObj1.xData;\r\n seriesData.push(lineObj1.seriesDataObj);\r\n }\r\n //2条线的时候\r\n else {\r\n if (lineObj2 == undefined || lineObj2 == null) {\r\n return;\r\n }\r\n\r\n xAxisMax = lineObj1.xAxisMax;\r\n if (lineObj2.xAxisMax > xAxisMax) {\r\n xAxisMax = lineObj2.xAxisMax;\r\n }\r\n xAxisMin = lineObj1.xAxisMin;\r\n if (lineObj2.xAxisMin < xAxisMin) {\r\n xAxisMin = lineObj2.xAxisMin;\r\n }\r\n yAxisMax = lineObj1.yAxisMax;\r\n if (lineObj2.yAxisMax > yAxisMax) {\r\n yAxisMax = lineObj2.yAxisMax;\r\n }\r\n yAxisMin = lineObj1.yAxisMin;\r\n if (lineObj2.yAxisMin < yAxisMin) {\r\n yAxisMin = lineObj2.yAxisMin;\r\n }\r\n\r\n lineObj1.xData.forEach((item) => {\r\n xData.push(item);\r\n });\r\n lineObj2.xData.forEach((item) => {\r\n xData.push(item);\r\n });\r\n\r\n seriesData.push(lineObj1.seriesDataObj);\r\n seriesData.push(lineObj2.seriesDataObj);\r\n\r\n maxPointDataX = (lineObj1.maxPointData[0] + lineObj2.maxPointData[0]) / 2;\r\n maxPointDataY = (lineObj1.maxPointData[1] + lineObj2.maxPointData[1]) / 2;\r\n\r\n // console.log(\r\n // \t\"两条线最大点的平均值:\",\r\n // \tmaxPointDataX,\r\n // \tmaxPointDataY\r\n // );\r\n\r\n //默认输出精度\r\n let outJdZjhsl = 0.01,\r\n outJdZdgmd = 0.001;\r\n\r\n //顶点数据\r\n let outValZjhsl = 0,\r\n outValZdgmd = 0;\r\n\r\n //设置Sheet单元格的值(最佳含水率和最大干密度)\r\n if (chartExtJson != null) {\r\n // console.log(4444, chartExtJson.jsZjhsl.row, chartExtJson.jsZjhsl.col, arrX[maxIndex]);\r\n\r\n if (chartExtJson.jsZjhslJd != null && chartExtJson.jsZjhslJd != undefined) {\r\n outJdZjhsl = chartExtJson.jsZjhslJd;\r\n }\r\n if (chartExtJson.jsZdgmdJd != null && chartExtJson.jsZdgmdJd != undefined) {\r\n outJdZdgmd = chartExtJson.jsZdgmdJd;\r\n }\r\n\r\n if (maxPointDataX == 0 && maxPointDataY == 0) {\r\n sheet.setValue(chartExtJson.jsZjhsl.row, chartExtJson.jsZjhsl.col, '/');\r\n sheet.setValue(chartExtJson.jsZdgmd.row, chartExtJson.jsZdgmd.col, '/');\r\n } else {\r\n outValZjhsl = EChartsUtilsComm.getRound(maxPointDataX, outJdZjhsl);\r\n outValZdgmd = EChartsUtilsComm.getRound(maxPointDataY, outJdZdgmd);\r\n\r\n sheet.setValue(chartExtJson.jsZjhsl.row, chartExtJson.jsZjhsl.col, outValZjhsl);\r\n sheet.setValue(chartExtJson.jsZdgmd.row, chartExtJson.jsZdgmd.col, outValZdgmd);\r\n }\r\n }\r\n }\r\n\r\n //判断数据是否为/,‘’,null,undefined\r\n let yValIsAllNull = false;\r\n seriesData.forEach((item) => {\r\n yValIsAllNull = item.data[0].value.every((ele) => {\r\n return ele == 0;\r\n });\r\n });\r\n if (yValIsAllNull) {\r\n xAxisMin = null;\r\n xAxisMax = null;\r\n yAxisMin = null;\r\n yAxisMax = null;\r\n seriesData = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 25,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n //console.log(datas,\" datas\")\r\n return datas && datas.length > 0\r\n ? datas[0].seriesName + '(' + datas[0].value[0] + ')' + ':' + Number(EChartsUtilsComm.getRound(datas[0].value[1], 0.001))\r\n : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n max: xAxisMax,\r\n min: xAxisMin,\r\n data: xData,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n splitLine: { show: true },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n max: yAxisMax,\r\n min: yAxisMin,\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 40 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: seriesData,\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 筛分\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart50: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = '', //config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName;\r\n\r\n // x轴原始数据、y轴原始数据、y轴原始数据(上限)、y轴原始数据(下限)\r\n const xDataSourceOld = xDataArr[0],\r\n yDataSourceOld = yDataArr[0],\r\n yDataSourceSxOld = yDataArr[1],\r\n yDataSourceXxOld = yDataArr[2];\r\n const allData: any[] = [];\r\n xDataSourceOld.forEach((item, index) => {\r\n allData.push({\r\n x: item,\r\n y: yDataSourceOld[index],\r\n ySx: yDataSourceSxOld[index],\r\n yXx: yDataSourceXxOld[index],\r\n });\r\n });\r\n allData.sort(function (a, b) {\r\n return a.x - b.x;\r\n });\r\n\r\n const xDataSource: any[] = [],\r\n yDataSource: any[] = [],\r\n yDataSourceSx: any[] = [],\r\n yDataSourceXx: any[] = [];\r\n\r\n // 记录上限或下限中值为null的个数\r\n let sxValNullCount = 0;\r\n yDataSourceSxOld.forEach((item, index) => {\r\n if (item == null || item == '/') {\r\n sxValNullCount++;\r\n }\r\n });\r\n\r\n // 如果上限或下限值中的所有值都为null,则只展示筛分曲线的折线\r\n if (sxValNullCount == yDataSourceSxOld.length) {\r\n allData.forEach((item, index) => {\r\n xDataSource.push(item.x);\r\n yDataSource.push(item.y);\r\n yDataSourceSx.push(item.ySx);\r\n yDataSourceXx.push(item.yXx);\r\n });\r\n } else {\r\n // 只获取上限或下限中值不为null的点\r\n allData.forEach((item, index) => {\r\n if (item.ySx != null && item.ySx != '/' && item.yXx != null && item.yXx != '/') {\r\n xDataSource.push(item.x);\r\n yDataSource.push(item.y);\r\n yDataSourceSx.push(item.ySx);\r\n yDataSourceXx.push(item.yXx);\r\n }\r\n });\r\n }\r\n\r\n // x轴需要的数据(x轴原始数据的0.45次方,并修约0.01)、x轴需要的上限数据(x轴原始数据的0.45次方,并修约0.01)、x轴需要的下限数据(x轴原始数据的0.45次方,并修约0.01)、标记线需要的数据\r\n let xData: any[] = [],\r\n xDataSx: any[] = [],\r\n xDataXx: any[] = [],\r\n markLineData: any[] = [];\r\n\r\n // x和y轴的字体大小\r\n const xyFontSize = 10;\r\n\r\n // 组装数据\r\n xDataSource.forEach((item, index) => {\r\n // 得到x轴原始数据的0.45次方值,并修约0.001\r\n const val045 = Number(EChartsUtilsComm.getRound(item ** 0.45, 0.001));\r\n\r\n xData.push([val045, yDataSource[index]]);\r\n markLineData.push({\r\n name: item + '',\r\n xAxis: val045,\r\n label: {\r\n show: xDataSource.length >= 6 && index % 2 != 0 && index < 6 ? false : true, // 控制x轴的名称某些点是否显示,避免重叠的情况\r\n fontSize: xyFontSize,\r\n },\r\n });\r\n\r\n xDataSx.push([val045, yDataSourceSx[index]]);\r\n xDataXx.push([val045, yDataSourceXx[index]]);\r\n });\r\n\r\n /**\r\n * 获取series需要的3条线配置\r\n * @param type 线类型(1:筛分曲线、2:上限、3:下限)\r\n * @param data 对应的坐标点数据\r\n */\r\n const getLineObj = (type, data) => {\r\n const name = type == 1 ? '筛分曲线' : type == 2 ? '上限' : '下限';\r\n const symbol = type == 1 ? 'rect' : type == 2 ? 'triangle' : 'circle';\r\n const lineType = type == 1 ? 'solid' : type == 2 ? 'dotted' : [10, 5];\r\n const color = type == 1 ? lineData[0].lineColor : type == 2 ? lineData[1].lineColor : lineData[2].lineColor; //type == 1 ? '#F56C6C' : type == 2 ? '#409EFF' : '#000';\r\n\r\n let obj = {\r\n name: name,\r\n type: 'line',\r\n smooth: true, // 平滑的线条\r\n // 设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: symbol,\r\n symbolSize: 5,\r\n z: 10, // 控制曲线的浮动层级,避免在markLine下方被遮住\r\n // 线条的颜色\r\n lineStyle: {\r\n color: color,\r\n // 线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n type: lineType,\r\n },\r\n // 线条上数据点的颜色\r\n itemStyle: {\r\n color: color,\r\n },\r\n data: data,\r\n connectNulls: true, // 是否连接空数据\r\n markLine: {\r\n symbol: '', // 取消箭头\r\n silent: true, // 取消鼠标hover事件\r\n label: {\r\n // 标线的文本,模拟x轴显示的内容\r\n position: 'start', // 改变label位置\r\n //rotate: 45, // 设置文字旋转度数(注意:ECharts官网文档居然没有rotate这个属性的说明)\r\n // backgroundColor:'#fff'\r\n // color:'#f00',// 文字颜色\r\n formatter: (data) => {\r\n return data.name;\r\n },\r\n },\r\n lineStyle: { color: '#e0e6f1', type: 'solid' },\r\n data: markLineData,\r\n },\r\n };\r\n\r\n return obj;\r\n };\r\n\r\n // 验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (xData.length == 0) {\r\n yValIsAllNull = true;\r\n }\r\n let nullCount = 0;\r\n xData.forEach((item) => {\r\n if (item[1] == null || item[1] == undefined || item[1] == '/') {\r\n nullCount++;\r\n }\r\n });\r\n if (nullCount == xData.length) {\r\n yValIsAllNull = true;\r\n }\r\n if (\r\n yDataSourceSxOld.some((item) => item != null && item != undefined && item != '/') ||\r\n yDataSourceXxOld.some((item) => item != null && item != undefined && item != '/')\r\n ) {\r\n yValIsAllNull = false;\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,// 是否显示外边框线\r\n // borderColor: '#f00',// 外边框线颜色\r\n top: 20,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: 35,\r\n containLabel: true,\r\n },\r\n // 提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n if (datas && datas[0].data.length > 1) {\r\n let xObj = markLineData.filter((item) => item.xAxis == datas[0].data[0]);\r\n\r\n return datas[0].seriesName + '(' + xObj[0].name + ')' + ':' + datas[0].data[1];\r\n } else {\r\n return datas[0].data;\r\n }\r\n },\r\n },\r\n // 顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 5,\r\n textStyle: {\r\n fontSize: 18,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n // 图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n left: 'center',\r\n data: ['筛分曲线', '上限', '下限'],\r\n selected: {\r\n 筛分曲线: true, // 显示\r\n 上限: true, // 显示\r\n 下限: true, // 显示\r\n },\r\n selectedMode: 'multiple', // 用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n axisTick: { show: false }, // 隐藏刻度线\r\n axisLabel: { show: false }, // 隐藏刻度值\r\n // 网格线,参考文档:https://echarts.apache.org/zh/option.html#xAxis.splitLine\r\n splitLine: {\r\n show: false, // 隐藏分割线\r\n },\r\n min: xData.length > 0 ? (xData[0][0] > 0.2 ? xData[0][0] - 0.2 : 0) : null, //控制x轴的最小值\r\n max: xData.length > 0 ? xData[xData.length - 1][0] + 0.1 : null,\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', // '#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n splitNumber: 10, // 设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLabel: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n ],\r\n series: [getLineObj(1, xData), getLineObj(2, xDataSx), getLineObj(3, xDataXx)],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 界限含水率\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart70: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n //此图形排除了图形数据不正确的情况,如果数据不对,则直接返回{}\r\n if (\r\n xDataArr[0].some((item) => item == null || item == '' || item == undefined) ||\r\n yDataArr[0].some((item) => item == null || item == '' || item == undefined)\r\n ) {\r\n return {};\r\n }\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //x和y轴的数据\r\n let xData = xDataArr[0], // [22.9, 32.4, 36.9],\r\n yData = yDataArr[0], // [2.2, 11.6, 19.8],\r\n ztzl = 100, //锥体质量(g),100或76\r\n cllx = '砂类土', //材料类型,砂类土或细粒土\r\n logx = [], // c,b,a\r\n logy = [];\r\n\r\n //获取锥体质量和材料类型\r\n if (chartExtJson != null) {\r\n let curZtzl = sheet.getValue(chartExtJson.jxhslZtzl.row, chartExtJson.jxhslZtzl.col),\r\n curCllx = sheet.getValue(chartExtJson.jxhslCllx.row, chartExtJson.jxhslCllx.col);\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curZtzl)) {\r\n curZtzl = Number(curZtzl);\r\n if (curZtzl == 100 || curZtzl == 76) {\r\n ztzl = curZtzl;\r\n }\r\n }\r\n if (curCllx == '砂类土' || curCllx == '细粒土') {\r\n cllx = curCllx;\r\n }\r\n }\r\n\r\n // console.log(ztzl, cllx);\r\n\r\n //先求对数\r\n for (const item1 of xData) {\r\n logx.push(Math.log(item1));\r\n }\r\n for (const item2 of yData) {\r\n logy.push(Math.log(item2));\r\n }\r\n //求ab / ac 斜率 公式k=y2-y1 / x2-x1\r\n let abk = (logy[2] - logy[1]) / (logx[2] - logx[1]);\r\n let ack = (logy[2] - logy[0]) / (logx[2] - logx[0]);\r\n\r\n const xMax = Math.max.apply(Math, xData),\r\n xMin = Math.min.apply(Math, xData),\r\n xAxisMax = xMax + 1,\r\n xAxisMin = xMin - 0.3,\r\n yMax = Math.max.apply(Math, yData),\r\n yMin = Math.min.apply(Math, yData),\r\n yAxisMax = yMax + 1,\r\n yAxisMin = yMin - 2,\r\n dropName = ['C', 'B', 'A'],\r\n seriesData = [];\r\n\r\n xData.forEach((item, index) => {\r\n seriesData.push([item, yData[index], dropName[index]]);\r\n });\r\n\r\n //求ab / ac 延长线方法\r\n function getYOnLine(point1, point2, point3X) {\r\n const logX1 = Math.log(point1[0]);\r\n const logY1 = Math.log(point1[1]);\r\n const logX2 = Math.log(point2[0]);\r\n const logY2 = Math.log(point2[1]);\r\n const slope = (logY2 - logY1) / (logX2 - logX1);\r\n const logPoint3X = Math.log(point3X);\r\n const logY = logY1 + slope * (logPoint3X - logX1);\r\n return Math.exp(logY);\r\n }\r\n\r\n let point3X = 20;\r\n let abd3 = getYOnLine([xData[2], yData[2]], [xData[1], yData[1]], point3X);\r\n let zero_ab = [20, abd3];\r\n let acd3 = getYOnLine([xData[2], yData[2]], [xData[0], yData[0]], point3X);\r\n let zero_ac = [20, acd3];\r\n\r\n // console.log(zero_ab, 'zero_ab');\r\n // console.log(zero_ac, 'zero_ac');\r\n\r\n //第一次计算D-y值,代入A点的X坐标\r\n function HpCoordinates(wl) {\r\n let hp;\r\n if (cllx == '砂类土') {\r\n //砂类土\r\n hp = 29.6 - 1.22 * wl + 0.017 * wl * wl - 0.0000744 * wl * wl * wl;\r\n } else {\r\n //细粒土\r\n hp = wl / (0.524 * wl - 7.606);\r\n }\r\n return hp;\r\n }\r\n\r\n let coordX = [];\r\n let coordY = [];\r\n let point_hp = [];\r\n\r\n let Dy = HpCoordinates(xData[2]);\r\n let Dylog = Math.log(Dy);\r\n let hp0_xab = (abk * logx[2] - (logy[2] - Dylog)) / abk;\r\n let hp0_xac = (ack * logx[2] - (logy[2] - Dylog)) / ack;\r\n if (hp0_xab - hp0_xac >= 2) {\r\n //return '超差!';\r\n }\r\n let hp0_xcenter = Math.exp((hp0_xab + hp0_xac) / 2);\r\n let Dxlog = Math.log(hp0_xcenter);\r\n let adk = (logy[2] - Dylog) / (logx[2] - Dxlog); //AD 斜率\r\n\r\n //输出的hp、wl和wp\r\n let scHp, scWl, scWp;\r\n\r\n //判断锥数\r\n if (ztzl == 76) {\r\n //计算wl ad直线上y=17时,对应的x值\r\n let wly = Math.log(17);\r\n let wlx = (adk * logx[2] - (logy[2] - wly)) / adk;\r\n let wl = Math.exp(wlx);\r\n\r\n //计算WP:ad直线上y=2时,对应的x值\r\n let wpy = Math.log(2);\r\n let wpx = (adk * logx[2] - (logy[2] - wpy)) / adk;\r\n let wp = Math.exp(wpx);\r\n\r\n point_hp = [hp0_xcenter, Dy];\r\n coordX = [hp0_xcenter, yAxisMin];\r\n coordY = [xAxisMin, Dy];\r\n seriesData.push([hp0_xcenter, Dy, 'Hp']);\r\n\r\n scHp = Dy;\r\n scWl = wl;\r\n scWp = wp;\r\n // console.log('输出:', wp, wl, Dy);\r\n } else if (ztzl == 100) {\r\n //计算wl的值----先求AD斜率再代入y=20,求X (X即Wl的值)\r\n let wly = Math.log(20);\r\n let wlx = (adk * logx[2] - (logy[2] - wly)) / adk;\r\n let wl = Math.exp(wlx);\r\n\r\n //第二次计算hp值\r\n let hpy2 = HpCoordinates(wl);\r\n let hpylog2 = Math.log(hpy2);\r\n let hp0_xab2 = (abk * logx[2] - (logy[2] - hpylog2)) / abk;\r\n let hp0_xac2 = (ack * logx[2] - (logy[2] - hpylog2)) / ack;\r\n\r\n let hp0_xcenter2 = Math.exp((hp0_xab2 + hp0_xac2) / 2);\r\n let wp = hp0_xcenter2;\r\n\r\n point_hp = [hp0_xcenter2, hpy2];\r\n\r\n coordX = [hp0_xcenter2, yAxisMin];\r\n coordY = [xAxisMin, hpy2];\r\n seriesData.push([hp0_xcenter2, hpy2, 'Hp']);\r\n\r\n scHp = hpy2;\r\n scWl = wl;\r\n scWp = wp;\r\n // console.log('输出:', wp, wl, hpy2);\r\n }\r\n\r\n //判断是否是一个数字\r\n if (isNaN(scHp) || isNaN(scWl) || isNaN(scWp)) {\r\n scHp = 0;\r\n scWl = 0;\r\n scWp = 0;\r\n }\r\n\r\n //设置Sheet单元格的值(输出hp、wl和wp)\r\n if (chartExtJson != null) {\r\n //默认输出精度\r\n let outJdHp = 0.01,\r\n outJdWl = 0.01,\r\n outJdWp = 0.01;\r\n if (chartExtJson.jxhslScHpJd != null && chartExtJson.jxhslScHpJd != undefined) {\r\n outJdHp = chartExtJson.jxhslScHpJd;\r\n }\r\n if (chartExtJson.jxhslScWlJd != null && chartExtJson.jxhslScWlJd != undefined) {\r\n outJdWl = chartExtJson.jxhslScWlJd;\r\n }\r\n if (chartExtJson.jxhslScWpJd != null && chartExtJson.jxhslScWpJd != undefined) {\r\n outJdWp = chartExtJson.jxhslScWpJd;\r\n }\r\n\r\n if (chartExtJson.jxhslScHp != null && chartExtJson.jxhslScHp != undefined) {\r\n if (scHp == 0) {\r\n sheet.setValue(chartExtJson.jxhslScHp.row, chartExtJson.jxhslScHp.col, '/');\r\n } else {\r\n sheet.setValue(chartExtJson.jxhslScHp.row, chartExtJson.jxhslScHp.col, EChartsUtilsComm.getRound(scHp, outJdHp));\r\n }\r\n }\r\n if (chartExtJson.jxhslScWl != null && chartExtJson.jxhslScWl != undefined) {\r\n if (scWl == 0) {\r\n sheet.setValue(chartExtJson.jxhslScWl.row, chartExtJson.jxhslScWl.col, '/');\r\n } else {\r\n sheet.setValue(chartExtJson.jxhslScWl.row, chartExtJson.jxhslScWl.col, EChartsUtilsComm.getRound(scWl, outJdWl));\r\n }\r\n }\r\n if (chartExtJson.jxhslScWp != null && chartExtJson.jxhslScWp != undefined) {\r\n if (scWp == 0) {\r\n sheet.setValue(chartExtJson.jxhslScWp.row, chartExtJson.jxhslScWp.col, '/');\r\n } else {\r\n sheet.setValue(chartExtJson.jxhslScWp.row, chartExtJson.jxhslScWp.col, EChartsUtilsComm.getRound(scWp, outJdWp));\r\n }\r\n }\r\n }\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (xData.length == 0) {\r\n yValIsAllNull = true;\r\n }\r\n let nullCount = 0;\r\n xData.forEach((item) => {\r\n if (item[1] == null || item[1] == undefined || item[1] == '/') {\r\n nullCount++;\r\n }\r\n });\r\n if (nullCount == xData.length) {\r\n yValIsAllNull = true;\r\n }\r\n if (\r\n yData.some((item) => item != null && item != undefined && item != '/') ||\r\n yData.some((item) => item != null && item != undefined && item != '/')\r\n ) {\r\n yValIsAllNull = false;\r\n }\r\n let option = {\r\n grid: {\r\n top: 20,\r\n left: !yValIsAllNull ? 50 : 25,\r\n right: 10,\r\n bottom: 35,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].value[0] + ')' + ':' + datas[0].value[1] : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'log',\r\n min: xAxisMin,\r\n max: xAxisMax,\r\n interval: 0,\r\n axisTick: {\r\n show: false,\r\n alignWithLabel: true,\r\n },\r\n splitLine: {\r\n show: false,\r\n },\r\n axisLabel: {\r\n show: false,\r\n },\r\n },\r\n yAxis: {\r\n type: 'log',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n min: yAxisMin,\r\n max: yAxisMax,\r\n interval: 0,\r\n axisTick: {\r\n show: false,\r\n alignWithLabel: true,\r\n },\r\n splitLine: {\r\n show: false,\r\n },\r\n axisLabel: {\r\n show: false,\r\n },\r\n },\r\n series: [\r\n {\r\n name: legendName,\r\n data: seriesData,\r\n type: 'scatter',\r\n symbol: 'circle',\r\n smooth: false,\r\n symbolSize: 6,\r\n label: {\r\n show: true,\r\n formatter: function (param) {\r\n return param.data[2];\r\n },\r\n position: 'right',\r\n minMargin: 2,\r\n },\r\n markLine: {\r\n symbol: ['none', 'none'],\r\n silent: true,\r\n label: {\r\n show: true,\r\n position: 'start',\r\n color: '#000000',\r\n },\r\n lineStyle: {\r\n type: 'solid',\r\n color: '#333',\r\n },\r\n data: [\r\n { xAxis: seriesData[0][0] },\r\n { xAxis: seriesData[1][0] },\r\n { xAxis: seriesData[2][0] },\r\n { yAxis: seriesData[0][1] },\r\n { yAxis: seriesData[1][1] },\r\n { yAxis: seriesData[2][1] },\r\n [\r\n {\r\n coord: coordX,\r\n lineStyle: {\r\n color: '#333',\r\n type: 'dashed',\r\n },\r\n },\r\n { coord: point_hp }, //Hp---x\r\n ],\r\n [\r\n {\r\n coord: coordY,\r\n lineStyle: {\r\n color: '#333',\r\n type: 'dashed', //dashed dotted\r\n },\r\n },\r\n { coord: point_hp }, //Hp----y\r\n ],\r\n ],\r\n },\r\n },\r\n {\r\n //a-b连线\r\n type: 'line',\r\n data: [\r\n [xData[2], yData[2]],\r\n [xData[1], yData[1]],\r\n ],\r\n lineStyle: {\r\n color: '#0000FF',\r\n type: 'solid',\r\n width: 1,\r\n },\r\n symbol: 'none',\r\n },\r\n {\r\n //a-b 延长线\r\n type: 'line',\r\n data: [\r\n [xData[1], yData[1]],\r\n [zero_ab[0], zero_ab[1]],\r\n ],\r\n lineStyle: {\r\n color: '#000000',\r\n type: 'dashed',\r\n width: 1,\r\n },\r\n symbol: 'none',\r\n },\r\n {\r\n //a-c连线\r\n type: 'line',\r\n data: [\r\n [xData[2], yData[2]],\r\n [xData[0], yData[0]],\r\n ],\r\n lineStyle: {\r\n color: '#0000FF',\r\n type: 'solid',\r\n width: 1,\r\n },\r\n symbol: 'none',\r\n },\r\n {\r\n //a-c 延长线\r\n type: 'line',\r\n data: [\r\n [xData[0], yData[0]],\r\n [zero_ac[0], zero_ac[1]],\r\n ],\r\n lineStyle: {\r\n color: '#000000',\r\n type: 'dashed',\r\n width: 1,\r\n },\r\n symbol: 'none',\r\n },\r\n {\r\n //a-Hp连线\r\n type: 'line',\r\n data: [[xData[2], yData[2]], point_hp],\r\n lineStyle: {\r\n color: '#0000FF',\r\n type: 'solid',\r\n width: 1,\r\n },\r\n symbol: 'none',\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 水泥、石灰标准曲线\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart90: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n //y轴原始数据\r\n let yDataSource = yDataArr[0]; // [1.2, 5.6, 10.8, 16, 20.8];\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //x轴的数据\r\n let xData = xDataArr[0]; // [0, 2, 4, 6, 8];\r\n\r\n //重新处理x轴和y轴的数据,排除x轴后面为0的数据(因为有可能在单元格中,最后一个单元格的值可能没有填,这时候默认传的是0)\r\n let xDataCl = [],\r\n yDataSourceCl = [];\r\n for (let i = 0; i < xData.length; i++) {\r\n if (xData[i] != '/' && (i == 0 || (i > 0 && xData[i] != 0))) {\r\n xDataCl.push(xData[i]);\r\n yDataSourceCl.push(yDataSource[i]);\r\n } else if (i > 0 && xData[i] == 0) {\r\n break;\r\n }\r\n }\r\n xData = xDataCl;\r\n yDataSource = yDataSourceCl;\r\n\r\n //series的data数据、series的markPoint的data数据、series的markLine的data数据\r\n let seriesData = [],\r\n markPointData = [],\r\n markLineData = [...xData];\r\n\r\n //此目的是显示更多的x轴数据\r\n //假设x轴原始数据为[0, 2, 4, 6, 8],在这个数组中没有1、3、5等数据,此时就可以通过下面的方式进行增加\r\n /*\r\n\t\tfor (let i = 0; i < 20; i++) {\r\n\t\t\tif (!markLineData.some((item) => item == i)) {\r\n\t\t\t\tmarkLineData.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\t\t*/\r\n\r\n //获取y轴趋势公式对象\r\n const gsS = EChartsUtilsComm.calcTrend(xData, yDataSource, xData[0]);\r\n\r\n //输出方程表达式\r\n if (chartExtJson != null) {\r\n if (chartExtJson.jxhslSnShScfc != null && chartExtJson.jxhslSnShScfc != undefined) {\r\n // console.log('输出公式:',`Y=${getRound(gsS.xl,0.0001)}X+${getRound(gsS.jj,0.0001)}`)\r\n if (gsS.xl == '' || gsS.jj == '') {\r\n sheet.setValue(chartExtJson.jxhslSnShScfc.row, chartExtJson.jxhslSnShScfc.col, '/');\r\n } else {\r\n sheet.setValue(\r\n chartExtJson.jxhslSnShScfc.row,\r\n chartExtJson.jxhslSnShScfc.col,\r\n `Y=${EChartsUtilsComm.getRound(gsS.xl, 0.0001)}X+${EChartsUtilsComm.getRound(gsS.jj, 0.0001)}`\r\n );\r\n }\r\n }\r\n }\r\n\r\n let yDataCopy = [];\r\n //获取y轴原始数据对应的趋势数据\r\n xData.forEach((item, index) => {\r\n let curYData = Number(EChartsUtilsComm.getRound(eval(gsS.gs.replace('x', item + '')), 0.01));\r\n if (isNaN(curYData)) {\r\n curYData = 0;\r\n }\r\n\r\n seriesData.push([item, curYData]);\r\n yDataCopy.push(curYData);\r\n markPointData.push({\r\n xAxis: item,\r\n yAxis: yDataSource[index],\r\n symbol: 'circle',\r\n symbolSize: 6,\r\n });\r\n\r\n //console.log(curYData, \"curYData\")\r\n });\r\n\r\n let yValIsAllNull = false;\r\n if (xData.length == 0) {\r\n yValIsAllNull = true;\r\n }\r\n let nullCount = 0;\r\n xData.forEach((item) => {\r\n if (item[1] == 0 || item[1] == null || item[1] == undefined) {\r\n nullCount++;\r\n }\r\n });\r\n if (nullCount == xData.length) {\r\n yValIsAllNull = true;\r\n }\r\n if (yDataCopy.some((item) => item != 0 || item[1] == null || item[1] == undefined)) {\r\n yValIsAllNull = false;\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 22,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: 35,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].value[0] + ':' + datas[0].value[1] : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n splitLine: { show: false }, // 隐藏分割线\r\n axisLabel: { show: false }, // 隐藏刻度值\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n opacity: 0,\r\n },\r\n data: seriesData,\r\n markPoint: {\r\n data: markPointData,\r\n },\r\n markLine: {\r\n symbol: false, //取消箭头\r\n silent: true, //取消鼠标hover事件\r\n label: {\r\n position: 'start', //改变label位置\r\n formatter: (obj) => obj.value, //格式化显示的x轴标签内容\r\n },\r\n lineStyle: { color: '#ddd', type: 'solid' },\r\n data: markLineData.map((val) => {\r\n return {\r\n xAxis: val,\r\n };\r\n }),\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 延迟时间-强度曲线\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart110: (\r\n config: EChartsUtilsConfigModel,\r\n xDataArr: Array<Array<any>>,\r\n yDataArr: Array<Array<any>>,\r\n xDataArrSource: Array<Array<any>>,\r\n yDataArrSource: Array<Array<any>>\r\n ) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n const xDataSource = xDataArrSource[0]; // ['0.0','1.0','2.0','3.0','4.0','5.0'];\r\n\r\n let xData = [];\r\n xDataSource.forEach((item, index) => {\r\n if (item == '/') {\r\n xData.push(item);\r\n } else {\r\n xData.push(Number(item));\r\n }\r\n });\r\n\r\n //y轴的数据\r\n let yData = yDataArr[0]; // [4.4,4.3,4.3,4.2,4.1,3.7];\r\n let seriesData = [];\r\n xData.forEach((item, index) => {\r\n if (item != '/' && item != undefined && item != null) {\r\n seriesData.push([item, yData[index]]);\r\n }\r\n });\r\n\r\n let yValIsAllNull = false;\r\n if (seriesData.length == 0) {\r\n yValIsAllNull = true;\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 25,\r\n left: 25,\r\n right: 15,\r\n bottom: 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'category', //设置x轴为对数坐标轴\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n axisLabel: {\r\n // 使用formatter格式化标签\r\n formatter: function (value) {\r\n let curXName = '';\r\n for (let i = 0; i < xData.length; i++) {\r\n if (xData[i] == value) {\r\n curXName = xDataSource[i];\r\n if (curXName == '/') {\r\n curXName = '';\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return curXName;\r\n },\r\n },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n },\r\n data: seriesData,\r\n },\r\n ],\r\n };\r\n return option;\r\n },\r\n /**\r\n * 颗粒组成(筛分法)\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart130: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n // console.log(config);\r\n // console.log(xDataArr);\r\n // console.log(yDataArr);\r\n\r\n //x和y轴的数据\r\n const xData = xDataArr[0], // [60, 40, 20, 10, 5, 2, 1, 0.5, 0.25, 0.075],\r\n yData = yDataArr[0]; // [100.0, 100.0, 88.3, 69.3, 46.7, 27.0, 19.7, 5.6, 0.5, 0.3];\r\n let xMin = 0.01,\r\n xMax = 200;\r\n\r\n let seriesData = [];\r\n xData.forEach((item, index) => {\r\n seriesData.push([item == '筛底' ? 0 : item, yData[index]]);\r\n });\r\n\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (xData.length == 0) {\r\n yValIsAllNull = true;\r\n }\r\n let nullCount = 0;\r\n xData.forEach((item) => {\r\n if (item[1] == null || item[1] == undefined || item[1] == '/') {\r\n nullCount++;\r\n }\r\n });\r\n if (nullCount == xData.length) {\r\n yValIsAllNull = true;\r\n }\r\n if (yData.some((item) => item != null && item != undefined && item != '/')) {\r\n yValIsAllNull = false;\r\n }\r\n\r\n if (yValIsAllNull) {\r\n xMin = null;\r\n xMax = null;\r\n }\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 25,\r\n left: 20,\r\n right: 15,\r\n bottom: 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'log', //设置x轴为对数坐标轴\r\n logBase: 10, //可以设置对数轴的底数,默认为10\r\n inverse: true,\r\n min: xMin,\r\n max: xMax,\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n },\r\n data: seriesData,\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 回弹模量 (承载板法)\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart150: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //x和y轴的数据\r\n const xData = xDataArr[0], // [25, 50, 100, 150, 200],\r\n yData = yDataArr[0]; // [0.72, 1.07, 1.87, 2.63, 3.48];\r\n\r\n let seriesData = [];\r\n xData.forEach((item, index) => {\r\n seriesData.push([item, yData[index]]);\r\n });\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (xData.length == 0) {\r\n yValIsAllNull = true;\r\n }\r\n let nullCount = 0;\r\n xData.forEach((item) => {\r\n if (item[1] == null || item[1] == undefined || item[1] == '/') {\r\n nullCount++;\r\n }\r\n });\r\n if (nullCount == xData.length) {\r\n yValIsAllNull = true;\r\n }\r\n if (yData.some((item) => item != null && item != undefined && item != '/')) {\r\n yValIsAllNull = false;\r\n }\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 55,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: 10,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n top: 18,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n splitLine: { show: false }, // 隐藏分割线\r\n axisLabel: { show: false }, // 隐藏刻度值\r\n position: 'top', //设置x轴在顶部显示\r\n },\r\n yAxis: [\r\n //双y轴,目的是使用第二个y轴来配置字符L显示在y轴下方箭头的位置\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n inverse: true, //y轴坐标轴向下\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n },\r\n data: seriesData,\r\n markLine: {\r\n symbol: false, //取消箭头\r\n silent: true, //取消鼠标hover事件\r\n label: {\r\n position: 'start', //改变label位置\r\n formatter: (obj) => obj.value, //格式化显示的x轴标签内容\r\n },\r\n lineStyle: { color: '#ddd', type: 'solid' },\r\n data: xData.map((val) => {\r\n return {\r\n xAxis: val,\r\n };\r\n }),\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 土的回弹模量 (强度仪法)\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart170: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //x和y轴的数据\r\n const xData = xDataArr[0], // [25, 50, 100, 150, 200],\r\n yData = yDataArr[0]; // [0.72, 1.07, 1.87, 2.63, 3.48];\r\n\r\n let seriesData = [];\r\n xData.forEach((item, index) => {\r\n seriesData.push([item, yData[index]]);\r\n });\r\n\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (xData.length == 0) {\r\n yValIsAllNull = true;\r\n }\r\n let nullCount = 0;\r\n xData.forEach((item) => {\r\n if (item[1] == null || item[1] == undefined || item[1] == '/') {\r\n nullCount++;\r\n }\r\n });\r\n if (nullCount == xData.length) {\r\n yValIsAllNull = true;\r\n }\r\n if (yData.some((item) => item != null && item != undefined && item != '/')) {\r\n yValIsAllNull = false;\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 55,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: 10,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n top: 18,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n splitLine: { show: false }, // 隐藏分割线\r\n axisLabel: { show: false }, // 隐藏刻度值\r\n position: 'top', //设置x轴在顶部显示\r\n },\r\n yAxis: [\r\n //双y轴,目的是使用第二个y轴来配置字符L显示在y轴下方箭头的位置\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n inverse: true, //y轴坐标轴向下\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n },\r\n data: seriesData,\r\n markLine: {\r\n symbol: false, //取消箭头\r\n silent: true, //取消鼠标hover事件\r\n label: {\r\n position: 'start', //改变label位置\r\n formatter: (obj) => obj.value, //格式化显示的x轴标签内容\r\n },\r\n lineStyle: { color: '#ddd', type: 'solid' },\r\n data: xData.map((val) => {\r\n return {\r\n xAxis: val,\r\n };\r\n }),\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 28d抗压强度与胶水比关系\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart190: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = '', // config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //x和y轴的数据\r\n let xData = xDataArr[0], // [2.32, 2.5, 2.7],\r\n yData = yDataArr[0]; // [42.5, 47.1, 49.1];\r\n\r\n //处理数据\r\n xData = xData.filter((item) => item != null && item != undefined && item != '/' && (item._code == null || item._code == undefined));\r\n yData = yData.filter((item) => item != null && item != undefined && item != '/' && (item._code == null || item._code == undefined));\r\n\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (xData.length == 0) {\r\n yValIsAllNull = true;\r\n }\r\n let nullCount = 0;\r\n xData.forEach((item) => {\r\n if (item == null || item == undefined || item == '/') {\r\n nullCount++;\r\n }\r\n });\r\n if (nullCount == xData.length) {\r\n yValIsAllNull = true;\r\n xData = [];\r\n }\r\n if (yData.some((item) => item != null && item != undefined && item != '/')) {\r\n yValIsAllNull = false;\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 10,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 18,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'category',\r\n data: xData,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n axisLabel: {\r\n // 使用formatter格式化标签\r\n formatter: function (value) {\r\n if (value == '/') {\r\n return '';\r\n } else {\r\n return value;\r\n }\r\n },\r\n },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n },\r\n data: yData,\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 混凝土拌合物含气量\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart210: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n //x和y轴的原始数据\r\n let xDataSource = xDataArr[0], // [0.093, 0.081, 0.068, 0.063, 0.057, 0.052, 0.049, 0.044, 0.041, 0.038, 0.036],\r\n yDataSource = yDataArr[0]; // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //series需要的数据\r\n const seriesData = [];\r\n\r\n for (let i = xDataSource.length - 1; i >= 0; i--) {\r\n const item = xDataSource[i];\r\n\r\n if (item != null && item != undefined && item != '/' && (item._error == null || item._error == undefined)) {\r\n seriesData.push([item, yDataSource[i]]);\r\n }\r\n }\r\n\r\n //x和y轴的字体大小\r\n const xyFontSize = 10;\r\n\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (xDataSource.length == 0) {\r\n yValIsAllNull = true;\r\n }\r\n let nullCount = 0;\r\n xDataSource.forEach((item) => {\r\n if (item == null || item == undefined || item == '/' || (item._error != null && item._error != undefined)) {\r\n nullCount++;\r\n }\r\n });\r\n if (nullCount == xDataSource.length) {\r\n yValIsAllNull = true;\r\n //xDataSource = [];\r\n }\r\n if (yDataSource.some((item) => item != null && item != undefined && item != '/')) {\r\n yValIsAllNull = false;\r\n }\r\n\r\n const getXline = () => {\r\n let arr = [];\r\n [0, 0.02, 0.04, 0.06, 0.08, 0.1].forEach((val) => {\r\n xDataSource.forEach((item) => {\r\n let obj: any = { xAxis: '' };\r\n\r\n if (item == '/') {\r\n obj.xAxis = '';\r\n arr.push(obj);\r\n } else {\r\n obj.xAxis = val;\r\n arr.push(obj);\r\n }\r\n });\r\n });\r\n\r\n //去重\r\n let uniqueData = arr.filter((item, index, self) => index === self.findIndex((t) => t.xAxis == item.xAxis));\r\n return nullCount == xDataSource.length ? [] : uniqueData;\r\n };\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 25,\r\n left: !yValIsAllNull && seriesData.length > 0 ? 30 : 25,\r\n right: 10,\r\n bottom: 40,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].value[0] + ':' + datas[0].value[1] : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n splitLine: { show: false }, // 隐藏分割线\r\n axisLabel: { show: false }, // 隐藏刻度值\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull && seriesData.length > 0 ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n axisLabel: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n },\r\n data: seriesData,\r\n markLine: {\r\n symbol: false, //取消箭头\r\n silent: true, //取消鼠标hover事件\r\n label: {\r\n position: 'start', //改变label位置\r\n formatter: (obj) => obj.value, //格式化显示的x轴标签内容\r\n fontSize: xyFontSize,\r\n },\r\n lineStyle: { color: '#ddd', type: 'solid' },\r\n data: getXline(),\r\n // data: [0, 0.02, 0.04, 0.06, 0.08, 0.1].map((val) => {\r\n // return {\r\n // xAxis: val,\r\n // }\r\n // }),\r\n },\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 混凝土拌合物凝结时间\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart230: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n /*\r\n\t\t\t此处需要注意的是,如果单元格A3=A1-A2,就需要将A3=TEXT(A1-A2, \"h\"\":\"\"m\")\r\n\r\n\t\t\tExcel中默认时间相减得到的是天为单位,因此此处使用了TEXT函数来格式化相减的时间差格式\r\n\r\n\t\t\t=TEXT(A1-A2, \"h\"\":\"\"m\")\r\n\t\t\t=INT(A1-A2) & \"天\" & TEXT(A1-A2, \"h\"\"小时\"\"m\"\"分\"\"\")\r\n\r\n\t\t*/\r\n\r\n //折线的数量\r\n let lineCount = xDataArr.length;\r\n\r\n //原始数据\r\n let xDataSource1 = [], // ['6:20', '6:50', '7:20', '7:50', '7:56', '8:26', '8:56', '9:26', '9:56', '10:11'],\r\n xDataSource2 = [], // ['6:27', '6:57', '7:32', '8:02', '8:05', '8:35', '9:05', '9:35', '10:05', '10:22'],\r\n xDataSource3 = [], // ['6:10', '6:40', '7:10', '7:40', '8:03', '8:13', '8:42', '9:12', '9:40', '10:12'],\r\n yDataSource1 = [], // [0.8, 1.2, 2.2, 3.4, 3.6, 7.8, 11.8, 16.6, 24.6, 28.2],\r\n yDataSource2 = [], // [0.8, 1.3, 2.4, 3.4, 3.5, 7.7, 12.2, 16.7, 25, 28.2],\r\n yDataSource3 = []; // [0.7, 1, 1.9, 3, 3.3, 3.5, 8.2, 13.8, 20.2, 28.2];\r\n\r\n //折线1\r\n xDataSource1 = EChartsUtilsComm.filterNullEmptyErrArray(xDataArr[0]); // ['6:20', '6:50', '7:20', '7:50', '7:56', '8:26', '8:56', '9:26', '9:56', '10:11'],\r\n yDataSource1 = EChartsUtilsComm.filterNullEmptyErrArray(yDataArr[0]); // [0.8, 1.2, 2.2, 3.4, 3.6, 7.8, 11.8, 16.6, 24.6, 28.2],\r\n\r\n //折线2\r\n if (lineCount == 2) {\r\n xDataSource2 = EChartsUtilsComm.filterNullEmptyErrArray(xDataArr[1]); // ['6:27', '6:57', '7:32', '8:02', '8:05', '8:35', '9:05', '9:35', '10:05', '10:22'],\r\n yDataSource2 = EChartsUtilsComm.filterNullEmptyErrArray(yDataArr[1]); // [0.8, 1.3, 2.4, 3.4, 3.5, 7.7, 12.2, 16.7, 25, 28.2],\r\n }\r\n //折线3\r\n if (lineCount == 3) {\r\n xDataSource2 = EChartsUtilsComm.filterNullEmptyErrArray(xDataArr[1]); // ['6:27', '6:57', '7:32', '8:02', '8:05', '8:35', '9:05', '9:35', '10:05', '10:22'],\r\n yDataSource2 = EChartsUtilsComm.filterNullEmptyErrArray(yDataArr[1]); // [0.8, 1.3, 2.4, 3.4, 3.5, 7.7, 12.2, 16.7, 25, 28.2],\r\n xDataSource3 = EChartsUtilsComm.filterNullEmptyErrArray(xDataArr[2]); // ['6:10', '6:40', '7:10', '7:40', '8:03', '8:13', '8:42', '9:12', '9:40', '10:12'],\r\n yDataSource3 = EChartsUtilsComm.filterNullEmptyErrArray(yDataArr[2]); // [0.7, 1, 1.9, 3, 3.3, 3.5, 8.2, 13.8, 20.2, 28.2];\r\n }\r\n\r\n //3条线的x轴数据\r\n let xData1 = [],\r\n xData2 = [],\r\n xData3 = [];\r\n\r\n //组装数据\r\n\r\n xDataSource1.forEach((item, index) => {\r\n //js的时间格式\r\n if (typeof item == 'object') {\r\n xData1.push(item.getHours() * 60 + item.getMinutes());\r\n }\r\n //数字\r\n else if (typeof item == 'number') {\r\n xData1.push(item);\r\n }\r\n //文本格式\r\n else {\r\n const curArr = item.split(':');\r\n const curItemMins = Number(curArr[0]) * 60 + Number(curArr[1]);\r\n xData1.push(curItemMins);\r\n }\r\n });\r\n\r\n xDataSource2.forEach((item, index) => {\r\n //js的时间格式\r\n if (typeof item == 'object') {\r\n xData2.push(item.getHours() * 60 + item.getMinutes());\r\n }\r\n //数字\r\n else if (typeof item == 'number') {\r\n xData2.push(item);\r\n }\r\n //文本格式\r\n else {\r\n const curArr = item.split(':');\r\n const curItemMins = Number(curArr[0]) * 60 + Number(curArr[1]);\r\n xData2.push(curItemMins);\r\n }\r\n });\r\n\r\n xDataSource3.forEach((item, index) => {\r\n //js的时间格式\r\n if (typeof item == 'object') {\r\n xData3.push(item.getHours() * 60 + item.getMinutes());\r\n }\r\n //数字\r\n else if (typeof item == 'number') {\r\n xData3.push(item);\r\n }\r\n //文本格式\r\n else {\r\n const curArr = item.split(':');\r\n const curItemMins = Number(curArr[0]) * 60 + Number(curArr[1]);\r\n xData3.push(curItemMins);\r\n }\r\n });\r\n\r\n //x轴数据前后增加一个点,y轴数据前后也增加一个点\r\n if (xDataSource1.length > 0) {\r\n xData1.push(xData1[xData1.length - 1] + 20);\r\n xData1.unshift(xData1[0] - 20);\r\n yDataSource1.push(null);\r\n yDataSource1.unshift(null);\r\n }\r\n\r\n if (lineCount == 2) {\r\n if (xDataSource2.length > 0) {\r\n xData2.push(xData2[xData2.length - 1] + 20);\r\n xData2.unshift(xData2[0] - 20);\r\n yDataSource2.push(null);\r\n yDataSource2.unshift(null);\r\n }\r\n }\r\n if (lineCount == 3) {\r\n if (xDataSource3.length == 0) {\r\n xData2.push(xData2[xData2.length - 1] + 20);\r\n xData2.unshift(xData2[0] - 20);\r\n yDataSource2.push(null);\r\n yDataSource2.unshift(null);\r\n xData3.push(xData3[xData3.length - 1] + 20);\r\n xData3.unshift(xData3[0] - 20);\r\n yDataSource3.push(null);\r\n yDataSource3.unshift(null);\r\n }\r\n }\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName;\r\n\r\n //获取xAxis需要的数据\r\n const getxAxisObj = (type, data) => {\r\n return {\r\n type: 'category',\r\n data: data,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n show: type == 1,\r\n splitLine: {\r\n show: true,\r\n },\r\n };\r\n };\r\n\r\n let xAxisData = [getxAxisObj(1, xData1)];\r\n if (lineCount == 2) {\r\n xAxisData.push(getxAxisObj(2, xData2));\r\n }\r\n if (lineCount == 3) {\r\n xAxisData.push(getxAxisObj(2, xData2));\r\n xAxisData.push(getxAxisObj(3, xData3));\r\n }\r\n\r\n //获取series需要的数据\r\n const getLineObj = (type, data) => {\r\n const name = type == 1 ? '第一组' : type == 2 ? '第二组' : '第三组';\r\n const symbol = type == 1 ? 'rect' : type == 2 ? 'triangle' : 'circle';\r\n const lineType = type == 1 ? 'solid' : type == 2 ? 'dotted' : [10, 5];\r\n const color =\r\n type == 1 && lineData.length >= 1\r\n ? lineData[0].lineColor\r\n : type == 2 && lineData.length >= 2\r\n ? lineData[1].lineColor\r\n : type == 3 && lineData.length >= 3\r\n ? lineData[2].lineColor\r\n : '#000';\r\n\r\n let obj = {\r\n name: name,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: symbol, //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: color,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n type: lineType,\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: color,\r\n },\r\n data: data,\r\n };\r\n\r\n return obj;\r\n };\r\n\r\n //series: [getLineObj(1, yDataSource1), getLineObj(2, yDataSource2), getLineObj(3, yDataSource3)],\r\n let seriesData = [getLineObj(1, yDataSource1)];\r\n if (lineCount == 2) {\r\n if (yDataSource2.length > 0) {\r\n seriesData.push(getLineObj(2, yDataSource2));\r\n }\r\n }\r\n if (lineCount == 3) {\r\n if (yDataSource2.length > 0) {\r\n seriesData.push(getLineObj(2, yDataSource2));\r\n }\r\n if (yDataSource3.length > 0) {\r\n seriesData.push(getLineObj(3, yDataSource3));\r\n }\r\n }\r\n\r\n let legendData = lineCount == 1 ? ['第一组'] : lineCount == 2 ? ['第一组', '第二组'] : ['第一组', '第二组', '第三组'],\r\n legendSelected: any =\r\n lineCount == 1 ? { 第一组: true } : lineCount == 2 ? { 第一组: true, 第二组: true } : { 第一组: true, 第二组: true, 第三组: true };\r\n\r\n //console.log(xData1,xData2,xData3,seriesData)\r\n let yValIsAllNull = false;\r\n let xValIsAllNull = false;\r\n let topmargin = 0;\r\n //为空不展示\r\n if (xDataSource1.length == 0) {\r\n xValIsAllNull = true;\r\n topmargin = 15;\r\n\r\n legendData = ['第二组', '第三组'];\r\n legendSelected = { 第一组: false, 第二组: true, 第三组: true };\r\n\r\n xAxisData = [];\r\n seriesData = [];\r\n\r\n xAxisData.push(getxAxisObj(1, xData2));\r\n xAxisData.push(getxAxisObj(3, xData3));\r\n seriesData.push(getLineObj(2, yDataSource2));\r\n seriesData.push(getLineObj(3, yDataSource3));\r\n\r\n if (xDataSource2.length == 0) {\r\n topmargin = 35;\r\n\r\n legendData = ['第三组'];\r\n legendSelected = { 第一组: false, 第二组: false, 第三组: true };\r\n\r\n xAxisData = [];\r\n seriesData = [];\r\n\r\n xAxisData.push(getxAxisObj(1, xData3));\r\n seriesData.push(getLineObj(3, yDataSource3));\r\n\r\n if (xDataSource3.length == 0) {\r\n topmargin = 0;\r\n\r\n yValIsAllNull = true;\r\n legendData = [];\r\n legendSelected = { 第一组: false, 第二组: false, 第三组: false };\r\n xAxisData = [];\r\n seriesData = [];\r\n xAxisData.push(getxAxisObj(1, []));\r\n seriesData.push(getLineObj(3, []));\r\n }\r\n }\r\n } else if (xDataSource2.length == 0) {\r\n topmargin = 15;\r\n xValIsAllNull = true;\r\n legendData = ['第一组', '第三组'];\r\n legendSelected = { 第一组: true, 第二组: false, 第三组: true };\r\n\r\n xAxisData = [];\r\n seriesData = [];\r\n\r\n xAxisData.push(getxAxisObj(1, xData1));\r\n xAxisData.push(getxAxisObj(3, xData3));\r\n\r\n seriesData.push(getLineObj(1, yDataSource1));\r\n seriesData.push(getLineObj(3, yDataSource3));\r\n\r\n if (xDataSource1.length == 0) {\r\n topmargin = 35;\r\n\r\n legendData = ['第三组'];\r\n legendSelected = { 第一组: false, 第二组: false, 第三组: true };\r\n\r\n xAxisData = [];\r\n seriesData = [];\r\n\r\n xAxisData.push(getxAxisObj(1, xData1));\r\n seriesData.push(getLineObj(3, yDataSource1));\r\n\r\n if (xDataSource3.length == 0) {\r\n topmargin = 0;\r\n\r\n yValIsAllNull = true;\r\n legendData = [];\r\n legendSelected = { 第一组: false, 第二组: false, 第三组: false };\r\n xAxisData = [];\r\n seriesData = [];\r\n xAxisData.push(getxAxisObj(1, []));\r\n seriesData.push(getLineObj(3, []));\r\n }\r\n }\r\n } else if (xDataSource3.length == 0) {\r\n topmargin = 15;\r\n xValIsAllNull = true;\r\n legendData = ['第一组', '第二组'];\r\n legendSelected = { 第一组: true, 第二组: true, 第三组: false };\r\n\r\n xAxisData = [];\r\n seriesData = [];\r\n xAxisData.push(getxAxisObj(1, xData1));\r\n xAxisData.push(getxAxisObj(2, xData2));\r\n seriesData.push(getLineObj(1, yDataSource1));\r\n seriesData.push(getLineObj(2, yDataSource2));\r\n\r\n if (xDataSource1.length == 0) {\r\n topmargin = 35;\r\n legendData = ['第二组'];\r\n legendSelected = { 第一组: false, 第二组: true, 第三组: false };\r\n\r\n xAxisData = [];\r\n seriesData = [];\r\n\r\n xAxisData.push(getxAxisObj(1, xData2));\r\n seriesData.push(getLineObj(2, yDataSource2));\r\n\r\n if (xDataSource2.length == 0) {\r\n topmargin = 0;\r\n yValIsAllNull = true;\r\n legendData = [];\r\n legendSelected = { 第一组: false, 第二组: false, 第三组: false };\r\n xAxisData = [];\r\n seriesData = [];\r\n xAxisData.push(getxAxisObj(1, []));\r\n seriesData.push(getLineObj(2, []));\r\n }\r\n }\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: !xValIsAllNull ? -5 : topmargin,\r\n left: 30,\r\n right: 10,\r\n bottom: 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n left: 'center',\r\n top: 16,\r\n data: legendData,\r\n selected: legendSelected,\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: xAxisData,\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: seriesData,\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 颗粒组成(密度计法)\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart250: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //x和y轴的数据\r\n const xData = xDataArr[0], // [0.0316, 0.0224, 0.0115, 0.0075, 0.0058, 0.0033, 0.0031, 0.0024, 0.001, 0.0008],\r\n yData = yDataArr[0]; // [83.0, 78.8, 53.8, 42.6, 33.7, 27.8, 23.2, 19.2, 13.0, 7.7];\r\n\r\n let seriesData = [];\r\n xData.forEach((item, index) => {\r\n seriesData.push([item, yData[index]]);\r\n });\r\n\r\n let xmin = 0.001,\r\n xmax = 100;\r\n\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (xData.length == 0) {\r\n yValIsAllNull = true;\r\n }\r\n let nullCount = 0;\r\n xData.forEach((item) => {\r\n if (item == null || item == undefined || item == '/') {\r\n nullCount++;\r\n }\r\n });\r\n if (nullCount == xData.length) {\r\n yValIsAllNull = true;\r\n xmin = null;\r\n xmax = null;\r\n }\r\n if (yData.some((item) => item != null && item != undefined && item != '/')) {\r\n yValIsAllNull = false;\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 25,\r\n left: 20,\r\n right: 15,\r\n bottom: 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'log', //设置x轴为对数坐标轴\r\n logBase: 10, //可以设置对数轴的底数,默认为10\r\n inverse: true,\r\n min: xmin,\r\n max: xmax,\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n },\r\n data: seriesData,\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 承载比(CBR)\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart270: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //x和y轴的数据\r\n // const xDataSource1 = xDataArr[0], // [36, 102, 316, 678, 917, 1177, 1396, 1478, 1620, 1651, 1753, 1789, 1855],\r\n // \txDataSource2 = xDataArr[1], // [56, 122, 357, 617, 958, 1223, 1376, 1493, 1631, 1682, 1783, 1824, 1885],\r\n // \txDataSource3 = xDataArr[2], // [66, 168, 443, 729, 994, 1213, 1411, 1529, 1651, 1722, 1783, 1824, 1890],\r\n // \tyDataSource1 = yDataArr[0], // [0.31, 0.51, 0.94, 1.47, 2.0, 2.48, 2.92, 3.41, 3.87, 4.37, 4.86, 5.36, 5.88],\r\n // \tyDataSource2 = yDataArr[1], // [0.26, 0.5, 1.01, 1.52, 2.02, 2.52, 2.98, 3.49, 3.99, 4.49, 4.98, 5.48, 5.98],\r\n // \tyDataSource3 = yDataArr[2]; // [0.32, 0.52, 1.01, 1.5, 1.99, 2.49, 2.98, 3.47, 3.96, 4.46, 4.95, 5.44, 5.93];\r\n\r\n let xDataSource1 = [],\r\n xDataSource2 = [],\r\n xDataSource3 = [],\r\n yDataSource1 = [],\r\n yDataSource2 = [],\r\n yDataSource3 = [];\r\n\r\n //排除原始数据为0的数据\r\n xDataArr[0].forEach((item, index) => {\r\n if (item != 0 && yDataArr[0][index] != 0) {\r\n xDataSource1.push(item);\r\n yDataSource1.push(yDataArr[0][index]);\r\n }\r\n });\r\n xDataArr[1].forEach((item, index) => {\r\n if (item != 0 && yDataArr[1][index] != 0) {\r\n xDataSource2.push(item);\r\n yDataSource2.push(yDataArr[1][index]);\r\n }\r\n });\r\n xDataArr[2].forEach((item, index) => {\r\n if (item != 0 && yDataArr[2][index] != 0) {\r\n xDataSource3.push(item);\r\n yDataSource3.push(yDataArr[2][index]);\r\n }\r\n });\r\n\r\n /**\r\n * 获取series需要的3条线配置\r\n * @param type 线类型(1:筛分曲线、2:上限、3:下限)\r\n * @param data 对应的坐标点数据\r\n */\r\n const getLineObj = (type, xData, yData) => {\r\n const name = `曲线${type}`;\r\n const symbol = type == 1 ? 'rect' : type == 2 ? 'triangle' : 'circle';\r\n const lineType = type == 1 ? 'solid' : type == 2 ? 'dotted' : [10, 5];\r\n const color = type == 1 ? lineData[0].lineColor : type == 2 ? lineData[1].lineColor : lineData[2].lineColor; //ttype == 1 ? '#F56C6C' : type == 2 ? '#409EFF' : '#000';\r\n\r\n const seriesData = [];\r\n xData.forEach((item, index) => {\r\n seriesData.push([item, yData[index]]);\r\n });\r\n\r\n return {\r\n name: name,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: symbol, //符号类型\r\n symbolSize: 5, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: color,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n type: lineType,\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: color,\r\n },\r\n data: seriesData,\r\n };\r\n };\r\n\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (\r\n xDataSource1.every((item) => item == '/') &&\r\n xDataSource2.every((item) => item == '/') &&\r\n xDataSource3.every((item) => item == '/') &&\r\n yDataSource1.every((item) => item == '/') &&\r\n yDataSource2.every((item) => item == '/') &&\r\n yDataSource3.every((item) => item == '/')\r\n ) {\r\n yValIsAllNull = true;\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 35,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 20,\r\n bottom: 5,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].value[0] + ')' + ':' + datas[0].value[1] : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n top: 16,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value', //category\r\n //data: xDataSource1,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n splitLine: { show: true },\r\n position: 'top', //设置x轴在顶部显示\r\n nameGap: 5, //坐标轴名称与轴线之间的距离\r\n nameLocation: 'end', //设置x轴显示的名称的位置在末端,注意:需要配置grid.right一起使用,不然可能会被遮住\r\n },\r\n yAxis: [\r\n //双y轴,目的是使用第二个y轴来配置字符L显示在y轴下方箭头的位置\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n inverse: true, //y轴坐标轴向下\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [getLineObj(1, xDataSource1, yDataSource1), getLineObj(2, xDataSource2, yDataSource2), getLineObj(3, xDataSource3, yDataSource3)],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 压实度-吸水量,膨胀率,CBR-279、280和281\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart279_280_281: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = config.chartTitle, //压实度-吸水量关系曲线 压实度-膨胀率关系曲线 压实度-CBR关系曲线\r\n xName = config.chartXName, //压实度(%) 压实度(%) 压实度(%)\r\n yName = config.chartYName, //吸水量(g) 膨胀率(%) CBR(%)\r\n legendName = '图例1';\r\n\r\n //y轴最大最小数据加减数字\r\n let jjNum = config.chartType == 279 ? 5 : config.chartType == 280 ? 0.1 : 0.15;\r\n\r\n //x和y轴的数据\r\n let xData = xDataArr[0], // [90.3, 95.6, 99.5],\r\n yData = yDataArr[0], // [245, 206, 163],\r\n xAxisMin = Math.min(...xData),\r\n yAxisMin = Number(EChartsUtilsComm.getRound(Math.min(...yData) - jjNum, 0.001)),\r\n yAxisMax = Number(EChartsUtilsComm.getRound(Math.max(...yData) + jjNum, 0.001));\r\n //yData1 = [245, 206, 163],\r\n //yData2 = [3.49, 2.69, 2.34];\r\n //yData3 = [4, 4.7, 5.7];\r\n //修约:0.001 0.001 0.001\r\n //y最大最小加减数:5 0.1 0.15\r\n\r\n xAxisMin = Number(EChartsUtilsComm.getRound(xAxisMin - xAxisMin * 0.01, 0.001));\r\n\r\n let seriesData = [];\r\n xData.forEach((item, index) => {\r\n seriesData.push([item, yData[index]]);\r\n });\r\n\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (yData.every((item) => item == '/')) {\r\n yValIsAllNull = true;\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 25,\r\n left: 20,\r\n right: 15,\r\n bottom: 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value', //设置x轴为对数坐标轴\r\n min: xAxisMin,\r\n max: 100,\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n show: true, //y轴默认是不显示的\r\n },\r\n min: yAxisMin,\r\n max: yAxisMax,\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n },\r\n data: seriesData,\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 承载比(CBR)(路强仪)\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart290: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //x和y轴的数据\r\n let xDataSource1 = xDataArr[0], // [36, 102, 316, 678, 917, 1177, 1396, 1478, 1620, 1651, 1753, 1789, 1855],\r\n xDataSource2 = xDataArr[0], // [56, 122, 357, 617, 958, 1223, 1376, 1493, 1631, 1682, 1783, 1824, 1885],\r\n xDataSource3 = xDataArr[0], // [66, 168, 443, 729, 994, 1213, 1411, 1529, 1651, 1722, 1783, 1824, 1890],\r\n yDataSource1 = yDataArr[0], // [0.31, 0.51, 0.94, 1.47, 2.0, 2.48, 2.92, 3.41, 3.87, 4.37, 4.86, 5.36, 5.88],\r\n yDataSource2 = yDataArr[1], // [0.26, 0.5, 1.01, 1.52, 2.02, 2.52, 2.98, 3.49, 3.99, 4.49, 4.98, 5.48, 5.98],\r\n yDataSource3 = yDataArr[2]; // [0.32, 0.52, 1.01, 1.5, 1.99, 2.49, 2.98, 3.47, 3.96, 4.46, 4.95, 5.44, 5.93];\r\n\r\n /**\r\n * 获取series需要的3条线配置\r\n * @param type 线类型(1:筛分曲线、2:上限、3:下限)\r\n * @param data 对应的坐标点数据\r\n */\r\n const getLineObj = (type, data) => {\r\n const name = `曲线${type}`;\r\n const symbol = type == 1 ? 'rect' : type == 2 ? 'triangle' : 'circle';\r\n const lineType = type == 1 ? 'solid' : type == 2 ? 'dotted' : [10, 5];\r\n const color = type == 1 ? lineData[0].lineColor : type == 2 ? lineData[1].lineColor : lineData[2].lineColor; //ttype == 1 ? '#F56C6C' : type == 2 ? '#409EFF' : '#000';\r\n\r\n return {\r\n name: name,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: symbol, //符号类型\r\n symbolSize: 5, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: color,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n type: lineType,\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: color,\r\n },\r\n data: data,\r\n };\r\n };\r\n\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (\r\n xDataSource1.every((item) => item == '/') &&\r\n xDataSource2.every((item) => item == '/') &&\r\n xDataSource3.every((item) => item == '/') &&\r\n yDataSource1.every((item) => item == '/') &&\r\n yDataSource2.every((item) => item == '/') &&\r\n yDataSource3.every((item) => item == '/')\r\n ) {\r\n yValIsAllNull = true;\r\n xDataSource1 = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 35,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: 5,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n top: 16,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'category',\r\n data: xDataSource1,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n splitLine: { show: true },\r\n position: 'top', //设置x轴在顶部显示\r\n nameGap: 5, //坐标轴名称与轴线之间的距离\r\n nameLocation: 'end', //设置x轴显示的名称的位置在末端,注意:需要配置grid.right一起使用,不然可能会被遮住\r\n axisLabel: {\r\n // 使用formatter格式化标签\r\n formatter: function (value) {\r\n if (value == '/') {\r\n return '';\r\n } else {\r\n return value;\r\n }\r\n },\r\n },\r\n },\r\n yAxis: [\r\n //双y轴,目的是使用第二个y轴来配置字符L显示在y轴下方箭头的位置\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n inverse: true, //y轴坐标轴向下\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [getLineObj(1, yDataSource1), getLineObj(2, yDataSource2), getLineObj(3, yDataSource3)],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 土基回弹模量\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart310: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //x和y轴的数据\r\n let xData = xDataArr[0], // [0.02, 0.04, 0.06, 0.08, 0.14, 0.18, 0.22, 0.26, 0.3, 0.34],\r\n yData = yDataArr[0]; // [6, 10, 12, 16, 20, 28, 36, 44, 54, 68];\r\n\r\n let xDataCl = [],\r\n yDataCl = [];\r\n xData.forEach((item, index) => {\r\n if (item != null && item != undefined && item != '/' && (item._code == null || item._code == undefined)) {\r\n xDataCl.push(item);\r\n yDataCl.push(yData[index]);\r\n }\r\n });\r\n xData = xDataCl;\r\n yData = yDataCl;\r\n\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (\r\n xData.every((item) => item == '/' || (item._code != null && item._code != undefined)) &&\r\n yData.every((item) => item == '/' || (item._code != null && item._code != undefined))\r\n ) {\r\n yValIsAllNull = true;\r\n xData = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 35,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 20,\r\n bottom: 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n top: 16,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'category',\r\n data: xData,\r\n axisLabel: {\r\n // 使用formatter格式化标签\r\n formatter: function (value) {\r\n if (value == '/') {\r\n return '';\r\n } else {\r\n return value;\r\n }\r\n },\r\n },\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n axisLine: {\r\n //设置x轴箭头效果\r\n symbol: ['none', 'arrow'], //默认是['none', 'none'],可以设置为['arrow', 'none']或['none', 'arrow']等来分别控制起始和结束的箭头\r\n symbolSize: 10, //箭头大小\r\n },\r\n splitLine: { show: true },\r\n position: 'top', //设置x轴在顶部显示\r\n name: 'p', //设置x轴显示的名称\r\n nameGap: 5, //坐标轴名称与轴线之间的距离\r\n nameLocation: 'end', //设置x轴显示的名称的位置在末端,注意:需要配置grid.right一起使用,不然可能会被遮住\r\n },\r\n yAxis: [\r\n //双y轴,目的是使用第二个y轴来配置字符L显示在y轴下方箭头的位置\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 30 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n inverse: true, //y轴坐标轴向下\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n //设置y轴箭头效果\r\n show: true, //y轴默认是不显示的\r\n symbol: ['arrow', 'none'], //默认是['none', 'none'],可以设置为['arrow', 'none']或['none', 'arrow']等来分别控制起始和结束的箭头\r\n symbolSize: 10, //箭头大小\r\n },\r\n },\r\n {\r\n //配置符号L的显示\r\n name: 'L',\r\n nameRotate: 0,\r\n nameLocation: 'end',\r\n nameGap: 5, //坐标轴名称与轴线之间的距离\r\n position: 'left',\r\n inverse: true, //y轴坐标轴向下\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n },\r\n data: yData,\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 布氏粘度计\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart330: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>, sheet: any) => {\r\n let lineData = JSON.parse(config.chartLinesJson);\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n let title = '', //config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //x和y轴的数据\r\n let xData = xDataArr[0],\r\n yData = yDataArr[0];\r\n\r\n //获取y轴趋势公式对象\r\n const gsS: any = EChartsUtilsComm.calcTrend(xData, yData, xData[0]);\r\n\r\n //黏度为0.15Pa·s、0.19Pa·s、0.25Pa·s、0.31Pa·s时的温度\r\n let wd015 = EChartsUtilsComm.getRound((0.15 - gsS.jj) / gsS.xl, 0),\r\n wd019 = EChartsUtilsComm.getRound((0.19 - gsS.jj) / gsS.xl, 0),\r\n wd025 = EChartsUtilsComm.getRound((0.25 - gsS.jj) / gsS.xl, 0),\r\n wd031 = EChartsUtilsComm.getRound((0.31 - gsS.jj) / gsS.xl, 0);\r\n\r\n if (wd015 == Infinity) {\r\n wd015 = 0;\r\n }\r\n if (wd019 == Infinity) {\r\n wd019 = 0;\r\n }\r\n if (wd025 == Infinity) {\r\n wd025 = 0;\r\n }\r\n if (wd031 == Infinity) {\r\n wd031 = 0;\r\n }\r\n //输出“拌合温度范围 ℃”和“压实成型温度范围 ℃”\r\n let wdBh = `${wd015}~${wd019}`,\r\n wdYs = `${wd025}~${wd031}`;\r\n // console.log('输出温度:', wdBh, wdYs);\r\n\r\n //设置Sheet单元格的值(拌合温度和压实成型温度范围)\r\n if (chartExtJson != null) {\r\n if (wd015 == 0 && wd019 == 0) {\r\n sheet.setValue(chartExtJson.bszdjBh.row, chartExtJson.bszdjBh.col, '/');\r\n } else {\r\n sheet.setValue(chartExtJson.bszdjBh.row, chartExtJson.bszdjBh.col, wdBh);\r\n }\r\n if (wd025 == 0 && wd031 == 0) {\r\n sheet.setValue(chartExtJson.bszdjYs.row, chartExtJson.bszdjYs.col, '/');\r\n } else {\r\n sheet.setValue(chartExtJson.bszdjYs.row, chartExtJson.bszdjYs.col, wdYs);\r\n }\r\n }\r\n\r\n //验证是否没有任何数据,以便控制显示y轴的名称的距离位置\r\n let yValIsAllNull = false;\r\n if (xData.every((item) => item == '/') && yData.every((item) => item == '/')) {\r\n yValIsAllNull = true;\r\n xData = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 10,\r\n left: !yValIsAllNull ? 30 : 25,\r\n right: 10,\r\n bottom: 20,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas.length > 0 ? datas[0].seriesName + '(' + datas[0].name + ')' + ':' + datas[0].value : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 18,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'category',\r\n data: xData,\r\n axisTick: {\r\n alignWithLabel: true, //使得刻度线和标签对齐\r\n },\r\n axisLabel: {\r\n // 使用formatter格式化标签\r\n formatter: function (value) {\r\n if (value == '/') {\r\n return '';\r\n } else {\r\n return value;\r\n }\r\n },\r\n },\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !yValIsAllNull ? 25 : 5,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n //splitNumber: 10, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n axisLine: {\r\n show: true, //y轴默认是不显示的\r\n },\r\n },\r\n ],\r\n series: [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n smooth: true, //平滑的线条\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle', //符号类型\r\n symbolSize: 6, //符号大小\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineData[0].lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineData[0].lineColor,\r\n },\r\n data: yData,\r\n },\r\n ],\r\n };\r\n\r\n return option;\r\n },\r\n /**\r\n * 液限碟式仪\r\n * @param config 折线配置\r\n * @param xDataArr x轴原始数据(二维数组)\r\n * @param yDataArr y轴原始数据(二维数组)\r\n * @returns 返回ECharts配置项\r\n */\r\n chart350: (config: EChartsUtilsConfigModel, xDataArr: Array<Array<any>>, yDataArr: Array<Array<any>>) => {\r\n let lineData = JSON.parse(config.chartLinesJson),\r\n lineColor = lineData[0].lineColor;\r\n\r\n //击数N(次)、含水率w(%)、y轴第一个趋势数据、y轴第二个趋势数据、25的趋势数据、y轴最小值、y轴最大值\r\n const jsN = [xDataArr[0][0], xDataArr[0][1]], // [18, 30],\r\n hsl = [yDataArr[0][0], yDataArr[0][1]], // [22.1, 11.5],\r\n //通过calcTrend获取y轴第一个趋势数据、y轴第二个趋势数据、25的趋势数据\r\n yVal1 = Number(EChartsUtilsComm.getRound(EChartsUtilsComm.calcTrend(jsN, hsl, jsN[0]).y, 0.1)),\r\n yVal2 = Number(EChartsUtilsComm.getRound(EChartsUtilsComm.calcTrend(jsN, hsl, jsN[1]).y, 0.1)),\r\n yVal25 = Number(EChartsUtilsComm.getRound(EChartsUtilsComm.calcTrend(jsN, hsl, 25).y, 0.1)),\r\n //通过calcTrend获取y轴的趋势数据,然后分别-2和+2\r\n yAxisMin = Math.floor(Number(yVal2)) - 2,\r\n yAxisMax = Math.floor(Number(yVal1)) + 2;\r\n\r\n let title = config.chartTitle,\r\n xName = config.chartXName,\r\n yName = config.chartYName,\r\n legendName = '图例1';\r\n\r\n //检测是否所有数据都为空\r\n let isAllNull = true;\r\n isAllNull = xDataArr[0].filter((item) => item != null && item != undefined && item != '/').length == 0;\r\n if (isAllNull) {\r\n isAllNull = yDataArr[0].filter((item) => item != null && item != undefined && item != '/').length == 0;\r\n }\r\n\r\n //x和y轴的字体大小\r\n const xyFontSize = 8;\r\n\r\n let seriesObjs = [\r\n {\r\n name: legendName,\r\n type: 'line',\r\n //设置数据点形状(实心),参考文档:https://echarts.apache.org/zh/option.html#series-line.symbol\r\n symbol: 'circle',\r\n z: 10, //控制曲线的浮动层级,避免在markLine下方被遮住\r\n //线条的颜色\r\n lineStyle: {\r\n color: lineColor,\r\n //线条类型(solid:实线、dashed:粗虚线、dotted:细虚线)\r\n // type: 'dotted',\r\n },\r\n //线条上数据点的颜色\r\n itemStyle: {\r\n color: lineColor,\r\n },\r\n connectNulls: true, //是否连接空数据\r\n data: [\r\n [0, null],\r\n [2, null],\r\n [3.5, null],\r\n [4.9, null],\r\n [5.9, null],\r\n [6.9, null],\r\n {\r\n //延长线1\r\n value: [10.4, yVal25 - (2.7 * (yVal25 - yVal1)) / 2.1],\r\n symbol: 'none', //隐藏线条上的数据点\r\n },\r\n [11, yVal1], //第一个点\r\n [11.8, null],\r\n [13.1, yVal25], //第二个点\r\n [14.6, yVal2], //第三个点\r\n {\r\n //延长线2\r\n value: [15.2, (2.1 / 1.5) * (yVal2 - yVal25) + yVal25],\r\n symbol: 'none', //隐藏线条上的数据点\r\n },\r\n [16.4, null],\r\n [17.4, null],\r\n [18.9, null],\r\n [19.8, null],\r\n [20.7, null],\r\n [21.6, null],\r\n [22.6, null],\r\n ],\r\n markPoint: {\r\n data: [\r\n {\r\n xAxis: 13.1,\r\n yAxis: yVal25,\r\n symbolOffset: [40, 25],\r\n label: {\r\n show: true,\r\n color: '#000',\r\n formatter: function (data) {\r\n //显示25这个坐标点数据\r\n return isAllNull ? '' : '( ' + 25 + ' , ' + data.data.yAxis + ')';\r\n },\r\n },\r\n itemStyle: { color: 'transparent' },\r\n },\r\n ],\r\n },\r\n markLine: {\r\n symbol: '', //取消箭头\r\n silent: true, //取消鼠标hover事件\r\n label: {\r\n //标线的文本,模拟x轴显示的内容\r\n position: 'start', //改变label位置\r\n // rotate: 45, //设置文字旋转度数(注意:ECharts官网文档居然没有rotate这个属性的说明)\r\n // backgroundColor:'#fff'\r\n // color:'#f00',//文字颜色\r\n formatter: (data) => {\r\n return data.name;\r\n },\r\n },\r\n lineStyle: { color: '#e0e6f1', type: 'solid' },\r\n data: [\r\n {\r\n name: '5',\r\n xAxis: 0,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n name: '6',\r\n xAxis: 2,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n name: '7',\r\n xAxis: 3.5,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n name: '8',\r\n xAxis: 4.9,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n name: '9',\r\n xAxis: 5.9,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n name: '10',\r\n xAxis: 6.9,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n //延长线1\r\n name: '',\r\n xAxis: 10.4,\r\n lineStyle: {\r\n opacity: 0,\r\n },\r\n },\r\n {\r\n //第一个点\r\n name: '',\r\n xAxis: 11,\r\n },\r\n {\r\n name: '20',\r\n xAxis: 11.8,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n //第二个点\r\n name: '25',\r\n xAxis: 13.1,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n //第三个点\r\n name: '30',\r\n xAxis: 14.6,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n //延长线2\r\n name: '',\r\n xAxis: 15.2,\r\n lineStyle: {\r\n opacity: 0,\r\n },\r\n },\r\n {\r\n name: '40',\r\n xAxis: 16.4,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n name: '50',\r\n xAxis: 17.4,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n {\r\n name: '',\r\n xAxis: 18.9,\r\n },\r\n {\r\n name: '',\r\n xAxis: 19.8,\r\n },\r\n {\r\n name: '',\r\n xAxis: 20.7,\r\n },\r\n {\r\n name: '',\r\n xAxis: 21.6,\r\n },\r\n {\r\n name: '100',\r\n xAxis: 22.6,\r\n label: {\r\n fontSize: xyFontSize,\r\n },\r\n },\r\n\r\n //横线\r\n [\r\n {\r\n coord: [0, yVal25],\r\n lineStyle: {\r\n color: '#529b2e',\r\n type: 'solid',\r\n },\r\n },\r\n { coord: [13.1, yVal25] },\r\n ],\r\n //纵线\r\n [\r\n {\r\n coord: [13.1, yAxisMin],\r\n lineStyle: {\r\n color: '#000',\r\n type: 'silid',\r\n },\r\n },\r\n { coord: [13.1, yVal25] },\r\n ],\r\n ],\r\n },\r\n },\r\n ];\r\n if (isAllNull) {\r\n seriesObjs = [];\r\n }\r\n\r\n let option = {\r\n grid: {\r\n // show: true,//是否显示外边框线\r\n // borderColor: '#f00',//外边框线颜色\r\n top: 25,\r\n left: 30,\r\n right: 10,\r\n bottom: 35,\r\n containLabel: true,\r\n },\r\n //提示框组件,参考文档:https://echarts.apache.org/zh/option.html#tooltip\r\n tooltip: {\r\n trigger: 'axis',\r\n formatter: function (datas, ticket) {\r\n return datas && datas[0].data.length > 1\r\n ? datas[0].data[1] == null\r\n ? ''\r\n : datas[0].seriesName + '(' + datas[0].data[0] + ')' + ':' + datas[0].data[1]\r\n : datas[0].data;\r\n },\r\n },\r\n //顶部的标题,参考文档:https://echarts.apache.org/zh/option.html#title\r\n title: [\r\n {\r\n show: true,\r\n text: title,\r\n left: 'center',\r\n top: 0,\r\n textStyle: {\r\n fontSize: 14,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n {\r\n show: true,\r\n text: xName,\r\n left: 'center',\r\n bottom: 0,\r\n textStyle: {\r\n fontSize: 12,\r\n fontWeight: 'normal',\r\n },\r\n },\r\n ],\r\n //图例,参考文档:https://echarts.apache.org/zh/option.html#legend\r\n legend: {\r\n show: false,\r\n left: 'right',\r\n data: [legendName],\r\n selected: {\r\n legendName: true, //显示\r\n },\r\n selectedMode: 'multiple', //用于控制图例的选择模式(single:单选、multiple:多选、false:禁止选择)\r\n },\r\n xAxis: {\r\n type: 'value',\r\n axisTick: { show: false }, //隐藏刻度线\r\n axisLabel: { show: false }, //隐藏刻度值\r\n //网格线,参考文档:https://echarts.apache.org/zh/option.html#xAxis.splitLine\r\n splitLine: {\r\n show: false, //隐藏分割线\r\n },\r\n min: 0,\r\n max: 23.5,\r\n },\r\n yAxis: [\r\n {\r\n type: 'value',\r\n name: yName,\r\n nameGap: !isAllNull ? 30 : 10,\r\n nameRotate: 90,\r\n nameLocation: 'middle',\r\n splitLine: {\r\n show: true,\r\n lineStyle: {\r\n color: '#e0e6f1', //'#e0e6f1',\r\n type: 'solid',\r\n },\r\n },\r\n splitNumber: 4, //设置y轴分隔的段数,如0~100之间默认情况可能会按照0、20、40、60……的间隔显示,设置相应的数字后就会根据实际情况显示的更细,如0、10、20、30……\r\n min: !isAllNull ? yAxisMin : null,\r\n max: yAxisMax,\r\n axisLabel: {\r\n show: !isAllNull ? true : false,\r\n fontSize: xyFontSize,\r\n },\r\n axisTick: {\r\n show: !isAllNull ? true : false,\r\n },\r\n },\r\n ],\r\n series: seriesObjs,\r\n };\r\n\r\n return option;\r\n },\r\n};\r\n","import * as echarts from 'echarts';\r\nimport { type CellModel } from '../types/sheet';\r\nimport { type EChartsUtilsConfigModel, type EChartsUtilsChartLinesJsonModel } from '../types/echarts';\r\nimport { EChartsUtilsAll } from './echarts-all';\r\n\r\n/**\r\n * ECharts图表工具类\r\n */\r\nexport const EChartsUtils = {\r\n /**\r\n * 创建图表\r\n * @param GC GC对象\r\n * @param spread 工作簿对象\r\n * @param sheet 工作表对象\r\n * @param config 折现配置\r\n * @param isHideChart 是否隐藏图表\r\n */\r\n create: async (\r\n GC: any,\r\n spread: any,\r\n sheet: any,\r\n config: EChartsUtilsConfigModel,\r\n isHideChart: boolean = false\r\n ): Promise<{\r\n fObj: any;\r\n fObjPosition: {\r\n x: number;\r\n y: number;\r\n w: number;\r\n h: number;\r\n };\r\n ecObj: echarts.ECharts;\r\n }> => {\r\n // 获取扩展配置\r\n const chartExtJson = config.chartExtJson == null || config.chartExtJson == undefined ? null : JSON.parse(config.chartExtJson);\r\n\r\n // 如果isShowCon配置存在,则验证isShowCon对应单元格的值是否和输入的配置chartExtJson.isShowVal相等,不相等的话,就不创建图表\r\n if (chartExtJson != null && chartExtJson.isShowCon != null && chartExtJson.isShowCon != undefined) {\r\n const conVal = sheet.getValue(chartExtJson.isShowCon.row, chartExtJson.isShowCon.col);\r\n\r\n if (conVal != chartExtJson.isShowVal) {\r\n sheet.floatingObjects.remove(config.chartId);\r\n return;\r\n }\r\n }\r\n\r\n // 获取图表单元格之上的所有行的高度总和、所有列的宽度总和、距离左侧的距离和图表所在单元格的高度\r\n let allRowsTotalHeight = 0,\r\n allRowsTotalWidth = 0,\r\n allRowsTotalLeft = 0,\r\n chartCellHeight = 0;\r\n for (let i = 0; i < config.row; i++) {\r\n allRowsTotalHeight += sheet.getRowHeight(i);\r\n }\r\n allRowsTotalHeight += sheet.getRowHeight(0, GC.Spread.Sheets.SheetArea.colHeader);\r\n for (let i = config.col; i < config.col + config.colCount; i++) {\r\n allRowsTotalWidth += sheet.getColumnWidth(i);\r\n }\r\n for (let i = 0; i < config.col; i++) {\r\n allRowsTotalLeft += sheet.getColumnWidth(i);\r\n }\r\n allRowsTotalLeft += sheet.getColumnWidth(0, GC.Spread.Sheets.SheetArea.rowHeader);\r\n for (let i = config.row; i < config.row + config.rowCount; i++) {\r\n chartCellHeight += sheet.getRowHeight(i);\r\n }\r\n\r\n // 设置浮动对象的呈现位置(实际情况根据需要进行调整)\r\n const fObjPosition = {\r\n x: allRowsTotalLeft - 40 + 2,\r\n y: allRowsTotalHeight - 20 + 2,\r\n w: allRowsTotalWidth - 6,\r\n h: chartCellHeight - 6,\r\n };\r\n\r\n // 获取浮动对象\r\n let fcObj = sheet.floatingObjects.get(config.chartId);\r\n\r\n // 浮动对象不存在时\r\n if (fcObj == null || fcObj == undefined) {\r\n // 创建浮动对象\r\n fcObj = new GC.Spread.Sheets.FloatingObjects.FloatingObject(config.chartId, fObjPosition.x, fObjPosition.y, fObjPosition.w, fObjPosition.h);\r\n\r\n // 不允许改变大小、不允许拖动\r\n fcObj.allowResize(false);\r\n fcObj.allowMove(false);\r\n\r\n // 将浮动对象添加到表单\r\n sheet.floatingObjects.add(fcObj);\r\n }\r\n // 浮动对象存在时\r\n else {\r\n fcObj.x(fObjPosition.x);\r\n fcObj.y(fObjPosition.y);\r\n fcObj.width(fObjPosition.w);\r\n fcObj.height(fObjPosition.h);\r\n }\r\n\r\n // 设置浮动对象的内容为divObj(当document.getElementById(config.chartId + '_ec')为null的时候)\r\n if (document.getElementById(config.chartId + '_ec') == null) {\r\n // 创建用于放置ECharts的div容器\r\n const divObj = document.createElement('div');\r\n divObj.setAttribute('style', `background-color:#fff;width:100%;height:100%;`);\r\n divObj.innerHTML = `<div id=\"${config.chartId}_ec\" style=\"width:100%;height:100%;\"></div>`;\r\n\r\n fcObj.content(divObj);\r\n }\r\n\r\n // 定义ECharts对象\r\n let ecObj: echarts.ECharts | null = null;\r\n\r\n // 获取ECharts对象的函数(这里使用到了Promise和setTimeout,原因是:ECharts所在的div可能还没有及时在浮动元素中渲染完成,导致ECharts展示部出来)\r\n const getEcObj = (): any => {\r\n return new Promise((resolve, reject) => {\r\n setTimeout(() => {\r\n // 初始化图表并获取ECharts对象\r\n resolve({ ecObj: EChartsUtils.initChart(spread, sheet, config, isHideChart) });\r\n }, 10);\r\n });\r\n };\r\n ecObj = (await getEcObj()).ecObj;\r\n\r\n return {\r\n fObj: fcObj,\r\n fObjPosition: fObjPosition,\r\n ecObj: ecObj,\r\n };\r\n },\r\n\r\n /**\r\n * 初始化图表\r\n * @param spread 工作簿对象\r\n * @param sheet 工作表对象\r\n * @param config 图表配置\r\n * @param isHideChart 是否隐藏图表\r\n */\r\n initChart: (spread: any, sheet: any, config: EChartsUtilsConfigModel, isHideChart: boolean = false): echarts.ECharts => {\r\n // 此时可能ECharts所在的div还没有渲染(如浮动元素还没有在可视区域的时候是不会创建的)\r\n if (document.getElementById(config.chartId + '_ec') == null) {\r\n return null;\r\n }\r\n\r\n // 获取多条x轴的数组(类似[[1,2,3,4],[1,2,3,4]])\r\n let xDataArr: any = [],\r\n yDataArr: any = [];\r\n\r\n // 获取多条x轴的数组(单元格原始数据,类似[['1.0','2.0','3.0'],['1.0','2.0','3.0']],此数据可能在有些情况下需要使用原始数据,如:原始数据为字符串的1.0,可能需要在x轴显示为1.0这个字符文本)\r\n let xDataArrSource: any = [],\r\n yDataArrSource: any = [];\r\n\r\n /**\r\n * 获取x或y轴单元格的值集合\r\n * @param spread 工作簿对象\r\n * @param sheet 工作表对象\r\n * @param sheetName x轴或y轴数据所在的Sheet名称,如果没有值,则说明是当前操作的Sheet\r\n * @param cells 单元格集合\r\n * @returns 返回x或y轴数据的值集合\r\n */\r\n const getCellVals = (\r\n spread: any,\r\n sheet: any,\r\n sheetName?: string,\r\n cells?: CellModel[]\r\n ): {\r\n dataOneArr: any[];\r\n dataOneSourceArr: any[];\r\n } => {\r\n let retArr: {\r\n dataOneArr: any[];\r\n dataOneSourceArr: any[];\r\n } = {\r\n dataOneArr: [],\r\n dataOneSourceArr: [],\r\n };\r\n\r\n // 获取x或y轴数据所在的Sheet对象(如果sheetName有值,则说明是跨Sheet的)\r\n let curSheet: any = null;\r\n if (sheetName != null && sheetName != undefined && sheetName.length > 0) {\r\n curSheet = spread.getSheetFromName(sheetName);\r\n }\r\n\r\n cells?.forEach((itemCell, indexCell) => {\r\n // 如果单元格的值为数字,就转换为数字,否则在后期参与各个ECharts图表计算的时候会出错\r\n const curCellVal = curSheet != null ? curSheet.getValue(itemCell.row, itemCell.col) : sheet.getValue(itemCell.row, itemCell.col);\r\n retArr.dataOneSourceArr.push(curCellVal);\r\n\r\n // 严格的数字验证(包括科学计数法)\r\n if (/^-?\\d+(\\.\\d+)?([eE][+-]?\\d+)?$/.test(curCellVal)) {\r\n retArr.dataOneArr.push(Number(curCellVal));\r\n } else {\r\n retArr.dataOneArr.push(curCellVal == null ? 0 : curCellVal);\r\n }\r\n });\r\n\r\n return retArr;\r\n };\r\n\r\n let lineData: EChartsUtilsChartLinesJsonModel[] = JSON.parse(config.chartLinesJson);\r\n lineData.forEach((item, index) => {\r\n let xDataOne: any = [],\r\n yDataOne: any = [];\r\n let xDataOneSource: any = [],\r\n yDataOneSource: any = [];\r\n\r\n const curItemValsX = getCellVals(spread, sheet, item.sheetNameX, item.xCells);\r\n xDataOne = curItemValsX.dataOneArr;\r\n xDataOneSource = curItemValsX.dataOneSourceArr;\r\n const curItemValsY = getCellVals(spread, sheet, item.sheetNameY, item.yCells);\r\n yDataOne = curItemValsY.dataOneArr;\r\n yDataOneSource = curItemValsY.dataOneSourceArr;\r\n\r\n xDataArr.push(xDataOne);\r\n yDataArr.push(yDataOne);\r\n xDataArrSource.push(xDataOneSource);\r\n yDataArrSource.push(yDataOneSource);\r\n });\r\n\r\n // 获取ECharts图表所在div容器\r\n const ecDom = document.getElementById(config.chartId + '_ec') as HTMLElement;\r\n\r\n // 获取ECharts对象\r\n let ecObj = echarts.getInstanceByDom(ecDom);\r\n if (ecObj == null || ecObj == undefined) {\r\n ecObj = echarts.init(ecDom, null, {\r\n renderer: 'canvas',\r\n useDirtyRect: false,\r\n });\r\n }\r\n\r\n let option;\r\n\r\n if (config.chartType == 10) {\r\n option = EChartsUtilsAll.chart10(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 11) {\r\n option = EChartsUtilsAll.chart11(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 12) {\r\n option = EChartsUtilsAll.chart12(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 13) {\r\n option = EChartsUtilsAll.chart13(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 14) {\r\n option = EChartsUtilsAll.chart14(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 15) {\r\n option = EChartsUtilsAll.chart15(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 16) {\r\n option = EChartsUtilsAll.chart16(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 30) {\r\n option = EChartsUtilsAll.chart30(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 50) {\r\n option = EChartsUtilsAll.chart50(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 70) {\r\n option = EChartsUtilsAll.chart70(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 90) {\r\n option = EChartsUtilsAll.chart90(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 110) {\r\n option = EChartsUtilsAll.chart110(config, xDataArr, yDataArr, xDataArrSource, yDataArrSource);\r\n } else if (config.chartType == 130) {\r\n option = EChartsUtilsAll.chart130(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 150) {\r\n option = EChartsUtilsAll.chart150(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 170) {\r\n option = EChartsUtilsAll.chart170(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 190) {\r\n option = EChartsUtilsAll.chart190(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 210) {\r\n option = EChartsUtilsAll.chart210(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 230) {\r\n option = EChartsUtilsAll.chart230(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 250) {\r\n option = EChartsUtilsAll.chart250(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 270) {\r\n option = EChartsUtilsAll.chart270(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 279 || config.chartType == 280 || config.chartType == 281) {\r\n option = EChartsUtilsAll.chart279_280_281(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 290) {\r\n option = EChartsUtilsAll.chart290(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 310) {\r\n option = EChartsUtilsAll.chart310(config, xDataArr, yDataArr);\r\n } else if (config.chartType == 330) {\r\n option = EChartsUtilsAll.chart330(config, xDataArr, yDataArr, sheet);\r\n } else if (config.chartType == 350) {\r\n option = EChartsUtilsAll.chart350(config, xDataArr, yDataArr);\r\n }\r\n\r\n if (option && typeof option === 'object') {\r\n //如果是隐藏的图表,则需要禁用ECharts的动画效果\r\n //原因是:如果ECharts使用了动画效果,图表渲染完成可能需要0.5秒,但是在导出ECharts统计图为图片的场景下时,可能在图表还没有渲染完成(动画效果还没结束)前就要获取图像了,此时可能就会造成获取到的图像内容丢失的情况\r\n if (isHideChart) {\r\n option.animation = false;\r\n }\r\n\r\n ecObj.setOption(option);\r\n }\r\n\r\n ecObj.setOption(option);\r\n\r\n return ecObj;\r\n },\r\n\r\n /**\r\n * 获取ECharts对象\r\n * @param chartId 图表ID\r\n * @returns 返回ECharts对象,如果不存在则返回null\r\n */\r\n getEChartsObj: (chartId: string): echarts.ECharts | null => {\r\n // 获取ECharts图表所在div容器\r\n const ecDom = document.getElementById(chartId + '_ec') as HTMLElement;\r\n\r\n // 获取ECharts对象\r\n let ecObj = echarts.getInstanceByDom(ecDom);\r\n if (ecObj == null || ecObj == undefined) {\r\n return null;\r\n }\r\n\r\n return ecObj;\r\n },\r\n};\r\n","// 导出Excel文件所需的第三方包\r\nimport { saveAs } from 'file-saver';\r\nimport { RegisterFontModel } from '../types/wookbook';\r\n\r\n/**\r\n * SpreadJS工作簿工具函数属性\r\n */\r\nexport const WorkbookUtils = {\r\n /**\r\n * 加载在线sjs文件\r\n * @param spread 工作簿对象\r\n * @param fileUrl 在线sjs文件地址\r\n * @param succFunc 文件打开成功后的回调函数,返回的第一个参数为spread工作簿对象\r\n * @param errorFunc 文件打开失败后的回调函数,返回的第一个参数为错误信息\r\n */\r\n loadSjsFile: async (spread: any, fileUrl: string, succFunc?: (spreadObj) => Promise<void>, errorFunc?: (error) => Promise<void>): Promise<void> => {\r\n // 获取文件响应结果\r\n const response = await fetch(fileUrl, { method: 'GET' });\r\n\r\n // 获取成功\r\n if (response.ok) {\r\n // 文件的字节流对象\r\n const blob = await response.blob();\r\n // 将Blob转换为File或Blob对象\r\n // const file = new File([blob], 'template.sjs', { type: 'application/octet-stream' });\r\n const sjsBlob = new Blob([blob], { type: 'application/zip' });\r\n\r\n // SpreadJS打开文件\r\n spread.open(\r\n sjsBlob,\r\n async () => {\r\n if (typeof succFunc === 'function') {\r\n await succFunc(spread);\r\n\r\n // // 或者使用then回调\r\n // succFunc(spread).then((ret) => {\r\n // // return ret;\r\n // });\r\n }\r\n },\r\n async (e: any) => {\r\n if (typeof errorFunc === 'function') {\r\n await errorFunc(e);\r\n }\r\n }\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * 获取工作簿的Blob对象\r\n * @param spread 工作簿实例\r\n * @returns 返回异步的Promise对象(Blob对象)\r\n * @example\r\n * const saveSpread = async (spread: any) => {\r\n * try {\r\n * const blob = await WorkbookUtils.getWookbookBlob(spread);\r\n * console.log('获取成功:', blob);\r\n * } catch (error) {\r\n * console.error('获取失败:', error);\r\n * }\r\n * };\r\n */\r\n getWookbookBlob: async (spread: any): Promise<Blob> => {\r\n return new Promise((resolve, reject) => {\r\n spread.save(\r\n // 成功回调\r\n (blob) => resolve(blob),\r\n // 失败回调\r\n (error) => reject(error)\r\n );\r\n });\r\n },\r\n\r\n /**\r\n * 打印所有工作表\r\n * @param GC GC对象\r\n * @param spread 工作簿实例\r\n */\r\n print: (GC: any, spread: any) => {\r\n // 得到Sheet个数\r\n const sheetCount = spread.getSheetCount();\r\n\r\n for (let i = 0; i < sheetCount; i++) {\r\n const sheet = spread.getSheet(i);\r\n\r\n // 获取每个工作表的打印信息\r\n let printInfo = sheet.printInfo();\r\n\r\n // 隐藏行和列的头部信息\r\n printInfo.showRowHeader(GC.Spread.Sheets.Print.PrintVisibilityType.hide);\r\n printInfo.showColumnHeader(GC.Spread.Sheets.Print.PrintVisibilityType.hide);\r\n\r\n // // 显示和隐藏打印区域的辅助线\r\n // spread.getSheet(0).isPrintLineVisible(true);\r\n // spread.getSheet(0).isPrintLineVisible(!true);\r\n\r\n // 设置打印区域,这里是固定的,在业务应用中需要根据实际情况修改打印区域\r\n printInfo.rowStart(0);\r\n printInfo.rowEnd(sheet.getRowCount()); //printInfo.rowEnd(41);\r\n printInfo.columnStart(0);\r\n printInfo.columnEnd(76);\r\n\r\n // 设置SpreadJS自身的边距为合适的距离\r\n printInfo.margin({\r\n /**\r\n * 设置默认边距\r\n * 单位是:以百分之一英寸为单位\r\n * 也就是,如果我们需要设置左边距为25mm,需要将25mm先转换为英寸,然后再用这个英寸*100就是要设置的边距\r\n * 即:(25mm转换为英寸的结果)*100\r\n *\r\n * 参考文档:\r\n * https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheets.Print.PrintInfo#margin\r\n * https://www.67tool.com/converter/length\r\n */\r\n // 纵表\r\n top: 0.5905511999999999 * 100,\r\n bottom: 0.5905511999999999 * 100,\r\n left: 0.9842520000000001 * 100,\r\n right: 0.5905511999999999 * 100,\r\n\r\n // // 横表\r\n // top: 0.9842520000000001 * 100,\r\n // bottom: 0.5905511999999999 * 100,\r\n // left: 0.5905511999999999 * 100,\r\n // right: 0.5905511999999999 * 100,\r\n\r\n // top: 0,\r\n // bottom: 0,\r\n // left: 0,\r\n // right: 0,\r\n header: 0,\r\n footer: 0,\r\n });\r\n\r\n // 设置打印的纸张\r\n printInfo.paperSize(new GC.Spread.Sheets.Print.PaperSize(GC.Spread.Sheets.Print.PaperKind.a4));\r\n\r\n sheet.printInfo(printInfo);\r\n }\r\n\r\n // 调用打印方法\r\n spread.print();\r\n },\r\n\r\n /**\r\n * 导出为Excel文件\r\n * 如支持导出自定义公式的值等功能\r\n * @param GC Spread的GC对象\r\n * @param spread 原始Spread对象\r\n * @param fileName 导出的文件名称,不传则为第一个工作表的名称\r\n */\r\n exportToExcel: (GC: any, spread: any, fileName: string = '') => {\r\n // 导出模板为JSON对象,此处设置了参数includeBindingSource,改参数代表包含数据绑定的值\r\n const json = spread.toJSON({ includeBindingSource: true });\r\n\r\n // 需要移除的自定义公式名称集合(该变量的作用是,在导出Excel前,将工作簿中所有的自定义公式移除掉,其他内置的公式保留)\r\n const removeCustomFormulas = ['YJMAX', 'YJMIN', 'YJMID', 'YJGETNUM', 'YJGETS', 'YJGETCV', 'YJINTERPOLATIONMETHOD', 'YJINTERPOLATIONMETHOD_Y'];\r\n\r\n // 临时工作簿\r\n const tempSpread = new GC.Spread.Sheets.Workbook();\r\n tempSpread.fromJSON(json);\r\n\r\n // 暂停绘制\r\n tempSpread.suspendPaint();\r\n\r\n // 获取Sheet数量\r\n const sheetCount = tempSpread.getSheetCount();\r\n\r\n for (let iSheet = 0; iSheet < sheetCount; iSheet++) {\r\n // 当前工作表\r\n const sheet = tempSpread.getSheet(iSheet);\r\n\r\n // 暂停公式的计算,提高性能\r\n sheet.suspendCalcService();\r\n\r\n for (var i = 0; i < sheet.getRowCount(); i++) {\r\n for (var j = 0; j < sheet.getColumnCount(); j++) {\r\n // 获取单元格的公式\r\n const cellFormula = sheet.getFormula(i, j);\r\n\r\n // 如果cellFormula不为null或undefined,则说明该单元格引用了公式\r\n if (cellFormula != null && cellFormula != undefined && removeCustomFormulas.some((item) => cellFormula.indexOf(item) > -1)) {\r\n // 获取单元格的值\r\n const cellVal = sheet.getValue(i, j);\r\n\r\n // 移除单元格引用的公式\r\n sheet.getCell(i, j).formula(undefined);\r\n\r\n // 设置单元格的值\r\n sheet.setValue(i, j, cellVal);\r\n }\r\n }\r\n }\r\n\r\n // 恢复计算\r\n sheet.resumeCalcService(false);\r\n }\r\n\r\n // 恢复绘制\r\n tempSpread.resumePaint();\r\n\r\n if (fileName == '') {\r\n fileName = tempSpread.getSheet(0).name();\r\n }\r\n\r\n let options = {\r\n fileType: GC.Spread.Sheets.FileType.excel,\r\n includeBindingSource: true,\r\n includeStyles: true,\r\n includeFormulas: true,\r\n saveAsView: false,\r\n rowHeadersAsFrozenColumns: false,\r\n columnHeadersAsFrozenRows: false,\r\n includeAutoMergedCells: false,\r\n includeCalcModelCache: false,\r\n includeUnusedNames: true,\r\n includeEmptyRegionCells: true,\r\n };\r\n\r\n tempSpread.export(\r\n (blob: any) => {\r\n saveAs(blob, `${fileName}.xlsx`);\r\n },\r\n () => {},\r\n options\r\n );\r\n\r\n // 销毁临时工作簿\r\n tempSpread.destroy();\r\n },\r\n\r\n /**\r\n * 合并多个工作簿并导出Excel(同时返回合并后的工作簿实例)\r\n * @param GC Spread的GC对象\r\n * @param spreads 工作簿实例集合\r\n * @param exportName 导出的文件名称,不传则为第一个Sheet的名称\r\n * @returns 合并后的工作簿实例\r\n */\r\n mergeWorkbooksToExcel: async (GC: any, spreads: any[], exportName?: string) => {\r\n if (!spreads || spreads.length == 0) {\r\n return;\r\n }\r\n\r\n // 主工作簿\r\n const mainWorkbook = new GC.Spread.Sheets.Workbook();\r\n\r\n // 暂停绘制\r\n mainWorkbook.suspendPaint();\r\n\r\n mainWorkbook.fromJSON(spreads[0].toJSON());\r\n\r\n for (let i = 1; i < spreads.length; i++) {\r\n // 临时工作簿\r\n const tempSpread = new GC.Spread.Sheets.Workbook();\r\n\r\n // 暂停绘制\r\n tempSpread.suspendPaint();\r\n\r\n tempSpread.fromJSON(spreads[i].toJSON());\r\n\r\n // 重命名样式表\r\n const styleSign = i + '';\r\n tempSpread.getNamedStyles().forEach(function (namedStyle) {\r\n namedStyle.name = `new_${styleSign}_${namedStyle.name}`;\r\n mainWorkbook.addNamedStyle(namedStyle);\r\n });\r\n\r\n // 当前临时工作簿的第一个工作表\r\n let tempSheet = tempSpread.getSheet(0);\r\n // 导出为JSON字符串\r\n let tempSheetJSON = JSON.stringify(tempSheet.toJSON());\r\n // 替换当前JSON字符串的style或parentName配置,目的是重命名样式名称,和上述的tempSpread重命名样式表保持一致\r\n tempSheetJSON = tempSheetJSON.replace(/\"style\":\"/g, '\"style\":\"new_' + styleSign + '_');\r\n tempSheetJSON = tempSheetJSON.replace(/\"parentName\":\"/g, '\"parentName\":\"new_' + styleSign + '_');\r\n\r\n // 创建新的工作表并添加到主工作簿中\r\n let newSheet = new GC.Spread.Sheets.Worksheet(`newSheet${styleSign}_`);\r\n mainWorkbook.addSheet(mainWorkbook.getSheetCount(), newSheet);\r\n newSheet.fromJSON(JSON.parse(tempSheetJSON));\r\n\r\n // 获取新创建的工作表newSheet的行数\r\n const newSheetRowCount = newSheet.getRowCount();\r\n\r\n // 当前操作的主工作簿的Sheet\r\n const curMainSheet = mainWorkbook.getSheet(0);\r\n\r\n // 如果是表尾,则在表单的最后一行开始添加\r\n curMainSheet.addRows(curMainSheet.getRowCount(), newSheetRowCount);\r\n\r\n // 设置复制和粘贴的范围\r\n let pastedRangesStartRow = curMainSheet.getRowCount() - newSheetRowCount;\r\n\r\n const fromRanges = [new GC.Spread.Sheets.Range(-1, -1, -1, -1)],\r\n pastedRanges = [new GC.Spread.Sheets.Range(pastedRangesStartRow, 0, newSheetRowCount, newSheet.getColumnCount())];\r\n mainWorkbook.commandManager().execute({\r\n cmd: 'clipboardPaste',\r\n sheetName: curMainSheet.name(), //此参数的作用是:粘贴到某个名称的Sheet中\r\n fromSheet: newSheet,\r\n fromRanges: fromRanges,\r\n pastedRanges: pastedRanges,\r\n isCutting: false,\r\n clipboardText: '',\r\n pasteOption: GC.Spread.Sheets.ClipboardPasteOptions.all,\r\n });\r\n\r\n // 删除最后的Sheet,也就是newSheet对象\r\n mainWorkbook.removeSheet(mainWorkbook.getSheetCount() - 1);\r\n\r\n // 取消选中状态\r\n curMainSheet.clearSelection();\r\n\r\n // 恢复绘制\r\n tempSpread.resumePaint();\r\n\r\n // 销毁临时工作簿\r\n tempSpread.destroy();\r\n }\r\n\r\n // 获取当前活动的工作表\r\n const sheet = mainWorkbook.getActiveSheet();\r\n\r\n // 设置缩放比为1\r\n sheet.zoom(1);\r\n\r\n // 隐藏行和列的头部\r\n sheet.options.rowHeaderVisible = true;\r\n sheet.options.colHeaderVisible = true;\r\n\r\n // 隐藏Tab、水平和垂直的滚动条\r\n mainWorkbook.options.tabStripVisible = true;\r\n mainWorkbook.options.showHorizontalScrollbar = true;\r\n mainWorkbook.options.showVerticalScrollbar = true;\r\n\r\n // 滚动条是否与活动工作表的最后一行和最后一列对齐(避免滚动的时候出现灰色区域)\r\n mainWorkbook.options.scrollbarMaxAlign = false;\r\n\r\n // 恢复绘制\r\n mainWorkbook.resumePaint();\r\n\r\n // 导出Excel文件\r\n WorkbookUtils.exportToExcel(GC, mainWorkbook, exportName);\r\n\r\n return mainWorkbook;\r\n },\r\n\r\n /**\r\n * 注册字体(主要为导出PDF使用)\r\n * @param GC Spread的GC对象\r\n * @param regFonts 字体配置集合\r\n */\r\n registerFont: async (GC: any, regFonts: RegisterFontModel[]) => {\r\n // 基于fetch\r\n return new Promise(async (resolve, reject) => {\r\n try {\r\n if (!regFonts || regFonts.length == 0) {\r\n resolve(null);\r\n }\r\n\r\n for (let i = 0; i < regFonts.length; i++) {\r\n const font = regFonts[i];\r\n\r\n const response = await fetch(font.url, { method: 'GET' });\r\n\r\n if (response.ok) {\r\n const blob = await response.blob();\r\n\r\n var reader = new FileReader();\r\n reader.readAsArrayBuffer(blob);\r\n reader.onload = function (e) {\r\n var fontArrayBuffer = reader.result;\r\n\r\n var fonts = {};\r\n fonts[font.type] = fontArrayBuffer;\r\n GC.Spread.Sheets.PDF.PDFFontsManager.registerFont(font.name, fonts);\r\n\r\n resolve(blob);\r\n };\r\n }\r\n }\r\n } catch (error) {\r\n reject(error);\r\n }\r\n });\r\n\r\n // 基于XMLHttpRequest\r\n // return new Promise((resolve, reject) => {\r\n // try {\r\n // if (!regFonts || regFonts.length == 0) {\r\n // resolve(null);\r\n // }\r\n\r\n // for (let i = 0; i < regFonts.length; i++) {\r\n // const font = regFonts[i];\r\n\r\n // var xhr = new XMLHttpRequest();\r\n // xhr.open('GET', font.url, true);\r\n // xhr.responseType = 'blob';\r\n\r\n // xhr.onload = function (e) {\r\n // if (this.status == 200) {\r\n // var blob = this.response;\r\n\r\n // var reader = new FileReader();\r\n // reader.onload = function (e) {\r\n // var fontArrayBuffer = reader.result;\r\n\r\n // var fonts = {};\r\n // fonts[font.type] = fontArrayBuffer;\r\n // GC.Spread.Sheets.PDF.PDFFontsManager.registerFont(font.name, fonts);\r\n\r\n // resolve(blob);\r\n // };\r\n // reader.readAsArrayBuffer(blob);\r\n // }\r\n // };\r\n\r\n // xhr.send();\r\n // }\r\n // } catch (error) {\r\n // reject(error);\r\n // }\r\n // });\r\n },\r\n};\r\n"],"names":["orderByJson","groupByJson","forEachJson","chunkJson","math","echarts","saveAs"],"mappings":"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","x_google_ignoreList":[2]}
|