Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
yoosangwook 2024-11-01 13:22:13 +09:00
commit 0df127de17
7 changed files with 102 additions and 174 deletions

View File

@ -247,7 +247,6 @@ export default function StuffDetail() {
}
}
console.log('buttonStyle:::', buttonStyle, params.value)
return (
<>
<div className="grid-cell-btn">
@ -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}
</div>
<Button className="btn-origin grey" onPress={onSearchDesignRequestPopOpen}>
<Button type="button" className="btn-origin grey" onPress={onSearchDesignRequestPopOpen}>
{getMessage('stuff.planReqPopup.title')}
</Button>
</div>
@ -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
})}
></Select>
@ -1516,7 +1485,6 @@ export default function StuffDetail() {
{/* {sessionState?.storeId !== 'T01' && sessionState?.storeLvl === '1' && ( */}
{session?.storeId !== 'T01' && session?.storeLvl === '1' && (
<>
신규 T01아닌 1차점
<div className="select-wrap mr5" style={{ width: '567px' }}>
<Select
id="long-value-select1"
@ -1528,7 +1496,7 @@ export default function StuffDetail() {
onChange={onSelectionChange}
getOptionLabel={(x) => x.saleStoreName}
getOptionValue={(x) => x.saleStoreId}
isClearable={session?.storeLvl === '1' ? true : false}
isClearable={false}
isDisabled={session?.storeLvl !== '1' ? true : session?.storeId !== 'T01' ? true : false}
value={showSaleStoreList.filter(function (option) {
return option.saleStoreId === selOptions
@ -1548,41 +1516,6 @@ export default function StuffDetail() {
)}
{/* {sessionState?.storeId !== 'T01' && sessionState?.storeLvl !== '1' && ( */}
{session?.storeId !== 'T01' && session?.storeLvl !== '1' && (
<>
신규 로그인이2차점
<div className="select-wrap mr5" style={{ width: '567px' }}>
<Select
id="long-value-select1"
instanceId="long-value-select1"
className="react-select-custom"
classNamePrefix="custom"
placeholder="Select"
options={saleStoreList}
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}
isDisabled={session?.storeLvl !== '1' ? true : false}
value={saleStoreList.filter(function (option) {
return option.saleStoreId === selOptions
})}
></Select>
</div>
<div className="input-wrap" style={{ width: '216px' }}>
<input
type="text"
className="input-light"
value={form.watch('saleStoreId') || ''}
{...form.register('saleStoreId')}
readOnly
/>
</div>
</>
)}
{/* {(sessionState?.storeId === 'T01' && (
<>
<div className="select-wrap mr5" style={{ width: '567px' }}>
<Select
@ -1592,12 +1525,11 @@ export default function StuffDetail() {
classNamePrefix="custom"
placeholder="Select"
options={showSaleStoreList}
onInputChange={onInputChange}
onChange={onSelectionChange}
getOptionLabel={(x) => x.saleStoreName}
getOptionValue={(x) => x.saleStoreId}
isClearable={sessionState?.storeLvl === '1' ? true : false}
isDisabled={sessionState?.storeLvl !== '1' ? true : false}
isClearable={false}
isDisabled={true}
value={showSaleStoreList.filter(function (option) {
return option.saleStoreId === selOptions
})}
@ -1613,38 +1545,7 @@ export default function StuffDetail() {
/>
</div>
</>
)) || (
<>
<div className="select-wrap mr5" style={{ width: '567px' }}>
T01아님
<Select
id="long-value-select1"
instanceId="long-value-select1"
className="react-select-custom"
classNamePrefix="custom"
placeholder="Select"
options={saleStoreList}
onChange={onSelectionChange}
getOptionLabel={(x) => 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
})}
></Select>
</div>
<div className="input-wrap" style={{ width: '216px' }}>
<input
type="text"
className="input-light"
value={form.watch('saleStoreId') || ''}
{...form.register('saleStoreId')}
readOnly
/>
</div>
</>
)} */}
)}
</div>
</td>
</tr>
@ -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
})}

View File

@ -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)

View File

@ -88,7 +88,7 @@ export default function StuffSubHeader({ type }) {
<li className="title-item">
<a className="sub-header-title" onClick={moveFloorPlan}>
<span className="icon drawing"></span>
{getMessage('plan.menu.plan.drawing')}
{getMessage('stuff.temp.subTitle2')}
</a>
</li>
</ul>

View File

@ -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)

View File

@ -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": "存在しないものです。",

View File

@ -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": "물건번호 복사에 실패했습니다.",

View File

@ -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)