fix: 조사매물 조회/제출/저장/삭제 조건 강화

- AdminSub(2차 판매점 super 유저) 조회 조건 강화
- 임시저장 매물 제출 조건 강화
- 미제출 매물 pdf 다운로드 버튼 비활성화
This commit is contained in:
Dayoung 2025-07-02 10:43:19 +09:00
parent ed36d288c5
commit f64cc4ea41
3 changed files with 18 additions and 19 deletions

View File

@ -124,7 +124,7 @@ export class SurveySalesService {
case 'Admin_Sub':
where.OR = [
{
AND: [{ STORE_ID: { equals: this.session?.storeId } }, { CONSTRUCTION_POINT_ID: { equals: this.session?.builderId } }],
AND: [{ STORE_ID: { equals: this.session?.storeId } }],
},
{
AND: [
@ -440,8 +440,8 @@ export class SurveySalesService {
return survey.SUBMISSION_STATUS
? survey.SUBMISSION_TARGET_ID === storeId ||
survey.SUBMISSION_TARGET_NM === storeNm ||
(survey.STORE_ID === storeId && !survey.CONSTRUCTION_POINT_ID)
: survey.STORE_ID === storeId && !survey.CONSTRUCTION_POINT_ID
survey.STORE_ID === storeId
: survey.STORE_ID === storeId
}
/**

View File

@ -2,7 +2,6 @@
import type { Mode, SurveyBasicRequest, SurveyDetailInfo, SurveyDetailRequest } from '@/types/Survey'
import { CONFIRM_MESSAGE, SUCCESS_MESSAGE, useAlertMsg, WARNING_MESSAGE } from '@/hooks/useAlertMsg'
import { ADMIN_SUBMIT_TARGET_NM } from '@/types/Survey'
import { useSessionStore } from '@/store/session'
import { useParams, useRouter } from 'next/navigation'
import { useEffect, useState } from 'react'
@ -81,10 +80,10 @@ export default function ButtonForm({ mode, setMode, data }: ButtonFormProps) {
const calculateSubmitPermission = (session: any, basicData: SurveyBasicRequest): boolean => {
switch (session?.role) {
case 'T01':
return false
case 'Admin':
return session.storeId === basicData.storeId
case 'Admin_Sub':
return session.storeNm === basicData.store && session.builderId === basicData.constructionPointId
return session.storeId === basicData.storeId && session.builderId === basicData.constructionPointId
case 'Builder':
case 'Partner':
return session.builderId === basicData.constructionPointId
@ -201,15 +200,12 @@ export default function ButtonForm({ mode, setMode, data }: ButtonFormProps) {
/** 제출 로직 */
const handleSubmit = async () => {
if (data.basic.srlNo?.startsWith('一時保存') && Number.isNaN(id)) {
showErrorAlert(WARNING_MESSAGE.TEMP_CANNOT_SUBMIT)
return
}
if (mode === 'READ') {
showConfirm(CONFIRM_MESSAGE.SUBMIT_CONFIRM, async () => {
popupController.setSurveySaleSubmitPopup(true)
})
if (data.basic.srlNo?.includes('一時保存')) {
showErrorAlert(WARNING_MESSAGE.TEMP_CANNOT_SUBMIT)
return
}
popupController.setSurveySaleSubmitPopup(true)
} else {
showConfirm(CONFIRM_MESSAGE.SAVE_AND_SUBMIT_CONFIRM, async () => {
handleSave(false, true)
@ -220,7 +216,7 @@ export default function ButtonForm({ mode, setMode, data }: ButtonFormProps) {
/** 로그인 여부 체크 */
if (!session?.isLoggedIn) return null
/** 읽기 모드, 제출 된 데이터, 제출 권한자는 리스트 버튼만 표시 */
/** 읽기 모드, 제출 된 데이터, 제출 권한자는 리스트 버튼만 표시, 작성자만 삭제 가능*/
if (mode === 'READ' && isSubmit && permissions.isSubmiter) {
return (
<div className="sale-form-btn-wrap">

View File

@ -4,7 +4,6 @@ import { SurveyBasicInfo } from '@/types/Survey'
import { useSurvey } from '@/hooks/useSurvey'
export default function DataTable({ surveyDetail }: { surveyDetail: SurveyBasicInfo }) {
/** 제출 상태 처리 */
const submitStatus = () => {
const { submissionTargetNm, submissionTargetId } = surveyDetail ?? {}
@ -65,9 +64,13 @@ export default function DataTable({ surveyDetail }: { surveyDetail: SurveyBasicI
<tr>
<th></th>
<td>
<button className="data-down" onClick={() => downloadSurveyPdf(surveyDetail.id, `${surveyDetail.srlNo}.pdf`)}>
HWJ現地調査票確認<i className="down-icon"></i>
</button>
{surveyDetail.submissionStatus ? (
<button className="data-down" onClick={() => downloadSurveyPdf(surveyDetail.id, `${surveyDetail.srlNo}.pdf`)}>
HWJ現地調査票確認<i className="down-icon"></i>
</button>
) : (
'-'
)}
</td>
</tr>
</tbody>