This commit is contained in:
2026-04-07 14:50:23 +09:00
commit b4e485502b
4778 changed files with 2017091 additions and 0 deletions

View File

@@ -0,0 +1,208 @@
<template>
<div>
<!-- Page head goes here -->
<div class="max-w mx-auto px-3">
<!-- Content goes here -->
<BaseBoardView1
:name="name"
:profile-url="profileUrl"
:title="title"
:content="content"
:flags="flags"
:attachments="attachments"
:hit-count="hitCount"
:like-count="likeCount"
:dislike-count="dislikeCount"
:comment-count="commentCount"
:report-count="reportCount"
:status="status"
:updated="updated"
:created="created"
/>
<BaseAttachmentCtl1
v-if="attachmentEnabled"
:attachments="attachments"
:read-only-flag="true"
/>
<div class="mt-5 flex justify-between items-center flex-wrap">
<div class="ml-4 mt-4"></div>
<div class="ml-4 mt-4 flex-shrink-0">
<button
type="button"
class="mr-3 inline-flex items-center rounded-md border border-transparent bg-indigo-100 px-3 py-2 text-sm font-medium leading-4 text-indigo-700 hover:bg-indigo-200 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2"
@click="doFooterAction('닫기')"
>
{{ '닫기' }}
</button>
<button
v-if="myFlag"
type="button"
class="mr-3 inline-flex items-center rounded-md border border-transparent bg-red-600 px-3 py-2 text-sm font-medium leading-4 text-white shadow-sm hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2"
@click="doFooterAction('삭제')"
>
{{ '삭제' }}
</button>
<button
v-if="myFlag"
type="button"
class="inline-flex items-center rounded-md border border-transparent bg-indigo-600 px-3 py-2 text-sm font-medium leading-4 text-white shadow-sm hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2"
@click="doFooterAction('수정')"
>
{{ '수정' }}
</button>
</div>
</div>
<BaseCommentCtl1
v-if="commentEnabled"
class="mt-5"
:tid="commentTargetId"
:read-only-flag="!_crossCtl.isAuthenticated"
/>
</div>
</div>
</template>
<script setup lang="ts">
definePageMeta({
// middleware: 'check-auth-user',
});
const route = useRoute();
console.log('huk params = ', route.params);
const bid = ref('');
let cid: string | string[] = '';
bid.value = route.params.boardId[0];
cid = route.params['_cid'];
console.log('huk 7');
const commentTargetId = ref(cid.toString());
const name = ref('');
const profileUrl = ref('');
const title = ref('');
const content = ref('');
const flags = ref([]);
const attachments = ref([]);
const hitCount = ref(0);
const likeCount = ref(0);
const dislikeCount = ref(0);
const commentCount = ref(0);
const reportCount = ref(0);
const status = ref(0);
const updated = ref('');
const created = ref('');
const myFlag = ref(false);
const commentEnabled = ref(false);
const attachmentEnabled = ref(false);
const { $dayjs } = useNuxtApp();
function doFooterAction(tag) {
console.log('on doFooterAction(), tag=', tag);
switch (tag) {
case '수정':
_crossCtl.openModal(
'confirm',
'수정 확인',
'정말로 수정하시겠습니까?',
['수정', '취소'],
(serial, btnIdx) => {
console.log('btnIdx=', btnIdx);
if (btnIdx == 0) {
navigateTo('/board/' + bid.value + '/edit/' + cid);
}
}
);
break;
case '삭제':
doDelete();
break;
case '닫기':
// router.back();
navigateTo('/board/' + bid.value + '/list', { replace: true });
break;
}
}
async function doDelete() {
_crossCtl.openModal(
'confirm',
'삭제 확인',
'정말로 삭제하시겠습니까?',
['삭제', '취소'],
async (serial, btnIdx) => {
console.log('btnIdx=', btnIdx);
if (btnIdx == 0) {
const responseJson = await _crossCtl.doComm('delete', 'board', {
boardId: bid.value,
hero: cid,
});
if (responseJson['responseCode'] != 200) {
alert(responseJson['responseMessage']);
} else {
// router.back();
navigateTo('/board/' + bid.value + '/list', {
replace: true,
});
}
}
}
);
}
const responseJson = await _crossCtl.doComm('select', 'board', {
boardId: bid.value,
hero: cid,
});
console.log('huk responseJson=', responseJson);
if (responseJson['responseCode'] != 200) {
alert(responseJson['responseMessage']);
} else {
const tmpDatas = responseJson['data'];
console.log('huk tmpDatas=', tmpDatas);
if (tmpDatas.length == 1) {
commentEnabled.value = responseJson['metaData']['commentEnabled'];
attachmentEnabled.value = responseJson['metaData']['attachmentEnabled'];
name.value = tmpDatas[0]['name'];
profileUrl.value = tmpDatas[0]['profile_url'];
title.value = tmpDatas[0]['title'];
content.value = tmpDatas[0]['content'];
flags.value = JSON.parse(tmpDatas[0]['flags']);
attachments.value = JSON.parse(tmpDatas[0]['attachments']);
hitCount.value = tmpDatas[0]['hit_count'];
likeCount.value = tmpDatas[0]['like_count'];
dislikeCount.value = tmpDatas[0]['dislike_count'];
commentCount.value = tmpDatas[0]['comment_count'];
reportCount.value = tmpDatas[0]['report_count'];
status.value = tmpDatas[0]['status'];
updated.value = $dayjs(tmpDatas[0]['updated']).format(
'YY/MM/DD A h:mm:ss'
);
created.value = $dayjs(tmpDatas[0]['created']).format(
'YY/MM/DD A h:mm:ss'
);
myFlag.value = tmpDatas[0]['myFlag'];
// $dayjs(val).format('YY/MM/DD A h:mm:ss')
} else {
console.log('bad count. count = ' + tmpDatas.length);
}
}
</script>