diff --git a/src/components/management/StuffDetail.jsx b/src/components/management/StuffDetail.jsx index 740bf38e..49fc92f8 100644 --- a/src/components/management/StuffDetail.jsx +++ b/src/components/management/StuffDetail.jsx @@ -247,7 +247,6 @@ export default function StuffDetail() { } } - console.log('buttonStyle:::', buttonStyle, params.value) return ( <>
@@ -323,18 +322,12 @@ export default function StuffDetail() { let favList // if (sessionState?.storeId === 'T01') { if (session?.storeId === 'T01') { - console.log('신규T01::::::::::::::::::::::::::::::::::::') - // url = `/api/object/saleStore/${sessionState?.storeId}/list?userId=${sessionState?.userId}` url = `/api/object/saleStore/${session?.storeId}/firstList?userId=${session?.userId}` } else { - // url = `/api/object/saleStore/${sessionState?.storeId}/list` if (session.storeLvl === '1') { - console.log('로그인이1차:::::::') - //url = `/api/object/saleStore/${session?.storeId}/list` url = `/api/object/saleStore/${session?.storeId}/list?firstFlg=1&userId=${sessionState?.userId}` } else { - console.log('로그인이2차:::') - url = `` + url = `/api/object/saleStore/${session?.storeId}/list?firstFlg=1&userId=${session?.userId}` } } @@ -386,61 +379,26 @@ export default function StuffDetail() { setOtherSaleStoreList(otherList) } else { - console.log('1차점아님:::::::::', res) + //10X22, 201X112,202X217 + firstList = res.filter((row) => row.firstAgentYn === 'Y') + setSaleStoreList(firstList) + setFavoriteStoreList(firstList) + setShowSaleStoreList(firstList) + setSelOptions(firstList[0].saleStoreId) + + form.setValue('saleStoreId', firstList[0].saleStoreId) + form.setValue('saleStoreLevel', firstList[0].saleStoreLevel) + + otherList = res.filter((row) => row.firstAgentYn === 'N') + setOtherSaleStoreList(otherList) + //2차 판매점명/ID는 본인을 셀렉트 + setOtherSelOptions(session?.storeId) + form.setValue('otherSaleStoreId', session?.storeId) + form.setValue('otherSaleStoreLevel', session?.storeLvl) } } } }) - - // get({ url: url }).then((res) => { - // if (!isEmptyArray(res)) { - // const firstList = res.filter((row) => row.saleStoreLevel === '1') - // let favList - // // if (sessionState?.storeId === 'T01') { - // if (session?.storeId === 'T01') { - // firstList.sort((a, b) => (a.saleStoreId !== 'T01') - (b.saleStoreId !== 'T01') || a.saleStoreId - b.saleStoreId) - // favList = firstList.filter((row) => row.saleStoreId === 'T01' || row.priority !== 'B') - // setSaleStoreList(firstList) - // setFavoriteStoreList(favList) - // setShowSaleStoreList(favList) - // } else { - // //1차점 셀렉트박스 - // setSaleStoreList(firstList) - // } - // const otherList = res.filter((row) => row.saleStoreLevel !== '1') - // let filterOtherList - // // if (sessionState?.storeId === 'T01') { - // if (session?.storeId === 'T01') { - // filterOtherList = otherList.filter((row) => row.firstAgentId === 'T01') - - // setOriginOtherSaleStoreList(filterOtherList) - // setOtherSaleStoreList(filterOtherList) - // } else { - // //T01 아니고 2차점 판매점 셀렉트박스 - // setOriginOtherSaleStoreList(otherList) - // setOtherSaleStoreList(otherList) - // } - - // // if (sessionState?.storeLvl === '1') { - // if (session?.storeLvl === '1') { - // // setSelOptions(sessionState?.storeId) - // setSelOptions(session?.storeId) - // // form.setValue('saleStoreId', sessionState?.storeId) - // form.setValue('saleStoreId', session?.storeId) - // // form.setValue('saleStoreLevel', sessionState?.storeLvl) - // form.setValue('saleStoreLevel', session?.storeLvl) - // } else { - // setSelOptions(firstList[0].saleStoreId) - // // setOtherSelOptions(sessionState?.storeId) - // setOtherSelOptions(session?.storeId) - // form.setValue('saleStoreId', firstList[0].saleStoreId) - // // form.setValue('otherSaleStoreId', sessionState?.storeId) - // form.setValue('otherSaleStoreId', session?.storeId) - // // form.setValue('otherSaleStoreLevel', sessionState?.storeLvl) - // form.setValue('otherSaleStoreLevel', session?.storeLvl) - // } - // } - // }) } // }, [objectNo, sessionState]) }, [objectNo, session]) @@ -462,7 +420,7 @@ export default function StuffDetail() { useEffect(() => { if (isObjectNotEmpty(detailData)) { - console.log('상세데이타세팅:::::', detailData) + // console.log('상세데이타세팅:::::', detailData) // 도도부현API get({ url: '/api/object/prefecture/list' }).then((res) => { if (!isEmptyArray(res)) { @@ -501,6 +459,11 @@ export default function StuffDetail() { setFavoriteStoreList(favList) setShowSaleStoreList(favList) + form.setValue('saleStoreId', firstList[0].saleStoreId) + form.setValue('saleStoreName', firstList[0].saleStoreName) + form.setValue('saleStoreLevel', firstList[0].saleStoreLevel) + setSelOptions(firstList[0].saleStoreId) + //상세데이터의 1차점 아이디로 2차점 목록 조회하기 // url = `/api/object/saleStore/${detailData?.saleStoreId}/list?firstFlg=0&userId=${sessionState?.userId}` url = `/api/object/saleStore/${detailData?.saleStoreId}/list?firstFlg=0&userId=${session?.userId}` @@ -680,6 +643,7 @@ export default function StuffDetail() { if (objectNo) { tempObjectNo = objectNo.substring(0, 1) } + if (tempObjectNo === 'T') { if (planReqNo) { if (delFlg) { @@ -690,11 +654,21 @@ export default function StuffDetail() { form.setValue('saleStoreName', key.saleStoreName) form.setValue('saleStoreLevel', key.saleStoreLevel) setSelOptions(key.saleStoreId) - //선택한 1차점 정보로 2차점 list 추리기 - //長府工産株式会社 大阪支社 - console.log('여기도?????????????????????') - // let newOtherSaleStoreList = originOtherSaleStoreList.filter((row) => row.firstAgentId === key.saleStoreId) - // setOtherSaleStoreList(newOtherSaleStoreList) + let url = `/api/object/saleStore/${key.saleStoreId}/list?firstFlg=0&userId=${session?.userId}` + let otherList + get({ url: url }).then((res) => { + if (!isEmptyArray(res)) { + res.map((row) => { + row.value = row.saleStoreId + row.label = row.saleStoreName + }) + + otherList = res + setOtherSaleStoreList(otherList) + } else { + setOtherSaleStoreList([]) + } + }) } else { //X누름 setSelOptions('') @@ -716,12 +690,9 @@ export default function StuffDetail() { form.setValue('saleStoreName', key.saleStoreName) form.setValue('saleStoreLevel', key.saleStoreLevel) //선택한 1차점 정보로 2차점 조회하기 - //長府工産株式会社 大阪支社 - console.log('바꿔조ㅜㅝ............', key.saleStoreId) let url = `/api/object/saleStore/${key.saleStoreId}/list?firstFlg=0&userId=${session?.userId}` let otherList get({ url: url }).then((res) => { - console.log('고른1차점으로 2차점목록조회결과;:::', res) if (!isEmptyArray(res)) { res.map((row) => { row.value = row.saleStoreId @@ -729,7 +700,6 @@ export default function StuffDetail() { }) otherList = res - console.log('otherList::::::::', otherList) setOtherSaleStoreList(otherList) setOtherSelOptions('') form.setValue('otherSaleStoreId', '') @@ -764,11 +734,21 @@ export default function StuffDetail() { form.setValue('saleStoreName', key.saleStoreName) form.setValue('saleStoreLevel', key.saleStoreLevel) setSelOptions(key.saleStoreId) - //선택한 1차점 정보로 2차점 list 추리기 - //長府工産株式会社 大阪支社 - console.log('여기도용') - // let newOtherSaleStoreList = originOtherSaleStoreList.filter((row) => row.firstAgentId === key.saleStoreId) - // setOtherSaleStoreList(newOtherSaleStoreList) + let url = `/api/object/saleStore/${key.saleStoreId}/list?firstFlg=0&userId=${session?.userId}` + let otherList + get({ url: url }).then((res) => { + if (!isEmptyArray(res)) { + res.map((row) => { + row.value = row.saleStoreId + row.label = row.saleStoreName + }) + + otherList = res + setOtherSaleStoreList(otherList) + } else { + setOtherSaleStoreList([]) + } + }) } else { //X누름 setSelOptions('') @@ -818,6 +798,7 @@ export default function StuffDetail() { if (objectNo) { tempObjectNo = objectNo.substring(0, 1) } + if (tempObjectNo === 'T') { if (planReqNo) { if (delFlg) { @@ -1306,16 +1287,7 @@ export default function StuffDetail() { // params.saleStoreLevel = sessionState.storeLvl params.saleStoreLevel = session.storeLvl } - //수직적설량, 설치높이 0인지 체크 - // let snow = params.verticalSnowCover - // let height = params.installHeight - // if (snow === '0') { - // return alert(getMessage('stuff.detail.save.valierror1')) - // } - // if (height === '0') { - // return alert(getMessage('stuff.detail.save.valierror2')) - // } await promisePost({ url: '/api/object/save-object', data: params }).then((res) => { if (res.status === 201) { alert(getMessage('stuff.detail.tempSave.message1')) @@ -1389,7 +1361,7 @@ export default function StuffDetail() { )) || null}
- @@ -1491,12 +1463,9 @@ export default function StuffDetail() { onChange={onSelectionChange} getOptionLabel={(x) => x.saleStoreName} getOptionValue={(x) => x.saleStoreId} - // isClearable={sessionState?.storeLvl === '1' ? true : false} - isClearable={session?.storeLvl === '1' ? true : false} - // isDisabled={sessionState?.storeLvl !== '1' ? true : false} + isClearable={true} isDisabled={session?.storeLvl !== '1' ? true : false} value={saleStoreList.filter(function (option) { - // console.log('showSaleStoreList:::::', option.saleStoreId) return option.saleStoreId === selOptions })} > @@ -1516,7 +1485,6 @@ export default function StuffDetail() { {/* {sessionState?.storeId !== 'T01' && sessionState?.storeLvl === '1' && ( */} {session?.storeId !== 'T01' && session?.storeLvl === '1' && ( <> - 신규 T01아닌 1차점
x.saleStoreName} - getOptionValue={(x) => x.saleStoreId} - // isClearable={sessionState?.storeLvl === '1' ? true : false} - isClearable={session?.storeLvl === '1' ? true : false} - // isDisabled={sessionState?.storeLvl !== '1' ? true : false} - isDisabled={session?.storeLvl !== '1' ? true : false} - value={saleStoreList.filter(function (option) { - return option.saleStoreId === selOptions - })} - > -
-
- -
- - )} - - {/* {(sessionState?.storeId === 'T01' && ( <>
x.saleStoreName} - getOptionValue={(x) => x.saleStoreId} - isClearable={sessionState?.storeLvl === '1' ? true : false} - isDisabled={sessionState?.storeLvl !== '1' ? true : false} - value={saleStoreList.filter(function (option) { - return option.saleStoreId === selOptions - })} - > -
-
- -
- - )} */} + )} @@ -1672,10 +1573,8 @@ export default function StuffDetail() { onChange={onSelectionChange2} getOptionLabel={(x) => x.saleStoreName} getOptionValue={(x) => x.saleStoreId} - // isDisabled={session?.storeLvl === '1' && form.watch('saleStoreId') != '' ? false : true} - isDisabled={session?.storeLvl === '1' && form.watch('saleStoreId') != '' && otherSaleStoreList.length > 1 ? false : true} - // isClearable={sessionState?.storeLvl === '1' ? true : false} - isClearable={session?.storeLvl === '1' ? true : false} + isDisabled={otherSaleStoreList.length > 1 ? false : true} + isClearable={true} value={otherSaleStoreList.filter(function (option) { return option.saleStoreId === otherSelOptions })} diff --git a/src/components/management/StuffSearchCondition.jsx b/src/components/management/StuffSearchCondition.jsx index 127329cb..7da382f9 100644 --- a/src/components/management/StuffSearchCondition.jsx +++ b/src/components/management/StuffSearchCondition.jsx @@ -240,7 +240,7 @@ export default function StuffSearchCondition() { schSelSaleStoreId: allList[0].saleStoreId, }) } else { - //201X112 그냥2차점 + //10X22, 201X112 그냥2차점 //2차점인데 34들고있는애 202X217 setSchSelSaleStoreList(res) setFavoriteStoreList(res) diff --git a/src/components/management/StuffSubHeader.jsx b/src/components/management/StuffSubHeader.jsx index 12a51394..9c7fef64 100644 --- a/src/components/management/StuffSubHeader.jsx +++ b/src/components/management/StuffSubHeader.jsx @@ -88,7 +88,7 @@ export default function StuffSubHeader({ type }) {
  • - {getMessage('plan.menu.plan.drawing')} + {getMessage('stuff.temp.subTitle2')}
  • diff --git a/src/hooks/roofcover/useAuxiliaryDrawing.js b/src/hooks/roofcover/useAuxiliaryDrawing.js index ba631080..956bcf8f 100644 --- a/src/hooks/roofcover/useAuxiliaryDrawing.js +++ b/src/hooks/roofcover/useAuxiliaryDrawing.js @@ -22,6 +22,7 @@ import { useSwal } from '@/hooks/useSwal' import { booleanPointInPolygon } from '@turf/turf' import { usePopup } from '@/hooks/usePopup' import { calculateAngle } from '@/util/qpolygon-utils' +import { QPolygon } from '@/components/fabric/QPolygon' // 보조선 작성 export function useAuxiliaryDrawing(id) { @@ -742,15 +743,38 @@ export function useAuxiliaryDrawing(id) { } const roofBases = canvas.getObjects().filter((obj) => obj.name === 'roofBase') - const innerLines = [...lineHistory.current] + + //lineHistory.current에 있는 선들 중 startPoint와 endPoint가 겹치는 line은 제거 + // 겹치는 선 하나는 canvas에서 제거한다. + + const tempLines = [...lineHistory.current] + lineHistory.current = [] + tempLines.forEach((line) => { + if ( + lineHistory.current.some( + (history) => + JSON.stringify(history.startPoint) === JSON.stringify(line.startPoint) && + JSON.stringify(history.endPoint) === JSON.stringify(line.endPoint), + ) + ) { + canvas.remove(line) + return + } + + lineHistory.current.push(line) + }) + + const innerLines = lineHistory.current roofBases.forEach((roofBase) => { + const tempPolygonPoints = [...roofBase.points].map((obj) => { + return { x: Math.round(obj.x), y: Math.round(obj.y) } + }) const roofInnerLines = innerLines.filter((line) => { - const turfPolygon = polygonToTurfPolygon(roofBase) - - // innerLines의 두 점이 모두 polygon 안에 있는지 확인 - const inPolygon1 = booleanPointInPolygon([line.x1, line.y1], turfPolygon) - const inPolygon2 = booleanPointInPolygon([line.x2, line.y2], turfPolygon) + const inPolygon1 = + tempPolygonPoints.some((point) => point.x === line.x1 && point.y === line.y1) || roofBase.inPolygon({ x: line.x1, y: line.y1 }) + const inPolygon2 = + tempPolygonPoints.some((point) => point.x === line.x2 && point.y === line.y2) || roofBase.inPolygon({ x: line.x2, y: line.y2 }) if (inPolygon1 && inPolygon2) { line.attributes = { ...line.attributes, roofId: roofBase.id } @@ -759,6 +783,8 @@ export function useAuxiliaryDrawing(id) { }) roofBase.innerLines = [...roofInnerLines] + + canvas.renderAll() }) closePopup(id) diff --git a/src/locales/ja.json b/src/locales/ja.json index aed7d34d..a1850300 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -586,6 +586,7 @@ "stuff.addressPopup.btn2": "住所適用", "stuff.planReqPopup.title": "設計依頼のインポート", "stuff.temp.subTitle": "商品情報", + "stuff.temp.subTitle2": "作図", "stuff.detail.header.message1": "存在しないものです。", "stuff.detail.header.message2": "商品番号がコピーされました。", "stuff.detail.header.message3": "存在しないものです。", diff --git a/src/locales/ko.json b/src/locales/ko.json index 9d550aa0..a6de574e 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -592,6 +592,7 @@ "stuff.addressPopup.btn2": "주소적용", "stuff.planReqPopup.title": "설계의뢰 불러오기", "stuff.temp.subTitle": "물건정보", + "stuff.temp.subTitle2": "도면작성", "stuff.detail.header.message1": "존재하지 않는 물건입니다.", "stuff.detail.header.message2": "물건번호가 복사되었습니다.", "stuff.detail.header.message3": "물건번호 복사에 실패했습니다.", diff --git a/src/util/qpolygon-utils.js b/src/util/qpolygon-utils.js index 7ca7fb79..01140300 100644 --- a/src/util/qpolygon-utils.js +++ b/src/util/qpolygon-utils.js @@ -1034,9 +1034,10 @@ export const splitPolygonWithLines = (polygon) => { const routes = [] // 시작점은 시작 hip라인의 출발점 - const startPoint = point + const startPoint = { x: Math.round(point.x), y: Math.round(point.y) } // 도착점은 마지막 hip라인의 끝나는 점 - const endPoint = polygon.points[(index + 1) % polygon.points.length] + let endPoint = polygon.points[(index + 1) % polygon.points.length] + endPoint = { x: Math.round(endPoint.x), y: Math.round(endPoint.y) } const startLine = allLines.find((line) => line.startPoint.x === startPoint.x && line.startPoint.y === startPoint.y) const endLine = allLines.find((line) => line.startPoint.x === endPoint.x && line.startPoint.y === endPoint.y)