물건현황 설계의뢰

This commit is contained in:
basssy 2024-10-15 16:29:45 +09:00
parent ab3aa6d993
commit e5c180225f
7 changed files with 364 additions and 72 deletions

View File

@ -455,10 +455,12 @@ export default function StuffDetail() {
</colgroup>
<tbody>
<tr>
<th>{getMessage('stuff.detail.designNo')}</th>
<th>{getMessage('stuff.detail.planReqNo')}</th>
<td>
<div className="flx-box">
<div className="input-wrap mr5" style={{ width: '200px' }}></div>
<div className="input-wrap mr5" style={{ width: '200px' }}>
<input type="text" className="input-light" readOnly />
</div>
<button className="btn-origin grey" onClick={onSearchDesignRequestPopOpen}>
{getMessage('stuff.planReqPopup.title')}
</button>
@ -770,7 +772,7 @@ export default function StuffDetail() {
<form onSubmit={handleSubmit(onValid)}>
<div className="sub-table-box">
<div className="promise-gudie">
<span className="important">*</span> 필수 입력항목
<span className="important">*</span> {getMessage('stuff.detail.required')}
</div>
<div className="infomation-table">
<table>
@ -778,6 +780,21 @@ export default function StuffDetail() {
<col style={{ width: '200px' }} />
<col />
</colgroup>
<tbody>
<tr>
<th>{getMessage('stuff.detail.planReqNo')}</th>
<td>
<div className="flx-box">
<div className="input-wrap mr5" style={{ width: '200px' }}>
<input type="text" className="input-light" readOnly />
</div>
<button className="btn-origin grey" onClick={onSearchDesignRequestPopOpen}>
{getMessage('stuff.planReqPopup.title')}
</button>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>

View File

@ -42,7 +42,6 @@ export default function StuffSearchCondition() {
const resetStuffRecoil = useResetRecoilState(stuffSearchState)
const [stuffSearch, setStuffSearch] = useRecoilState(stuffSearchState)
const [objectNo, setObjectNo] = useState('') //
// const [saleStoreId, setSaleStoreId] = useState('') //ID
const [address, setAddress] = useState('') //
const [objectName, setobjectName] = useState('') //
const [saleStoreName, setSaleStoreName] = useState('') //
@ -116,6 +115,7 @@ export default function StuffSearchCondition() {
ref.current.state.values = []
}
}
//
const onSelectionChange = (key) => {
if (!isEmptyArray(key)) {
@ -146,19 +146,19 @@ export default function StuffSearchCondition() {
<div className="sub-table-box">
<div className="table-box-title-wrap">
<div className="title-wrap">
<h3>물건현황</h3>
<h3>{getMessage('stuff.search.title')}</h3>
</div>
<div className="left-unit-box">
<Link href="/management/stuff/tempdetail">
<button type="button" className="btn-origin navy mr5">
물건신규등록
{getMessage('stuff.search.btn1')}
</button>
</Link>
<button type="button" className="btn-origin navy mr5" onClick={onSubmit}>
조회
{getMessage('stuff.search.btn2')}
</button>
<button type="button" className="btn-origin grey" onClick={resetRecoil}>
초기화
{getMessage('stuff.search.btn3')}
</button>
</div>
</div>
@ -174,13 +174,13 @@ export default function StuffSearchCondition() {
</colgroup>
<tbody>
<tr>
<th>물건번호</th>
<th>{getMessage('stuff.search.schObjectNo')}</th>
<td>
<div className="input-wrap">
<input
type="text"
className="input-light"
placeholder="물건번호 입력"
// placeholder=" "
value={stuffSearch?.code === 'E' || stuffSearch?.code === 'M' ? stuffSearch.schObjectNo : objectNo}
onChange={(e) => {
setObjectNo(e.target.value)
@ -189,29 +189,28 @@ export default function StuffSearchCondition() {
/>
</div>
</td>
<th>판매대리점명</th>
<th>{getMessage('stuff.search.schSaleStoreName')}</th>
<td>
<div className="input-wrap">
<input
type="text"
className="input-light"
placeholder="판매대리점명 입력"
// placeholder=" "
value={stuffSearch?.schSaleStoreName ? stuffSearch.schSaleStoreName : saleStoreName}
onChange={(e) => {
//setSaleStoreId(e.target.value)
setSaleStoreName(e.target.value)
setStuffSearch({ ...stuffSearch, code: 'S', schSaleStoreName: e.target.value })
}}
/>
</div>
</td>
<th>물건주소</th>
<th>{getMessage('stuff.search.schAddress')}</th>
<td>
<div className="input-wrap">
<input
type="text"
className="input-light"
placeholder="물건주소 입력"
// placeholder=" "
value={stuffSearch?.schAddress ? stuffSearch.schAddress : address}
onChange={(e) => {
setAddress(e.target.value)
@ -222,13 +221,13 @@ export default function StuffSearchCondition() {
</td>
</tr>
<tr>
<th>물건명</th>
<th>{getMessage('stuff.search.schObjectName')}</th>
<td>
<div className="input-wrap">
<input
type="text"
className="input-light"
placeholder="물건명 입력"
// placeholder=" "
value={stuffSearch?.schObjectName ? stuffSearch.schObjectName : objectName}
onChange={(e) => {
setobjectName(e.target.value)
@ -237,13 +236,13 @@ export default function StuffSearchCondition() {
/>
</div>
</td>
<th>견적처</th>
<th>{getMessage('stuff.search.schDispCompanyName')}</th>
<td>
<div className="input-wrap">
<input
type="text"
className="input-light"
placeholder="견적처 입력"
// placeholder=" "
value={stuffSearch?.schDispCompanyName ? stuffSearch.schDispCompanyName : dispCompanyName}
onChange={(e) => {
setDispCompanyName(e.target.value)
@ -252,7 +251,7 @@ export default function StuffSearchCondition() {
/>
</div>
</td>
<th>판매대리점 선택</th>
<th>{getMessage('stuff.search.schSelSaleStoreId')}</th>
<td>
{schSelSaleStoreList?.length > 0 && (
<Select
@ -271,13 +270,13 @@ export default function StuffSearchCondition() {
</td>
</tr>
<tr>
<th>담당자</th>
<th>{getMessage('stuff.search.schReceiveUser')}</th>
<td>
<div className="input-wrap">
<input
type="text"
className="input-light"
placeholder="담당자 입력"
// placeholder=" "
value={stuffSearch?.schReceiveUser ? stuffSearch.schReceiveUser : receiveUser}
onChange={(e) => {
setReceiveUser(e.target.value)
@ -286,7 +285,7 @@ export default function StuffSearchCondition() {
/>
</div>
</td>
<th>기간검색</th>
<th>{getMessage('stuff.search.period')}</th>
<td colSpan={3}>
<div className="form-flex-wrap">
<div className="radio-wrap mr10">
@ -302,7 +301,7 @@ export default function StuffSearchCondition() {
setStuffSearch({ ...stuffSearch, code: 'S', schDateType: e.target.value })
}}
/>
<label htmlFor="radio_u">갱신일</label>
<label htmlFor="radio_u">{getMessage('stuff.search.schDateTypeU')}</label>
</div>
<div className="d-check-radio light">
<input
@ -316,7 +315,7 @@ export default function StuffSearchCondition() {
setStuffSearch({ ...stuffSearch, code: 'S', schDateType: e.target.value })
}}
/>
<label htmlFor="radio_r">등록일</label>
<label htmlFor="radio_r">{getMessage('stuff.search.schDateTypeR')}등록일</label>
</div>
</div>
<div className="date-picker-wrap">

View File

@ -1,15 +1,21 @@
import React, { useState } from 'react'
import React, { useState, useRef, useEffect } from 'react'
import { useForm } from 'react-hook-form'
import { queryStringFormatter } from '@/util/common-utils'
import { useAxios } from '@/hooks/useAxios'
import { globalLocaleStore } from '@/store/localeAtom'
import { useRecoilValue } from 'recoil'
import { useRecoilState, useRecoilValue, useResetRecoilState } from 'recoil'
import FindAddressPopQGrid from './FindAddressPopQGrid'
import { useMessage } from '@/hooks/useMessage'
import { isNotEmptyArray } from '@/util/common-utils'
import SingleDatePicker from '@/components/common/datepicker/SingleDatePicker'
import dayjs from 'dayjs'
import PlanRequestPopQGrid from './PlanRequestPopQGrid'
import { sessionStore } from '@/store/commonAtom'
import { planReqSearchState } from '@/store/planReqAtom'
import Select from 'react-dropdown-select'
export default function PlanRequestPop(props) {
const sessionState = useRecoilValue(sessionStore)
const globalLocaleState = useRecoilValue(globalLocaleStore)
const { get } = useAxios(globalLocaleState)
@ -29,41 +35,89 @@ export default function PlanRequestPop(props) {
setStartDate: setEndDate,
}
const ref = useRef()
const resetPlanReqRecoil = useResetRecoilState(planReqSearchState)
const [planReqSearch, setPlanReqSearch] = useRecoilState(planReqSearchState)
const [schPlanReqNo, setSchPlanReqNo] = useState('') //
const [schTitle, setSchTitle] = useState('') //
const [schAddress, setSchAddress] = useState('') //
const [schSaleStoreName, setSchSaleStoreName] = useState('') //
const [schPlanReqName, setSchPlanReqName] = useState('') //
const [schPlanStatCd, setSchPlanStatCd] = useState('') //
const [schDateGbn, setSchDateGbn] = useState('S') //(S/R)
//
const resetRecoil = () => {}
// ..
const handleClear = () => {
if (ref.current.state.dropDown) {
ref.current.methods.dropDown()
} else {
ref.current.state.values = []
}
}
useEffect(() => {
setStartDate(planReqSearch?.schStartDt ? planReqSearch.schStartDt : dayjs(new Date()).add(-3, 'month').format('YYYY-MM-DD'))
setEndDate(planReqSearch?.schEndDt ? planReqSearch.schEndDt : dayjs(new Date()).format('YYYY-MM-DD'))
}, [planReqSearch])
const [gridProps, setGridProps] = useState({
gridData: [],
isPageable: false,
gridColumns: [
{
field: 'address1',
headerName: getMessage('stuff.addressPopup.gridHeader.address1'),
field: 'planStatName',
headerName: getMessage('stuff.planReqPopup.gridHeader.planStatName'),
minWidth: 150,
checkboxSelection: true,
showDisabledCheckboxes: true,
},
{
field: 'address2',
headerName: getMessage('stuff.addressPopup.gridHeader.address2'),
field: 'planReqNo',
headerName: getMessage('stuff.planReqPopup.gridHeader.planReqNo'),
minWidth: 150,
},
{
field: 'address3',
headerName: getMessage('stuff.addressPopup.gridHeader.address3'),
field: 'saleStoreId',
headerName: getMessage('stuff.planReqPopup.gridHeader.saleStoreId'),
minWidth: 150,
},
{
field: 'saleStoreName',
headerName: getMessage('stuff.planReqPopup.gridHeader.saleStoreName'),
minWidth: 150,
},
{
field: 'title',
headerName: getMessage('stuff.planReqPopup.gridHeader.title'),
minWidth: 150,
},
{
field: 'address1',
headerName: getMessage('stuff.planReqPopup.gridHeader.address1'),
minWidth: 150,
},
{
field: 'houseCntName',
headerName: getMessage('stuff.planReqPopup.gridHeader.houseCntName'),
minWidth: 150,
},
{
field: 'planReqName',
headerName: getMessage('stuff.planReqPopup.gridHeader.planReqName'),
minWidth: 150,
},
{
field: 'submitDt',
headerName: getMessage('stuff.planReqPopup.gridHeader.submitDt'),
minWidth: 150,
},
],
})
//
const formInitValue = {
//zipNo: '',
}
const { register, setValue, getValues, handleSubmit, resetField, control, watch } = useForm({
defaultValues: formInitValue,
})
const form = { register, setValue, getValues, handleSubmit, resetField, control, watch }
return (
<div className="modal-popup">
<div className="modal-dialog big">
@ -89,68 +143,131 @@ export default function PlanRequestPop(props) {
</colgroup>
<tbody>
<tr>
<th>설계의뢰번호 / 設計依頼番号</th>
<th>{getMessage('stuff.planReqPopup.search.planReqNo')}</th>
<td>
<div className="input-wrap">
<input type="text" className="input-light" />
<input
type="text"
className="input-light"
value={planReqSearch?.schPlanReqNo ? planReqSearch?.schPlanReqNo : schPlanReqNo}
onChange={(e) => {
setSchPlanReqNo(e.target.value)
setPlanReqSearch({ ...planReqSearch, schPlanReqNo: e.target.value })
}}
/>
</div>
</td>
<th>안건명 / 案件名</th>
<th>{getMessage('stuff.planReqPopup.search.title')}</th>
<td>
<div className="input-wrap">
<input type="text" className="input-light" />
<input
type="text"
className="input-light"
value={planReqSearch?.schTitle ? planReqSearch?.schTitle : schTitle}
onChange={(e) => {
setSchTitle(e.target.value)
setPlanReqSearch({ ...planReqSearch, schTitle: e.target.value })
}}
/>
</div>
</td>
<th>도도부현 / 都道府県</th>
<th>{getMessage('stuff.planReqPopup.search.address1')}</th>
<td>
<div className="input-wrap">
<input type="text" className="input-light" />
<input
type="text"
className="input-light"
value={planReqSearch?.schAddress ? planReqSearch?.schAddress : schAddress}
onChange={(e) => {
setSchAddress(e.target.value)
setPlanReqSearch({ ...planReqSearch, schAddress: e.target.value })
}}
/>
</div>
</td>
</tr>
<tr>
<th>판매대리점명 / 販売代理店名</th>
<th>{getMessage('stuff.planReqPopup.search.saleStoreName')}</th>
<td>
<div className="input-wrap">
<input type="text" className="input-light" />
<input
type="text"
className="input-light"
value={planReqSearch?.schSaleStoreName ? planReqSearch?.schSaleStoreName : schSaleStoreName}
onChange={(e) => {
setSchSaleStoreName(e.target.value)
setPlanReqSearch({ ...planReqSearch, schSaleStoreName: e.target.value })
}}
/>
</div>
</td>
<th>의뢰자명 / 依頼者名</th>
<th>{getMessage('stuff.planReqPopup.search.planReqName')}</th>
<td>
<div className="input-wrap">
<input type="text" className="input-light" />
<input
type="text"
className="input-light"
value={planReqSearch?.schPlanReqName ? planReqSearch?.schPlanReqName : schPlanReqName}
onChange={(e) => {
setSchPlanReqName(e.target.value)
setPlanReqSearch({ ...planReqSearch, schPlanReqName: e.target.value })
}}
/>
</div>
</td>
<th>상태 / 状態</th>
<th>{getMessage('stuff.planReqPopup.search.planStatName')}</th>
<td>
<div className="select-wrap">
<select className="select-light" name="" id="">
<option>All</option>
<option value={''}>All</option>
<option value={'SAVE'}>저장</option>
<option value={'SUBMIT'}>제출</option>
<option value={'RECEIPT'}>접수</option>
</select>
</div>
</td>
</tr>
<tr>
<th>기간검색 / 期間検索</th>
<th>{getMessage('stuff.planReqPopup.search.period')}</th>
<td colSpan={5}>
<div className="form-flex-wrap">
<div className="radio-wrap mr10">
<div className="d-check-radio light mr10">
<input type="radio" name="radio04" id="ra07" />
<label htmlFor="ra07">제출일 / 提出日</label>
<input
type="radio"
name="radio04"
id="ra07"
checked={planReqSearch?.schDateGbn === 'S' ? true : false}
value={'S'}
onChange={(e) => {
setSchDateGbn(e.target.value)
setPlanReqSearch({ ...planReqSearch, schDateGbn: e.target.value })
}}
/>
<label htmlFor="ra07">{getMessage('stuff.planReqPopup.search.schDateGbnS')}</label>
</div>
<div className="d-check-radio light">
<input type="radio" name="radio04" id="ra08" />
<label htmlFor="ra08">접수일 / 受付日</label>
<input
type="radio"
name="radio04"
id="ra08"
checked={planReqSearch?.schDateGbn === 'R' ? true : false}
value={'R'}
onChange={(e) => {
setSchDateGbn(e.target.value)
setPlanReqSearch({ ...planReqSearch, schDateGbn: e.target.value })
}}
/>
<label htmlFor="ra08">{getMessage('stuff.planReqPopup.search.schDateGbnR')}</label>
</div>
<div className="date-picker-wrap">
<div className="date-picker" style={{ flex: 1 }}>
<SingleDatePicker {...rangeDatePickerProps1} />
</div>
<span> ~ </span>
<div className="date-picker" style={{ flex: 1 }}>
<SingleDatePicker {...rangeDatePickerProps2} />
</div>
</div>
<div className="date-picker-wrap">
<div className="date-picker" style={{ flex: 1 }}>
<SingleDatePicker {...rangeDatePickerProps1} />
</div>
<span> ~ </span>
<div className="date-picker" style={{ flex: 1 }}>
<SingleDatePicker {...rangeDatePickerProps2} />
</div>
</div>
</div>
@ -160,6 +277,16 @@ export default function PlanRequestPop(props) {
</table>
</div>
</div>
<div className="design-request-grid">
<div className="design-request-grid-tit">Plan List</div>
<PlanRequestPopQGrid {...gridProps} />
</div>
</div>
<div className="footer-btn-wrap">
<button className="btn-origin grey mr5" onClick={() => props.setShowDesignRequestButtonValid(false)}>
{getMessage('stuff.planReqPopup.btn1')}
</button>
<button className="btn-origin navy ">{getMessage('stuff.planReqPopup.btn2')}</button>
</div>
</div>
</div>

View File

@ -0,0 +1,60 @@
import React from 'react'
import { useCallback, useEffect, useMemo, useState } from 'react'
import { AgGridReact } from 'ag-grid-react'
import 'ag-grid-community/styles/ag-grid.css'
import 'ag-grid-community/styles/ag-theme-quartz.css'
export default function PlanRequestPopQGrid(props) {
const { gridData, gridColumns, isPageable = true } = props
const [rowData, setRowData] = useState(null)
const [gridApi, setGridApi] = useState(null)
const [colDefs, setColDefs] = useState(gridColumns)
const defaultColDef = useMemo(() => {
return {
flex: 1,
minWidth: 100,
sortable: false,
suppressMovable: false,
resizable: false,
suppressSizeToFit: false,
}
}, [])
const rowBuffer = 100
useEffect(() => {
gridData ? setRowData(gridData) : ''
}, [gridData])
const rowSelection = useMemo(() => {
return { mode: 'singleRow', enableClickSelection: true }
}, [])
const onGridReady = useCallback(
(params) => {
setGridApi(params.api)
gridData ? setRowData(gridData) : ''
},
[gridData],
)
return (
<div className="ag-theme-quartz" style={{ height: 500 }}>
<AgGridReact
onGridReady={onGridReady}
rowBuffer={rowBuffer}
rowData={rowData}
columnDefs={colDefs}
defaultColDef={defaultColDef}
rowSelection={rowSelection}
pagination={isPageable}
// onSelectionChanged={onSelectionChanged}
/>
</div>
)
}

View File

@ -392,7 +392,7 @@
"stuff.addressPopup.btn2": "住所適用",
"stuff.planReqPopup.title": "設計依頼のインポート",
"stuff.detail.required": "必須入力項目",
"stuff.detail.designNo": "設計依頼No.",
"stuff.detail.planReqNo": "設計依頼No.",
"stuff.detail.dispCompanyName": "担当者",
"stuff.detail.objectStatusId": "物品区分/物件名",
"stuff.detail.objectStatus0": "新築",
@ -417,6 +417,40 @@
"stuff.detail.conType0": "余剰",
"stuff.detail.conType1": "全量",
"stuff.detail.remarks": "メモ",
"stuff.planReqPopup.gridHeader.planStatName": "상태",
"stuff.planReqPopup.gridHeader.planReqNo": "설계의뢰 번호",
"stuff.planReqPopup.gridHeader.saleStoreId": "판매대리점ID",
"stuff.planReqPopup.gridHeader.saleStoreName": "판매대리점명",
"stuff.planReqPopup.gridHeader.title": "안건명",
"stuff.planReqPopup.gridHeader.address1": "도도부현",
"stuff.planReqPopup.gridHeader.houseCntName": "설치가옥수",
"stuff.planReqPopup.gridHeader.planReqName": "의뢰자명",
"stuff.planReqPopup.gridHeader.submitDt": "설계의뢰 제출일",
"stuff.planReqPopup.search.planReqNo": "設計依頼番号",
"stuff.planReqPopup.search.title": "案件名",
"stuff.planReqPopup.search.address1": "都道府県",
"stuff.planReqPopup.search.saleStoreName": "販売代理店名",
"stuff.planReqPopup.search.planReqName": "依頼者名",
"stuff.planReqPopup.search.planStatName": "状態",
"stuff.planReqPopup.search.period": "期間検索",
"stuff.planReqPopup.search.schDateGbnS": "提出日",
"stuff.planReqPopup.search.schDateGbnR": "受付日",
"stuff.planReqPopup.btn1": "閉じる",
"stuff.planReqPopup.btn2": "選択の適用",
"stuff.search.title": "物件状況",
"stuff.search.btn1": "物件登録",
"stuff.search.btn2": "照会",
"stuff.search.btn3": "初期化",
"stuff.search.schObjectNo": "品番",
"stuff.search.schSaleStoreName": "販売代理店名",
"stuff.search.schAddress": "商品アドレス",
"stuff.search.schObjectName": "商品名",
"stuff.search.schDispCompanyName": "見積もり",
"stuff.search.schSelSaleStoreId": "販売代理店の選択",
"stuff.search.schReceiveUser": "担当者",
"stuff.search.period": "期間検索",
"stuff.search.schDateTypeU": "更新日",
"stuff.search.schDateTypeR": "登録日",
"length": "長さ",
"height": "高さ",
"output": "出力",

View File

@ -396,7 +396,7 @@
"stuff.addressPopup.btn2": "주소적용",
"stuff.planReqPopup.title": "설계의뢰 불러오기",
"stuff.detail.required": "필수 입력항목",
"stuff.detail.designNo": "설계의뢰No.",
"stuff.detail.planReqNo": "설계의뢰No.",
"stuff.detail.dispCompanyName": "담당자",
"stuff.detail.objectStatusId": "물건구분/물건명",
"stuff.detail.objectStatus0": "신축",
@ -420,7 +420,40 @@
"stuff.detail.conType": "계약조건",
"stuff.detail.conType0": "잉여",
"stuff.detail.conType1": "전량",
"stuff.detail.remarks": "메모",
"stuff.planReqPopup.gridHeader.planStatName": "상태",
"stuff.planReqPopup.gridHeader.planReqNo": "설계의뢰 번호",
"stuff.planReqPopup.gridHeader.saleStoreId": "판매대리점ID",
"stuff.planReqPopup.gridHeader.saleStoreName": "판매대리점명",
"stuff.planReqPopup.gridHeader.title": "안건명",
"stuff.planReqPopup.gridHeader.address1": "도도부현",
"stuff.planReqPopup.gridHeader.houseCntName": "설치가옥수",
"stuff.planReqPopup.gridHeader.planReqName": "의뢰자명",
"stuff.planReqPopup.gridHeader.submitDt": "설계의뢰 제출일",
"stuff.planReqPopup.search.planReqNo": "설계의뢰번호",
"stuff.planReqPopup.search.title": "안건명",
"stuff.planReqPopup.search.address1": "도도부현",
"stuff.planReqPopup.search.saleStoreName": "판매대리점명",
"stuff.planReqPopup.search.planReqName": "의뢰자명",
"stuff.planReqPopup.search.planStatName": "상태",
"stuff.planReqPopup.search.period": "기간검색",
"stuff.planReqPopup.search.schDateGbnS": "제출일",
"stuff.planReqPopup.search.schDateGbnR": "접수일",
"stuff.planReqPopup.btn1": "닫기",
"stuff.planReqPopup.btn2": "선택적용",
"stuff.search.title": "물건현황",
"stuff.search.btn1": "신규등록",
"stuff.search.btn2": "조회",
"stuff.search.btn3": "초기화",
"stuff.search.schObjectNo": "물건번호",
"stuff.search.schSaleStoreName": "판매대리점명",
"stuff.search.schAddress": "물건주소",
"stuff.search.schObjectName": "물건명",
"stuff.search.schDispCompanyName": "견적처",
"stuff.search.schSelSaleStoreId": "판매대리점 선택",
"stuff.search.schReceiveUser": "담당자",
"stuff.search.period": "기간검색",
"stuff.search.schDateTypeU": "갱신일",
"stuff.search.schDateTypeR": "등록일",
"length": "길이",
"height": "높이",
"output": "출력",

22
src/store/planReqAtom.js Normal file
View File

@ -0,0 +1,22 @@
import { atom } from 'recoil'
import dayjs from 'dayjs'
import { v1 } from 'uuid'
export const planReqSearchState = atom({
key: `planReqSearchState/${v1()}`,
default: {
saleStoreId: '', //판매점ID 세션
saleStoreLevel: '', //판매점레벨 세션
schPlanReqNo: '', //설계의뢰 번호
schTitle: '', //안건명
schAddress: '', //도도부현
schSaleStoreName: '', //판매대리점명
schPlanReqName: '', //의뢰자명
schPlanStatCd: '', //상태코드
schDateGbn: 'S', //기간구분코드(S/R)
schStartDt: dayjs(new Date()).add(-3, 'month').format('YYYY-MM-DD'), //시작일
schEndDt: dayjs(new Date()).format('YYYY-MM-DD'), //종료일
startRow: 1,
endRow: 100,
},
dangerouslyAllowMutability: true,
})