diff --git a/src/api/original_series_settlement.js b/src/api/original_series_settlement.js
new file mode 100644
index 0000000..6252810
--- /dev/null
+++ b/src/api/original_series_settlement.js
@@ -0,0 +1,37 @@
+import Vue from 'vue';
+
+// 소지 유저 조회
+async function getOwners() {
+ return Vue.axios.get('/admin/calculate/original-series/owners');
+}
+
+// 정산 내역 조회 (page는 1부터 시작하는 UI 기준, 서버에는 0부터 전달)
+async function getSettlementDetails({ startDate, endDate, creatorId, page = 1, size = 10 }) {
+ const params = new URLSearchParams();
+ // 서버 파라미터 스펙 변경: start_date, end_date, creator_id
+ if (startDate) params.append('start_date', startDate);
+ if (endDate) params.append('end_date', endDate);
+ if (creatorId != null) params.append("creator_id", creatorId);
+ params.append('page', Math.max(0, (page || 1) - 1));
+ params.append('size', size || 10);
+
+ return Vue.axios.get(`/admin/calculate/original-series/settlement-details?${params.toString()}`);
+}
+
+// 엑셀 다운로드 (xlsx 바이너리)
+async function downloadSettlementExcel({ startDate, endDate }) {
+ const params = new URLSearchParams();
+ // 서버 파라미터 스펙 변경: start_date, end_date
+ if (startDate) params.append('start_date', startDate);
+ if (endDate) params.append('end_date', endDate);
+
+ return Vue.axios.get(`/admin/calculate/original-series/settlement-details/excel?${params.toString()}` , {
+ responseType: 'blob'
+ });
+}
+
+export {
+ getOwners,
+ getSettlementDetails,
+ downloadSettlementExcel,
+};
diff --git a/src/components/SideMenu.vue b/src/components/SideMenu.vue
index 239b15b..072efa5 100644
--- a/src/components/SideMenu.vue
+++ b/src/components/SideMenu.vue
@@ -173,9 +173,9 @@ export default {
// ignore
}
- // 정산 관리 메뉴에 '채널 후원 정산' 추가
+ // 정산현황 메뉴에 '채널 후원 정산' 추가
try {
- const calculateMenu = this.items.find(m => m && m.title === '정산 관리')
+ const calculateMenu = this.items.find(m => m && m.title === '정산현황')
if (calculateMenu) {
if (!Array.isArray(calculateMenu.items)) {
calculateMenu.items = calculateMenu.items ? [].concat(calculateMenu.items) : []
@@ -188,6 +188,16 @@ export default {
items: null
})
}
+
+ // '오리지널 시리즈 정산' 추가
+ const existsOriginal = calculateMenu.items.some(ci => ci && ci.route === '/calculate/original-series')
+ if (!existsOriginal) {
+ calculateMenu.items.push({
+ title: '오리지널 시리즈 정산',
+ route: '/calculate/original-series',
+ items: null
+ })
+ }
}
} catch (e) {
// ignore
diff --git a/src/router/index.js b/src/router/index.js
index 48b4e84..335422d 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -51,6 +51,11 @@ const routes = [
component: () => import(/* webpackChunkName: "counselor" */ '../views/Creator/CreatorSettlementRatio.vue')
},
// Agent Management
+ {
+ path: '/calculate/original-series',
+ name: 'OriginalSeriesSettlement',
+ component: () => import(/* webpackChunkName: "calculate" */ '../views/Calculate/OriginalSeriesSettlement.vue')
+ },
{
path: '/agent/list',
name: 'AgentList',
diff --git a/src/views/Calculate/OriginalSeriesSettlement.vue b/src/views/Calculate/OriginalSeriesSettlement.vue
new file mode 100644
index 0000000..cf7daf4
--- /dev/null
+++ b/src/views/Calculate/OriginalSeriesSettlement.vue
@@ -0,0 +1,340 @@
+
+
+
+
+ mdi-arrow-left
+
+ 오리지널 시리즈 정산
+
+
+ 엑셀 다운로드
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 조회
+
+
+
+
+
+
+
+
+ 데이터가 없습니다.
+
+
+
+ {{ numberFormat(item.price) }}
+
+
+ {{ numberFormat(item.totalCan) }}
+
+
+ {{ numberFormat(item.totalPoint) }}
+
+
+
+
+
+
+
+
+
+
+
+
+