function getTransparentColor(colorString, opacity) { // 将传入的颜色字符串转换成 RGB 格式 const hexToRgb = (hex) => { const shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i; hex = hex.replace(shorthandRegex, (m, r, g, b) => { return r + r + g + g + b + b; }); const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); return result ? { r: parseInt(result[1], 16), g: parseInt(result[2], 16), b: parseInt(result[3], 16) } : null; }; // 将 RGB 颜色转换成带有透明度的 rgba 格式 const rgbaColor = (color, alpha) => { return `rgba(${color.r}, ${color.g}, ${color.b}, ${alpha})`; }; // 解析传入的颜色字符串 const rgbColor = hexToRgb(colorString); // 如果颜色解析成功,则返回带有指定透明度的颜色 if (rgbColor) { return rgbaColor(rgbColor, opacity); } else { // 如果颜色解析失败,则返回原始颜色字符串 return colorString; } } const baseImg = `data:image/jpg;base64,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 AAAAAElFTkSuQmCC` var tong = [{ qi: '[2#滚筒]', zhi: 'N#' }, { qi: '[2#滚筒]', zhi: 'W#' }, { qi: '[3#滚筒]', zhi: 'A#' }, { qi: '[4#滚筒]', zhi: 'Z#' }, { qi: '[5#滚筒]', zhi: 'F#' }, { qi: '[6#滚筒]', zhi: 'G#' }, { qi: '[7#滚筒]', zhi: 'W#' }, { qi: '[8#滚筒]', zhi: 'G#' }, { qi: '[9#滚筒]', zhi: 'W#' }, { qi: '[10#滚筒]', zhi: 'G#' },] //后端传过来的x轴例如A# var phabetEds = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' let darkColors = [ '#FF6347', // 火红色 '#FF00FF', // 鲜粉色 '#00CED1', // 蓝绿色 '#0000FF', // 纯蓝色 '#FFD700', // 金黄色 '#32CD32', // 鲜绿色 '#9400D3', // 暗紫色 '#FFA500', // 橙色 '#FF1493', // 深粉色 '#8A2BE2', // 紫罗兰色 '#00FF7F', // SpringGreen '#B22222', // 红褐色 '#9932CC', // 深紫罗兰色 '#20B2AA', // 浅海洋绿 '#0000FF', // 纯蓝色 '#FF1493', // 深粉色 '#32CD32', // 鲜绿色 '#9932CC', // 深紫罗兰色 '#FFA500', // 橙色 '#FF6347' // 火红色 ]; function getLetters(num) { if (num) {//获取26个字母型号 let uppercaseAlphabet = ''; for (let i = 65; i <= 90; i++) { uppercaseAlphabet += String.fromCharCode(i); } return phabetEds.length ? phabetEds : uppercaseAlphabet } else {//计算轴有多少个 let arry = [] for (let j = 0; j < tong.length; j++) { if (arry.findIndex(item => item == tong[j].qi) == -1) { arry.push(tong[j].qi) } } return arry.length } } var ZiMu = [], phabet = getLetters(1), yTotal = getLetters(0) let yNums = 180, LineNode = [], links = []//顶部轴上的 let medium = 450//省的线段重合的介质 for (let j = 0; j < tong.length; j++) { //找有没有相同的 let obj = ZiMu.find(item => item.name === tong[j].qi) if (!tong[j].color) {//有color颜色就不创建新颜色,如果没有就创建新的 tong[j].color = darkColors[tong.findIndex(obj => obj.qi === tong[j].qi) == -1 ? j : tong.findIndex(obj => obj.qi === tong[j].qi)] } if (typeof obj != "object") { ZiMu.push({ name: tong[j].qi, value: [yNums, 500], symbol: 'image://' + baseImg, symbolSize: [60, 40], itemStyle: { color: '#02AEFD', borderColor: '#02AEFD', // borderWidth: 3, }, label: { show: true, position: 'top', distance: 8, // 距离图片的距离 formatter: function (params) { return params.name; // 显示 name 字段 }, color: '#000', // 字体颜色 fontWeight: 'bold', // 字体粗细 } }) medium = medium - 20//线路不重复 LineNode.push({//点位 id: `${tong[j].qi}+${medium}`, name: '', value: [yNums, medium], symbolSize: [0, 0] }) links.push(//线路 { source: tong[j].qi, target: `${tong[j].qi}+${medium}`, lineStyle: { color: tong[j].color, type: 'dashed', width: 2, }, z: 1 }, { source: tong[j].qi, target: `${tong[j].qi}+${medium}`, lineStyle: { color: getTransparentColor(tong[j].color, 0.9), width: 10, }, z: 0 }) yNums = yNums + 40 + 120 } tong[j].y = medium } let nums = 60//横坐标字母间隔起始值 for (let i = 0; i < phabet.length; i++) { let colorOpn = true//控制A#型号的颜色 for (let j = 0; j < tong.length; j++) { if ((phabet[i] + '#') === tong[j].zhi) { LineNode.push({//点位 id: `${tong[j].y}+${nums}`, name: '', value: [nums, tong[j].y], symbolSize: [0, 0] }) colorOpn = false links.push(//线路 { source: `${tong[j].qi}+${tong[j].y}`, target: `${tong[j].y}+${nums}`, lineStyle: { color: tong[j].color, type: 'dashed', width: 2, }, z: 1 }, { source: `${tong[j].qi}+${tong[j].y}`, target: `${tong[j].y}+${nums}`, lineStyle: { color: getTransparentColor(tong[j].color, 0.9), width: 10, }, z: 0 }, { source: `${tong[j].y}+${nums}`, target: phabet[i] + "#", lineStyle: { color: tong[j].color, type: 'dashed', width: 2, }, z: 1 }, { source: `${tong[j].y}+${nums}`, target: phabet[i] + "#", lineStyle: { color: getTransparentColor(tong[j].color, 0.9), width: 10, }, z: 0 }, ) } } ZiMu.push({ name: phabet[i] + "#", value: [nums, 0], symbol: 'rect', symbolSize: [20, 20], itemStyle: { color: colorOpn ? 'rgba(65, 217, 128, 0.5)' : '#41D980', // 设置半透明的背景颜色 borderColor: '#41D980', // 设置边框颜色 borderWidth: 1,// 设置边框宽度 // borderRadius: 1 // 设置圆角半径 }, label: { show: true, formatter: function (params) { return params.name; // 显示 name 字段 }, color: colorOpn ? '#41D980' : '#000', // 字体颜色 // fontWeight: 'bold', // 字体粗细 } }) nums = nums + 40 + 18.5 } data = [...ZiMu, ...LineNode]; option = { grid: { left: 30, right: 0 }, xAxis: { // min: 0, // max: chartDom.clientWidth || 1000, show: false, type: 'value', }, yAxis: { // min: 0, // max: chartDom.clientHeight || 1000, show: false, type: 'value', }, series: [ { type: 'graph', coordinateSystem: 'cartesian2d', label: { show: true, position: 'inside', // inside // 文字 color: '#fff', fontFamily: 'Microsoft YaHei', fontSize:12, distance: 20, // 距离元素距离 formatter: function (item) { return item.data.name; }, }, data: data, links: links, }, { type: 'lines', polyline: true, coordinateSystem: 'cartesian2d', lineStyle: { type: 'solid', width: 0, }, }, ], };