Compare commits
7 Commits
8ea6f43ddb
...
ad14bf091f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ad14bf091f | ||
|
|
c34a7fc54d | ||
| ac015123cd | |||
| f7fe0f6528 | |||
| 6b76108d8b | |||
|
|
590040fa1d | ||
|
|
9bb72bfa3a |
@ -2,26 +2,111 @@
|
|||||||
|
|
||||||
import { useState } from 'react'
|
import { useState } from 'react'
|
||||||
import { useMessage } from '@/hooks/useMessage'
|
import { useMessage } from '@/hooks/useMessage'
|
||||||
|
import { setSession, login } from '@/lib/authActions'
|
||||||
|
import { sessionStore } from '@/store/commonAtom'
|
||||||
|
import { useRecoilState } from 'recoil'
|
||||||
|
import { useAxios } from '@/hooks/useAxios'
|
||||||
|
import { globalLocaleStore } from '@/store/localeAtom'
|
||||||
|
import { useRouter } from 'next/navigation'
|
||||||
|
|
||||||
import GlobalSpinner from '@/components/common/spinner/GlobalSpinner'
|
import GlobalSpinner from '@/components/common/spinner/GlobalSpinner'
|
||||||
|
|
||||||
export default function AutoLoginPage() {
|
export default function AutoLoginPage({ autoLoginParam }) {
|
||||||
const [isLoading, setIsLoading] = useState(true)
|
const router = useRouter()
|
||||||
|
|
||||||
|
const [isLoading, setIsLoading] = useState(autoLoginParam === 'Y' ? false : true)
|
||||||
|
const [globalLocaleState, setGlbalLocaleState] = useRecoilState(globalLocaleStore)
|
||||||
|
|
||||||
|
const { promisePost } = useAxios(globalLocaleState)
|
||||||
const { getMessage } = useMessage()
|
const { getMessage } = useMessage()
|
||||||
|
|
||||||
|
const [userId, setUserId] = useState('')
|
||||||
|
const [sessionState, setSessionState] = useRecoilState(sessionStore)
|
||||||
|
|
||||||
|
const [idFocus, setIdFocus] = useState(false)
|
||||||
|
|
||||||
|
const loginProcess = async () => {
|
||||||
|
setIsLoading(true)
|
||||||
|
await promisePost({ url: '/api/login/v1.0/user', data: { loginId: userId } }).then((response) => {
|
||||||
|
setIsLoading(false)
|
||||||
|
if (response.data) {
|
||||||
|
const res = response.data
|
||||||
|
const result = { ...res, storeLvl: res.groupId === '60000' ? '1' : '2', pwdInitYn: 'Y' }
|
||||||
|
setSession(result)
|
||||||
|
setSessionState(result)
|
||||||
|
login()
|
||||||
|
} else {
|
||||||
|
alert(getMessage('login.fail'))
|
||||||
|
router.push('/login?autoLoginParam1=Y')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{isLoading && <GlobalSpinner />}
|
{isLoading && <GlobalSpinner />}
|
||||||
<div className="login-input-frame">
|
{autoLoginParam !== 'Y' ? (
|
||||||
<div className="login-frame-tit ">
|
<>
|
||||||
<span>{getMessage('site.name')}</span>
|
<div className="login-input-frame">
|
||||||
{getMessage('site.sub_name')}
|
<div className="login-frame-tit ">
|
||||||
</div>
|
<span>{getMessage('site.name')}</span>
|
||||||
<div className="login-input-wrap">
|
{getMessage('site.sub_name')}
|
||||||
<div className="login-area id" style={{ fontWeight: 'bolder' }}>
|
</div>
|
||||||
{getMessage('login.auto.page.text')}
|
<div className="login-input-wrap">
|
||||||
|
<div className="login-area id" style={{ fontWeight: 'bolder' }}>
|
||||||
|
{getMessage('login.auto.page.text')}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</>
|
||||||
</div>
|
) : (
|
||||||
|
<>
|
||||||
|
<div className="login-input-frame">
|
||||||
|
<form
|
||||||
|
onSubmit={(e) => {
|
||||||
|
e.preventDefault()
|
||||||
|
loginProcess()
|
||||||
|
}}
|
||||||
|
className="space-y-6"
|
||||||
|
>
|
||||||
|
<div className="login-frame-tit">
|
||||||
|
<span>{getMessage('site.name')}</span>
|
||||||
|
{getMessage('site.sub_name')}
|
||||||
|
</div>
|
||||||
|
<div className="login-input-wrap">
|
||||||
|
<div className={`login-area id ${idFocus ? 'focus' : ''}`}>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
className="login-input"
|
||||||
|
id="userId"
|
||||||
|
name="id"
|
||||||
|
required
|
||||||
|
value={userId}
|
||||||
|
placeholder={getMessage('login.id.placeholder')}
|
||||||
|
onChange={(e) => {
|
||||||
|
setUserId(e.target.value)
|
||||||
|
}}
|
||||||
|
onFocus={() => setIdFocus(true)}
|
||||||
|
onBlur={() => setIdFocus(false)}
|
||||||
|
/>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className="id-delete"
|
||||||
|
onClick={(e) => {
|
||||||
|
setUserId('')
|
||||||
|
}}
|
||||||
|
></button>
|
||||||
|
</div>
|
||||||
|
<div className="login-btn-box">
|
||||||
|
<button type="submit" className="login-btn">
|
||||||
|
{getMessage('login')}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,7 +25,9 @@ export default function Login() {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (autoLoginParam) {
|
if (autoLoginParam) {
|
||||||
autoLoginProcess(autoLoginParam)
|
if (autoLoginParam !== 'Y') {
|
||||||
|
autoLoginProcess(autoLoginParam)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// console.log('🚀 ~ checkSession ~ checkSession():', checkSession())
|
// console.log('🚀 ~ checkSession ~ checkSession():', checkSession())
|
||||||
@ -334,7 +336,7 @@ export default function Login() {
|
|||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
{autoLoginParam && <AutoLogin />}
|
{autoLoginParam && <AutoLogin autoLoginParam={autoLoginParam} />}
|
||||||
</div>
|
</div>
|
||||||
<div className="login-copyright">COPYRIGHT©2024 Hanwha Japan All Rights Reserved.</div>
|
<div className="login-copyright">COPYRIGHT©2024 Hanwha Japan All Rights Reserved.</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -377,8 +377,8 @@ export default function Estimate({}) {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (estimateContextState.estimateType !== '') {
|
if (estimateContextState.estimateType !== '') {
|
||||||
const param = {
|
const param = {
|
||||||
saleStoreId: session.storeId,
|
saleStoreId: estimateContextState.sapSaleStoreId,
|
||||||
sapSalesStoreCd: session.custCd,
|
sapSalesStoreCd: estimateContextState.sapSalesStoreCd,
|
||||||
docTpCd: estimateContextState?.estimateType,
|
docTpCd: estimateContextState?.estimateType,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -481,8 +481,8 @@ export default function Estimate({}) {
|
|||||||
//Pricing 버튼
|
//Pricing 버튼
|
||||||
const handlePricing = async (showPriceCd) => {
|
const handlePricing = async (showPriceCd) => {
|
||||||
const param = {
|
const param = {
|
||||||
saleStoreId: session.storeId,
|
saleStoreId: estimateContextState.sapSaleStoreId,
|
||||||
sapSalesStoreCd: session.custCd,
|
sapSalesStoreCd: estimateContextState.sapSalesStoreCd,
|
||||||
docTpCd: estimateContextState.estimateType,
|
docTpCd: estimateContextState.estimateType,
|
||||||
priceCd: showPriceCd,
|
priceCd: showPriceCd,
|
||||||
itemIdList: estimateContextState.itemList.filter((item) => item.delFlg === '0' && item.paDispOrder === null),
|
itemIdList: estimateContextState.itemList.filter((item) => item.delFlg === '0' && item.paDispOrder === null),
|
||||||
@ -506,7 +506,6 @@ export default function Estimate({}) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
setIsGlobalLoading(true)
|
setIsGlobalLoading(true)
|
||||||
await promisePost({ url: '/api/estimate/price/item-price-list', data: param }).then((res) => {
|
await promisePost({ url: '/api/estimate/price/item-price-list', data: param }).then((res) => {
|
||||||
let updateList = []
|
let updateList = []
|
||||||
|
|||||||
@ -100,7 +100,7 @@ export default function ObjectSetting({ id, pos = { x: 50, y: 230 } }) {
|
|||||||
]
|
]
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<WithDraggable isShow={true} pos={pos} className="lrr" style={{ visibility: isHidden ? 'hidden' : 'visible' }}>
|
<WithDraggable isShow={true} pos={pos} className="lrr" isHidden={isHidden}>
|
||||||
<WithDraggable.Header title={getMessage('plan.menu.placement.surface.object')} onClose={() => closePopup(id)} />
|
<WithDraggable.Header title={getMessage('plan.menu.placement.surface.object')} onClose={() => closePopup(id)} />
|
||||||
<WithDraggable.Body>
|
<WithDraggable.Body>
|
||||||
<div className="modal-btn-wrap">
|
<div className="modal-btn-wrap">
|
||||||
|
|||||||
@ -64,9 +64,7 @@ export function useModuleBasicSetting(tabNum) {
|
|||||||
const { createRoofPolygon, createMarginPolygon, createPaddingPolygon } = useMode()
|
const { createRoofPolygon, createMarginPolygon, createPaddingPolygon } = useMode()
|
||||||
|
|
||||||
const { drawDirectionArrow } = usePolygon()
|
const { drawDirectionArrow } = usePolygon()
|
||||||
|
|
||||||
const moduleSetupOption = useRecoilValue(moduleSetupOptionState)
|
const moduleSetupOption = useRecoilValue(moduleSetupOptionState)
|
||||||
|
|
||||||
const setManualSetupMode = useSetRecoilState(toggleManualSetupModeState)
|
const setManualSetupMode = useSetRecoilState(toggleManualSetupModeState)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@ -206,13 +204,7 @@ export function useModuleBasicSetting(tabNum) {
|
|||||||
//도머등 오브젝트 객체가 있으면 아웃라인 낸다
|
//도머등 오브젝트 객체가 있으면 아웃라인 낸다
|
||||||
const batchObjects = canvas
|
const batchObjects = canvas
|
||||||
?.getObjects()
|
?.getObjects()
|
||||||
.filter(
|
.filter((obj) => obj.name === BATCH_TYPE.OPENING || obj.name === BATCH_TYPE.TRIANGLE_DORMER || obj.name === BATCH_TYPE.PENTAGON_DORMER) //그림자 제외 나머지 오브젝트들
|
||||||
(obj) =>
|
|
||||||
obj.name === BATCH_TYPE.OPENING ||
|
|
||||||
obj.name === BATCH_TYPE.SHADOW ||
|
|
||||||
obj.name === BATCH_TYPE.TRIANGLE_DORMER ||
|
|
||||||
obj.name === BATCH_TYPE.PENTAGON_DORMER,
|
|
||||||
) //도머s 객체
|
|
||||||
|
|
||||||
//도머도 외곽을 따야한다
|
//도머도 외곽을 따야한다
|
||||||
const batchObjectOptions = {
|
const batchObjectOptions = {
|
||||||
@ -446,6 +438,7 @@ export function useModuleBasicSetting(tabNum) {
|
|||||||
//레이아웃 수동설치 토글
|
//레이아웃 수동설치 토글
|
||||||
|
|
||||||
const moduleSetupSurfaces = canvas?.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE) //모듈설치면를 가져옴
|
const moduleSetupSurfaces = canvas?.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE) //모듈설치면를 가져옴
|
||||||
|
const isChidori = moduleSetupOption.isChidori
|
||||||
|
|
||||||
if (isManualModuleSetup) {
|
if (isManualModuleSetup) {
|
||||||
if (isManualModuleLayoutSetup) {
|
if (isManualModuleLayoutSetup) {
|
||||||
@ -623,15 +616,16 @@ export function useModuleBasicSetting(tabNum) {
|
|||||||
tempModule.left = holdCellCenterX - toFixedWithoutRounding(width / 2, 2)
|
tempModule.left = holdCellCenterX - toFixedWithoutRounding(width / 2, 2)
|
||||||
}
|
}
|
||||||
|
|
||||||
//움직이는 모듈왼쪽 -> 가운데
|
if (isChidori) {
|
||||||
if (Math.abs(smallLeft - holdCellCenterX) < snapDistance) {
|
//움직이는 모듈왼쪽 -> 가운데
|
||||||
tempModule.left = holdCellCenterX + intvHor / 2
|
if (Math.abs(smallLeft - holdCellCenterX) < snapDistance) {
|
||||||
|
tempModule.left = holdCellCenterX + intvHor / 2
|
||||||
|
}
|
||||||
|
// 오른쪽 -> 가운데
|
||||||
|
if (Math.abs(smallRight - holdCellCenterX) < snapDistance) {
|
||||||
|
tempModule.left = holdCellCenterX - width - intvHor / 2
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 오른쪽 -> 가운데
|
|
||||||
if (Math.abs(smallRight - holdCellCenterX) < snapDistance) {
|
|
||||||
tempModule.left = holdCellCenterX - width - intvHor / 2
|
|
||||||
}
|
|
||||||
|
|
||||||
//설치된 셀에 좌측에 스냅
|
//설치된 셀에 좌측에 스냅
|
||||||
if (Math.abs(smallRight - holdCellLeft) < snapDistance) {
|
if (Math.abs(smallRight - holdCellLeft) < snapDistance) {
|
||||||
// console.log('모듈 좌측 스냅')
|
// console.log('모듈 좌측 스냅')
|
||||||
@ -665,21 +659,16 @@ export function useModuleBasicSetting(tabNum) {
|
|||||||
tempModule.top = holdCellCenterY - toFixedWithoutRounding(width / 2, 2)
|
tempModule.top = holdCellCenterY - toFixedWithoutRounding(width / 2, 2)
|
||||||
}
|
}
|
||||||
|
|
||||||
//위쪽 -> 가운데
|
if (isChidori) {
|
||||||
if (Math.abs(smallTop - holdCellCenterY) < snapDistance) {
|
//위쪽 -> 가운데
|
||||||
// console.log('holdCellCenterX', holdCellCenterX)
|
if (Math.abs(smallTop - holdCellCenterY) < snapDistance) {
|
||||||
// console.log('smallLeft', smallLeft)
|
tempModule.top = holdCellCenterY + intvHor / 2
|
||||||
|
}
|
||||||
// console.log('모듈 센터에 스냅')
|
// 밑 -> 가운데
|
||||||
tempModule.top = holdCellCenterY + intvHor / 2
|
if (Math.abs(smallBottom - holdCellCenterY) < snapDistance) {
|
||||||
|
tempModule.top = holdCellCenterY - height - intvHor / 2
|
||||||
// console.log('tempModule.left', tempModule.left)
|
}
|
||||||
}
|
}
|
||||||
// 밑 -> 가운데
|
|
||||||
if (Math.abs(smallBottom - holdCellCenterY) < snapDistance) {
|
|
||||||
tempModule.top = holdCellCenterY - height - intvHor / 2
|
|
||||||
}
|
|
||||||
|
|
||||||
//설치된 셀에 좌측에 스냅
|
//설치된 셀에 좌측에 스냅
|
||||||
if (Math.abs(smallRight - holdCellLeft) < snapDistance) {
|
if (Math.abs(smallRight - holdCellLeft) < snapDistance) {
|
||||||
// console.log('모듈 좌측 스냅')
|
// console.log('모듈 좌측 스냅')
|
||||||
@ -850,6 +839,13 @@ export function useModuleBasicSetting(tabNum) {
|
|||||||
canvas?.add(manualModule)
|
canvas?.add(manualModule)
|
||||||
manualDrawModules.push(manualModule)
|
manualDrawModules.push(manualModule)
|
||||||
setModuleStatisticsData()
|
setModuleStatisticsData()
|
||||||
|
|
||||||
|
//그림자는 무조건 가장 앞으로
|
||||||
|
const shadowObj = canvas?.getObjects().find((obj) => obj.name === BATCH_TYPE.SHADOW)
|
||||||
|
if (shadowObj) {
|
||||||
|
shadowObj.bringToFront()
|
||||||
|
}
|
||||||
|
|
||||||
// getModuleStatistics()
|
// getModuleStatistics()
|
||||||
} else {
|
} else {
|
||||||
swalFire({ text: getMessage('module.place.overlab') })
|
swalFire({ text: getMessage('module.place.overlab') })
|
||||||
@ -880,8 +876,9 @@ export function useModuleBasicSetting(tabNum) {
|
|||||||
const manualModuleLayoutSetup = (layoutSetupRef) => {
|
const manualModuleLayoutSetup = (layoutSetupRef) => {
|
||||||
const moduleSetupSurfaces = canvas?.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE) //모듈설치면를 가져옴
|
const moduleSetupSurfaces = canvas?.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE_SETUP_SURFACE) //모듈설치면를 가져옴
|
||||||
|
|
||||||
const isChidori = moduleSetupOption.isChidori
|
const isChidori = moduleSetupOption.isChidori //치도리 여부
|
||||||
const setupLocation = moduleSetupOption.setupLocation
|
const setupLocation = moduleSetupOption.setupLocation //모듈 설치 위치 처마, 용마루
|
||||||
|
const isMultiModule = checkedModule.length > 1 //멀티 모듈인지 아닌지 여부
|
||||||
|
|
||||||
if (isManualModuleLayoutSetup) {
|
if (isManualModuleLayoutSetup) {
|
||||||
if (isManualModuleSetup) {
|
if (isManualModuleSetup) {
|
||||||
@ -1116,15 +1113,16 @@ export function useModuleBasicSetting(tabNum) {
|
|||||||
tempModule.left = holdCellCenterX - toFixedWithoutRounding(width / 2, 2)
|
tempModule.left = holdCellCenterX - toFixedWithoutRounding(width / 2, 2)
|
||||||
}
|
}
|
||||||
|
|
||||||
//움직이는 모듈왼쪽 -> 가운데
|
if (isChidori) {
|
||||||
if (Math.abs(smallLeft - holdCellCenterX) < snapDistance) {
|
//움직이는 모듈왼쪽 -> 가운데
|
||||||
tempModule.left = holdCellCenterX + intvHor / 2
|
if (Math.abs(smallLeft - holdCellCenterX) < snapDistance) {
|
||||||
|
tempModule.left = holdCellCenterX + intvHor / 2
|
||||||
|
}
|
||||||
|
// 오른쪽 -> 가운데
|
||||||
|
if (Math.abs(smallRight - holdCellCenterX) < snapDistance) {
|
||||||
|
tempModule.left = holdCellCenterX - width - intvHor / 2
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 오른쪽 -> 가운데
|
|
||||||
if (Math.abs(smallRight - holdCellCenterX) < snapDistance) {
|
|
||||||
tempModule.left = holdCellCenterX - width - intvHor / 2
|
|
||||||
}
|
|
||||||
|
|
||||||
//설치된 셀에 좌측에 스냅
|
//설치된 셀에 좌측에 스냅
|
||||||
if (Math.abs(smallRight - holdCellLeft) < snapDistance) {
|
if (Math.abs(smallRight - holdCellLeft) < snapDistance) {
|
||||||
// console.log('모듈 좌측 스냅')
|
// console.log('모듈 좌측 스냅')
|
||||||
@ -1158,21 +1156,16 @@ export function useModuleBasicSetting(tabNum) {
|
|||||||
tempModule.top = holdCellCenterY - toFixedWithoutRounding(width / 2, 2)
|
tempModule.top = holdCellCenterY - toFixedWithoutRounding(width / 2, 2)
|
||||||
}
|
}
|
||||||
|
|
||||||
//위쪽 -> 가운데
|
if (isChidori) {
|
||||||
if (Math.abs(smallTop - holdCellCenterY) < snapDistance) {
|
//위쪽 -> 가운데
|
||||||
// console.log('holdCellCenterX', holdCellCenterX)
|
if (Math.abs(smallTop - holdCellCenterY) < snapDistance) {
|
||||||
// console.log('smallLeft', smallLeft)
|
tempModule.top = holdCellCenterY + intvHor / 2
|
||||||
|
}
|
||||||
// console.log('모듈 센터에 스냅')
|
// 밑 -> 가운데
|
||||||
tempModule.top = holdCellCenterY + intvHor / 2
|
if (Math.abs(smallBottom - holdCellCenterY) < snapDistance) {
|
||||||
|
tempModule.top = holdCellCenterY - height - intvHor / 2
|
||||||
// console.log('tempModule.left', tempModule.left)
|
}
|
||||||
}
|
}
|
||||||
// 밑 -> 가운데
|
|
||||||
if (Math.abs(smallBottom - holdCellCenterY) < snapDistance) {
|
|
||||||
tempModule.top = holdCellCenterY - height - intvHor / 2
|
|
||||||
}
|
|
||||||
|
|
||||||
//설치된 셀에 좌측에 스냅
|
//설치된 셀에 좌측에 스냅
|
||||||
if (Math.abs(smallRight - holdCellLeft) < snapDistance) {
|
if (Math.abs(smallRight - holdCellLeft) < snapDistance) {
|
||||||
// console.log('모듈 좌측 스냅')
|
// console.log('모듈 좌측 스냅')
|
||||||
@ -1255,6 +1248,7 @@ export function useModuleBasicSetting(tabNum) {
|
|||||||
|
|
||||||
addCanvasMouseEventListener('mouse:up', (e) => {
|
addCanvasMouseEventListener('mouse:up', (e) => {
|
||||||
if (!inside) return
|
if (!inside) return
|
||||||
|
|
||||||
if (tempModule) {
|
if (tempModule) {
|
||||||
let startX, startY
|
let startX, startY
|
||||||
let installedLastHeightCoord = 0 //마지막으로 설치된 모듈의 좌표
|
let installedLastHeightCoord = 0 //마지막으로 설치된 모듈의 좌표
|
||||||
@ -1656,6 +1650,10 @@ export function useModuleBasicSetting(tabNum) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
const shadowObj = canvas?.getObjects().find((obj) => obj.name === BATCH_TYPE.SHADOW)
|
||||||
|
if (shadowObj) {
|
||||||
|
shadowObj.bringToFront()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -2462,6 +2460,12 @@ export function useModuleBasicSetting(tabNum) {
|
|||||||
// moduleSetupArray: setupedModules,
|
// moduleSetupArray: setupedModules,
|
||||||
// })
|
// })
|
||||||
// setModuleIsSetup(moduleArray)
|
// setModuleIsSetup(moduleArray)
|
||||||
|
|
||||||
|
//그림자는 무조건 가장 앞으로
|
||||||
|
const shadowObj = canvas?.getObjects().find((obj) => obj.name === BATCH_TYPE.SHADOW)
|
||||||
|
if (shadowObj) {
|
||||||
|
shadowObj.bringToFront()
|
||||||
|
}
|
||||||
})
|
})
|
||||||
// calculateForApi()
|
// calculateForApi()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -594,6 +594,7 @@
|
|||||||
"myinfo.message.password.error": "パスワードが間違っています。",
|
"myinfo.message.password.error": "パスワードが間違っています。",
|
||||||
"login": "ログイン",
|
"login": "ログイン",
|
||||||
"login.auto.page.text": "自動ログイン中です。",
|
"login.auto.page.text": "自動ログイン中です。",
|
||||||
|
"login.fail": "アカウントが存在しないか、パスワードが間違っています。",
|
||||||
"login.id.save": "ID保存",
|
"login.id.save": "ID保存",
|
||||||
"login.id.placeholder": "IDを入力してください。",
|
"login.id.placeholder": "IDを入力してください。",
|
||||||
"login.password.placeholder": "パスワードを入力してください。",
|
"login.password.placeholder": "パスワードを入力してください。",
|
||||||
|
|||||||
@ -594,6 +594,7 @@
|
|||||||
"myinfo.message.password.error": "비밀번호가 틀렸습니다.",
|
"myinfo.message.password.error": "비밀번호가 틀렸습니다.",
|
||||||
"login": "로그인",
|
"login": "로그인",
|
||||||
"login.auto.page.text": "자동로그인 중 입니다.",
|
"login.auto.page.text": "자동로그인 중 입니다.",
|
||||||
|
"login.fail": "계정이 없거나 비밀번호가 잘못되었습니다.",
|
||||||
"login.id.save": "ID Save",
|
"login.id.save": "ID Save",
|
||||||
"login.id.placeholder": "아이디를 입력해주세요.",
|
"login.id.placeholder": "아이디를 입력해주세요.",
|
||||||
"login.password.placeholder": "비밀번호를 입력해주세요.",
|
"login.password.placeholder": "비밀번호를 입력해주세요.",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user