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

This commit is contained in:
yoosangwook 2025-01-15 13:34:56 +09:00
commit d7e602aa70
8 changed files with 66 additions and 52 deletions

View File

@ -4,11 +4,14 @@ import { useMessage } from '@/hooks/useMessage'
import { useAxios } from '@/hooks/useAxios' import { useAxios } from '@/hooks/useAxios'
import { useRecoilValue } from 'recoil' import { useRecoilValue } from 'recoil'
import { floorPlanObjectState, estimateState } from '@/store/floorPlanObjectAtom' import { floorPlanObjectState, estimateState } from '@/store/floorPlanObjectAtom'
import { usePathname } from 'next/navigation'
export default function DocDownOptionPop({ planNo, setEstimatePopupOpen, docDownPopLockFlg }) { export default function DocDownOptionPop({ planNo, setEstimatePopupOpen, docDownPopLockFlg }) {
const { getMessage } = useMessage() const { getMessage } = useMessage()
const { promisePost } = useAxios() const { promisePost } = useAxios()
const pathName = usePathname()
//EXCEL, PDF //EXCEL, PDF
const [schDownload, setSchDownload] = useState('EXCEL') const [schDownload, setSchDownload] = useState('EXCEL')
// EXCEL // EXCEL
@ -85,8 +88,10 @@ export default function DocDownOptionPop({ planNo, setEstimatePopupOpen, docDown
link.remove() link.remove()
window.URL.revokeObjectURL(fileUrl) window.URL.revokeObjectURL(fileUrl)
// lockFlg = 1 ! // lockFlg = 1 !
// estimateRecoilState.lockFlg = '1' estimateRecoilState.lockFlg = '1'
// docDownPopLockFlg() if (pathName.includes('/floor-plan')) {
docDownPopLockFlg()
}
} }
}) })
.catch((error) => { .catch((error) => {

View File

@ -150,7 +150,7 @@ export default function CanvasMenu(props) {
text: getMessage('stuff.detail.move.confirmMsg'), text: getMessage('stuff.detail.move.confirmMsg'),
type: 'confirm', type: 'confirm',
confirmFn: () => { confirmFn: () => {
router.push(`/management/stuff/detail?objectNo=${objectNo}`) router.push(`/management/stuff/detail?objectNo=${objectNo}`, { scroll: false })
}, },
}) })
break break
@ -331,33 +331,32 @@ export default function CanvasMenu(props) {
if (isObjectNotEmpty(estimateRecoilState)) { if (isObjectNotEmpty(estimateRecoilState)) {
if (estimateRecoilState?.createUser === 'T01') { if (estimateRecoilState?.createUser === 'T01') {
if (sessionState.userId !== 'T01') { if (sessionState.userId !== 'T01') {
setButtonStyle('none') setButtonStyle1('none')
// setButtonStyle1('none') setButtonStyle2('none')
// setButtonStyle2('none') setButtonStyle3('none')
// setButtonStyle3('none') setButtonStyle4('none')
// setButtonStyle4('none') setButtonStyle5('none')
// setButtonStyle5('none')
} }
} else { } else {
if (estimateRecoilState?.tempFlg === '1') { if (estimateRecoilState?.tempFlg === '1') {
// setButtonStyle1('none') setButtonStyle1('none')
// setButtonStyle2('') setButtonStyle2('')
// setButtonStyle3('none') setButtonStyle3('none')
// setButtonStyle4('none') setButtonStyle4('none')
// setButtonStyle5('none') setButtonStyle5('none')
} else { } else {
if (estimateRecoilState?.tempFlg === '0' && estimateRecoilState?.lockFlg === '0') { if (estimateRecoilState?.tempFlg === '0' && estimateRecoilState?.lockFlg === '0') {
// setButtonStyle1('') setButtonStyle1('')
// setButtonStyle2('') setButtonStyle2('')
// setButtonStyle3('') setButtonStyle3('')
// setButtonStyle4('') setButtonStyle4('')
// setButtonStyle5('') setButtonStyle5('')
} else { } else {
// setButtonStyle1('') setButtonStyle1('')
// setButtonStyle2('none') setButtonStyle2('none')
// setButtonStyle3('none') setButtonStyle3('none')
// setButtonStyle4('') setButtonStyle4('')
// setButtonStyle5('') setButtonStyle5('')
} }
} }
} }
@ -431,11 +430,11 @@ export default function CanvasMenu(props) {
// //
const docDownPopLockFlg = () => { const docDownPopLockFlg = () => {
// setButtonStyle1('') setButtonStyle1('')
// setButtonStyle2('none') setButtonStyle2('none')
// setButtonStyle3('none') setButtonStyle3('none')
// setButtonStyle4('') setButtonStyle4('')
// setButtonStyle5('') setButtonStyle5('')
} }
return ( return (
@ -524,20 +523,20 @@ export default function CanvasMenu(props) {
{menuNumber === 5 && ( {menuNumber === 5 && (
<> <>
<div className="ico-btn-from"> <div className="ico-btn-from">
<button className="btn-frame gray ico-flx" onClick={() => setEstimatePopupOpen(true)}> {/* <button className="btn-frame gray ico-flx" onClick={() => setEstimatePopupOpen(true)}> */}
{/* <button type="button" style={{ display: buttonStyle1 }} className="btn-frame gray ico-flx" onClick={() => setEstimatePopupOpen(true)}> */} <button type="button" style={{ display: buttonStyle1 }} className="btn-frame gray ico-flx" onClick={() => setEstimatePopupOpen(true)}>
<span className="ico ico01"></span> <span className="ico ico01"></span>
<span className="name">{getMessage('plan.menu.estimate.docDown')}</span> <span className="name">{getMessage('plan.menu.estimate.docDown')}</span>
</button> </button>
{/* <button type="button" style={{ display: buttonStyle2 }} className="btn-frame gray ico-flx" onClick={handleEstimateSubmit}> */} <button type="button" style={{ display: buttonStyle2 }} className="btn-frame gray ico-flx" onClick={handleEstimateSubmit}>
<button type="button" style={{ display: buttonStyle }} className="btn-frame gray ico-flx" onClick={handleEstimateSubmit}> {/* <button type="button" style={{ display: buttonStyle }} className="btn-frame gray ico-flx" onClick={handleEstimateSubmit}> */}
<span className="ico ico02"></span> <span className="ico ico02"></span>
<span className="name">{getMessage('plan.menu.estimate.save')}</span> <span className="name">{getMessage('plan.menu.estimate.save')}</span>
</button> </button>
<button <button
type="button" type="button"
// style={{ display: buttonStyle3 }} style={{ display: buttonStyle3 }}
style={{ display: buttonStyle }} // style={{ display: buttonStyle }}
className="btn-frame gray ico-flx" className="btn-frame gray ico-flx"
onClick={() => { onClick={() => {
handleEstimateReset() handleEstimateReset()
@ -550,8 +549,8 @@ export default function CanvasMenu(props) {
{estimateRecoilState?.docNo !== null && (sessionState.storeId === 'T01' || sessionState.storeLvl === '1') && ( {estimateRecoilState?.docNo !== null && (sessionState.storeId === 'T01' || sessionState.storeLvl === '1') && (
<button <button
type="button" type="button"
// style={{ display: buttonStyle4 }} style={{ display: buttonStyle4 }}
style={{ display: buttonStyle }} // style={{ display: buttonStyle }}
className="btn-frame gray ico-flx" className="btn-frame gray ico-flx"
onClick={() => { onClick={() => {
setEstimateCopyPopupOpen(true) setEstimateCopyPopupOpen(true)
@ -563,13 +562,12 @@ export default function CanvasMenu(props) {
)} )}
<button <button
type="button" type="button"
// style={{ display: buttonStyle5 }} style={{ display: buttonStyle5 }}
style={{ display: buttonStyle }} // style={{ display: buttonStyle }}
className="btn-frame gray ico-flx" className="btn-frame gray ico-flx"
onClick={() => { onClick={() => {
// //
alert('작업중입니다') handleEstimateLockController(estimateRecoilState)
// handleEstimateLockController(estimateRecoilState)
}} }}
> >
<span className="ico ico05"></span> <span className="ico ico05"></span>
@ -601,8 +599,7 @@ export default function CanvasMenu(props) {
</div> </div>
{/* 견적서(menuNumber=== 5) 상세화면인경우 문서다운로드 팝업 */} {/* 견적서(menuNumber=== 5) 상세화면인경우 문서다운로드 팝업 */}
{estimatePopupOpen && ( {estimatePopupOpen && (
// <DocDownOptionPop planNo={estimateRecoilState?.planNo} setEstimatePopupOpen={setEstimatePopupOpen} docDownPopLockFlg={docDownPopLockFlg} /> <DocDownOptionPop planNo={estimateRecoilState?.planNo} setEstimatePopupOpen={setEstimatePopupOpen} docDownPopLockFlg={docDownPopLockFlg} />
<DocDownOptionPop planNo={estimateRecoilState?.planNo} setEstimatePopupOpen={setEstimatePopupOpen} />
)} )}
{/* 견적서(menuNumber ===5)복사 팝업 */} {/* 견적서(menuNumber ===5)복사 팝업 */}
{estimateCopyPopupOpen && <EstimateCopyPop planNo={estimateRecoilState?.planNo} setEstimateCopyPopupOpen={setEstimateCopyPopupOpen} />} {estimateCopyPopupOpen && <EstimateCopyPop planNo={estimateRecoilState?.planNo} setEstimateCopyPopupOpen={setEstimateCopyPopupOpen} />}

View File

@ -272,7 +272,7 @@ export default function Stuff() {
stuffSearchParams.pageNo = stuffSearchParams.pageNo stuffSearchParams.pageNo = stuffSearchParams.pageNo
async function fetchData() { async function fetchData() {
const apiUrl = `/api/object/list?saleStoreId=${session?.storeId}&${queryStringFormatter(stuffSearchParams)}` const apiUrl = `/api/object/list?${queryStringFormatter(stuffSearchParams)}`
await get({ url: apiUrl }).then((res) => { await get({ url: apiUrl }).then((res) => {
if (!isEmptyArray(res)) { if (!isEmptyArray(res)) {
setGridProps({ ...gridProps, gridData: res, count: res[0].totCnt }) setGridProps({ ...gridProps, gridData: res, count: res[0].totCnt })
@ -302,7 +302,7 @@ export default function Stuff() {
setPageNo(1) setPageNo(1)
async function fetchData() { async function fetchData() {
const apiUrl = `/api/object/list?saleStoreId=${session?.storeId}&${queryStringFormatter(stuffSearchParams)}` const apiUrl = `/api/object/list?${queryStringFormatter(stuffSearchParams)}`
await get({ url: apiUrl }).then((res) => { await get({ url: apiUrl }).then((res) => {
if (!isEmptyArray(res)) { if (!isEmptyArray(res)) {
setGridProps({ ...gridProps, gridData: res, count: res[0].totCnt }) setGridProps({ ...gridProps, gridData: res, count: res[0].totCnt })

View File

@ -10,7 +10,7 @@ import { globalLocaleStore } from '@/store/localeAtom'
import { isEmptyArray, isNotEmptyArray, isObjectNotEmpty, queryStringFormatter } from '@/util/common-utils' import { isEmptyArray, isNotEmptyArray, isObjectNotEmpty, queryStringFormatter } from '@/util/common-utils'
import { useMessage } from '@/hooks/useMessage' import { useMessage } from '@/hooks/useMessage'
import { useForm } from 'react-hook-form' import { useForm } from 'react-hook-form'
import { useRecoilValue, useSetRecoilState, useResetRecoilState, useRecoilState } from 'recoil' import { useRecoilValue, useSetRecoilState, useRecoilState } from 'recoil'
import { SessionContext } from '@/app/SessionProvider' import { SessionContext } from '@/app/SessionProvider'
import FindAddressPop from './popup/FindAddressPop' import FindAddressPop from './popup/FindAddressPop'
import PlanRequestPop from './popup/PlanRequestPop' import PlanRequestPop from './popup/PlanRequestPop'
@ -19,18 +19,16 @@ import { useCommonCode } from '@/hooks/common/useCommonCode'
import StuffPlanQGrid from './StuffPlanQGrid' import StuffPlanQGrid from './StuffPlanQGrid'
import { floorPlanObjectState } from '@/store/floorPlanObjectAtom' import { floorPlanObjectState } from '@/store/floorPlanObjectAtom'
import { GlobalDataContext } from '@/app/GlobalDataProvider' import { GlobalDataContext } from '@/app/GlobalDataProvider'
// import { ManagementContext } from '@/app/management/ManagementProvider'
import DocDownOptionPop from '../estimate/popup/DocDownOptionPop' import DocDownOptionPop from '../estimate/popup/DocDownOptionPop'
import { stuffSearchState } from '@/store/stuffAtom' import { stuffSearchState } from '@/store/stuffAtom'
import { QcastContext } from '@/app/QcastProvider' import { QcastContext } from '@/app/QcastProvider'
import { useCanvasMenu } from '@/hooks/common/useCanvasMenu'
import { useSwal } from '@/hooks/useSwal' import { useSwal } from '@/hooks/useSwal'
export default function StuffDetail() { export default function StuffDetail() {
const [stuffSearch, setStuffSearch] = useRecoilState(stuffSearchState) const [stuffSearch, setStuffSearch] = useRecoilState(stuffSearchState)
const { swalFire } = useSwal() const { swalFire } = useSwal()
const { setIsGlobalLoading } = useContext(QcastContext) const { setIsGlobalLoading } = useContext(QcastContext)
const resetStuffRecoil = useResetRecoilState(stuffSearchState)
const stuffSearchParams = useRecoilValue(stuffSearchState) const stuffSearchParams = useRecoilValue(stuffSearchState)
const setFloorPlanObjectNo = useSetRecoilState(floorPlanObjectState) // const setFloorPlanObjectNo = useSetRecoilState(floorPlanObjectState) //
@ -41,6 +39,8 @@ export default function StuffDetail() {
const [showButton, setShowButton] = useState('') //, , const [showButton, setShowButton] = useState('') //, ,
const { setMenuNumber } = useCanvasMenu()
// //
const { commonCode, findCommonCode } = useCommonCode() const { commonCode, findCommonCode } = useCommonCode()
const [selOptions, setSelOptions] = useState('') // 1 const [selOptions, setSelOptions] = useState('') // 1
@ -1596,6 +1596,7 @@ export default function StuffDetail() {
pid: planNo, pid: planNo,
objectNo: objectNo, objectNo: objectNo,
} }
setMenuNumber(null)
const url = `/floor-plan?${queryStringFormatter(param)}` const url = `/floor-plan?${queryStringFormatter(param)}`
router.push(url) router.push(url)
} }

View File

@ -705,6 +705,18 @@ export default function StuffSearchCondition() {
stuffSearch.pageSize = 100 stuffSearch.pageSize = 100
setSchSelSaleStoreId('') setSchSelSaleStoreId('')
setOtherSaleStoreId('') setOtherSaleStoreId('')
} else {
setStartDate(stuffSearch?.schFromDt ? stuffSearch.schFromDt : dayjs(new Date()).add(-1, 'year').format('YYYY-MM-DD'))
setEndDate(stuffSearch?.schToDt ? stuffSearch.schToDt : dayjs(new Date()).format('YYYY-MM-DD'))
setObjectNo(stuffSearch.schObjectNo ? stuffSearch.schObjectNo : objectNo)
setSaleStoreName(stuffSearch.schSaleStoreName ? stuffSearch.schSaleStoreName : saleStoreName)
setAddress(stuffSearch.schAddress ? stuffSearch.schAddress : address)
setobjectName(stuffSearch.schObjectName ? stuffSearch.schObjectName : objectName)
setDispCompanyName(stuffSearch.schDispCompanyName ? stuffSearch.schDispCompanyName : dispCompanyName)
setReceiveUser(stuffSearch.schReceiveUser ? stuffSearch.schReceiveUser : receiveUser)
setDateType(stuffSearch.schDateType ? stuffSearch.schDateType : dateType)
setTempFlg(stuffSearch.schTempFlg ? stuffSearch.schTempFlg : tempFlg)
setMyDataCheck(stuffSearch.schMyDataCheck)
} }
} else { } else {
setStartDate(stuffSearch?.schFromDt ? stuffSearch.schFromDt : dayjs(new Date()).add(-1, 'year').format('YYYY-MM-DD')) setStartDate(stuffSearch?.schFromDt ? stuffSearch.schFromDt : dayjs(new Date()).add(-1, 'year').format('YYYY-MM-DD'))

View File

@ -15,7 +15,6 @@ import { isObjectNotEmpty, queryStringFormatter } from '@/util/common-utils'
import { useCanvasMenu } from '@/hooks/common/useCanvasMenu' import { useCanvasMenu } from '@/hooks/common/useCanvasMenu'
import { GlobalDataContext } from '@/app/GlobalDataProvider' import { GlobalDataContext } from '@/app/GlobalDataProvider'
// import { ManagementContext } from '@/app/management/ManagementProvider'
import { SessionContext } from '@/app/SessionProvider' import { SessionContext } from '@/app/SessionProvider'
export default function StuffSubHeader({ type }) { export default function StuffSubHeader({ type }) {

View File

@ -938,7 +938,7 @@
"estimate.detail.unlock.alertMsg": "見積書を修正して保存", "estimate.detail.unlock.alertMsg": "見積書を修正して保存",
"estimate.detail.alert.delFile": "添付ファイルを完全に削除するには[保存]ボタンをクリックしてください", "estimate.detail.alert.delFile": "添付ファイルを完全に削除するには[保存]ボタンをクリックしてください",
"estimate.detail.alert.selectDelItem": "削除する商品を選択してください.", "estimate.detail.alert.selectDelItem": "削除する商品を選択してください.",
"estimate.menu.move.valid1": "見積書を作成したら、見積書を照会できます.", "estimate.menu.move.valid1": "回路を分割していないため、見積もりを呼び出すことはできません.",
"simulator.title.sub1": "物件番号", "simulator.title.sub1": "物件番号",
"simulator.title.sub2": "作成日", "simulator.title.sub2": "作成日",
"simulator.title.sub3": "システム容量", "simulator.title.sub3": "システム容量",

View File

@ -947,7 +947,7 @@
"estimate.detail.unlock.alertMsg": "견적서를 수정하고, 저장하십시오", "estimate.detail.unlock.alertMsg": "견적서를 수정하고, 저장하십시오",
"estimate.detail.alert.delFile": "첨부파일을 완전히 삭제하려면 [저장]버튼을 클릭하십시오.", "estimate.detail.alert.delFile": "첨부파일을 완전히 삭제하려면 [저장]버튼을 클릭하십시오.",
"estimate.detail.alert.selectDelItem": "삭제할 제품을 선택하세요.", "estimate.detail.alert.selectDelItem": "삭제할 제품을 선택하세요.",
"estimate.menu.move.valid1": "견적서를 생성한 후에, 견적서를 조회할 수 있습니다.", "estimate.menu.move.valid1": "회로를 나누지 않았기 때문에 견적서를 호출할 수 없습니다.",
"simulator.title.sub1": "물건번호", "simulator.title.sub1": "물건번호",
"simulator.title.sub2": "작성일", "simulator.title.sub2": "작성일",
"simulator.title.sub3": "시스템 용량", "simulator.title.sub3": "시스템 용량",