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-error.log*
yarn.lock yarn.lock
build.7z build.7z
build1.zip
#ai #ai
.serena/ .serena/

View File

@ -1,23 +1,23 @@
import pieMonth from "./pieMonth";
export default function jrxOptions(data = {}, type = "1",typeName='1') { export default function jrxOptions(data = {}, type = "1", typeName = '1') {
// debugger // debugger
console.log("data",data); console.log("data", data);
// data.rz = 112 // data.rz = 112
// 根据断面类型确定y轴刻度以及最大和最小 // 根据断面类型确定y轴刻度以及最大和最小
const yMin = type == "3" ? 70 : type == "2" ? 67 : const yMin = type == "3" ? 70 : type == "2" ? 67 :
type == '1' ? 59 : 99; type == '1' ? 59 : 99;
const yMax = type == "3" ? 129 : type == "2" ? 117 const yMax = type == "3" ? 129 : type == "2" ? 117
: type == "1" ? 118 : 116; : type == "1" ? 118 : 116;
// 断面上的渗压管 // 断面上的渗压管
const type1 = ["UPD1", "UPD4", "UPD7", "UPD16"]; const type1 = ["UPD1", "UPD4", "UPD7", "UPD16"];
const type2 = ["UPD10", "UPD13"]; const type2 = ["UPD10", "UPD13"];
const type3 = ["UPD2", "UPD5", "UPD8", "UPD17"]; const type3 = ["UPD2", "UPD5", "UPD8", "UPD17"];
const type4 = ["UPD11", "UPD14"]; const type4 = ["UPD11", "UPD14"];
const type5 = ["UPD3", "UPD6", "UPD9"]; const type5 = ["UPD3", "UPD6", "UPD12"];
const type6 = ["UPD12", "UPD15"]; const type6 = ["UPD9", "UPD15"];
const type7 = ["UPD24", "UPD26","UPD28"]; //UPD24:109.87,UPD26:109.75,UPD28:109.43 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 type8 = ["UPD25", "UPD27", "UPD29"]; //UPD25:109.87,UPD27:109.75,UPD29:109.43
// 管底高程 // 管底高程
const alltype = typeName == "1" ? type1 : const alltype = typeName == "1" ? type1 :
@ -28,8 +28,7 @@ export default function jrxOptions(data = {}, type = "1",typeName='1') {
typeName == "6" ? type6 : typeName == "6" ? type6 :
typeName == "7" ? type7 : typeName == "7" ? type7 :
typeName == "8" ? type8 : typeName == "8" ? type8 :
[]; [];
// 字体颜色 // 字体颜色
const textColor = '#666' const textColor = '#666'
const imageUrl370 = `${process.env.PUBLIC_URL}/assets/images/zb370.png ` 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 imageUrl130 = `${process.env.PUBLIC_URL}/assets/images/zb130.png `
const imageUrl010 = `${process.env.PUBLIC_URL}/assets/images/fb010.png ` const imageUrl010 = `${process.env.PUBLIC_URL}/assets/images/fb010.png `
const imageUrl = type == "1" ? imageUrl130 : const imageUrl = type == "1" ? imageUrl130 :
type == "2" ? imageUrl250 : type == "2" ? imageUrl250 :
type == "3" ? imageUrl370 : imageUrl010 type == "3" ? imageUrl370 : imageUrl010
; ;
const rule = `${process.env.PUBLIC_URL}/assets/images/ruler.png ` 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" ? type == "1" ?
[[0, 88], [10, 88], [xValue, data?.rz]] [[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分别为渗压管 // 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]] ? // const gz1 = data[alltype[0]] ?
type == "3" ? [[62, 92.65], [62, data[alltype[2]]]] : // type == "3" ? [[typeName == '5' ? 47 : 51, typeName == '5' ? 90.50 : 81.85], [typeName == '5' ? 47 : 51, data[alltype[0]]]] :
type == "2" ? [[61, 83.93], [61, data[alltype[2]]]] : // type == "2" ? [[typeName == '3' ? 45.5 : 50, typeName == '3' ? 84.41 : 83.78], [typeName == '3' ? 45.5 : 50, data[alltype[0]]]] :
type == "1" ? [[58, 81.38], [58, data[alltype[2]]]] : // type == "1" ? [[typeName == '1' ? 44 : 51.5, typeName == '1' ? 80.11 : 78.64], [typeName == '1' ? 44 : 51.5, data[alltype[0]]]] :
[[77, typeName =='7'?109.01:108.87], [77, data[alltype[2]]]] : []; // [[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" ? [] : const mouth1 = pieMonth[alltype[0]];
type == "2" ? [[79, 79.57], [79, data[alltype[3]]]] : const mouth2 = pieMonth[alltype[1]];
type == "1" ? [[79, 79.09], [79, data[alltype[3]]]] : const mouth3 = pieMonth[alltype[2]];
[[85, 166], [85, data[alltype[3]]]] : []; 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 ? const line = data?.rz ?
type == "3" ? type == "3" ?
[ [
[xValue, data?.rz], [xValue, data?.rz],
[typeName =='5' ?47:51, data[alltype[0]]], ...(rightSideOnly ? midPts : []),
[typeName =='5' ?51:62, data[alltype[1]]], [typeName == '5' ? 47 : 51, data[alltype[0]]],
[62, data[alltype[2]]], ...(!rightSideOnly ? midPts : []),
[typeName == '5' ? 51 : 63, data[alltype[1]]],
[63, data[alltype[2]]],
] : ] :
type == "2" ? type == "2" ?
[ [
[xValue, data?.rz], [xValue, data?.rz],
[typeName =='3' ? 45.5:50, data[alltype[0]]], ...(rightSideOnly ? midPts : []),
[typeName =='3' ?50:61, data[alltype[1]]], [typeName == '3' ? 45.5 : 50, data[alltype[0]]],
...(!rightSideOnly ? midPts : []),
[typeName == '3' ? 50 : 61, data[alltype[1]]],
[61, data[alltype[2]]], [61, data[alltype[2]]],
[79, data[alltype[3]]] [79, data[alltype[3]]]
] : ] :
type == "1"? type == "1" ?
[ [
[xValue, data?.rz], [xValue, data?.rz],
[typeName =='1' ?44:51.5, data[alltype[0]]], ...(rightSideOnly ? midPts : []),
[typeName =='1' ?51.5:58, data[alltype[1]]], [typeName == '1' ? 44 : 51.5, data[alltype[0]]],
[58, data[alltype[2]]], ...(!rightSideOnly ? midPts : []),
[79, data[alltype[3]]] [typeName == '1' ? 51.5 : 61, data[alltype[1]]],
]: [61, data[alltype[2]]],
[ [81, data[alltype[3]]]
[xValue, data?.rz], ] :
[55, data[alltype[0]]], [
[65, data[alltype[1]]], [xValue, data?.rz],
[77, data[alltype[2]]], ...(rightSideOnly ? midPts : []),
[85, data[alltype[3]]] [53.5, data[alltype[0]]],
] ...(!rightSideOnly ? midPts : []),
[66, data[alltype[1]]],
[77, data[alltype[2]]],
[85, data[alltype[3]]]
]
: [] : []
const filteredArray = line.filter(subArray => { const filteredArray = line.filter(subArray => {
return subArray.every(item => item !== null && item !== undefined); return subArray.every(item => item !== null && item !== undefined);
}); });
return { return {
toolbox: { toolbox: {
show: true, show: true,
@ -219,7 +315,7 @@ export default function jrxOptions(data = {}, type = "1",typeName='1') {
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
min:yMin, min: yMin,
max: yMax, max: yMax,
interval: 5, interval: 5,
// data:[155,160,180,190,210], // data:[155,160,180,190,210],
@ -275,7 +371,7 @@ export default function jrxOptions(data = {}, type = "1",typeName='1') {
origin: "end", origin: "end",
color: 'rgba(0, 128, 255, 0.3)' // 设置区域填充颜色 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 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', type: 'line',
@ -385,15 +517,15 @@ export default function jrxOptions(data = {}, type = "1",typeName='1') {
symbol: 'none', symbol: 'none',
symbolSize: 10, symbolSize: 10,
z: 1, z: 1,
smooth: 0.6, // 设置平滑度 // smooth: 0.6, // 设置平滑度
smoothMonotone: 'x', // 保持 x 方向的单调性 // smoothMonotone: 'x', // 保持 x 方向的单调性
itemStyle: { itemStyle: {
color: '#5487FF' color: '#5487FF'
}, },
lineStyle: { lineStyle: {
color: '#5487FF', color: '#5487FF',
width: 2, width: 2,
curveness: 0.5 // 增加曲线程度 // curveness: 0.5 // 增加曲线程度
}, },
data: filteredArray 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,
};