This commit is contained in:
hyojun.choi 2024-10-04 16:34:36 +09:00
commit 16686de3d0
6 changed files with 319 additions and 167 deletions

View File

@ -8,6 +8,8 @@ import { onlyNumberInputChange } from '@/util/input-utils'
import { fabric } from 'fabric' import { fabric } from 'fabric'
import { gridColorState } from '@/store/gridAtom' import { gridColorState } from '@/store/gridAtom'
import { settingModalGridOptionsState } from '@/store/settingAtom' import { settingModalGridOptionsState } from '@/store/settingAtom'
import { useAxios } from '@/hooks/useAxios'
import { useSwal } from '@/hooks/useSwal'
const TYPE = { const TYPE = {
DOT: 'DOT', DOT: 'DOT',
@ -16,6 +18,7 @@ const TYPE = {
export default function DotLineGrid(props) { export default function DotLineGrid(props) {
// const [modalOption, setModalOption] = useRecoilState(modalState); //modal state // const [modalOption, setModalOption] = useRecoilState(modalState); //modal state
const [objectNo, setObjectNo] = useState('test123240912001') //
const [close, setClose] = useState(false) const [close, setClose] = useState(false)
const { setShowDotLineGridModal } = props const { setShowDotLineGridModal } = props
const setSettingModalGridOptions = useSetRecoilState(settingModalGridOptionsState) const setSettingModalGridOptions = useSetRecoilState(settingModalGridOptionsState)
@ -27,6 +30,8 @@ export default function DotLineGrid(props) {
const interval = useRecoilValue(dotLineIntervalSelector) const interval = useRecoilValue(dotLineIntervalSelector)
const { getMessage } = useMessage() const { getMessage } = useMessage()
const { get, post } = useAxios()
const { swalFire } = useSwal()
useEffect(() => { useEffect(() => {
return () => { return () => {
@ -46,6 +51,12 @@ export default function DotLineGrid(props) {
] ]
const [selectOption, setSelectOption] = useState(SelectOption[0]) const [selectOption, setSelectOption] = useState(SelectOption[0])
//
useEffect(() => {
console.log('DotLineGrid useEffect 실행')
fetchGridSettings()
}, [objectNo])
const HandleClickClose = () => { const HandleClickClose = () => {
// setClose(true) // setClose(true)
// setTimeout(() => { // setTimeout(() => {
@ -64,7 +75,52 @@ export default function DotLineGrid(props) {
}) })
} }
const handleSave = () => { // Canvas Grid Setting
const fetchGridSettings = async () => {
try {
const res = await get({ url: `/api/canvas-management/canvas-grid-settings/by-object/${objectNo}` })
const patternData = {
INTERVAL: {
type: res.gridType,
horizontalInterval: res.gridHorizon,
verticalInterval: res.gridVertical,
ratioInterval: res.gridRatio,
},
dimension: res.gridDimen,
DOT: res.dotGridDisplay,
LINE: res.lineGridDisplay,
}
const matchedOption = SelectOption.find((option) => option.value == res.gridDimen)
// dimension
setSelectOption(matchedOption)
//
setDotLineGridSettingState(patternData)
} catch (error) {
console.error('Data fetching error:', error)
}
}
const handleSave = async () => {
try {
const patternData = {
objectNo,
dotGridDisplay: dotLineGridSetting.DOT,
lineGridDisplay: dotLineGridSetting.LINE,
gridType: dotLineGridSetting.INTERVAL.type,
gridHorizon: dotLineGridSetting.INTERVAL.horizontalInterval,
gridVertical: dotLineGridSetting.INTERVAL.verticalInterval,
gridRatio: dotLineGridSetting.INTERVAL.ratioInterval,
gridDimen: dotLineGridSetting.INTERVAL.dimension,
}
// HTTP POST
await post({ url: `/api/canvas-management/canvas-grid-settings`, data: patternData }).then((res) => {
swalFire({ text: getMessage(res.returnMessage) })
// 1. . // 1. .
canvas canvas
?.getObjects() ?.getObjects()
@ -75,10 +131,10 @@ export default function DotLineGrid(props) {
.filter((obj) => obj.name === 'dotGrid') .filter((obj) => obj.name === 'dotGrid')
.forEach((obj) => canvas?.remove(obj)) .forEach((obj) => canvas?.remove(obj))
const horizontalInterval = interval.horizontalInterval //const horizontalInterval = interval.horizontalInterval
const verticalInterval = interval.verticalInterval //const verticalInterval = interval.verticalInterval
if (dotLineGridSetting.DOT) { if (patternData.dotGridDisplay) {
const circle = new fabric.Circle({ const circle = new fabric.Circle({
radius: 2, radius: 2,
fill: 'red', fill: 'red',
@ -94,8 +150,8 @@ export default function DotLineGrid(props) {
}) })
const patternSourceCanvas = new fabric.StaticCanvas(null, { const patternSourceCanvas = new fabric.StaticCanvas(null, {
width: horizontalInterval, width: patternData.gridHorizon,
height: verticalInterval, height: patternData.gridVertical,
}) })
patternSourceCanvas.add(circle) patternSourceCanvas.add(circle)
@ -131,10 +187,15 @@ export default function DotLineGrid(props) {
canvas.renderAll() canvas.renderAll()
} }
if (dotLineGridSetting.LINE) { if (patternData.lineGridDisplay) {
for (let i = 0; i < canvas.height / verticalInterval + 1; i++) { for (let i = 0; i < canvas.height / patternData.gridVertical + 1; i++) {
const horizontalLine = new fabric.Line( const horizontalLine = new fabric.Line(
[0, i * verticalInterval - verticalInterval / 2, canvas.width, i * verticalInterval - verticalInterval / 2], [
0,
i * patternData.gridVertical - patternData.gridVertical / 2,
canvas.width,
i * patternData.gridVertical - patternData.gridVertical / 2,
],
{ {
stroke: gridColor, stroke: gridColor,
strokeWidth: 1, strokeWidth: 1,
@ -153,9 +214,14 @@ export default function DotLineGrid(props) {
canvas.add(horizontalLine) canvas.add(horizontalLine)
} }
for (let i = 0; i < canvas.width / horizontalInterval + 1; i++) { for (let i = 0; i < canvas.width / patternData.gridHorizon + 1; i++) {
const verticalLine = new fabric.Line( const verticalLine = new fabric.Line(
[i * horizontalInterval - horizontalInterval / 2, 0, i * horizontalInterval - horizontalInterval / 2, canvas.height], [
i * patternData.gridHorizon - patternData.gridHorizon / 2,
0,
i * patternData.gridHorizon - patternData.gridHorizon / 2,
canvas.height,
],
{ {
stroke: gridColor, stroke: gridColor,
strokeWidth: 1, strokeWidth: 1,
@ -176,6 +242,10 @@ export default function DotLineGrid(props) {
} }
canvas.renderAll() canvas.renderAll()
})
} catch (error) {
swalFire({ text: getMessage(res.returnMessage), icon: 'error' })
}
} }
const handleRadioChange = (e) => { const handleRadioChange = (e) => {

View File

@ -116,11 +116,21 @@ export default function FirstOption() {
} }
} }
const onClickDimension = async (item) => { const onClickOnlyOne = async (item) => {
//
if (item.column === 'onlyBorder' || item.column === 'lineHatch' || item.column === 'allPainted') {
const options2 = settingModalFirstOptions?.option2.map((option2) => {
option2.selected = option2.id === item.id
return option2
})
//
} else {
const options = settingModalFirstOptions?.dimensionDisplay.map((option) => { const options = settingModalFirstOptions?.dimensionDisplay.map((option) => {
option.selected = option.id === item.id option.selected = option.id === item.id
return option return option
}) })
}
setSettingModalFirstOptions({ option1, option2, dimensionDisplay }) setSettingModalFirstOptions({ option1, option2, dimensionDisplay })
@ -205,7 +215,7 @@ export default function FirstOption() {
<div className="flex-check-box for-line"> <div className="flex-check-box for-line">
{settingModalFirstOptions && {settingModalFirstOptions &&
settingModalFirstOptions.dimensionDisplay.map((item) => ( settingModalFirstOptions.dimensionDisplay.map((item) => (
<button key={item.id} className={`check-btn ${item.selected ? 'act' : ''}`} onClick={(e) => onClickDimension(item)}> <button key={item.id} className={`check-btn ${item.selected ? 'act' : ''}`} onClick={(e) => onClickOnlyOne(item)}>
<span className="check-area"></span> <span className="check-area"></span>
<span className="title-area">{getMessage(item.name)}</span> <span className="title-area">{getMessage(item.name)}</span>
</button> </button>
@ -217,7 +227,7 @@ export default function FirstOption() {
<div className="flex-check-box for-line"> <div className="flex-check-box for-line">
{settingModalFirstOptions && {settingModalFirstOptions &&
settingModalFirstOptions.option2.map((item) => ( settingModalFirstOptions.option2.map((item) => (
<button key={item.id} className={`check-btn ${item.selected ? 'act' : ''}`} onClick={(e) => onClickOption(item)}> <button key={item.id} className={`check-btn ${item.selected ? 'act' : ''}`} onClick={(e) => onClickOnlyOne(item)}>
<span className="check-area"></span> <span className="check-area"></span>
<span className="title-area">{getMessage(item.name)}</span> <span className="title-area">{getMessage(item.name)}</span>
</button> </button>

View File

@ -18,6 +18,7 @@ export default function GridOption(props) {
const [color, setColor] = useColor(gridColor) const [color, setColor] = useColor(gridColor)
useEffect(() => { useEffect(() => {
console.log('GridOption useEffect 실행')
setGridColor(color.hex) setGridColor(color.hex)
}, [color]) }, [color])

View File

@ -12,20 +12,24 @@ import { queryStringFormatter, isEmptyArray } from '@/util/common-utils'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import isLeapYear from 'dayjs/plugin/isLeapYear' // import isLeapYear from 'dayjs/plugin/isLeapYear' //
dayjs.extend(isLeapYear) dayjs.extend(isLeapYear)
import { globalLocaleStore } from '@/store/localeAtom' import { appMessageStore, globalLocaleStore } from '@/store/localeAtom'
import KO from '@/locales/ko.json'
import JA from '@/locales/ja.json'
import '@/styles/grid.scss'
export default function Stuff() { export default function Stuff() {
const [appMessageState, setAppMessageState] = useRecoilState(appMessageStore)
const stuffSearchParams = useRecoilValue(stuffSearchState) const stuffSearchParams = useRecoilValue(stuffSearchState)
const [stuffSearch, setStuffSearch] = useRecoilState(stuffSearchState) const [stuffSearch, setStuffSearch] = useRecoilState(stuffSearchState)
const { getMessage } = useMessage() const { getMessage } = useMessage()
const [curPage, setCurPage] = useState(1) // const [curPage, setCurPage] = useState(1) //
const [defaultSize, setDefaultSize] = useState(100) // const [defaultSize, setDefaultSize] = useState(100) //
const [gridCount, setGridCount] = useState(0) //
const [defaultSortType, setDefaultSortType] = useState('R') const [defaultSortType, setDefaultSortType] = useState('R')
const globalLocaleState = useRecoilValue(globalLocaleStore) const globalLocaleState = useRecoilValue(globalLocaleStore)
const { get } = useAxios(globalLocaleState) const { get } = useAxios(globalLocaleState)
const gridRef = useRef() const gridRef = useRef()
const [gridCount, setGridCount] = useState(0)
const [selectedRowData, setSelectedRowData] = useState([]) const [selectedRowData, setSelectedRowData] = useState([])
const [selectedRowDataCount, setSelectedRowDataCount] = useState(0) const [selectedRowDataCount, setSelectedRowDataCount] = useState(0)
@ -273,14 +277,12 @@ export default function Stuff() {
// const apiUrl = `/api/object/list?saleStoreId=201TES01&${queryStringFormatter(params)}` // const apiUrl = `/api/object/list?saleStoreId=201TES01&${queryStringFormatter(params)}`
const apiUrl = `/api/object/list?saleStoreId=X167&${queryStringFormatter(params)}` const apiUrl = `/api/object/list?saleStoreId=X167&${queryStringFormatter(params)}`
await get({ await get({
url: apiUrl, url: apiUrl,
}).then((res) => { }).then((res) => {
if (!isEmptyArray(res)) { if (!isEmptyArray(res)) {
// console.log('API::', res) setGridProps({ ...gridProps, gridData: res, count: res[0].totCnt })
setGridProps({ ...gridProps, gridData: res, count: res.length }) setGridCount(res[0].totCnt)
setGridCount(res.length)
} }
}) })
} }
@ -293,15 +295,14 @@ export default function Stuff() {
stuffSearchParams.startRow = (curPage - 1) * defaultSize + 1 stuffSearchParams.startRow = (curPage - 1) * defaultSize + 1
stuffSearchParams.endRow = curPage * defaultSize stuffSearchParams.endRow = curPage * defaultSize
stuffSearchParams.schSortType = defaultSortType stuffSearchParams.schSortType = defaultSortType
// console.log(' ::::::::::::::', stuffSearchParams)
async function fetchData() { async function fetchData() {
// const apiUrl = `/api/object/list?saleStoreId=201TES01&${queryStringFormatter(stuffSearchParams)}` // const apiUrl = `/api/object/list?saleStoreId=201TES01&${queryStringFormatter(stuffSearchParams)}`
const apiUrl = `/api/object/list?saleStoreId=X167&${queryStringFormatter(stuffSearchParams)}` const apiUrl = `/api/object/list?saleStoreId=X167&${queryStringFormatter(stuffSearchParams)}`
await get({ url: apiUrl }).then((res) => { await get({ url: apiUrl }).then((res) => {
console.log('API결과:::::::', res) // console.log(' API:::::::', res)
if (!isEmptyArray(res)) { if (!isEmptyArray(res)) {
setGridProps({ ...gridProps, gridData: res, count: res.length }) setGridProps({ ...gridProps, gridData: res, count: res[0].totCnt })
setGridCount(res.length) setGridCount(res[0].totCnt)
} else { } else {
setGridProps({ ...gridProps, gridData: [], count: 0 }) setGridProps({ ...gridProps, gridData: [], count: 0 })
setGridCount(0) setGridCount(0)
@ -324,15 +325,14 @@ export default function Stuff() {
startRow: startRow, startRow: startRow,
endRow: curPage * e.target.value, endRow: curPage * e.target.value,
}) })
// console.log(' :::', stuffSearchParams) console.log('페이지 갯수 변경 때 셋팅된 검색조건:::', stuffSearchParams)
//API //API
// const apiUrl = `/api/object/list?saleStoreId=201TES01&${queryStringFormatter(stuffSearchParams)}` // const apiUrl = `/api/object/list?saleStoreId=201TES01&${queryStringFormatter(stuffSearchParams)}`
const apiUrl = `/api/object/list?saleStoreId=X167&${queryStringFormatter(stuffSearchParams)}` const apiUrl = `/api/object/list?saleStoreId=X167&${queryStringFormatter(stuffSearchParams)}`
get({ url: apiUrl }).then((res) => { get({ url: apiUrl }).then((res) => {
// console.log(' ::::::::::', res)
if (!isEmptyArray(res)) { if (!isEmptyArray(res)) {
setGridProps({ ...gridProps, gridData: res, count: res.length }) setGridProps({ ...gridProps, gridData: res, count: res[0].totCnt })
setGridCount(res.length) setGridCount(res[0].totCnt)
} else { } else {
setGridProps({ ...gridProps, gridData: [], count: 0 }) setGridProps({ ...gridProps, gridData: [], count: 0 })
setGridCount(0) setGridCount(0)
@ -352,18 +352,24 @@ export default function Stuff() {
}) })
// const apiUrl = `/api/object/list?saleStoreId=201TES01&${queryStringFormatter(stuffSearchParams)}` // const apiUrl = `/api/object/list?saleStoreId=201TES01&${queryStringFormatter(stuffSearchParams)}`
const apiUrl = `/api/object/list?saleStoreId=X167&${queryStringFormatter(stuffSearchParams)}` const apiUrl = `/api/object/list?saleStoreId=X167&${queryStringFormatter(stuffSearchParams)}`
// console.log('apiUrl::', apiUrl)
get({ url: apiUrl }).then((res) => { get({ url: apiUrl }).then((res) => {
// console.log(' ::::::::::', res)
if (!isEmptyArray(res)) { if (!isEmptyArray(res)) {
setGridProps({ ...gridProps, gridData: res, count: res.length }) setGridProps({ ...gridProps, gridData: res, count: res[0].totCnt })
setGridCount(res.length) setGridCount(res[0].totCnt)
} else { } else {
setGridProps({ ...gridProps, gridData: [], count: 0 }) setGridProps({ ...gridProps, gridData: [], count: 0 })
setGridCount(0) setGridCount(0)
} }
}) })
} }
useEffect(() => {
if (globalLocaleState === 'ko') {
setAppMessageState(KO)
} else {
setAppMessageState(JA)
}
}, [globalLocaleState])
return ( return (
<> <>
{/* 퍼블시작 */} {/* 퍼블시작 */}

View File

@ -11,6 +11,7 @@ import dayjs from 'dayjs'
import { useMessage } from '@/hooks/useMessage' import { useMessage } from '@/hooks/useMessage'
import { useForm } from 'react-hook-form' import { useForm } from 'react-hook-form'
import { useRecoilState, useRecoilValue } from 'recoil' import { useRecoilState, useRecoilValue } from 'recoil'
import { v4 as uuidv4 } from 'uuid'
export default function StuffDetail() { export default function StuffDetail() {
const router = useRouter() const router = useRouter()
const searchParams = useSearchParams() const searchParams = useSearchParams()
@ -38,7 +39,7 @@ export default function StuffDetail() {
windSpeed: '', // windSpeed: '', //
snowCover: '', // snowCover: '', //
coldAreaChk: false, // coldAreaChk: false, //
surfaceType: 'Ⅲ・Ⅳ', //( / ) surfaceType: 'III・IV', //(IIIIV / )
saltAreaChk: false, // saltAreaChk: false, //
installHeight: '', // installHeight: '', //
powerConTerms: '0', //( / ) powerConTerms: '0', //( / )
@ -77,14 +78,13 @@ export default function StuffDetail() {
get({ url: `/api/object/${objectNo}/detail` }).then((res) => { get({ url: `/api/object/${objectNo}/detail` }).then((res) => {
// console.log(' API ') // console.log(' API ')
if (res != null) { if (res != null) {
// console.log('res:::::::', res)
setDetailData(res) setDetailData(res)
// APi // APi
// API // API
get({ url: '/api/object/prefecture/list' }).then((res) => { get({ url: '/api/object/prefecture/list' }).then((res) => {
if (!isEmptyArray(res)) { if (!isEmptyArray(res)) {
//console.log('API :::', res) console.log('도도부현API 결과:::', res)
setPrefCodeList(res) setPrefCodeList(res)
} }
}) })
@ -106,12 +106,11 @@ export default function StuffDetail() {
} }
}) })
} else { } else {
console.log('신규화면')
// APi // APi
// API // API
get({ url: '/api/object/prefecture/list' }).then((res) => { get({ url: '/api/object/prefecture/list' }).then((res) => {
if (!isEmptyArray(res)) { if (!isEmptyArray(res)) {
//console.log('API :::', res) // console.log(' API :::', res)
setPrefCodeList(res) setPrefCodeList(res)
} }
}) })
@ -121,11 +120,11 @@ export default function StuffDetail() {
//1 : X167 //1 : X167
get({ url: `/api/object/saleStore/X167/list` }).then((res) => { get({ url: `/api/object/saleStore/X167/list` }).then((res) => {
if (!isEmptyArray(res)) { if (!isEmptyArray(res)) {
console.log('판매점 결과:::::', res) // console.log(' :::::', res)
const firstList = res.filter((row) => row.saleStoreLevel === '1') const firstList = res.filter((row) => row.saleStoreLevel === '1')
const otherList = res.filter((row) => row.saleStoreLevel !== '1') const otherList = res.filter((row) => row.saleStoreLevel !== '1')
console.log('first:::::', firstList) // console.log('first:::::', firstList)
console.log('otherList:::::', otherList) // console.log('otherList:::::', otherList)
//1 //1
setSaleStoreList(firstList) setSaleStoreList(firstList)
//1 //1
@ -135,6 +134,8 @@ export default function StuffDetail() {
//1 //1
setOtherSaleStoreList(otherList) setOtherSaleStoreList(otherList)
form.setValue('otherSaleStoreId', otherList[0].saleStoreId)
form.setValue('otherSaleStoreName', otherList[0].saleStoreId)
} }
}) })
} }
@ -146,14 +147,17 @@ export default function StuffDetail() {
form.setValue('saleStoreId', '') form.setValue('saleStoreId', '')
form.setValue('saleStoreName', '') form.setValue('saleStoreName', '')
} else { } else {
form.setValue('saleStoreId', key) const name = saleStoreList.find((obj) => obj.saleStoreId === key.target.value).saleStoreName
form.setValue('saleStoreName', key) form.setValue('saleStoreId', key.target.value)
form.setValue('saleStoreName', name)
} }
} }
//2 //2
const onSelectionChange2 = (key) => { const onSelectionChange2 = (key) => {
console.log(key) const name = otherSaleStoreList.find((obj) => obj.saleStoreId === key.target.value).saleStoreName
form.setValue('otherSaleStoreId', key.target.value)
form.setValue('otherSaleStoreNm', name)
} }
// //
const _zipNo = watch('zipNo') const _zipNo = watch('zipNo')
@ -187,17 +191,19 @@ export default function StuffDetail() {
const _objectName = watch('objectName') const _objectName = watch('objectName')
const _objectNameOmit = watch('objectNameOmit') const _objectNameOmit = watch('objectNameOmit')
const _saleStoreId = watch('saleStoreId') const _saleStoreId = watch('saleStoreId')
const _otherSaleStoreId = watch('otherSaleStoreId')
const _prefId = watch('prefId') const _prefId = watch('prefId')
const _address = watch('address') const _address = watch('address')
const _powerSimArea = watch('powerSimArea') const _powerSimArea = watch('powerSimArea')
const _windSpeed = watch('windSpeed') const _windSpeed = watch('windSpeed')
const _snowCover = watch('snowCover') const _snowCover = watch('snowCover')
const _installHeight = watch('installHeight') const _installHeight = watch('installHeight')
useEffect(() => { useEffect(() => {
// console.log('mode:::::', editMode) // console.log('mode:::::', editMode)
if (editMode === 'NEW') { if (editMode === 'NEW') {
const formData = form.getValues() const formData = form.getValues()
// console.log('::::::::::::', formData) console.log('폼::::::::::::', formData)
let errors = {} let errors = {}
if (!_dispCompanyName || _dispCompanyName.trim().length === 0) { if (!_dispCompanyName || _dispCompanyName.trim().length === 0) {
errors.dispCompanyName = true errors.dispCompanyName = true
@ -212,6 +218,10 @@ export default function StuffDetail() {
errors.saleStoreId = true errors.saleStoreId = true
} }
// if (!_otherSaleStoreId) {
// errors.otherSaleStoreId = true
// }
if (!_zipNo || _zipNo.length != 7) { if (!_zipNo || _zipNo.length != 7) {
errors.zipCode = true errors.zipCode = true
} }
@ -240,12 +250,25 @@ export default function StuffDetail() {
errors.installHeight = true errors.installHeight = true
} }
// console.log('errors::', errors) console.log('errors::', errors)
setIsFormValid(Object.keys(errors).length === 0) setIsFormValid(Object.keys(errors).length === 0)
} else { } else {
// console.log(' ') // console.log(' ')
} }
}, [_dispCompanyName, _objectName, _objectNameOmit, _saleStoreId, _zipNo, _prefId, _address, _powerSimArea, _windSpeed, _snowCover, _installHeight]) }, [
_dispCompanyName,
_objectName,
_objectNameOmit,
_saleStoreId,
// _otherSaleStoreId,
_zipNo,
_prefId,
_address,
_powerSimArea,
_windSpeed,
_snowCover,
_installHeight,
])
// API // API
const onSearchPostNumber = () => { const onSearchPostNumber = () => {
@ -257,7 +280,7 @@ export default function StuffDetail() {
//9302226 //9302226
if (res.status === 200) { if (res.status === 200) {
if (res.results != null) { if (res.results != null) {
// console.log('::', res.results) console.log('주소검색::', res.results)
// console.log('prefcode::', res.results[0].prefcode) // console.log('prefcode::', res.results[0].prefcode)
// console.log('address::', res.results[0].address2 + res.results[0].address3) // console.log('address::', res.results[0].address2 + res.results[0].address3)
setPrefValue(res.results[0].prefcode) setPrefValue(res.results[0].prefcode)
@ -287,7 +310,7 @@ export default function StuffDetail() {
// /api/object/prefecture//list // /api/object/prefecture//list
get({ url: `/api/object/prefecture/${prefValue}/list` }).then((res) => { get({ url: `/api/object/prefecture/${prefValue}/list` }).then((res) => {
if (!isEmptyArray(res)) { if (!isEmptyArray(res)) {
// console.log('::::::::', res) console.log('발전량 시뮬레이션::::::::', res)
setPowerSimAreaList(res) setPowerSimAreaList(res)
} }
}) })
@ -328,7 +351,6 @@ export default function StuffDetail() {
// //
const onTempSave = async () => { const onTempSave = async () => {
const formData = form.getValues() const formData = form.getValues()
//console.log('::::::::', formData)
const params = { const params = {
saleStoreId: formData.saleStoreId, saleStoreId: formData.saleStoreId,
@ -348,8 +370,8 @@ export default function StuffDetail() {
snowCover: formData.snowCover, snowCover: formData.snowCover,
surfaceType: formData.surfaceType, surfaceType: formData.surfaceType,
powerConTerms: formData.powerConTerms, powerConTerms: formData.powerConTerms,
saltAreaChk: formData.saltAreaChk,
coldAreaChk: formData.coldAreaChk, coldAreaChk: formData.coldAreaChk,
saltAreaChk: formData.saltAreaChk,
tempFlg: '1', tempFlg: '1',
workNo: null, workNo: null,
workName: null, workName: null,
@ -364,8 +386,9 @@ export default function StuffDetail() {
// //
const handlePowerSimAreaOnChange = (e) => { const handlePowerSimAreaOnChange = (e) => {
// console.log(' :::::::::', prefValue) // console.log(' :::::::::', prefValue)
// console.log(':::::::::', e.target.value) console.log('발전량시뮬레이션변경:::::::::', e.target.value)
// set useEffect api form.setValue('powerSimArea', e.target.value)
// set useEffect , api
} }
// //
@ -426,7 +449,7 @@ export default function StuffDetail() {
<input type="text" className="input-light" {...form.register('objectName')} /> <input type="text" className="input-light" {...form.register('objectName')} />
</div> </div>
<div className="select-wrap" style={{ width: '120px' }}> <div className="select-wrap" style={{ width: '120px' }}>
<select name="objectNameOmit" {...register('objectNameOmit')}> <select className="select-light" name="objectNameOmit" {...register('objectNameOmit')}>
<option value="">경칭공통코드선택</option> <option value="">경칭공통코드선택</option>
<option value="11">경칭11</option> <option value="11">경칭11</option>
<option value="22">경칭22</option> <option value="22">경칭22</option>
@ -457,16 +480,20 @@ export default function StuffDetail() {
<td> <td>
<div className="flx-box"> <div className="flx-box">
<div className="select-wrap mr5" style={{ width: '567px' }}> <div className="select-wrap mr5" style={{ width: '567px' }}>
<select className="select-light" name="" id=""></select> {saleStoreList?.length > 0 && (
<select className="select-light" onChange={onSelectionChange} value={form.watch('saleStoreId')}>
{saleStoreList.map((row) => {
return (
<option key={row.saleStoreLevel} value={row.saleStoreId}>
{row.saleStoreName}
</option>
)
})}
</select>
)}
</div> </div>
<div className="input-wrap" style={{ width: '216px' }}> <div className="input-wrap" style={{ width: '216px' }}>
<input <input type="text" className="input-light" value={form.watch('saleStoreId')} {...form.register('saleStoreId')} readOnly />
type="text"
className="input-light"
value={form.watch('saleStoreName')}
{...form.register('saleStoreName')}
readOnly
/>
</div> </div>
</div> </div>
</td> </td>
@ -474,20 +501,34 @@ export default function StuffDetail() {
<tr> <tr>
<th> <th>
<div className="flx-box"> <div className="flx-box">
<div className="title"> <div className="title">2 판매점명 / ID</div>
2 판매점명 / ID <span className="important">*</span>
</div>
<div className="tooltips"></div> <div className="tooltips"></div>
</div> </div>
</th> </th>
<td> <td>
<div className="flx-box"> <div className="flx-box">
<div className="select-wrap mr5" style={{ width: '567px' }}> <div className="select-wrap mr5" style={{ width: '567px' }}>
<select className="select-light" name="" id=""></select> {otherSaleStoreList?.length > 0 && (
</div> <select className="select-light" onChange={onSelectionChange2} value={form.watch('otherSaleStoreId')}>
{otherSaleStoreList.map((row) => {
return (
<option key={row.saleStoreId} value={row.saleStoreId} text={row.saleStoreName}>
{row.saleStoreName}
</option>
)
})}
</select>
)}
</div> </div>
<div className="input-wrap" style={{ width: '216px' }}> <div className="input-wrap" style={{ width: '216px' }}>
<input type="text" className="input-ligth" readOnly defaultValue={'선택한2차점 판매점명찍기 예정'} /> <input
type="text"
className="input-light"
value={form.watch('otherSaleStoreId')}
{...form.register('otherSaleStoreId')}
readOnly
/>
</div>
</div> </div>
</td> </td>
</tr> </tr>
@ -522,6 +563,7 @@ export default function StuffDetail() {
<td> <td>
<div className="flx-box"> <div className="flx-box">
<div className="input-wrap mr5" style={{ width: '200px' }}> <div className="input-wrap mr5" style={{ width: '200px' }}>
<input type="text" className="input-light" value={form.watch('prefName')} {...form.register('prefName')} readOnly />
{/* {prefCodeList?.length > 0 && ( {/* {prefCodeList?.length > 0 && (
<Select className="max-w-xs" selectedKeys={prefValue} isDisabled {...form.register('prefId')}> <Select className="max-w-xs" selectedKeys={prefValue} isDisabled {...form.register('prefId')}>
{prefCodeList.map((row) => { {prefCodeList.map((row) => {
@ -529,6 +571,11 @@ export default function StuffDetail() {
})} })}
</Select> </Select>
)} */} )} */}
{/* {prefCodeList?.length > 0 && (
<select>
<option value=""></option>
</select>
)} */}
</div> </div>
<div className="input-wrap mr5" style={{ width: '580px' }}> <div className="input-wrap mr5" style={{ width: '580px' }}>
<input type="text" className="input-light" value={form.watch('address')} {...form.register('address')} /> <input type="text" className="input-light" value={form.watch('address')} {...form.register('address')} />
@ -541,7 +588,19 @@ export default function StuffDetail() {
발전량시뮬레이션지역 <span className="important">*</span> 발전량시뮬레이션지역 <span className="important">*</span>
</th> </th>
<td> <td>
<div className="select-wrap" style={{ width: '200px' }}></div> <div className="select-wrap" style={{ width: '200px' }}>
{powerSimAreaList?.length > 0 && (
<select className="select-light" name="powerSimArea" onChange={handlePowerSimAreaOnChange}>
{powerSimAreaList.map((row) => {
return (
<option key={row.prefName} value={row.prefId}>
{row.prefName}
</option>
)
})}
</select>
)}
</div>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -568,11 +627,17 @@ export default function StuffDetail() {
</th> </th>
<td> <td>
<div className="flx-box"> <div className="flx-box">
<div className="select-wrap mr10" style={{ width: '200px' }}></div> <div className="select-wrap mr10" style={{ width: '200px' }}>
<select className="select-light" name="snowCover" {...register('snowCover')}>
<option value="">수직적설량코드?</option>
<option value="30">30</option>
<option value="40">40</option>
</select>
</div>
<span className="mr10">cm</span> <span className="mr10">cm</span>
<div className="d-check-box light"> <div className="d-check-box light">
<input type="checkbox" /> <input type="checkbox" id="coldAreaChk" {...form.register('coldAreaChk')} />
<label htmlFor="">한랭지대책시행</label> <label htmlFor="coldAreaChk">한랭지대책시행</label>
</div> </div>
</div> </div>
</td> </td>
@ -592,8 +657,8 @@ export default function StuffDetail() {
<label htmlFor="surfaceType1"></label> <label htmlFor="surfaceType1"></label>
</div> </div>
<div className="d-check-box light mr5"> <div className="d-check-box light mr5">
<input type="checkbox" /> <input type="checkbox" id="saltAreaChk" {...form.register('saltAreaChk')} />
<label htmlFor="">염해지역용아이템사용</label> <label htmlFor="saltAreaChk">염해지역용아이템사용</label>
</div> </div>
<div className="tooltips"></div> <div className="tooltips"></div>
</div> </div>