Merge branch 'dev' into dev-ds
This commit is contained in:
commit
05441f6a53
@ -16,6 +16,7 @@ import '../styles/style.scss'
|
||||
import '../styles/contents.scss'
|
||||
import Dimmed from '@/components/ui/Dimmed'
|
||||
import SessionProvider from './SessionProvider'
|
||||
import LocaleSwitch from '@/components/LocaleSwitch'
|
||||
|
||||
// const inter = Inter({ subsets: ['latin'] })
|
||||
|
||||
@ -76,8 +77,9 @@ export default async function RootLayout({ children }) {
|
||||
</QcastProvider>
|
||||
</div>
|
||||
<footer>
|
||||
<div className="footer-inner">
|
||||
<div className="footer-inner flex justify-center">
|
||||
<span>COPYRIGHT©2024 Hanwha Japan All Rights Reserved.</span>
|
||||
<LocaleSwitch />
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
23
src/components/LocaleSwitch.jsx
Normal file
23
src/components/LocaleSwitch.jsx
Normal file
@ -0,0 +1,23 @@
|
||||
'use client'
|
||||
|
||||
import { globalLocaleStore } from '@/store/localeAtom'
|
||||
import { useRecoilState } from 'recoil'
|
||||
|
||||
export default function LocaleSwitch() {
|
||||
const [globalLocale, setGlobalLocale] = useRecoilState(globalLocaleStore)
|
||||
|
||||
return (
|
||||
<span
|
||||
className="locale-switch"
|
||||
onClick={() => {
|
||||
if (globalLocale === 'ko') {
|
||||
setGlobalLocale('ja')
|
||||
} else {
|
||||
setGlobalLocale('ko')
|
||||
}
|
||||
}}
|
||||
>
|
||||
{globalLocale.toUpperCase()}
|
||||
</span>
|
||||
)
|
||||
}
|
||||
@ -245,7 +245,6 @@ export default function Stuff() {
|
||||
}
|
||||
|
||||
async function fetchData() {
|
||||
// const apiUrl = `/api/object/list?saleStoreId=T01&${queryStringFormatter(params)}`
|
||||
const apiUrl = `/api/object/list?saleStoreId=${sessionState?.storeId}&${queryStringFormatter(params)}`
|
||||
await get({
|
||||
url: apiUrl,
|
||||
@ -294,7 +293,6 @@ export default function Stuff() {
|
||||
|
||||
useEffect(() => {
|
||||
if (stuffSearchParams?.code === 'E') {
|
||||
//console.log('조회누름::::::::', stuffSearchParams, sessionState)
|
||||
stuffSearchParams.startRow = 1
|
||||
stuffSearchParams.endRow = 1 * pageSize
|
||||
stuffSearchParams.schSortType = defaultSortType
|
||||
|
||||
@ -24,6 +24,13 @@ export default function StuffSearchCondition() {
|
||||
const ref = useRef()
|
||||
const { get } = useAxios(globalLocaleState)
|
||||
|
||||
const objectNoRef = useRef(null)
|
||||
const saleStoreNameRef = useRef(null)
|
||||
const addressRef = useRef(null)
|
||||
const objectNameRef = useRef(null)
|
||||
const dispCompanyNameRef = useRef(null)
|
||||
const receiveUserRef = useRef(null)
|
||||
|
||||
//달력 props 관련 날짜 셋팅
|
||||
const [startDate, setStartDate] = useState(dayjs(new Date()).add(-1, 'year').format('YYYY-MM-DD'))
|
||||
const [endDate, setEndDate] = useState(dayjs(new Date()).format('YYYY-MM-DD'))
|
||||
@ -42,13 +49,13 @@ export default function StuffSearchCondition() {
|
||||
const resetStuffRecoil = useResetRecoilState(stuffSearchState)
|
||||
const [stuffSearch, setStuffSearch] = useRecoilState(stuffSearchState)
|
||||
const [objectNo, setObjectNo] = useState('') //물건번호
|
||||
const [saleStoreName, setSaleStoreName] = useState('') //판매대리점명
|
||||
const [address, setAddress] = useState('') //물건주소
|
||||
const [objectName, setobjectName] = useState('') //물건명
|
||||
const [saleStoreName, setSaleStoreName] = useState('') //판매대리점명
|
||||
const [receiveUser, setReceiveUser] = useState('') //담당자
|
||||
const [dispCompanyName, setDispCompanyName] = useState('') //견적처
|
||||
const [dateType, setDateType] = useState('U') //갱신일(U)/등록일(R)
|
||||
const [schSelSaleStoreId, setSchSelSaleStoreId] = useState('') //판매대리점 선택
|
||||
const [receiveUser, setReceiveUser] = useState('') //담당자
|
||||
const [dateType, setDateType] = useState('U') //갱신일(U)/등록일(R)
|
||||
|
||||
const [schSelSaleStoreList, setSchSelSaleStoreList] = useState([]) //판매대리점 자동완성 SELECT
|
||||
// 조회
|
||||
@ -58,26 +65,52 @@ export default function StuffSearchCondition() {
|
||||
return alert(getMessage('stuff.message.periodError'))
|
||||
}
|
||||
|
||||
setStuffSearch({
|
||||
schObjectNo: stuffSearch?.schObjectNo ? stuffSearch.schObjectNo : objectNo,
|
||||
schAddress: stuffSearch?.schAddress ? stuffSearch.schAddress : address,
|
||||
schObjectName: stuffSearch?.schObjectName ? stuffSearch.schObjectName : objectName,
|
||||
schSaleStoreName: stuffSearch?.schSaleStoreName ? stuffSearch.schSaleStoreName : saleStoreName,
|
||||
schReceiveUser: stuffSearch?.schReceiveUser ? stuffSearch.schReceiveUser : receiveUser,
|
||||
schDispCompanyName: stuffSearch?.schDispCompanyName ? stuffSearch.schDispCompanyName : dispCompanyName,
|
||||
schDateType: stuffSearch?.schDateType ? stuffSearch.schDateType : dateType,
|
||||
schFromDt: dayjs(startDate).format('YYYY-MM-DD'),
|
||||
schToDt: dayjs(endDate).format('YYYY-MM-DD'),
|
||||
code: 'E',
|
||||
schSelSaleStoreId: stuffSearch?.schSelSaleStoreId ? stuffSearch.schSelSaleStoreId : schSelSaleStoreId,
|
||||
startRow: stuffSearch?.startRow ? stuffSearch.startRow : 1,
|
||||
endRow: stuffSearch?.endRow ? stuffSearch.endRow : 100,
|
||||
schSortType: stuffSearch?.schSortType ? stuffSearch.schSortType : 'R',
|
||||
})
|
||||
if (stuffSearch.code === 'S') {
|
||||
setStuffSearch({
|
||||
schObjectNo: objectNo ? objectNo : stuffSearch?.schObjectNo,
|
||||
schSaleStoreName: stuffSearch?.schSaleStoreName ? stuffSearch?.schSaleStoreName : saleStoreName,
|
||||
schAddress: address ? address : stuffSearch?.schAddress,
|
||||
schObjectName: objectName ? objectName : stuffSearch?.schObjectName,
|
||||
schDispCompanyName: dispCompanyName ? dispCompanyName : stuffSearch?.schDispCompanyName,
|
||||
schSelSaleStoreId: stuffSearch?.schSelSaleStoreId ? stuffSearch.schSelSaleStoreId : schSelSaleStoreId,
|
||||
schReceiveUser: receiveUser ? receiveUser : stuffSearch?.schReceiveUser,
|
||||
schDateType: stuffSearch?.schDateType ? stuffSearch.schDateType : dateType,
|
||||
schFromDt: dayjs(startDate).format('YYYY-MM-DD'),
|
||||
schToDt: dayjs(endDate).format('YYYY-MM-DD'),
|
||||
code: 'E',
|
||||
startRow: stuffSearch?.startRow ? stuffSearch.startRow : 1,
|
||||
endRow: stuffSearch?.endRow ? stuffSearch.endRow : 100,
|
||||
schSortType: stuffSearch?.schSortType ? stuffSearch.schSortType : 'R',
|
||||
})
|
||||
} else {
|
||||
setStuffSearch({
|
||||
schObjectNo: objectNo ? objectNo : '',
|
||||
schSaleStoreName: saleStoreName ? saleStoreName : '',
|
||||
schAddress: address ? address : '',
|
||||
schObjectName: objectName ? objectName : '',
|
||||
schDispCompanyName: dispCompanyName ? dispCompanyName : '',
|
||||
schSelSaleStoreId: schSelSaleStoreId ? schSelSaleStoreId : '',
|
||||
schReceiveUser: receiveUser ? receiveUser : '',
|
||||
schDateType: dateType,
|
||||
schFromDt: dayjs(startDate).format('YYYY-MM-DD'),
|
||||
schToDt: dayjs(endDate).format('YYYY-MM-DD'),
|
||||
code: 'E',
|
||||
startRow: 1,
|
||||
endRow: 100,
|
||||
schSortType: stuffSearch?.schSortType ? stuffSearch.schSortType : 'R',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
//초기화
|
||||
const resetRecoil = () => {
|
||||
objectNoRef.current.value = ''
|
||||
saleStoreNameRef.current.value = ''
|
||||
addressRef.current.value = ''
|
||||
objectNameRef.current.value = ''
|
||||
dispCompanyNameRef.current.value = ''
|
||||
receiveUserRef.current.value = ''
|
||||
|
||||
setObjectNo('')
|
||||
setAddress('')
|
||||
setobjectName('')
|
||||
@ -143,6 +176,13 @@ export default function StuffSearchCondition() {
|
||||
}
|
||||
}, [globalLocaleState])
|
||||
|
||||
// 엔터 이벤트
|
||||
const handleByOnKeyUp = (e) => {
|
||||
if (e.key === 'Enter') {
|
||||
onSubmit()
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
{/* 퍼블적용시작 */}
|
||||
@ -182,12 +222,13 @@ export default function StuffSearchCondition() {
|
||||
<div className="input-wrap">
|
||||
<input
|
||||
type="text"
|
||||
ref={objectNoRef}
|
||||
className="input-light"
|
||||
value={stuffSearch?.code === 'E' || stuffSearch?.code === 'M' ? stuffSearch.schObjectNo : objectNo}
|
||||
defaultValue={stuffSearch.code === 'E' || stuffSearch.code === 'M' ? stuffSearch?.schObjectNo : objectNo}
|
||||
onChange={(e) => {
|
||||
setObjectNo(e.target.value)
|
||||
setStuffSearch({ ...stuffSearch, code: 'S', schObjectNo: e.target.value })
|
||||
setObjectNo(objectNoRef.current.value)
|
||||
}}
|
||||
onKeyUp={handleByOnKeyUp}
|
||||
/>
|
||||
</div>
|
||||
</td>
|
||||
@ -196,11 +237,11 @@ export default function StuffSearchCondition() {
|
||||
<div className="input-wrap">
|
||||
<input
|
||||
type="text"
|
||||
ref={saleStoreNameRef}
|
||||
className="input-light"
|
||||
value={stuffSearch?.schSaleStoreName ? stuffSearch.schSaleStoreName : saleStoreName}
|
||||
defaultValue={stuffSearch.code === 'E' ? stuffSearch?.schSaleStoreName : saleStoreName}
|
||||
onChange={(e) => {
|
||||
setSaleStoreName(e.target.value)
|
||||
setStuffSearch({ ...stuffSearch, code: 'S', schSaleStoreName: e.target.value })
|
||||
setSaleStoreName(saleStoreNameRef.current.value)
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
@ -210,11 +251,11 @@ export default function StuffSearchCondition() {
|
||||
<div className="input-wrap">
|
||||
<input
|
||||
type="text"
|
||||
ref={addressRef}
|
||||
className="input-light"
|
||||
value={stuffSearch?.schAddress ? stuffSearch.schAddress : address}
|
||||
defaultValue={stuffSearch.code === 'E' ? stuffSearch?.schAddress : address}
|
||||
onChange={(e) => {
|
||||
setAddress(e.target.value)
|
||||
setStuffSearch({ ...stuffSearch, code: 'S', schAddress: e.target.value })
|
||||
setAddress(addressRef.current.value)
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
@ -226,11 +267,11 @@ export default function StuffSearchCondition() {
|
||||
<div className="input-wrap">
|
||||
<input
|
||||
type="text"
|
||||
ref={objectNameRef}
|
||||
className="input-light"
|
||||
value={stuffSearch?.schObjectName ? stuffSearch.schObjectName : objectName}
|
||||
defaultValue={stuffSearch.code === 'E' ? stuffSearch?.schObjectName : objectName}
|
||||
onChange={(e) => {
|
||||
setobjectName(e.target.value)
|
||||
setStuffSearch({ ...stuffSearch, code: 'S', schObjectName: e.target.value })
|
||||
setobjectName(objectNameRef.current.value)
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
@ -240,11 +281,11 @@ export default function StuffSearchCondition() {
|
||||
<div className="input-wrap">
|
||||
<input
|
||||
type="text"
|
||||
ref={dispCompanyNameRef}
|
||||
className="input-light"
|
||||
value={stuffSearch?.schDispCompanyName ? stuffSearch.schDispCompanyName : dispCompanyName}
|
||||
defaultValue={stuffSearch.code === 'E' ? stuffSearch?.schDispCompanyName : dispCompanyName}
|
||||
onChange={(e) => {
|
||||
setDispCompanyName(e.target.value)
|
||||
setStuffSearch({ ...stuffSearch, code: 'S', schDispCompanyName: e.target.value })
|
||||
setDispCompanyName(dispCompanyNameRef.current.value)
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
@ -293,10 +334,10 @@ export default function StuffSearchCondition() {
|
||||
<input
|
||||
type="text"
|
||||
className="input-light"
|
||||
value={stuffSearch?.schReceiveUser ? stuffSearch.schReceiveUser : receiveUser}
|
||||
ref={receiveUserRef}
|
||||
defaultValue={stuffSearch.code === 'E' ? stuffSearch?.schReceiveUser : receiveUser}
|
||||
onChange={(e) => {
|
||||
setReceiveUser(e.target.value)
|
||||
setStuffSearch({ ...stuffSearch, code: 'S', schReceiveUser: e.target.value })
|
||||
setReceiveUser(receiveUserRef.current.value)
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@ -1,18 +0,0 @@
|
||||
'use client'
|
||||
|
||||
import { createI18nClient } from 'next-international/client'
|
||||
|
||||
export const { useI18n, useScopedI18n, I18nProviderClient, useChangeLocale, defineLocale, useCurrentLocale } = createI18nClient(
|
||||
{
|
||||
ko: () => import('./ko'),
|
||||
ja: () => import('./ja'),
|
||||
},
|
||||
{
|
||||
// Uncomment to set base path
|
||||
// basePath: '/base',
|
||||
// Uncomment to use custom segment name
|
||||
// segmentName: 'locale',
|
||||
// Uncomment to set fallback locale
|
||||
// fallbackLocale: en,
|
||||
},
|
||||
)
|
||||
@ -1,90 +0,0 @@
|
||||
console.log('Loaded JA')
|
||||
|
||||
export default {
|
||||
hello: 'こんにちは',
|
||||
welcome: 'こんにちは {name}!',
|
||||
locale: '現在のロケールは {locale} です。',
|
||||
common: {
|
||||
require: '필수',
|
||||
},
|
||||
site: {
|
||||
name: 'Q.CAST III',
|
||||
sub_name: '태양광 발전 시스템 도면관리 사이트',
|
||||
},
|
||||
login: {
|
||||
login: 'Login',
|
||||
init_password: {
|
||||
btn: '비밀번호 초기화',
|
||||
title: '비밀번호 초기화',
|
||||
sub_title: '비밀번호를 초기화할 아이디와 이메일 주소를 입력해 주세요.',
|
||||
},
|
||||
},
|
||||
join: {
|
||||
title: 'Q.CAST3 로그인ID 발행 신청',
|
||||
sub1: {
|
||||
title: '판매대리점 정보',
|
||||
comment: '※ 등록되는 리셀러의 회사 이름을 입력하십시오. (2차점은 「○○판매주식회사(2차점:××설비주식회사)」로 기입해 주세요.)',
|
||||
storeQcastNm: '판매대리점명',
|
||||
storeQcastNm_placeholder: '株式会社エネルギア・ソリューション・アンド・サービス(2次店:山口住機販売有限会社)',
|
||||
storeQcastNmKana: '판매대리점명 후리가나',
|
||||
storeQcastNmKana_placeholder: 'カブシキガイシャエネルギア・ソリューション・アン',
|
||||
postCd: '우편번호',
|
||||
postCd_placeholder: '숫자 7자리',
|
||||
addr: '주소',
|
||||
addr_placeholder: '전각50자이내',
|
||||
telNo: '전화번호',
|
||||
telNo_placeholder: '00-0000-0000',
|
||||
fax: 'FAX 번호',
|
||||
fax_placeholder: '00-0000-0000',
|
||||
},
|
||||
sub2: {
|
||||
title: '담당자 정보',
|
||||
userNm: '담당자명',
|
||||
userNmKana: '담당자명 후리가나',
|
||||
userId: '신청 ID',
|
||||
email: '이메일 주소',
|
||||
telNo: '전화번호',
|
||||
telNo_placeholder: '00-0000-0000',
|
||||
fax: 'FAX 번호',
|
||||
fax_placeholder: '00-0000-0000',
|
||||
category: '부서명',
|
||||
},
|
||||
sub3: {
|
||||
title: '견적서 제출용 회사정보',
|
||||
qtCompNm: '회사명',
|
||||
qtPostCd: '우편번호',
|
||||
qtPostCd_placeholder: '숫자 7자리',
|
||||
qtAddr: '주소',
|
||||
qtAddr_placeholder: '전각50자이내',
|
||||
qtEmail: '이메일 주소',
|
||||
qtTelNo: '전화번호',
|
||||
qtTelNo_placeholder: '00-0000-0000',
|
||||
qtFax: 'FAX 번호',
|
||||
qtFax_placeholder: '00-0000-0000',
|
||||
},
|
||||
btn: {
|
||||
approval_request: 'ID 승인요청',
|
||||
},
|
||||
complete: {
|
||||
title: 'Q.CAST3 로그인ID 발행신청 완료',
|
||||
contents: '※ 신청한 ID가 승인되면, 담당자 정보에 입력한 이메일 주소로 로그인 관련 안내 메일이 전송됩니다.',
|
||||
email_comment: '담당자 이메일 주소',
|
||||
email: 'test@naver.com',
|
||||
},
|
||||
},
|
||||
stuff: {
|
||||
gridHeader: {
|
||||
lastEditDatetime: '갱신일시',
|
||||
objectNo: '물건번호',
|
||||
planTotCnt: '플랜 수',
|
||||
objectName: '물건명',
|
||||
saleStoreId: '대리점ID',
|
||||
saleStoreName: '대리점명',
|
||||
address: '물건주소',
|
||||
dispCompanyName: '견적처',
|
||||
receiveUser: '담당자',
|
||||
specDate: '사양확인',
|
||||
createDatetime: '등록일',
|
||||
},
|
||||
},
|
||||
}
|
||||
@ -1,91 +0,0 @@
|
||||
console.log('Loaded KO')
|
||||
|
||||
export default {
|
||||
hello: '안녕',
|
||||
welcome: '안녕 {name}!',
|
||||
locale: '현재 로케일은 {locale}입니다.',
|
||||
common: {
|
||||
require: '필수',
|
||||
},
|
||||
site: {
|
||||
name: 'Q.CAST III',
|
||||
sub_name: '태양광 발전 시스템 도면관리 사이트',
|
||||
},
|
||||
login: {
|
||||
login: '로그인',
|
||||
init_password: {
|
||||
btn: '비밀번호 초기화',
|
||||
title: '비밀번호 초기화',
|
||||
sub_title: '비밀번호를 초기화할 아이디와 이메일 주소를 입력해 주세요.',
|
||||
complete_message: '비밀번호가 초기화 되었습니다. 초기화된 비밀번호는 아이디와 같습니다.',
|
||||
},
|
||||
},
|
||||
join: {
|
||||
title: 'Q.CAST3 로그인ID 발행 신청',
|
||||
sub1: {
|
||||
title: '판매대리점 정보',
|
||||
comment: '※ 등록되는 리셀러의 회사 이름을 입력하십시오. (2차점은 「○○판매주식회사(2차점:××설비주식회사)」로 기입해 주세요.)',
|
||||
storeQcastNm: '판매대리점명',
|
||||
storeQcastNm_placeholder: '주식회사 에너지 기어 솔루션 앤 서비스 (2차점: 야마구치 주기 판매 유한회사)',
|
||||
storeQcastNmKana: '판매대리점명 후리가나',
|
||||
storeQcastNmKana_placeholder: '주식회사 에너지 기어 솔루션',
|
||||
postCd: '우편번호',
|
||||
postCd_placeholder: '숫자 7자리',
|
||||
addr: '주소',
|
||||
addr_placeholder: '전각50자이내',
|
||||
telNo: '전화번호',
|
||||
telNo_placeholder: '00-0000-0000',
|
||||
fax: 'FAX 번호',
|
||||
fax_placeholder: '00-0000-0000',
|
||||
},
|
||||
sub2: {
|
||||
title: '담당자 정보',
|
||||
userNm: '담당자명',
|
||||
userNmKana: '담당자명 후리가나',
|
||||
userId: '신청 ID',
|
||||
email: '이메일 주소',
|
||||
telNo: '전화번호',
|
||||
telNo_placeholder: '00-0000-0000',
|
||||
fax: 'FAX 번호',
|
||||
fax_placeholder: '00-0000-0000',
|
||||
category: '부서명',
|
||||
},
|
||||
sub3: {
|
||||
title: '견적서 제출용 회사정보',
|
||||
qtCompNm: '회사명',
|
||||
qtPostCd: '우편번호',
|
||||
qtPostCd_placeholder: '숫자 7자리',
|
||||
qtAddr: '주소',
|
||||
qtAddr_placeholder: '전각50자이내',
|
||||
qtEmail: '이메일 주소',
|
||||
qtTelNo: '전화번호',
|
||||
qtTelNo_placeholder: '00-0000-0000',
|
||||
qtFax: 'FAX 번호',
|
||||
qtFax_placeholder: '00-0000-0000',
|
||||
},
|
||||
btn: {
|
||||
approval_request: 'ID 승인요청',
|
||||
},
|
||||
complete: {
|
||||
title: 'Q.CAST3 로그인ID 발행신청 완료',
|
||||
contents: '※ 신청한 ID가 승인되면, 담당자 정보에 입력한 이메일 주소로 로그인 관련 안내 메일이 전송됩니다.',
|
||||
email_comment: '담당자 이메일 주소',
|
||||
email: 'test@naver.com',
|
||||
},
|
||||
},
|
||||
stuff: {
|
||||
gridHeader: {
|
||||
lastEditDatetime: '갱신일시',
|
||||
objectNo: '물건번호',
|
||||
planTotCnt: '플랜 수',
|
||||
objectName: '물건명',
|
||||
saleStoreId: '대리점ID',
|
||||
saleStoreName: '대리점명',
|
||||
address: '물건주소',
|
||||
dispCompanyName: '견적처',
|
||||
receiveUser: '담당자',
|
||||
specDate: '사양확인',
|
||||
createDatetime: '등록일',
|
||||
},
|
||||
},
|
||||
}
|
||||
@ -1,14 +0,0 @@
|
||||
import { createI18nServer } from 'next-international/server'
|
||||
|
||||
export const { getI18n, getScopedI18n, getCurrentLocale, getStaticParams } = createI18nServer(
|
||||
{
|
||||
ko: () => import('./ko'),
|
||||
ja: () => import('./ja'),
|
||||
},
|
||||
{
|
||||
// Uncomment to use custom segment name
|
||||
// segmentName: 'locale',
|
||||
// Uncomment to set fallback locale
|
||||
// fallbackLocale: en,
|
||||
},
|
||||
)
|
||||
@ -1 +1,5 @@
|
||||
@import '_main.scss';
|
||||
@import '_main.scss';
|
||||
|
||||
.locale-switch {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user