From e986bbc5d5b2a7b17fc30d1f42920717ce3ffcd6 Mon Sep 17 00:00:00 2001 From: lishenfeng Date: Mon, 24 Nov 2025 17:27:36 +0800 Subject: [PATCH] =?UTF-8?q?feat():=20=E7=BB=99=E6=B8=97=E5=8E=8B=E7=AE=A1?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E7=AE=A1=E5=8F=A3=E9=AB=98=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + src/views/gcaqjc/gcaqfx/jrx/jrxOptions.js | 276 ++++++++++++++++------ src/views/gcaqjc/gcaqfx/jrx/pieMonth.js | 40 ++++ 3 files changed, 245 insertions(+), 72 deletions(-) create mode 100644 src/views/gcaqjc/gcaqfx/jrx/pieMonth.js diff --git a/.gitignore b/.gitignore index 3ad6a67d1..db6f4a5f1 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ yarn-debug.log* yarn-error.log* yarn.lock build.7z +build1.zip #ai .serena/ diff --git a/src/views/gcaqjc/gcaqfx/jrx/jrxOptions.js b/src/views/gcaqjc/gcaqfx/jrx/jrxOptions.js index 94b40e9f7..07b8a2394 100644 --- a/src/views/gcaqjc/gcaqfx/jrx/jrxOptions.js +++ b/src/views/gcaqjc/gcaqfx/jrx/jrxOptions.js @@ -1,23 +1,23 @@ - -export default function jrxOptions(data = {}, type = "1",typeName='1') { +import pieMonth from "./pieMonth"; +export default function jrxOptions(data = {}, type = "1", typeName = '1') { // debugger - console.log("data",data); + console.log("data", data); // data.rz = 112 // 根据断面类型确定y轴刻度以及最大和最小 - const yMin = type == "3" ? 70 : type == "2" ? 67 : - type == '1' ? 59 : 99; - const yMax = type == "3" ? 129 : type == "2" ? 117 + const yMin = type == "3" ? 70 : type == "2" ? 67 : + type == '1' ? 59 : 99; + const yMax = type == "3" ? 129 : type == "2" ? 117 : type == "1" ? 118 : 116; - + // 断面上的渗压管 const type1 = ["UPD1", "UPD4", "UPD7", "UPD16"]; const type2 = ["UPD10", "UPD13"]; const type3 = ["UPD2", "UPD5", "UPD8", "UPD17"]; const type4 = ["UPD11", "UPD14"]; - const type5 = ["UPD3", "UPD6", "UPD9"]; - const type6 = ["UPD12", "UPD15"]; - const type7 = ["UPD24", "UPD26","UPD28"]; //UPD24:109.87,UPD26:109.75,UPD28:109.43 - const type8 = ["UPD25", "UPD27","UPD29"]; //UPD25:109.87,UPD27:109.75,UPD29:109.43 + const type5 = ["UPD3", "UPD6", "UPD12"]; + const type6 = ["UPD9", "UPD15"]; + const type7 = ["UPD24", "UPD26", "UPD28"]; //UPD24:109.87,UPD26:109.75,UPD28:109.43 + const type8 = ["UPD25", "UPD27", "UPD29"]; //UPD25:109.87,UPD27:109.75,UPD29:109.43 // 管底高程 const alltype = typeName == "1" ? type1 : @@ -28,8 +28,7 @@ export default function jrxOptions(data = {}, type = "1",typeName='1') { typeName == "6" ? type6 : typeName == "7" ? type7 : typeName == "8" ? type8 : - []; - + []; // 字体颜色 const textColor = '#666' const imageUrl370 = `${process.env.PUBLIC_URL}/assets/images/zb370.png ` @@ -37,8 +36,8 @@ export default function jrxOptions(data = {}, type = "1",typeName='1') { const imageUrl130 = `${process.env.PUBLIC_URL}/assets/images/zb130.png ` const imageUrl010 = `${process.env.PUBLIC_URL}/assets/images/fb010.png ` const imageUrl = type == "1" ? imageUrl130 : - type == "2" ? imageUrl250 : - type == "3" ? imageUrl370 : imageUrl010 + type == "2" ? imageUrl250 : + type == "3" ? imageUrl370 : imageUrl010 ; const rule = `${process.env.PUBLIC_URL}/assets/images/ruler.png ` @@ -59,76 +58,173 @@ export default function jrxOptions(data = {}, type = "1",typeName='1') { type == "1" ? [[0, 88], [10, 88], [xValue, data?.rz]] : - [[0, 102], [4, 102], [xValue, data?.rz]] + [[0, 102], [4, 102], [xValue, data?.rz]] : []; // gz1、gz2、gz3、gz4分别为渗压管 - const gz1 = data[alltype[0]] ? - type == "3" ? [[typeName =='5' ?47:51, typeName =='5' ?90.50:81.85], [typeName =='5' ?47:51, data[alltype[0]]]] : - type == "2" ? [[typeName =='3' ? 45.5:50, typeName =='3' ?84.41:83.78], [typeName =='3' ? 45.5:50, data[alltype[0]]]] : - type == "1" ? [[typeName =='1' ?44:51.5, typeName =='1' ?80.11:78.64], [typeName =='1' ?44:51.5, data[alltype[0]]]] : - [[55, typeName =='7'?109.08:108.77], [55, data[alltype[0]]]] - : []; - - - const gz2 = data[alltype[1]] ? - type == "3" ? [[typeName =='5' ?51:62, typeName =='5' ?90.94:84.85], [typeName =='5' ?51:62, data[alltype[1]]]] : - type == "2" ? [[typeName =='3' ?50:61, typeName =='3' ?84.04:81.05], [typeName =='3' ?50:61, data[alltype[1]]]] : - type == "1" ? [[typeName =='1' ?51.5:58, typeName =='1' ?78.61:82.75], [typeName =='1' ?51.5:58, data[alltype[1]]]] : - [[65, typeName =='7'?109.32:109.36], [65, data[alltype[1]]]] : - []; - const gz3 = data[alltype[2]] ? - type == "3" ? [[62, 92.65], [62, data[alltype[2]]]] : - type == "2" ? [[61, 83.93], [61, data[alltype[2]]]] : - type == "1" ? [[58, 81.38], [58, data[alltype[2]]]] : - [[77, typeName =='7'?109.01:108.87], [77, data[alltype[2]]]] : []; + // const gz1 = data[alltype[0]] ? + // type == "3" ? [[typeName == '5' ? 47 : 51, typeName == '5' ? 90.50 : 81.85], [typeName == '5' ? 47 : 51, data[alltype[0]]]] : + // type == "2" ? [[typeName == '3' ? 45.5 : 50, typeName == '3' ? 84.41 : 83.78], [typeName == '3' ? 45.5 : 50, data[alltype[0]]]] : + // type == "1" ? [[typeName == '1' ? 44 : 51.5, typeName == '1' ? 80.11 : 78.64], [typeName == '1' ? 44 : 51.5, data[alltype[0]]]] : + // [[55, typeName == '7' ? 109.08 : 108.77], [55, data[alltype[0]]]] + // : []; + + + // const gz2 = data[alltype[1]] ? + // type == "3" ? [[typeName == '5' ? 51 : 62, typeName == '5' ? 90.94 : 84.85], [typeName == '5' ? 51 : 62, data[alltype[1]]]] : + // type == "2" ? [[typeName == '3' ? 50 : 61, typeName == '3' ? 84.04 : 81.05], [typeName == '3' ? 50 : 61, data[alltype[1]]]] : + // type == "1" ? [[typeName == '1' ? 51.5 : 58, typeName == '1' ? 78.61 : 82.75], [typeName == '1' ? 51.5 : 58, data[alltype[1]]]] : + // [[65, typeName == '7' ? 109.32 : 109.36], [65, data[alltype[1]]]] : + // []; + + // const gz3 = data[alltype[2]] ? + // type == "3" ? [[62, 92.65], [62, data[alltype[2]]]] : + // type == "2" ? [[61, 83.93], [61, data[alltype[2]]]] : + // type == "1" ? [[58, 81.38], [58, data[alltype[2]]]] : + // [[77, typeName == '7' ? 109.01 : 108.87], [77, data[alltype[2]]]] : []; + + + // const gz4 = data[alltype[3]] ? + // type == "3" ? [] : + // type == "2" ? [[79, 79.57], [79, data[alltype[3]]]] : + // type == "1" ? [[79, 79.09], [79, data[alltype[3]]]] : + // [[85, 166], [85, data[alltype[3]]]] : []; + + // 心墙中心两点(插入到连线中) + const xCenter = type === "3" ? 49 : (type === "2" ? 47.5 : (type === "1" ? 47.5 : 60)); + // 简化规则:typeName 为 2/4/6 → 渗压管都在右侧;FB0+010/FB0+030(typeName 为 7/8)不绘制心墙连线 + const rightSideOnly = ['2', '4', '6'].includes(typeName); + const skipCenterLine = ['7', '8'].includes(typeName); + + // 左/右管取值(右侧优先 alltype[0],无则 alltype[1]) + const leftSyg = rightSideOnly ? undefined : data[alltype[0]]; + const rightSyg = rightSideOnly ? (data[alltype[0]] ?? data[alltype[1]]) : data[alltype[1]]; + + let midPts = []; + if (!skipCenterLine && data?.rz) { + if (leftSyg !== undefined && leftSyg !== null) { + const A = leftSyg - 1; + const B = (rightSyg !== undefined && rightSyg !== null) ? (rightSyg + 0.5) : undefined; + if (B !== undefined) { + if (A > B) { + midPts = [[xCenter, A], [xCenter, B]]; + } else { + midPts = [[xCenter, leftSyg], [xCenter, rightSyg]]; + } + } + } else if (rightSyg !== undefined && rightSyg !== null) { + // 左边无渗压管:第一个点为(X, 水位-1),第二个点为(X, 右管+0.5) + midPts = [[xCenter, data.rz - 1], [xCenter, rightSyg + 0.5]]; + } + } + + + const baseY1 = type == "3" ? (typeName =='5' ?90.50:81.85) + : type == "2" ? (typeName =='3' ?84.41:83.78) + : type == "1" ? (typeName =='1' ?80.11:78.64) + : (typeName =='7'?109.08:108.77); + + const baseY2 = type == "3" ? (typeName =='5' ?90.94:84.85) + : type == "2" ? (typeName =='3' ?84.04:81.05) + : type == "1" ? (typeName =='1' ?78.61:82.75) + : (typeName =='7'?109.32:109.36); + + const baseY3 = type == "3" ? 92.65 + : type == "2" ? 83.93 + : type == "1" ? 81.38 + : (typeName =='7'?109.01:108.87); + + const baseY4 = type == "3" ? null + : type == "2" ? 79.57 + : type == "1" ? 79.09 + : 166; + + // 各管的 X(取你原来的 X) + const x1 = type == "3" ? (typeName =='5' ?47:51) + : type == "2" ? (typeName =='3' ? 45.5:50) + : type == "1" ? (typeName =='1' ?44:51.5) + : 53.5; + + const x2 = type == "3" ? (typeName =='5' ?51:63) + : type == "2" ? (typeName =='3' ?50:61) + : type == "1" ? (typeName =='1' ?51.5:61) + : 66; + + const x3 = type == "3" ? 63 + : type == "2" ? 61 + : type == "1" ? 61 + : 77; + + const x4 = type == "3" ? null + : type == "2" ? 79 + : type == "1" ? 81 + : 85; - const gz4 = data[alltype[3]] ? - type == "3" ? [] : - type == "2" ? [[79, 79.57], [79, data[alltype[3]]]] : - type == "1" ? [[79, 79.09], [79, data[alltype[3]]]] : - [[85, 166], [85, data[alltype[3]]]] : []; - - // 将渗压管连起来的线 + // 管口高程(可能为空) + const mouth1 = pieMonth[alltype[0]]; + const mouth2 = pieMonth[alltype[1]]; + const mouth3 = pieMonth[alltype[2]]; + const mouth4 = pieMonth[alltype[3]]; + + // 蓝色段:从“管口(若有)/管底”到 UPD 值 + const gz1 = data[alltype[0]] ? [[x1, baseY1], [x1, data[alltype[0]]]] : []; + const gz2 = data[alltype[1]] ? [[x2, baseY2], [x2, data[alltype[1]]]] : []; + const gz3 = data[alltype[2]] ? [[x3, baseY3], [x3, data[alltype[2]]]] : []; + const gz4 = data[alltype[3]] && x4 !== null ? [[x4, baseY4], [x4, data[alltype[3]]]] : []; + + // 灰色段:从“管底”到“管口”(仅当 mouth 存在) + const gk1 = (mouth1 !== null && mouth1 !== undefined) ? [[x1, baseY1], [x1, mouth1]] : []; + const gk2 = (mouth2 !== null && mouth2 !== undefined) ? [[x2, baseY2], [x2, mouth2]] : []; + const gk3 = (mouth3 !== null && mouth3 !== undefined) ? [[x3, baseY3], [x3, mouth3]] : []; + const gk4 = (mouth4 !== null && mouth4 !== undefined && x4 !== null) ? [[x4, baseY4], [x4, mouth4]] : []; + + // 将渗压管连起来的线(插入 midPts) const line = data?.rz ? type == "3" ? [ [xValue, data?.rz], - [typeName =='5' ?47:51, data[alltype[0]]], - [typeName =='5' ?51:62, data[alltype[1]]], - [62, data[alltype[2]]], - + ...(rightSideOnly ? midPts : []), + [typeName == '5' ? 47 : 51, data[alltype[0]]], + ...(!rightSideOnly ? midPts : []), + [typeName == '5' ? 51 : 63, data[alltype[1]]], + [63, data[alltype[2]]], ] : type == "2" ? [ [xValue, data?.rz], - [typeName =='3' ? 45.5:50, data[alltype[0]]], - [typeName =='3' ?50:61, data[alltype[1]]], + ...(rightSideOnly ? midPts : []), + [typeName == '3' ? 45.5 : 50, data[alltype[0]]], + ...(!rightSideOnly ? midPts : []), + [typeName == '3' ? 50 : 61, data[alltype[1]]], [61, data[alltype[2]]], [79, data[alltype[3]]] ] : - type == "1"? - [ - [xValue, data?.rz], - [typeName =='1' ?44:51.5, data[alltype[0]]], - [typeName =='1' ?51.5:58, data[alltype[1]]], - [58, data[alltype[2]]], - [79, data[alltype[3]]] - ]: - [ - [xValue, data?.rz], - [55, data[alltype[0]]], - [65, data[alltype[1]]], - [77, data[alltype[2]]], - [85, data[alltype[3]]] - ] + type == "1" ? + [ + [xValue, data?.rz], + ...(rightSideOnly ? midPts : []), + [typeName == '1' ? 44 : 51.5, data[alltype[0]]], + ...(!rightSideOnly ? midPts : []), + [typeName == '1' ? 51.5 : 61, data[alltype[1]]], + [61, data[alltype[2]]], + [81, data[alltype[3]]] + ] : + [ + [xValue, data?.rz], + ...(rightSideOnly ? midPts : []), + [53.5, data[alltype[0]]], + ...(!rightSideOnly ? midPts : []), + [66, data[alltype[1]]], + [77, data[alltype[2]]], + [85, data[alltype[3]]] + ] : [] const filteredArray = line.filter(subArray => { - return subArray.every(item => item !== null && item !== undefined); + return subArray.every(item => item !== null && item !== undefined); }); - - + + return { toolbox: { show: true, @@ -219,7 +315,7 @@ export default function jrxOptions(data = {}, type = "1",typeName='1') { }, yAxis: { type: 'value', - min:yMin, + min: yMin, max: yMax, interval: 5, // data:[155,160,180,190,210], @@ -275,7 +371,7 @@ export default function jrxOptions(data = {}, type = "1",typeName='1') { origin: "end", color: 'rgba(0, 128, 255, 0.3)' // 设置区域填充颜色 }, - data:[...rz, ...rz1] + data: [...rz, ...rz1] }, { @@ -322,6 +418,42 @@ export default function jrxOptions(data = {}, type = "1",typeName='1') { }, data: rz1 }, + { + type: 'line', + symbol: 'none', + symbolSize: 10, + z: 1, + itemStyle: { color: 'rgba(154, 160, 166,.4)' }, + lineStyle: { color: 'rgba(154, 160, 166,.4)', width: 6 }, + data: gk1 + }, + { + type: 'line', + symbol: 'none', + symbolSize: 10, + z: 1, + itemStyle: { color: 'rgba(154, 160, 166,.4)' }, + lineStyle: { color: 'rgba(154, 160, 166,.4)', width: 6 }, + data: gk2 + }, + { + type: 'line', + symbol: 'none', + symbolSize: 10, + z: 1, + itemStyle: { color: 'rgba(154, 160, 166,.4)' }, + lineStyle: { color: 'rgba(154, 160, 166,.4)', width: 6 }, + data: gk3 + }, + { + type: 'line', + symbol: 'none', + symbolSize: 10, + z: 1, + itemStyle: { color: 'rgba(154, 160, 166,.4)' }, + lineStyle: { color: 'rgba(154, 160, 166,.4)', width: 6 }, + data: gk4 + }, // 管位 { type: 'line', @@ -385,15 +517,15 @@ export default function jrxOptions(data = {}, type = "1",typeName='1') { symbol: 'none', symbolSize: 10, z: 1, - smooth: 0.6, // 设置平滑度 - smoothMonotone: 'x', // 保持 x 方向的单调性 + // smooth: 0.6, // 设置平滑度 + // smoothMonotone: 'x', // 保持 x 方向的单调性 itemStyle: { color: '#5487FF' }, lineStyle: { color: '#5487FF', - width: 2, - curveness: 0.5 // 增加曲线程度 + width: 2, + // curveness: 0.5 // 增加曲线程度 }, data: filteredArray }, diff --git a/src/views/gcaqjc/gcaqfx/jrx/pieMonth.js b/src/views/gcaqjc/gcaqfx/jrx/pieMonth.js new file mode 100644 index 000000000..c5b744a42 --- /dev/null +++ b/src/views/gcaqjc/gcaqfx/jrx/pieMonth.js @@ -0,0 +1,40 @@ +export default { + // ZB0+130 + UPD1: 113.66, + UPD4: 113.66, + UPD7: 105.27, + UPD16: 89.54, + + // ZB0+132 + UPD10: 113.66, + UPD13: 105.38, + + // ZB0+250 + UPD2: 113.98, + UPD5: 114.53, + UPD8: 104.45, + UPD17: 91.33, + + // ZB0+252 + UPD11: 114.36, + UPD14: 104.49, + + // ZB0+370 + UPD3: 114.12, + UPD6: 114.34, + UPD12: 104.52, + + // ZB0+372 + UPD9: 114.28, + UPD15: 105.16, + + // FB0+010 + UPD24: 114.22, + UPD26: 114.44, + UPD28: 112.28, + + // FB0+030 + UPD25: 114.22, + UPD27: 114.48, + UPD29: 112.28, +}; \ No newline at end of file