diff --git a/src/App.vue b/src/App.vue index 3ec463e..168da05 100644 --- a/src/App.vue +++ b/src/App.vue @@ -38,4 +38,12 @@ } } } + +html::-webkit-scrollbar, body::-webkit-scrollbar { + overflow-y: hidden; +} + +html, body { + overflow-y: hidden; +} diff --git a/src/api/audio_content_series.js b/src/api/audio_content_series.js index b7bfbe6..f77959e 100644 --- a/src/api/audio_content_series.js +++ b/src/api/audio_content_series.js @@ -55,6 +55,13 @@ async function removeContentInTheSeries(seriesId, contentId) { ) } +async function updateSeriesOrders(ids) { + return Vue.axios.put( + "/creator-admin/audio-content/series/orders", + {ids: ids} + ) +} + export { getGenreList, getSeriesList, @@ -62,6 +69,7 @@ export { modifySeries, getSeriesDetail, getSeriesContent, + updateSeriesOrders, addingContentToTheSeries, removeContentInTheSeries, searchContentNotInSeries diff --git a/src/views/Content/ContentSeriesList.vue b/src/views/Content/ContentSeriesList.vue index 142cac8..e994149 100644 --- a/src/views/Content/ContentSeriesList.vue +++ b/src/views/Content/ContentSeriesList.vue @@ -22,44 +22,54 @@ - - + - - - - - - - - {{ item.title }} - - - - - 수정 - - - 삭제 - - - - - - + + + + + + + + + {{ item.title }} + + + + + 수정 + + + 삭제 + + + + + + + import * as api from '@/api/audio_content_series'; +import Draggable from "vuedraggable"; export default { name: "ContentSeriesList", - + components: {Draggable}, data() { return { is_loading: false, @@ -378,6 +389,14 @@ export default { }, methods: { + async onScroll() { + const scrollContainer = this.$refs.scroll_container; + const threshold = scrollContainer.scrollHeight - scrollContainer.clientHeight; + if (scrollContainer.scrollTop >= threshold - 10 && this.total_page >= this.page) { + await this.getSeriesList(); + } + }, + imageAdd(payload) { const file = payload; if (file) { @@ -485,8 +504,18 @@ export default { this.$router.push({name: 'ContentSeriesDetail', params: {seriesId: series.seriesId}}) }, + async onDropCallback(items) { + const ids = items.map((item) => { + return item.seriesId + }) + + const res = await api.updateSeriesOrders(ids) + if (res.status === 200 && res.data.success === true) { + this.notifySuccess(res.data.message) + } + }, + async getSeriesGenreList() { - this.is_loading = true try { const res = await api.getGenreList() if (res.status === 200 && res.data.success === true) { @@ -496,23 +525,24 @@ export default { } else { this.notifyError(res.data.message || '알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.') } - - this.is_loading = false } catch (e) { this.notifyError('알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.') - this.is_loading = false } }, async getSeriesList() { + if (this.is_loading) return; + this.is_loading = true try { const res = await api.getSeriesList(this.page) if (res.status === 200 && res.data.success === true) { const data = res.data.data + const total_page = Math.ceil(data.totalCount / 10) - const total_page = Math.ceil(data.totalCount / 20) - this.series_list = data.items + if (this.page === 1) this.series_list.length = 0; + this.page += 1; + this.series_list.push(...data.items); if (total_page <= 0) this.total_page = 1 @@ -665,6 +695,11 @@ export default {