물건현황 설계의뢰
This commit is contained in:
parent
ab3aa6d993
commit
e5c180225f
@ -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>
|
||||||
|
|||||||
@ -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">
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
60
src/components/management/popup/PlanRequestPopQGrid.jsx
Normal file
60
src/components/management/popup/PlanRequestPopQGrid.jsx
Normal 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>
|
||||||
|
)
|
||||||
|
}
|
||||||
@ -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": "出力",
|
||||||
|
|||||||
@ -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
22
src/store/planReqAtom.js
Normal 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,
|
||||||
|
})
|
||||||
Loading…
x
Reference in New Issue
Block a user