/*** @description 获取小于0的小数中的数字* @param { Number } decimal 小数* @returns { result, digit } 小数点后不包括0的数字,小数点后的位数*/const getNumberFromDecimal = (decimal) => {const str = decimal.toString();if (typeof decimal !== 'number' || !str.includes('.')) {// eslint-disable-next-line @typescript-eslint/no-throw-literalthrow '参数不是小数';}if (decimal >= 1) {// eslint-disable-next-line @typescript-eslint/no-throw-literalthrow '参数大于等于1';}for (let i = 0; i < str.length; i += 1) {if (str[i] !== '0' && str[i] !== '.') {return { result: str.substring(i, str.length), digit: i - 2 };}}return null;};const SPLIT_NUMBER = 4; // 分割段数/*** @description 根据实际最大值,计算轴的最大值* @param { String} value 实际的最大值(字符串的数字)* @returns { Number } 计算后的最大值*/const computeMax = (value) => {if (Math.floor(value) === 0) {// 是小数// eslint-disable-next-line prefer-constlet { result, digit } = getNumberFromDecimal(Number(value)) as any;// eslint-disable-next-line @typescript-eslint/no-unused-varsresult = result.substr(0, 2); // 取前两位// eslint-disable-next-line no-restricted-propertiesreturn Number(Math.ceil(value / SPLIT_NUMBER) * SPLIT_NUMBER) / Math.pow(10, digit - 1 + 2);}const roundValue = Math.floor(value).toString();if (roundValue.length > 2) {// 两位以上const topTwo = +roundValue.substr(0, 2);const len = roundValue.length;// eslint-disable-next-line no-restricted-propertiesreturn Number(Math.ceil(topTwo / SPLIT_NUMBER) * SPLIT_NUMBER) * Math.pow(10, len - 2);}return Number(Math.ceil(value / SPLIT_NUMBER) * SPLIT_NUMBER);};const getMaxValue = () => {const yList1 = _.cloneDeep(data).sort((a, b) => b.totalCount - a.totalCount).map((item) => item.totalCount);const yList2 = _.cloneDeep(data).sort((a, b) => b.money - a.money).map((item) => item.money);return {leftMax: yList1[0],rightMax: yList2[0],};};option.yAxis.forEach((y: any, index) => {// leftMax, rightMax的值,请自行根据自身数据计算,即:默认配置下的最大值const { leftMax, rightMax } = getMaxValue();// index === 0时是左轴,1是右轴let max = index ? rightMax : leftMax;max = max === null ? 0 : computeMax(max);// eslint-disable-next-line no-param-reassigny.splitNumber = SPLIT_NUMBER;// eslint-disable-next-line no-param-reassigny.interval = max / SPLIT_NUMBER;// eslint-disable-next-line no-param-reassigny.max = max;});chartDom.setOption(option);
