물건정보 신규등록&수정화면
This commit is contained in:
parent
5d8bd03e0c
commit
d6fc1134c1
@ -674,19 +674,27 @@ export default function StuffDetail() {
|
|||||||
|
|
||||||
// 물건삭제
|
// 물건삭제
|
||||||
const onDelete = () => {
|
const onDelete = () => {
|
||||||
//http://localhost:8080/api/object/R201TES01240910023
|
|
||||||
// console.log('물건번호::::::::', objectNo)
|
// console.log('물건번호::::::::', objectNo)
|
||||||
alert('사양확정일이 있으면 삭제 불가')
|
// console.log('detailData:::::::::', detailData)
|
||||||
if (confirm(getMessage('common.message.data.delete'))) {
|
const specificationConfirmDate = detailData.specificationConfirmDate
|
||||||
let testobj = '10'
|
if (specificationConfirmDate != null) {
|
||||||
|
alert(getMessage('stuff.detail.delete.message1'))
|
||||||
del({ url: `/api/object/${testobj}` }).then((res) => {
|
} else {
|
||||||
console.log('삭제 결과:::', res)
|
if (confirm(getMessage('common.message.data.delete'))) {
|
||||||
router.push('/management/stuff')
|
del({ url: `/api/object/${objectNo}` }).then((res) => {
|
||||||
})
|
console.log('삭제결과:::::::', res)
|
||||||
|
router.push('/management/stuff')
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 숫자만 입력 가능
|
||||||
|
const handleKeyUp = (e) => {
|
||||||
|
let input = e.target
|
||||||
|
input.value = input.value.replace(/[^0-9]/g, '')
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{(editMode === 'NEW' && (
|
{(editMode === 'NEW' && (
|
||||||
@ -707,8 +715,18 @@ export default function StuffDetail() {
|
|||||||
<th>{getMessage('stuff.detail.planReqNo')}</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 className="product-input-wrap mr5">
|
||||||
<input type="text" className="input-light" readOnly value={form.watch('planReqNo')} />
|
<input type="text" className="product-input" readOnly value={form.watch('planReqNo')} />
|
||||||
|
{(form.watch('planReqNo') !== '' && (
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className="product-delete"
|
||||||
|
onClick={() => {
|
||||||
|
form.setValue('planReqNo', '')
|
||||||
|
}}
|
||||||
|
></button>
|
||||||
|
)) ||
|
||||||
|
null}
|
||||||
</div>
|
</div>
|
||||||
<Button className="btn-origin grey" onClick={onSearchDesignRequestPopOpen}>
|
<Button className="btn-origin grey" onClick={onSearchDesignRequestPopOpen}>
|
||||||
{getMessage('stuff.planReqPopup.title')}
|
{getMessage('stuff.planReqPopup.title')}
|
||||||
@ -976,7 +994,13 @@ export default function StuffDetail() {
|
|||||||
<td>
|
<td>
|
||||||
<div className="flx-box">
|
<div className="flx-box">
|
||||||
<div className="input-wrap mr10" style={{ width: '200px' }}>
|
<div className="input-wrap mr10" style={{ width: '200px' }}>
|
||||||
<input type="text" className="input-light" value={form.watch('verticalSnowCover')} {...register('verticalSnowCover')} />
|
<input
|
||||||
|
type="text"
|
||||||
|
className="input-light"
|
||||||
|
onKeyUp={handleKeyUp}
|
||||||
|
value={form.watch('verticalSnowCover')}
|
||||||
|
{...register('verticalSnowCover')}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<span className="mr10">cm</span>
|
<span className="mr10">cm</span>
|
||||||
<div className="d-check-box light">
|
<div className="d-check-box light">
|
||||||
@ -1015,7 +1039,13 @@ export default function StuffDetail() {
|
|||||||
<td>
|
<td>
|
||||||
<div className="flx-box">
|
<div className="flx-box">
|
||||||
<div className="input-wrap mr10" style={{ width: '200px' }}>
|
<div className="input-wrap mr10" style={{ width: '200px' }}>
|
||||||
<input type="text" className="input-light" value={form.watch('installHeight')} {...register('installHeight')} />
|
<input
|
||||||
|
type="text"
|
||||||
|
className="input-light"
|
||||||
|
onKeyUp={handleKeyUp}
|
||||||
|
value={form.watch('installHeight')}
|
||||||
|
{...register('installHeight')}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<span>m</span>
|
<span>m</span>
|
||||||
</div>
|
</div>
|
||||||
@ -1047,19 +1077,19 @@ export default function StuffDetail() {
|
|||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div className="sub-table-footer">
|
<div className="sub-right-footer">
|
||||||
{!isFormValid ? (
|
{!isFormValid ? (
|
||||||
<Button className="btn-origin grey mr5" onClick={onTempSave}>
|
<Button className="btn-origin grey mr5" onClick={onTempSave}>
|
||||||
New화면 임시저장
|
New화면 {getMessage('stuff.detail.btn.tempSave')}
|
||||||
</Button>
|
</Button>
|
||||||
) : (
|
) : (
|
||||||
<Button type="submit" className="btn-origin navy mr5">
|
<Button type="submit" className="btn-origin navy mr5">
|
||||||
NEW화면 저장
|
NEW화면 {getMessage('stuff.detail.btn.save')}
|
||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
<Link href="/management/stuff" scroll={false}>
|
<Link href="/management/stuff" scroll={false}>
|
||||||
<button type="button" className="btn-origin grey">
|
<button type="button" className="btn-origin grey">
|
||||||
NEW화면 물건목록이동
|
NEW화면 {getMessage('stuff.detail.btn.moveList')}
|
||||||
</button>
|
</button>
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
@ -1072,229 +1102,281 @@ export default function StuffDetail() {
|
|||||||
<div className="promise-gudie">
|
<div className="promise-gudie">
|
||||||
<span className="important">*</span> {getMessage('stuff.detail.required')}
|
<span className="important">*</span> {getMessage('stuff.detail.required')}
|
||||||
</div>
|
</div>
|
||||||
<div className="infomation-table">
|
<div className="infomation-wrap">
|
||||||
<table>
|
<div className="infomation-table">
|
||||||
<colgroup>
|
<table>
|
||||||
<col style={{ width: '200px' }} />
|
<colgroup>
|
||||||
<col />
|
<col style={{ width: '200px' }} />
|
||||||
</colgroup>
|
<col />
|
||||||
<tbody>
|
</colgroup>
|
||||||
<tr>
|
<tbody>
|
||||||
<th>{getMessage('stuff.detail.planReqNo')}</th>
|
<tr>
|
||||||
<td>
|
<th>{getMessage('stuff.detail.planReqNo')}</th>
|
||||||
<div className="flx-box">
|
<td>
|
||||||
<div className="input-wrap mr5" style={{ width: '200px' }}>
|
<div className="flx-box">
|
||||||
<input type="text" className="input-light" readOnly value={form.watch('planReqNo')} />
|
<div className="product-input-wrap mr5">
|
||||||
|
<input type="text" className="product-input" readOnly value={form.watch('planReqNo')} />
|
||||||
|
{objectNo.substring(0, 1) === 'T' && form.watch('planReqNo') !== '' ? (
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className="product-delete"
|
||||||
|
onClick={() => {
|
||||||
|
form.setValue('planReqNo', '')
|
||||||
|
}}
|
||||||
|
></button>
|
||||||
|
) : null}
|
||||||
|
</div>
|
||||||
|
{objectNo.substring(0, 1) === 'T' ? (
|
||||||
|
<>
|
||||||
|
<Button className="btn-origin grey" onClick={onSearchDesignRequestPopOpen}>
|
||||||
|
{getMessage('stuff.planReqPopup.title')}
|
||||||
|
</Button>
|
||||||
|
</>
|
||||||
|
) : null}
|
||||||
</div>
|
</div>
|
||||||
{objectNo.substring(0, 1) === 'T' ? (
|
</td>
|
||||||
<>
|
</tr>
|
||||||
<Button className="btn-origin grey" onClick={onSearchDesignRequestPopOpen}>
|
<tr>
|
||||||
{getMessage('stuff.planReqPopup.title')}
|
<th>
|
||||||
</Button>
|
{getMessage('stuff.detail.dispCompanyName')} <span className="important">*</span>
|
||||||
</>
|
</th>
|
||||||
) : null}
|
<td>
|
||||||
</div>
|
<div className="input-wrap" style={{ width: '500px' }}>
|
||||||
</td>
|
<input type="text" className="input-light" {...form.register('dispCompanyName')} value={form.watch('dispCompanyName')} />
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
{getMessage('stuff.detail.dispCompanyName')} <span className="important">*</span>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
<div className="input-wrap" style={{ width: '500px' }}>
|
|
||||||
<input type="text" className="input-light" {...form.register('dispCompanyName')} value={form.watch('dispCompanyName')} />
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
{getMessage('stuff.detail.objectStatusId')} <span className="importatn">*</span>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
<div className="flx-box">
|
|
||||||
{/* 상세라디오시작 */}
|
|
||||||
{objectStatusList.map((row) => {
|
|
||||||
return (
|
|
||||||
<div className="d-check-radio light mr10" key={`objectStatusId_${row.clCode}`}>
|
|
||||||
<input
|
|
||||||
type="radio"
|
|
||||||
name="objectStatusId"
|
|
||||||
value={row.clCode}
|
|
||||||
id={`objectStatus${row.clCode}`}
|
|
||||||
{...register('objectStatusId')}
|
|
||||||
onChange={onRadioChange}
|
|
||||||
checked={row.clCode === selectObjectStatusId}
|
|
||||||
/>
|
|
||||||
<label htmlFor={`objectStatus${row.clCode}`}>{row.clCodeNm}</label>
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
})}
|
|
||||||
{/* 상세라디오끝 */}
|
|
||||||
<div className="input-wrap mr5" style={{ width: '545px' }}>
|
|
||||||
<input type="text" className="input-light" {...form.register('objectName')} />
|
|
||||||
</div>
|
</div>
|
||||||
<div className="select-wrap" style={{ width: '120px' }}>
|
</td>
|
||||||
<Select
|
</tr>
|
||||||
{...register('objectNameOmit')}
|
<tr>
|
||||||
id="long-value-select0"
|
<th>
|
||||||
instanceId="long-value-select0"
|
{getMessage('stuff.detail.objectStatusId')} <span className="importatn">*</span>
|
||||||
className="react-select-custom"
|
</th>
|
||||||
classNamePrefix="custom"
|
<td>
|
||||||
placeholder="Select"
|
<div className="flx-box">
|
||||||
options={honorificCodeList}
|
{/* 상세라디오시작 */}
|
||||||
onChange={onChangeHonorificCode}
|
{objectStatusList.map((row) => {
|
||||||
getOptionLabel={(x) => x.clCodeNm}
|
return (
|
||||||
getOptionValue={(x) => x.clCode}
|
<div className="d-check-radio light mr10" key={`objectStatusId_${row.clCode}`}>
|
||||||
isClearable={true}
|
<input
|
||||||
isSearchable={false}
|
type="radio"
|
||||||
value={honorificCodeList.filter(function (option) {
|
name="objectStatusId"
|
||||||
console.log('상세 경칭코드결과:::::::::::::::', option.clCode)
|
value={row.clCode}
|
||||||
console.log('상세 셋팅된 경칭코드값:::::::::::::::', selHonorificCode)
|
id={`objectStatus${row.clCode}`}
|
||||||
return option.clCode === selHonorificCode
|
{...register('objectStatusId')}
|
||||||
})}
|
onChange={onRadioChange}
|
||||||
></Select>
|
checked={row.clCode === selectObjectStatusId}
|
||||||
|
/>
|
||||||
|
<label htmlFor={`objectStatus${row.clCode}`}>{row.clCodeNm}</label>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
})}
|
||||||
|
{/* 상세라디오끝 */}
|
||||||
|
<div className="input-wrap mr5" style={{ width: '545px' }}>
|
||||||
|
<input type="text" className="input-light" {...form.register('objectName')} />
|
||||||
|
</div>
|
||||||
|
<div className="select-wrap" style={{ width: '120px' }}>
|
||||||
|
<Select
|
||||||
|
{...register('objectNameOmit')}
|
||||||
|
id="long-value-select0"
|
||||||
|
instanceId="long-value-select0"
|
||||||
|
className="react-select-custom"
|
||||||
|
classNamePrefix="custom"
|
||||||
|
placeholder="Select"
|
||||||
|
options={honorificCodeList}
|
||||||
|
onChange={onChangeHonorificCode}
|
||||||
|
getOptionLabel={(x) => x.clCodeNm}
|
||||||
|
getOptionValue={(x) => x.clCode}
|
||||||
|
isClearable={true}
|
||||||
|
isSearchable={false}
|
||||||
|
value={honorificCodeList.filter(function (option) {
|
||||||
|
console.log('상세 경칭코드결과:::::::::::::::', option.clCode)
|
||||||
|
console.log('상세 셋팅된 경칭코드값:::::::::::::::', selHonorificCode)
|
||||||
|
return option.clCode === selHonorificCode
|
||||||
|
})}
|
||||||
|
></Select>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</td>
|
||||||
</td>
|
</tr>
|
||||||
</tr>
|
<tr>
|
||||||
<tr>
|
<th>{getMessage('stuff.detail.objectNameKana')}</th>
|
||||||
<th>{getMessage('stuff.detail.objectNameKana')}</th>
|
<td>
|
||||||
<td>
|
<div className="input-wrap" style={{ width: '789px' }}>
|
||||||
<div className="input-wrap" style={{ width: '789px' }}>
|
<input type="text" className="input-light" {...form.register('objectNameKana')} />
|
||||||
<input type="text" className="input-light" {...form.register('objectNameKana')} />
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th>
|
|
||||||
<div className="flx-box">
|
|
||||||
<div className="title">
|
|
||||||
{getMessage('stuff.detail.saleStoreId')}
|
|
||||||
<span className="important">*</span>
|
|
||||||
</div>
|
</div>
|
||||||
<div className="tooltips"></div>
|
</td>
|
||||||
</div>
|
</tr>
|
||||||
</th>
|
<tr>
|
||||||
<td>
|
<th>
|
||||||
<div className="flx-box">
|
<div className="flx-box">
|
||||||
<div className="select-wrap mr5" style={{ width: '567px' }}>
|
<div className="title">
|
||||||
<Select
|
{getMessage('stuff.detail.saleStoreId')}
|
||||||
id="long-value-select1"
|
<span className="important">*</span>
|
||||||
instanceId="long-value-select1"
|
</div>
|
||||||
className="react-select-custom"
|
<div className="tooltips"></div>
|
||||||
classNamePrefix="custom"
|
|
||||||
placeholder="Select"
|
|
||||||
options={saleStoreList}
|
|
||||||
onChange={onSelectionChange}
|
|
||||||
getOptionLabel={(x) => x.saleStoreName}
|
|
||||||
getOptionValue={(x) => x.saleStoreId}
|
|
||||||
isClearable={sessionState?.storeLvl === '1' ? true : false}
|
|
||||||
value={saleStoreList.filter(function (option) {
|
|
||||||
return option.saleStoreId === selOptions
|
|
||||||
})}
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
<div className="input-wrap" style={{ width: '216px' }}>
|
</th>
|
||||||
<input type="text" className="input-light" value={form.watch('saleStoreId')} {...form.register('saleStoreId')} readOnly />
|
<td>
|
||||||
|
<div className="flx-box">
|
||||||
|
<div className="select-wrap mr5" style={{ width: '567px' }}>
|
||||||
|
<Select
|
||||||
|
id="long-value-select1"
|
||||||
|
instanceId="long-value-select1"
|
||||||
|
className="react-select-custom"
|
||||||
|
classNamePrefix="custom"
|
||||||
|
placeholder="Select"
|
||||||
|
options={saleStoreList}
|
||||||
|
onChange={onSelectionChange}
|
||||||
|
getOptionLabel={(x) => x.saleStoreName}
|
||||||
|
getOptionValue={(x) => x.saleStoreId}
|
||||||
|
isClearable={sessionState?.storeLvl === '1' ? true : false}
|
||||||
|
value={saleStoreList.filter(function (option) {
|
||||||
|
return option.saleStoreId === selOptions
|
||||||
|
})}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div className="input-wrap" style={{ width: '216px' }}>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
className="input-light"
|
||||||
|
value={form.watch('saleStoreId')}
|
||||||
|
{...form.register('saleStoreId')}
|
||||||
|
readOnly
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</td>
|
||||||
</td>
|
</tr>
|
||||||
</tr>
|
<tr>
|
||||||
<tr>
|
<th>
|
||||||
<th>
|
<div className="flx-box">
|
||||||
<div className="flx-box">
|
<div className="title">{getMessage('stuff.detail.otherSaleStoreId')}</div>
|
||||||
<div className="title">{getMessage('stuff.detail.otherSaleStoreId')}</div>
|
<div className="tooltips">
|
||||||
<div className="tooltips">
|
<span>{getMessage('stuff.detail.tooltip.saleStoreId')}</span>
|
||||||
<span>{getMessage('stuff.detail.tooltip.saleStoreId')}</span>
|
</div>
|
||||||
</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
|
||||||
<Select
|
id="long-value-select2"
|
||||||
id="long-value-select2"
|
instanceId="long-value-select2"
|
||||||
instanceId="long-value-select2"
|
className="react-select-custom"
|
||||||
className="react-select-custom"
|
classNamePrefix="custom"
|
||||||
classNamePrefix="custom"
|
placeholder="Select"
|
||||||
placeholder="Select"
|
ref={ref}
|
||||||
ref={ref}
|
options={otherSaleStoreList}
|
||||||
options={otherSaleStoreList}
|
onChange={onSelectionChange2}
|
||||||
onChange={onSelectionChange2}
|
getOptionLabel={(x) => x.saleStoreName}
|
||||||
getOptionLabel={(x) => x.saleStoreName}
|
getOptionValue={(x) => x.saleStoreId}
|
||||||
getOptionValue={(x) => x.saleStoreId}
|
isDisabled={sessionState?.storeLvl === '1' && form.watch('saleStoreId') != '' ? false : true}
|
||||||
isDisabled={sessionState?.storeLvl === '1' && form.watch('saleStoreId') != '' ? false : true}
|
isClearable={sessionState?.storeLvl === '1' ? true : false}
|
||||||
isClearable={sessionState?.storeLvl === '1' ? true : false}
|
value={otherSaleStoreList.filter(function (option) {
|
||||||
value={otherSaleStoreList.filter(function (option) {
|
return option.saleStoreId === otherSelOptions
|
||||||
return option.saleStoreId === otherSelOptions
|
})}
|
||||||
})}
|
/>
|
||||||
/>
|
</div>
|
||||||
|
<div className="input-wrap" style={{ width: '216px' }}>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
className="input-light"
|
||||||
|
value={form.watch('otherSaleStoreId')}
|
||||||
|
{...form.register('otherSaleStoreId')}
|
||||||
|
readOnly
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="input-wrap" style={{ width: '216px' }}>
|
</td>
|
||||||
<input
|
</tr>
|
||||||
type="text"
|
<tr>
|
||||||
className="input-light"
|
<th>
|
||||||
value={form.watch('otherSaleStoreId')}
|
{getMessage('stuff.detail.zipNo')} <span className="important">*</span>
|
||||||
{...form.register('otherSaleStoreId')}
|
</th>
|
||||||
readOnly
|
<td>
|
||||||
/>
|
<div className="flx-box">
|
||||||
|
<div className="input-wrap mr5" style={{ width: '200px' }}>
|
||||||
|
<input type="text" className="input-light" disabled value={form.watch('zipNo')} />
|
||||||
|
</div>
|
||||||
|
<Button className="btn-origin grey" onClick={onSearchPostNumberPopOpen}>
|
||||||
|
{getMessage('stuff.detail.btn.addressPop')}
|
||||||
|
</Button>
|
||||||
|
<div className="guide">{getMessage('stuff.detail.btn.addressPop.guide')}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</td>
|
||||||
</td>
|
</tr>
|
||||||
</tr>
|
</tbody>
|
||||||
<tr>
|
</table>
|
||||||
<th>
|
</div>
|
||||||
{getMessage('stuff.detail.zipNo')} <span className="important">*</span>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
<div className="flx-box">
|
|
||||||
<div className="input-wrap mr5" style={{ width: '200px' }}>
|
|
||||||
<input type="text" className="input-light" disabled value={form.watch('zipNo')} />
|
|
||||||
</div>
|
|
||||||
<Button className="btn-origin grey" onClick={onSearchPostNumberPopOpen}>
|
|
||||||
{getMessage('stuff.detail.btn.addressPop')}
|
|
||||||
</Button>
|
|
||||||
<div className="guide">{getMessage('stuff.detail.btn.addressPop.guide')}</div>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{objectNo.substring(0, 1) === 'R' ? (
|
||||||
|
<>
|
||||||
|
{/* 진짜R 플랜시작 */}
|
||||||
|
<div className="table-box-title-wrap">
|
||||||
|
<div className="title-wrap">
|
||||||
|
<h3>{getMessage('stuff.detail.planList.title')}</h3>
|
||||||
|
<ul className="info-wrap">
|
||||||
|
<li>
|
||||||
|
{getMessage('stuff.detail.planList.cnt')}
|
||||||
|
<span className="red">플랜갯수</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="information-help-wrap">
|
||||||
|
<div className="information-help-tit-wrap">
|
||||||
|
<div className="help-tit-icon"></div>
|
||||||
|
<div className="help-tit">{getMessage('stuff.detail.planList.help')}</div>
|
||||||
|
</div>
|
||||||
|
<div className="information-help-guide">
|
||||||
|
<span>{getMessage('stuff.detail.planList.guide1')}</span>
|
||||||
|
<span>{getMessage('stuff.detail.planList.guide2')}</span>
|
||||||
|
<span>{getMessage('stuff.detail.planList.guide3')}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="information-grid">
|
||||||
|
<div className="q-grid no-cols">
|
||||||
|
그리드영역
|
||||||
|
<div className="pagination-wrap">페이징영역</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/* 진짜R 플랜끝 */}
|
||||||
|
<div className="sub-right-footer">
|
||||||
|
<Link href="/management/stuff">
|
||||||
|
<button type="button" className="btn-origin grey mr5">
|
||||||
|
R상세: {getMessage('stuff.detail.btn.moveList')}
|
||||||
|
</button>
|
||||||
|
</Link>
|
||||||
|
<Button type="submit" className="btn-origin navy mr5">
|
||||||
|
R상세:{getMessage('stuff.detail.btn.save')}
|
||||||
|
</Button>
|
||||||
|
<Button type="button" className="btn-origin grey" onClick={onDelete}>
|
||||||
|
{getMessage('stuff.detail.btn.delete')}
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
) : (
|
||||||
|
<>
|
||||||
|
<div className="sub-right-footer">
|
||||||
|
{!isFormValid ? (
|
||||||
|
<Button type="submit" className="btn-origin grey mr5" onClick={onTempSave}>
|
||||||
|
TEMP상세:{getMessage('stuff.detail.btn.tempSave')}
|
||||||
|
</Button>
|
||||||
|
) : (
|
||||||
|
<Button type="submit" className="btn-origin navy mr5">
|
||||||
|
TEMP상세:{getMessage('stuff.detail.btn.save')}
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
<Link href="/management/stuff">
|
||||||
|
<button type="button" className="btn-origin grey">
|
||||||
|
TEMP상세:{getMessage('stuff.detail.btn.moveList')}
|
||||||
|
</button>
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
{objectNo.substring(0, 1) === 'R' ? (
|
|
||||||
<>
|
|
||||||
<Link href="/management/stuff">
|
|
||||||
<button type="button" className="btn-origin grey mr5">
|
|
||||||
R상세:물건목록
|
|
||||||
</button>
|
|
||||||
</Link>
|
|
||||||
<Button type="submit" className="btn-origin navy mr5">
|
|
||||||
R상세:저장
|
|
||||||
</Button>
|
|
||||||
<Button type="submit" className="btn-origin navy" onClick={onDelete}>
|
|
||||||
R상세:물건삭제
|
|
||||||
</Button>
|
|
||||||
</>
|
|
||||||
) : (
|
|
||||||
<>
|
|
||||||
{!isFormValid ? (
|
|
||||||
<Button type="submit" className="btn-origin navy mr5" onClick={onTempSave}>
|
|
||||||
TEMP상세:임시저장
|
|
||||||
</Button>
|
|
||||||
) : (
|
|
||||||
<Button type="submit" className="btn-origin navy mr5">
|
|
||||||
TEMP상세:저장
|
|
||||||
</Button>
|
|
||||||
)}
|
|
||||||
<Link href="/management/stuff">
|
|
||||||
<button type="button" className="btn-origin grey">
|
|
||||||
T상세:물건목록
|
|
||||||
</button>
|
|
||||||
</Link>
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
{showAddressButtonValid && <FindAddressPop setShowAddressButtonValid={setShowAddressButtonValid} zipInfo={setZipInfo} />}
|
{showAddressButtonValid && <FindAddressPop setShowAddressButtonValid={setShowAddressButtonValid} zipInfo={setZipInfo} />}
|
||||||
|
|||||||
@ -5,7 +5,10 @@ import { useAxios } from '@/hooks/useAxios'
|
|||||||
import { useRouter, useSearchParams } from 'next/navigation'
|
import { useRouter, useSearchParams } from 'next/navigation'
|
||||||
import { globalLocaleStore } from '@/store/localeAtom'
|
import { globalLocaleStore } from '@/store/localeAtom'
|
||||||
import { useRecoilValue } from 'recoil'
|
import { useRecoilValue } from 'recoil'
|
||||||
|
import { useMessage } from '@/hooks/useMessage'
|
||||||
|
|
||||||
export default function StuffHeader() {
|
export default function StuffHeader() {
|
||||||
|
const { getMessage } = useMessage()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const searchParams = useSearchParams()
|
const searchParams = useSearchParams()
|
||||||
const objectNo = searchParams.get('objectNo') //url에서 물건번호 꺼내서 바로 set
|
const objectNo = searchParams.get('objectNo') //url에서 물건번호 꺼내서 바로 set
|
||||||
@ -15,35 +18,49 @@ export default function StuffHeader() {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
get({ url: `/api/object/${objectNo}/detail` }).then((res) => {
|
get({ url: `/api/object/${objectNo}/detail` }).then((res) => {
|
||||||
//console.log('res::', res)
|
|
||||||
if (res != null && res != '') {
|
if (res != null && res != '') {
|
||||||
console.log('헤더상세::::::::::', res)
|
|
||||||
setHeaderData(res)
|
setHeaderData(res)
|
||||||
} else {
|
} else {
|
||||||
alert('삭제된 물건입니다')
|
alert(getMessage('stuff.detail.header.message1'))
|
||||||
router.push('/management/stuff')
|
router.push('/management/stuff')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}, [objectNo])
|
}, [objectNo])
|
||||||
|
|
||||||
|
//물건번호 복사
|
||||||
|
const copyObjectNo = async (objectNo) => {
|
||||||
|
await navigator.clipboard.writeText(objectNo)
|
||||||
|
alert(getMessage('stuff.detail.header.message2'))
|
||||||
|
try {
|
||||||
|
} catch (error) {
|
||||||
|
alert(getMessage('stuff.detail.header.message3'))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="infomation-box-wrap">
|
<div className="infomation-box-wrap">
|
||||||
<div className="sub-table-box">
|
<div className="sub-table-box">
|
||||||
<div className="info-title">물건번호</div>
|
<div className="info-title">{getMessage('stuff.detail.header.objectNo')}</div>
|
||||||
<div className="info-inner">
|
<div className="info-inner">
|
||||||
{headerData.objectNo} <button className="copy-ico"></button>
|
{headerData.objectNo}{' '}
|
||||||
|
<button
|
||||||
|
className="copy-ico"
|
||||||
|
onClick={() => {
|
||||||
|
copyObjectNo(headerData.objectNo)
|
||||||
|
}}
|
||||||
|
></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="sub-table-box">
|
<div className="sub-table-box">
|
||||||
<div className="info-title">사양확정일</div>
|
<div className="info-title">{getMessage('stuff.detail.header.specificationConfirmDate')}</div>
|
||||||
<div className="info-inner">{headerData.specificationConfirmDate}</div>
|
<div className="info-inner">{headerData.specificationConfirmDate}</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="sub-table-box">
|
<div className="sub-table-box">
|
||||||
<div className="info-title">갱신일시</div>
|
<div className="info-title">{getMessage('stuff.detail.header.lastEditDatetime')}</div>
|
||||||
<div className="info-inner">{headerData.lastEditDatetime}</div>
|
<div className="info-inner">{headerData.lastEditDatetime}</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="sub-table-box">
|
<div className="sub-table-box">
|
||||||
<div className="info-title">등록일</div>
|
<div className="info-title">{getMessage('stuff.detail.header.createDatetime')}</div>
|
||||||
<div className="info-inner">{headerData.createDatetime}</div>
|
<div className="info-inner">{headerData.createDatetime}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -468,6 +468,13 @@
|
|||||||
"stuff.addressPopup.btn2": "住所適用",
|
"stuff.addressPopup.btn2": "住所適用",
|
||||||
"stuff.planReqPopup.title": "設計依頼のインポート",
|
"stuff.planReqPopup.title": "設計依頼のインポート",
|
||||||
"stuff.temp.subTitle": "商品情報",
|
"stuff.temp.subTitle": "商品情報",
|
||||||
|
"stuff.detail.header.message1": "存在しないものです。",
|
||||||
|
"stuff.detail.header.message2": "商品番号がコピーされました。",
|
||||||
|
"stuff.detail.header.message3": "存在しないものです。",
|
||||||
|
"stuff.detail.header.objectNo": "商品番号のコピーに失敗しました。",
|
||||||
|
"stuff.detail.header.specificationConfirmDate": "仕様拡張日",
|
||||||
|
"stuff.detail.header.lastEditDatetime": "更新日時",
|
||||||
|
"stuff.detail.header.createDatetime": "登録日",
|
||||||
"stuff.detail.required": "必須入力項目",
|
"stuff.detail.required": "必須入力項目",
|
||||||
"stuff.detail.planReqNo": "設計依頼No.",
|
"stuff.detail.planReqNo": "設計依頼No.",
|
||||||
"stuff.detail.dispCompanyName": "担当者",
|
"stuff.detail.dispCompanyName": "担当者",
|
||||||
@ -497,6 +504,17 @@
|
|||||||
"stuff.detail.tooltip.saleStoreId": "販売代理店または販売代理店IDを1文字以上入力してください",
|
"stuff.detail.tooltip.saleStoreId": "販売代理店または販売代理店IDを1文字以上入力してください",
|
||||||
"stuff.detail.tempSave.message1": "一時保存されました。商品番号を取得するには、必須項目をすべて入力してください。",
|
"stuff.detail.tempSave.message1": "一時保存されました。商品番号を取得するには、必須項目をすべて入力してください。",
|
||||||
"stuff.detail.confirm.message1": "販売店情報を変更すると、設計依頼文書番号が削除されます。変更しますか?",
|
"stuff.detail.confirm.message1": "販売店情報を変更すると、設計依頼文書番号が削除されます。変更しますか?",
|
||||||
|
"stuff.detail.delete.message1": "仕様が確定したものは削除できません。",
|
||||||
|
"stuff.detail.planList.title": "プランリスト",
|
||||||
|
"stuff.detail.planList.cnt": "全体",
|
||||||
|
"stuff.detail.planList.help": "ヘルプ",
|
||||||
|
"stuff.detail.planList.guide1": "1.発注は同一品番基準1件のみ可能です。",
|
||||||
|
"stuff.detail.planList.guide2": "2.[Excelダウンロード]は見積書、図面、シミュレーション結果をExcelファイルで一度にダウンロードします。",
|
||||||
|
"stuff.detail.planList.guide3": "3. プラン情報をダブルクリックすると図面作成画面に移動します。",
|
||||||
|
"stuff.detail.btn.delete": "物の削除",
|
||||||
|
"stuff.detail.btn.moveList": "商品リスト",
|
||||||
|
"stuff.detail.btn.save": "保存",
|
||||||
|
"stuff.detail.btn.tempSave": "一時保存",
|
||||||
"stuff.planReqPopup.popTitle": "設計依頼検索",
|
"stuff.planReqPopup.popTitle": "設計依頼検索",
|
||||||
"stuff.planReqPopup.btn1": "検索",
|
"stuff.planReqPopup.btn1": "検索",
|
||||||
"stuff.planReqPopup.btn2": "初期化",
|
"stuff.planReqPopup.btn2": "初期化",
|
||||||
|
|||||||
@ -473,6 +473,13 @@
|
|||||||
"stuff.addressPopup.btn2": "주소적용",
|
"stuff.addressPopup.btn2": "주소적용",
|
||||||
"stuff.planReqPopup.title": "설계의뢰 불러오기",
|
"stuff.planReqPopup.title": "설계의뢰 불러오기",
|
||||||
"stuff.temp.subTitle": "물건정보",
|
"stuff.temp.subTitle": "물건정보",
|
||||||
|
"stuff.detail.header.message1": "존재하지 않는 물건입니다.",
|
||||||
|
"stuff.detail.header.message2": "물건번호가 복사되었습니다.",
|
||||||
|
"stuff.detail.header.message3": "물건번호 복사에 실패했습니다.",
|
||||||
|
"stuff.detail.header.objectNo": "물건번호",
|
||||||
|
"stuff.detail.header.specificationConfirmDate": "사양확장일",
|
||||||
|
"stuff.detail.header.lastEditDatetime": "갱신일시",
|
||||||
|
"stuff.detail.header.createDatetime": "등록일",
|
||||||
"stuff.detail.required": "필수 입력항목",
|
"stuff.detail.required": "필수 입력항목",
|
||||||
"stuff.detail.planReqNo": "설계의뢰No.",
|
"stuff.detail.planReqNo": "설계의뢰No.",
|
||||||
"stuff.detail.dispCompanyName": "담당자",
|
"stuff.detail.dispCompanyName": "담당자",
|
||||||
@ -502,6 +509,17 @@
|
|||||||
"stuff.detail.tooltip.saleStoreId": "판매대리점 또는 판매대리점ID를 1자 이상 입력하세요",
|
"stuff.detail.tooltip.saleStoreId": "판매대리점 또는 판매대리점ID를 1자 이상 입력하세요",
|
||||||
"stuff.detail.tempSave.message1": "임시저장 되었습니다. 물건번호를 획득하려면 필수 항목을 모두 입력해 주십시오.",
|
"stuff.detail.tempSave.message1": "임시저장 되었습니다. 물건번호를 획득하려면 필수 항목을 모두 입력해 주십시오.",
|
||||||
"stuff.detail.confirm.message1": "판매점 정보를 변경하면, 설계의뢰 문서번호가 삭제됩니다. 변경하시겠습니까?",
|
"stuff.detail.confirm.message1": "판매점 정보를 변경하면, 설계의뢰 문서번호가 삭제됩니다. 변경하시겠습니까?",
|
||||||
|
"stuff.detail.delete.message1": "사양이 확정된 물건은 삭제할 수 없습니다.",
|
||||||
|
"stuff.detail.planList.title": "플랜리스트",
|
||||||
|
"stuff.detail.planList.cnt": "전체",
|
||||||
|
"stuff.detail.planList.help": "도움말",
|
||||||
|
"stuff.detail.planList.guide1": "1.발주는 동일 물건번호 기준 1건만 가능합니다.",
|
||||||
|
"stuff.detail.planList.guide2": "2.[Excel 다운로드]는 견적서, 도면, 시뮬레이션 결과를 엑셀파일로 한번에 다운로드 합니다.",
|
||||||
|
"stuff.detail.planList.guide3": "3.플랜정보를 더블 클릭하면 도면작성 화면으로 이동합니다.",
|
||||||
|
"stuff.detail.btn.delete": "물건삭제",
|
||||||
|
"stuff.detail.btn.moveList": "물건목록",
|
||||||
|
"stuff.detail.btn.save": "저장",
|
||||||
|
"stuff.detail.btn.tempSave": "임시저장",
|
||||||
"stuff.planReqPopup.popTitle": "설계 요청 검색",
|
"stuff.planReqPopup.popTitle": "설계 요청 검색",
|
||||||
"stuff.planReqPopup.btn1": "검색",
|
"stuff.planReqPopup.btn1": "검색",
|
||||||
"stuff.planReqPopup.btn2": "초기화",
|
"stuff.planReqPopup.btn2": "초기화",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user