물건현황 설계의뢰

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

View File

@ -42,7 +42,6 @@ export default function StuffSearchCondition() {
const resetStuffRecoil = useResetRecoilState(stuffSearchState) const resetStuffRecoil = useResetRecoilState(stuffSearchState)
const [stuffSearch, setStuffSearch] = useRecoilState(stuffSearchState) const [stuffSearch, setStuffSearch] = useRecoilState(stuffSearchState)
const [objectNo, setObjectNo] = useState('') // const [objectNo, setObjectNo] = useState('') //
// const [saleStoreId, setSaleStoreId] = useState('') //ID
const [address, setAddress] = useState('') // const [address, setAddress] = useState('') //
const [objectName, setobjectName] = useState('') // const [objectName, setobjectName] = useState('') //
const [saleStoreName, setSaleStoreName] = useState('') // const [saleStoreName, setSaleStoreName] = useState('') //
@ -116,6 +115,7 @@ export default function StuffSearchCondition() {
ref.current.state.values = [] ref.current.state.values = []
} }
} }
// //
const onSelectionChange = (key) => { const onSelectionChange = (key) => {
if (!isEmptyArray(key)) { if (!isEmptyArray(key)) {
@ -146,19 +146,19 @@ export default function StuffSearchCondition() {
<div className="sub-table-box"> <div className="sub-table-box">
<div className="table-box-title-wrap"> <div className="table-box-title-wrap">
<div className="title-wrap"> <div className="title-wrap">
<h3>물건현황</h3> <h3>{getMessage('stuff.search.title')}</h3>
</div> </div>
<div className="left-unit-box"> <div className="left-unit-box">
<Link href="/management/stuff/tempdetail"> <Link href="/management/stuff/tempdetail">
<button type="button" className="btn-origin navy mr5"> <button type="button" className="btn-origin navy mr5">
물건신규등록 {getMessage('stuff.search.btn1')}
</button> </button>
</Link> </Link>
<button type="button" className="btn-origin navy mr5" onClick={onSubmit}> <button type="button" className="btn-origin navy mr5" onClick={onSubmit}>
조회 {getMessage('stuff.search.btn2')}
</button> </button>
<button type="button" className="btn-origin grey" onClick={resetRecoil}> <button type="button" className="btn-origin grey" onClick={resetRecoil}>
초기화 {getMessage('stuff.search.btn3')}
</button> </button>
</div> </div>
</div> </div>
@ -174,13 +174,13 @@ export default function StuffSearchCondition() {
</colgroup> </colgroup>
<tbody> <tbody>
<tr> <tr>
<th>물건번호</th> <th>{getMessage('stuff.search.schObjectNo')}</th>
<td> <td>
<div className="input-wrap"> <div className="input-wrap">
<input <input
type="text" type="text"
className="input-light" className="input-light"
placeholder="물건번호 입력" // placeholder=" "
value={stuffSearch?.code === 'E' || stuffSearch?.code === 'M' ? stuffSearch.schObjectNo : objectNo} value={stuffSearch?.code === 'E' || stuffSearch?.code === 'M' ? stuffSearch.schObjectNo : objectNo}
onChange={(e) => { onChange={(e) => {
setObjectNo(e.target.value) setObjectNo(e.target.value)
@ -189,29 +189,28 @@ export default function StuffSearchCondition() {
/> />
</div> </div>
</td> </td>
<th>판매대리점명</th> <th>{getMessage('stuff.search.schSaleStoreName')}</th>
<td> <td>
<div className="input-wrap"> <div className="input-wrap">
<input <input
type="text" type="text"
className="input-light" className="input-light"
placeholder="판매대리점명 입력" // placeholder=" "
value={stuffSearch?.schSaleStoreName ? stuffSearch.schSaleStoreName : saleStoreName} value={stuffSearch?.schSaleStoreName ? stuffSearch.schSaleStoreName : saleStoreName}
onChange={(e) => { onChange={(e) => {
//setSaleStoreId(e.target.value)
setSaleStoreName(e.target.value) setSaleStoreName(e.target.value)
setStuffSearch({ ...stuffSearch, code: 'S', schSaleStoreName: e.target.value }) setStuffSearch({ ...stuffSearch, code: 'S', schSaleStoreName: e.target.value })
}} }}
/> />
</div> </div>
</td> </td>
<th>물건주소</th> <th>{getMessage('stuff.search.schAddress')}</th>
<td> <td>
<div className="input-wrap"> <div className="input-wrap">
<input <input
type="text" type="text"
className="input-light" className="input-light"
placeholder="물건주소 입력" // placeholder=" "
value={stuffSearch?.schAddress ? stuffSearch.schAddress : address} value={stuffSearch?.schAddress ? stuffSearch.schAddress : address}
onChange={(e) => { onChange={(e) => {
setAddress(e.target.value) setAddress(e.target.value)
@ -222,13 +221,13 @@ export default function StuffSearchCondition() {
</td> </td>
</tr> </tr>
<tr> <tr>
<th>물건명</th> <th>{getMessage('stuff.search.schObjectName')}</th>
<td> <td>
<div className="input-wrap"> <div className="input-wrap">
<input <input
type="text" type="text"
className="input-light" className="input-light"
placeholder="물건명 입력" // placeholder=" "
value={stuffSearch?.schObjectName ? stuffSearch.schObjectName : objectName} value={stuffSearch?.schObjectName ? stuffSearch.schObjectName : objectName}
onChange={(e) => { onChange={(e) => {
setobjectName(e.target.value) setobjectName(e.target.value)
@ -237,13 +236,13 @@ export default function StuffSearchCondition() {
/> />
</div> </div>
</td> </td>
<th>견적처</th> <th>{getMessage('stuff.search.schDispCompanyName')}</th>
<td> <td>
<div className="input-wrap"> <div className="input-wrap">
<input <input
type="text" type="text"
className="input-light" className="input-light"
placeholder="견적처 입력" // placeholder=" "
value={stuffSearch?.schDispCompanyName ? stuffSearch.schDispCompanyName : dispCompanyName} value={stuffSearch?.schDispCompanyName ? stuffSearch.schDispCompanyName : dispCompanyName}
onChange={(e) => { onChange={(e) => {
setDispCompanyName(e.target.value) setDispCompanyName(e.target.value)
@ -252,7 +251,7 @@ export default function StuffSearchCondition() {
/> />
</div> </div>
</td> </td>
<th>판매대리점 선택</th> <th>{getMessage('stuff.search.schSelSaleStoreId')}</th>
<td> <td>
{schSelSaleStoreList?.length > 0 && ( {schSelSaleStoreList?.length > 0 && (
<Select <Select
@ -271,13 +270,13 @@ export default function StuffSearchCondition() {
</td> </td>
</tr> </tr>
<tr> <tr>
<th>담당자</th> <th>{getMessage('stuff.search.schReceiveUser')}</th>
<td> <td>
<div className="input-wrap"> <div className="input-wrap">
<input <input
type="text" type="text"
className="input-light" className="input-light"
placeholder="담당자 입력" // placeholder=" "
value={stuffSearch?.schReceiveUser ? stuffSearch.schReceiveUser : receiveUser} value={stuffSearch?.schReceiveUser ? stuffSearch.schReceiveUser : receiveUser}
onChange={(e) => { onChange={(e) => {
setReceiveUser(e.target.value) setReceiveUser(e.target.value)
@ -286,7 +285,7 @@ export default function StuffSearchCondition() {
/> />
</div> </div>
</td> </td>
<th>기간검색</th> <th>{getMessage('stuff.search.period')}</th>
<td colSpan={3}> <td colSpan={3}>
<div className="form-flex-wrap"> <div className="form-flex-wrap">
<div className="radio-wrap mr10"> <div className="radio-wrap mr10">
@ -302,7 +301,7 @@ export default function StuffSearchCondition() {
setStuffSearch({ ...stuffSearch, code: 'S', schDateType: e.target.value }) setStuffSearch({ ...stuffSearch, code: 'S', schDateType: e.target.value })
}} }}
/> />
<label htmlFor="radio_u">갱신일</label> <label htmlFor="radio_u">{getMessage('stuff.search.schDateTypeU')}</label>
</div> </div>
<div className="d-check-radio light"> <div className="d-check-radio light">
<input <input
@ -316,7 +315,7 @@ export default function StuffSearchCondition() {
setStuffSearch({ ...stuffSearch, code: 'S', schDateType: e.target.value }) 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> </div>
<div className="date-picker-wrap"> <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 { useForm } from 'react-hook-form'
import { queryStringFormatter } from '@/util/common-utils' import { queryStringFormatter } from '@/util/common-utils'
import { useAxios } from '@/hooks/useAxios' import { useAxios } from '@/hooks/useAxios'
import { globalLocaleStore } from '@/store/localeAtom' import { globalLocaleStore } from '@/store/localeAtom'
import { useRecoilValue } from 'recoil' import { useRecoilState, useRecoilValue, useResetRecoilState } from 'recoil'
import FindAddressPopQGrid from './FindAddressPopQGrid' import FindAddressPopQGrid from './FindAddressPopQGrid'
import { useMessage } from '@/hooks/useMessage' import { useMessage } from '@/hooks/useMessage'
import { isNotEmptyArray } from '@/util/common-utils' import { isNotEmptyArray } from '@/util/common-utils'
import SingleDatePicker from '@/components/common/datepicker/SingleDatePicker' import SingleDatePicker from '@/components/common/datepicker/SingleDatePicker'
import dayjs from 'dayjs' 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) { export default function PlanRequestPop(props) {
const sessionState = useRecoilValue(sessionStore)
const globalLocaleState = useRecoilValue(globalLocaleStore) const globalLocaleState = useRecoilValue(globalLocaleStore)
const { get } = useAxios(globalLocaleState) const { get } = useAxios(globalLocaleState)
@ -29,41 +35,89 @@ export default function PlanRequestPop(props) {
setStartDate: setEndDate, 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({ const [gridProps, setGridProps] = useState({
gridData: [], gridData: [],
isPageable: false, isPageable: false,
gridColumns: [ gridColumns: [
{ {
field: 'address1', field: 'planStatName',
headerName: getMessage('stuff.addressPopup.gridHeader.address1'), headerName: getMessage('stuff.planReqPopup.gridHeader.planStatName'),
minWidth: 150, minWidth: 150,
checkboxSelection: true, checkboxSelection: true,
showDisabledCheckboxes: true, showDisabledCheckboxes: true,
}, },
{ {
field: 'address2', field: 'planReqNo',
headerName: getMessage('stuff.addressPopup.gridHeader.address2'), headerName: getMessage('stuff.planReqPopup.gridHeader.planReqNo'),
minWidth: 150, minWidth: 150,
}, },
{ {
field: 'address3', field: 'saleStoreId',
headerName: getMessage('stuff.addressPopup.gridHeader.address3'), 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, 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 ( return (
<div className="modal-popup"> <div className="modal-popup">
<div className="modal-dialog big"> <div className="modal-dialog big">
@ -89,68 +143,131 @@ export default function PlanRequestPop(props) {
</colgroup> </colgroup>
<tbody> <tbody>
<tr> <tr>
<th>설계의뢰번호 / 設計依頼番号</th> <th>{getMessage('stuff.planReqPopup.search.planReqNo')}</th>
<td> <td>
<div className="input-wrap"> <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> </div>
</td> </td>
<th>안건명 / 案件名</th> <th>{getMessage('stuff.planReqPopup.search.title')}</th>
<td> <td>
<div className="input-wrap"> <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> </div>
</td> </td>
<th>도도부현 / 都道府県</th> <th>{getMessage('stuff.planReqPopup.search.address1')}</th>
<td> <td>
<div className="input-wrap"> <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> </div>
</td> </td>
</tr> </tr>
<tr> <tr>
<th>판매대리점명 / 販売代理店名</th> <th>{getMessage('stuff.planReqPopup.search.saleStoreName')}</th>
<td> <td>
<div className="input-wrap"> <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> </div>
</td> </td>
<th>의뢰자명 / 依頼者名</th> <th>{getMessage('stuff.planReqPopup.search.planReqName')}</th>
<td> <td>
<div className="input-wrap"> <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> </div>
</td> </td>
<th>상태 / 状態</th> <th>{getMessage('stuff.planReqPopup.search.planStatName')}</th>
<td> <td>
<div className="select-wrap"> <div className="select-wrap">
<select className="select-light" name="" id=""> <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> </select>
</div> </div>
</td> </td>
</tr> </tr>
<tr> <tr>
<th>기간검색 / 期間検索</th> <th>{getMessage('stuff.planReqPopup.search.period')}</th>
<td colSpan={5}> <td colSpan={5}>
<div className="form-flex-wrap"> <div className="form-flex-wrap">
<div className="radio-wrap mr10"> <div className="radio-wrap mr10">
<div className="d-check-radio light mr10"> <div className="d-check-radio light mr10">
<input type="radio" name="radio04" id="ra07" /> <input
<label htmlFor="ra07">제출일 / 提出日</label> 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>
<div className="d-check-radio light"> <div className="d-check-radio light">
<input type="radio" name="radio04" id="ra08" /> <input
<label htmlFor="ra08">접수일 / 受付日</label> 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>
<div className="date-picker-wrap"> </div>
<div className="date-picker" style={{ flex: 1 }}> <div className="date-picker-wrap">
<SingleDatePicker {...rangeDatePickerProps1} /> <div className="date-picker" style={{ flex: 1 }}>
</div> <SingleDatePicker {...rangeDatePickerProps1} />
<span> ~ </span> </div>
<div className="date-picker" style={{ flex: 1 }}> <span> ~ </span>
<SingleDatePicker {...rangeDatePickerProps2} /> <div className="date-picker" style={{ flex: 1 }}>
</div> <SingleDatePicker {...rangeDatePickerProps2} />
</div> </div>
</div> </div>
</div> </div>
@ -160,6 +277,16 @@ export default function PlanRequestPop(props) {
</table> </table>
</div> </div>
</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> </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.addressPopup.btn2": "住所適用",
"stuff.planReqPopup.title": "設計依頼のインポート", "stuff.planReqPopup.title": "設計依頼のインポート",
"stuff.detail.required": "必須入力項目", "stuff.detail.required": "必須入力項目",
"stuff.detail.designNo": "設計依頼No.", "stuff.detail.planReqNo": "設計依頼No.",
"stuff.detail.dispCompanyName": "担当者", "stuff.detail.dispCompanyName": "担当者",
"stuff.detail.objectStatusId": "物品区分/物件名", "stuff.detail.objectStatusId": "物品区分/物件名",
"stuff.detail.objectStatus0": "新築", "stuff.detail.objectStatus0": "新築",
@ -417,6 +417,40 @@
"stuff.detail.conType0": "余剰", "stuff.detail.conType0": "余剰",
"stuff.detail.conType1": "全量", "stuff.detail.conType1": "全量",
"stuff.detail.remarks": "メモ", "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": "長さ", "length": "長さ",
"height": "高さ", "height": "高さ",
"output": "出力", "output": "出力",

View File

@ -396,7 +396,7 @@
"stuff.addressPopup.btn2": "주소적용", "stuff.addressPopup.btn2": "주소적용",
"stuff.planReqPopup.title": "설계의뢰 불러오기", "stuff.planReqPopup.title": "설계의뢰 불러오기",
"stuff.detail.required": "필수 입력항목", "stuff.detail.required": "필수 입력항목",
"stuff.detail.designNo": "설계의뢰No.", "stuff.detail.planReqNo": "설계의뢰No.",
"stuff.detail.dispCompanyName": "담당자", "stuff.detail.dispCompanyName": "담당자",
"stuff.detail.objectStatusId": "물건구분/물건명", "stuff.detail.objectStatusId": "물건구분/물건명",
"stuff.detail.objectStatus0": "신축", "stuff.detail.objectStatus0": "신축",
@ -420,7 +420,40 @@
"stuff.detail.conType": "계약조건", "stuff.detail.conType": "계약조건",
"stuff.detail.conType0": "잉여", "stuff.detail.conType0": "잉여",
"stuff.detail.conType1": "전량", "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": "길이", "length": "길이",
"height": "높이", "height": "높이",
"output": "출력", "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,
})