feat(): 给渗压管设置管口高程

master
李神峰 2025-11-24 17:27:36 +08:00
parent b3c0cef3e2
commit e986bbc5d5
3 changed files with 245 additions and 72 deletions

1
.gitignore vendored
View File

@ -24,6 +24,7 @@ yarn-debug.log*
yarn-error.log*
yarn.lock
build.7z
build1.zip
#ai
.serena/

View File

@ -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+030typeName 为 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
},

View File

@ -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,
};