From 5976c55e5adbd41b1b4d620eda3182178b75c4b4 Mon Sep 17 00:00:00 2001 From: liujiangyong Date: Fri, 12 Jan 2024 15:21:52 +0800 Subject: [PATCH] =?UTF-8?q?(*)=20=E5=B0=8F=E7=A8=8B=E5=BA=8F=E4=B8=8A?= =?UTF-8?q?=E6=8A=A5-=E9=81=93=E8=B7=AF=E9=80=89=E6=8B=A9=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/app/lib/controllers/data/road.js | 2 +- weapp/src/packages/patrol/index.jsx | 145 +++++++++++---------------- 2 files changed, 62 insertions(+), 85 deletions(-) diff --git a/api/app/lib/controllers/data/road.js b/api/app/lib/controllers/data/road.js index 825d410b..16d56c05 100644 --- a/api/app/lib/controllers/data/road.js +++ b/api/app/lib/controllers/data/road.js @@ -96,7 +96,7 @@ async function getRoadSection (ctx) { let findOption = { where: { del: false }, order: [['id', 'DESC']], - attributes: ['id', 'routeName', 'startingPlaceName', 'stopPlaceName', 'routeCode', 'sectionNo', 'level'] + attributes: ['id', 'routeName', 'startingPlaceName', 'stopPlaceName', 'routeCode', 'sectionNo', 'level', 'startStation', 'stopStation'] } if (level) { diff --git a/weapp/src/packages/patrol/index.jsx b/weapp/src/packages/patrol/index.jsx index 7abd6448..7b27b6d6 100644 --- a/weapp/src/packages/patrol/index.jsx +++ b/weapp/src/packages/patrol/index.jsx @@ -225,11 +225,12 @@ const Index = () => { ]); const [routeNameList, setRouteNameList] = useState([]); const [routeCodeList, setRouteCodeList] = useState([]); - const [sectionNoList, setSectionNoList] = useState([]); + const [stationRangeList, setStationRangeList] = useState([]); const [roadChecked, setRoadChecked] = useState({ routeName: '', routeCode: '', sectionNo: '', + stationRange: '', startingPlaceName: '', stopPlaceName: '', }) @@ -362,6 +363,7 @@ const Index = () => { routeName: data.road, routeCode: data.codeRoad, sectionNo: data.road_?.sectionNo || '-', + stationRange: `${data.road_?.startStation || ' '} - ${data.road_?.stopStation || ' '}`, startingPlaceName: data.roadSectionStart, stopPlaceName: data.roadSectionEnd, }) @@ -415,35 +417,22 @@ const Index = () => { let nextSourceRoadStartSel = [] let nextSourceRoadEndSel = [] let nextCodeRoadSel = [] - - let routeName = [] let routeCode = [] - let sectionNo = [] const selLevel = roadTypeList.find(item => item.checked).value data.forEach(item => { nextSourceRoadStartSel.push(item.startingPlaceName) nextSourceRoadEndSel.push(item.stopPlaceName) nextCodeRoadSel.push(item.routeCode) - - if (item.routeName && !routeName.includes(item.routeName) && item.level === selLevel) { - routeName.push(item.routeName) - } - if (item.routeCode && !routeCode.includes(item.routeCode)) { + if (item.routeCode && !routeCode.includes(item.routeCode) && item.level === selLevel) { routeCode.push(item.routeCode) } - if (item.sectionNo && !sectionNo.includes(item.sectionNo)) { - sectionNo.push(item.sectionNo) - } }) setSourceRoadStartSel(nextSourceRoadStartSel) setSourceRoadEndSel(nextSourceRoadEndSel) setCodeRoadSel(nextCodeRoadSel) setRoadList(data) - - setRouteNameList(routeName) setRouteCodeList(routeCode) - setSectionNoList(sectionNo) } else { Taro.showToast({ title: res.data.message || '请求出错', icon: 'none' }) } @@ -529,6 +518,7 @@ const Index = () => { && roadChecked?.routeCode == r?.routeCode && roadChecked?.sectionNo == r?.sectionNo )?.id, + } if (reportType === 'patrol' || isAnomaly || isRoad) { data['scenePic'] = sceneImg @@ -757,52 +747,40 @@ const Index = () => { } } - const handleRoadCheckChange = (value, key, typeList = roadTypeList) => { + const handleRoadCheckChange = (value, key, typeList = roadTypeList, sectionNo) => { let nextValue = { ...roadChecked, [key]: value } - let routeCode = [] - let sectionNo = [] let data = roadList.filter(r => r.level === typeList.find(t => t.checked).value) - if (key == 'routeName') { - // routeName关键字筛选 - let routeName = [] - data.forEach(item => { - if (item.routeName && !routeName.includes(item.routeName)) { - routeName.push(item.routeName) - } - }) - if (value) { - routeName = routeName.filter(item => item.indexOf(value) > -1) - } - setRouteNameList(routeName) - - nextValue.routeCode = '' - nextValue.sectionNo = '' - data?.forEach(v => { - if (nextValue?.routeName && nextValue?.routeName == v.routeName && v.routeCode && !routeCode.includes(v.routeCode)) { - routeCode.push(v.routeCode) - } - }); - setRouteCodeList(routeCode) - } + if (key == 'stationRange') nextValue.sectionNo = sectionNo; if (key == 'routeCode') { nextValue.sectionNo = '' - data = roadList?.filter(s => nextValue?.routeName == s?.routeName) - data?.forEach(v => { - if (nextValue?.routeCode && nextValue?.routeCode == v?.routeCode && v.sectionNo && !sectionNo.includes(v.sectionNo)) { - sectionNo.push(v.sectionNo) + nextValue.stationRange = '' + let routeCode = [] + let matchData = [] + data.forEach(item => { + if (item.routeCode.indexOf(value) > -1) { + routeCode.push(item.routeCode) } - if (!nextValue?.routeCode && v.routeCode && !routeCode.includes(v.routeCode)) { - routeCode.push(v.routeCode) + if (item.routeCode === value) { + matchData.push(item) } - }); - if (!nextValue?.routeCode) { - setRouteCodeList(routeCode) + }) + setRouteCodeList(routeCode) + if (matchData.length) { + // 匹配路线名称 + nextValue.routeName = matchData[0].routeName + // 匹配桩号区间 + setStationRangeList(matchData.map(s => ({ + label: `${s.startStation || ' '} - ${s.stopStation || ' '}`, + sectionNo: s.sectionNo, + }))) + } else { + nextValue.routeName = '' + setStationRangeList([]) } - setSectionNoList(sectionNo) } if (nextValue?.routeName) { @@ -823,6 +801,7 @@ const Index = () => { && nextValue.routeCode == s.routeCode && nextValue.sectionNo == s.sectionNo ) + nextValue.startingPlaceName = find?.startingPlaceName nextValue.stopPlaceName = find?.stopPlaceName setRoadCodeHead(find?.routeCode?.charAt(0)) @@ -1080,7 +1059,7 @@ const Index = () => { for (let i = 0, len = items.length; i < len; ++i) { items[i].checked = items[i].value === e.detail.value } - handleRoadCheckChange('', 'routeName', items) + handleRoadCheckChange('', 'routeCode', items) // 清空 routeCode setRoadTypeList(items) } @@ -1104,77 +1083,75 @@ const Index = () => { - - 路线名称: + + {!(isView && isBeforeReport) && + 线路编码: handleRoadCheckChange(e.detail.value, 'routeName')} + value={roadChecked.routeCode} + onInput={e => handleRoadCheckChange(e.detail.value, 'routeCode')} disabled={isView} /> handleRoadCheckChange(routeNameList[e.detail.value], 'routeName')} + range={routeCodeList} + onChange={e => handleRoadCheckChange(routeCodeList[e.detail.value], 'routeCode')} disabled={isView} > + {roadChecked.routeCode && !isView && handleRoadCheckChange('', 'routeCode')} + />} - {!isView && handleRoadCheckChange('', 'routeName')} - />} - - {!(isView && isBeforeReport) && - 线路编码: + } + + + 路线名称: handleRoadCheckChange(routeCodeList[e.detail.value], 'routeCode')} - disabled={routeCodeDisabled} + range={routeNameList} + onChange={e => handleRoadCheckChange(routeNameList[e.detail.value], 'routeName')} + disabled={true} > - {roadChecked.routeCode || '请选择线路编码'} + {roadChecked.routeName || '选择编码自动带出'} - {roadChecked.routeCode && !isView && handleRoadCheckChange('', 'routeCode')} - />} - } + + - 路段序号: + 桩号区间: handleRoadCheckChange(sectionNoList[e.detail.value], 'sectionNo')} + range={stationRangeList} + rangeKey='label' + onChange={e => handleRoadCheckChange(stationRangeList[e.detail.value].label, 'stationRange', undefined, stationRangeList[e.detail.value].sectionNo)} disabled={sectionNoDisabled} > - {roadChecked.sectionNo || '请选择路段序号'} + {roadChecked.stationRange || '请选择桩号区间'} - {roadChecked.sectionNo && !isView && handleRoadCheckChange('', 'sectionNo')} + onClick={() => handleRoadCheckChange('', 'stationRange', undefined, '')} />}