diff --git a/src/app/api/survey-sales/route.ts b/src/app/api/survey-sales/route.ts index ca716b4..3d536c9 100644 --- a/src/app/api/survey-sales/route.ts +++ b/src/app/api/survey-sales/route.ts @@ -11,7 +11,7 @@ type SearchParams = { sort?: string | null // 정렬 방식 offset?: string | null role?: string | null // 회원권한한 - store?: string | null // 판매점ID + storeId?: string | null // 판매점ID builderNo?: string | null // 시공ID } @@ -75,11 +75,11 @@ const createMemberRoleCondition = (params: SearchParams): WhereCondition => { where.OR = [ { // 같은 판매점에서 작성한 제출/제출되지 않은 매물 - AND: [{ STORE_ID: { equals: params.store } }], + AND: [{ STORE_ID: { equals: params.storeId } }], }, { // MUSUBI (시공권한 X) 가 ORDER 에 제출한 매물 - AND: [{ SUBMISSION_TARGET_ID: { equals: params.store } }, { SUBMISSION_STATUS: { equals: true } }], + AND: [{ SUBMISSION_TARGET_ID: { equals: params.storeId } }, { SUBMISSION_STATUS: { equals: true } }], }, ] break @@ -89,18 +89,18 @@ const createMemberRoleCondition = (params: SearchParams): WhereCondition => { { // MUSUBI (시공권한 X) 같은 판매점에서 작성한 제출/제출되지 않은 매물 AND: [ - { STORE_ID: { equals: params.store } }, - // { - // OR: [{ CONSTRUCTION_POINT: { equals: null } }, { CONSTRUCTION_POINT: { equals: '' } }], - // }, + { STORE_ID: { equals: params.storeId } }, + { + OR: [{ CONSTRUCTION_POINT_ID: { equals: null } }, { CONSTRUCTION_POINT_ID: { equals: '' } }], + }, ], }, { // MUSUBI (시공권한 O) 가 MUSUBI 에 제출한 매물 + PARTNER 가 제출한 매물 AND: [ - { SUBMISSION_TARGET_ID: { equals: params.store } }, - { CONSTRUCTION_POINT: { not: null } }, - { CONSTRUCTION_POINT: { not: '' } }, + { SUBMISSION_TARGET_ID: { equals: params.storeId } }, + { CONSTRUCTION_POINT_ID: { not: null } }, + { CONSTRUCTION_POINT_ID: { not: '' } }, { SUBMISSION_STATUS: { equals: true } }, ], }, @@ -109,9 +109,8 @@ const createMemberRoleCondition = (params: SearchParams): WhereCondition => { case 'Builder': // MUSUBI (시공권한 O) case 'Partner': // PARTNER - // 시공점이 있고 STORE_ID 가 시공ID와 같은 매물 + // 시공ID 같은 매물 where.AND?.push({ - // CONSTRUCTION_POINT: { not: null }, CONSTRUCTION_POINT_ID: { equals: params.builderNo }, }) break @@ -127,7 +126,7 @@ const createMemberRoleCondition = (params: SearchParams): WhereCondition => { }, { STORE_ID: { - equals: params.store, + equals: params.storeId, }, }, ] @@ -154,7 +153,7 @@ export async function GET(request: Request) { sort: searchParams.get('sort'), offset: searchParams.get('offset'), role: searchParams.get('role'), - store: searchParams.get('store'), //storeId + storeId: searchParams.get('storeId'), //storeId builderNo: searchParams.get('builderNo'), } diff --git a/src/components/popup/SurveySaleSubmitPopup.tsx b/src/components/popup/SurveySaleSubmitPopup.tsx index c8bfc96..726d41d 100644 --- a/src/components/popup/SurveySaleSubmitPopup.tsx +++ b/src/components/popup/SurveySaleSubmitPopup.tsx @@ -38,12 +38,12 @@ export default function SurveySaleSubmitPopup() { const [submitData, setSubmitData] = useState({ saleBase: null, - targetId: session?.role === 'Builder' ? surveyDetail?.storeId ?? '' : '', - targetNm: session?.role === 'Builder' ? surveyDetail?.store ?? '' : '', - sender: session?.email ?? '', + targetId: '', + targetNm: '', + sender: '', receiver: [], reference: null, - title: '[HANASYS現地調査] 調査物件が提出. (' + surveyDetail?.srlNo + ')', + title: '', contents: '', }) @@ -57,6 +57,8 @@ export default function SurveySaleSubmitPopup() { } setSubmitData({ ...submitData, + targetId: session?.role === 'Builder' ? surveyDetail?.storeId ?? '' : '', + targetNm: session?.role === 'Builder' ? surveyDetail?.store ?? '' : '', sender: session?.email ?? '', title: '[HANASYS現地調査] 調査物件が提出. (' + surveyDetail?.srlNo + ')', }) @@ -65,7 +67,7 @@ export default function SurveySaleSubmitPopup() { const FORM_FIELDS: FormField[] = [ { id: 'sender', name: '発送者', required: true }, { id: 'saleBase', name: '提出地点選択', required: session?.role === 'Admin' }, - { id: 'targetNm', name: '提出販売店', required: session?.role !== 'Admin' }, + { id: 'targetNm', name: '提出販売店', required: session?.role === 'Admin_Sub' || session?.role === 'Builder' }, { id: 'receiver', name: '受信者', required: true }, { id: 'reference', name: '参考', required: false }, { id: 'title', name: 'タイトル', required: true }, @@ -75,6 +77,9 @@ export default function SurveySaleSubmitPopup() { const { submitSurvey, isSubmittingSurvey } = useSurvey(Number(routeId)) const handleInputChange = (field: keyof SubmitFormData, value: string) => { + if (field === 'receiver' && session?.role === 'Partner') { + setSubmitData((prev) => ({ ...prev, targetNm: value })) + } setSubmitData((prev) => ({ ...prev, [field]: value })) } @@ -134,9 +139,10 @@ export default function SurveySaleSubmitPopup() { if (field.id === 'saleBase' && session?.role !== 'Admin') { return null } - if (field.id === 'targetNm' && session?.role === 'Admin') { + if (field.id === 'targetNm' && (session?.role === 'Admin' || session?.role === 'Partner')) { return null } + return (
diff --git a/src/components/survey-sale/detail/ButtonForm.tsx b/src/components/survey-sale/detail/ButtonForm.tsx index d6679e4..e408be0 100644 --- a/src/components/survey-sale/detail/ButtonForm.tsx +++ b/src/components/survey-sale/detail/ButtonForm.tsx @@ -30,6 +30,8 @@ export default function ButtonForm(props: { detailInfo: props.data.roof, }) + console.log(session) + console.log(props.data.basic) // -------------------------------------------------------------- // 권한 @@ -49,12 +51,12 @@ export default function ButtonForm(props: { // 1차 판매점(Order) + 2차 판매점(Musubi) => 같은 판매점 제출권한 case 'Admin': case 'Admin_Sub': - setIsSubmiter(session.storeNm === props.data.basic.store && session.builderNo === props.data.basic.constructionPoint) + setIsSubmiter(session.storeNm === props.data.basic.store && session.builderNo === props.data.basic.constructionPointId) break // 시공권한 User(Musubi) + Partner => 같은 시공ID 제출권한 case 'Builder': case 'Partner': - setIsSubmiter(session.builderNo === props.data.basic.constructionPoint) + setIsSubmiter(session.builderNo === props.data.basic.constructionPointId) break default: setIsSubmiter(false) @@ -76,7 +78,6 @@ export default function ButtonForm(props: { const { deleteSurvey, updateSurvey, isDeletingSurvey, isUpdatingSurvey } = useSurvey(Number(id)) const { validateSurveyDetail, createSurvey, isCreatingSurvey } = useSurvey() - const handleSave = (isTemporary: boolean, isSubmitProcess: boolean) => { const emptyField = validateSurveyDetail(props.data.roof) const hasEmptyField = emptyField?.trim() !== '' diff --git a/src/components/survey-sale/detail/DataTable.tsx b/src/components/survey-sale/detail/DataTable.tsx index 6a49770..ac34400 100644 --- a/src/components/survey-sale/detail/DataTable.tsx +++ b/src/components/survey-sale/detail/DataTable.tsx @@ -4,12 +4,15 @@ import { useSurvey } from '@/hooks/useSurvey' import { useParams, useRouter } from 'next/navigation' import { useEffect } from 'react' import DetailForm from './DetailForm' +import { useSessionStore } from '@/store/session' export default function DataTable() { const params = useParams() const id = params.id const router = useRouter() + const { session } = useSessionStore() + useEffect(() => { if (Number.isNaN(Number(id))) { alert('間違ったアプローチです。') @@ -23,6 +26,20 @@ export default function DataTable() { return <> } + const submitStatus = () => { + if (session?.role === 'Admin') { + return
HWJ
+ } + if (session?.role === 'Partner') { + return
{surveyDetail?.submissionTargetNm}
+ } + return ( +
+ ({surveyDetail?.submissionTargetNm} - {surveyDetail?.submissionTargetId}) +
+ ) + } + return ( <>
@@ -56,9 +73,7 @@ export default function DataTable() { {surveyDetail?.submissionStatus && surveyDetail?.submissionDate ? ( <>
{new Date(surveyDetail.submissionDate).toLocaleString()}
-
- ({surveyDetail.submissionTargetNm} - {surveyDetail.submissionTargetId}) -
+ {submitStatus()} ) : ( '-' diff --git a/src/hooks/useSurvey.ts b/src/hooks/useSurvey.ts index f5ed9b7..64d57e5 100644 --- a/src/hooks/useSurvey.ts +++ b/src/hooks/useSurvey.ts @@ -90,7 +90,7 @@ export function useSurvey(id?: number): { isMySurvey, sort, offset, - store: session?.storeId, + storeId: session?.storeId, builderNo: session?.builderNo, role: session?.role, }, diff --git a/src/store/session.ts b/src/store/session.ts index f96926a..13f6f12 100644 --- a/src/store/session.ts +++ b/src/store/session.ts @@ -43,6 +43,7 @@ const initialState: InitialState = { builderNo: null, isLoggedIn: false, role: null, + builderNm: null, }, }