라이브 정산 페이지 추가
This commit is contained in:
		
							
								
								
									
										7
									
								
								src/api/calculate.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/api/calculate.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| import Vue from 'vue'; | ||||
|  | ||||
| async function getCalculateLive(startDate, endDate) { | ||||
|     return Vue.axios.get('/creator-admin/calculate/live?startDateStr=' + startDate + '&endDateStr=' + endDate); | ||||
| } | ||||
|  | ||||
| export { getCalculateLive } | ||||
| @@ -19,7 +19,12 @@ const routes = [ | ||||
|                 path: '/content/list', | ||||
|                 name: 'ContentList', | ||||
|                 component: () => import(/* webpackChunkName: "content" */ '../views/Content/ContentList.vue') | ||||
|             } | ||||
|             }, | ||||
|             { | ||||
|                 path: '/calculate/live', | ||||
|                 name: 'CalculateLive', | ||||
|                 component: () => import(/* webpackChunkName: "calculate" */ '../views/Calculate/CalculateLive.vue') | ||||
|             }, | ||||
|         ] | ||||
|     }, | ||||
|     { | ||||
|   | ||||
							
								
								
									
										323
									
								
								src/views/Calculate/CalculateLive.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										323
									
								
								src/views/Calculate/CalculateLive.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,323 @@ | ||||
| <template> | ||||
|   <div> | ||||
|     <v-toolbar dark> | ||||
|       <v-spacer /> | ||||
|       <v-toolbar-title>라이브 정산</v-toolbar-title> | ||||
|       <v-spacer /> | ||||
|     </v-toolbar> | ||||
|  | ||||
|     <br> | ||||
|  | ||||
|     <v-container> | ||||
|       <v-row> | ||||
|         <v-col cols="2"> | ||||
|           <datetime | ||||
|             v-model="start_date" | ||||
|             class="datepicker" | ||||
|             format="YYYY-MM-DD" | ||||
|           /> | ||||
|         </v-col> | ||||
|  | ||||
|         <v-col cols="1"> | ||||
|           ~ | ||||
|         </v-col> | ||||
|  | ||||
|         <v-col cols="2"> | ||||
|           <datetime | ||||
|             v-model="end_date" | ||||
|             class="datepicker" | ||||
|             format="YYYY-MM-DD" | ||||
|           /> | ||||
|         </v-col> | ||||
|  | ||||
|         <v-col cols="1" /> | ||||
|  | ||||
|         <v-col cols="2"> | ||||
|           <v-btn | ||||
|             block | ||||
|             color="#9970ff" | ||||
|             dark | ||||
|             depressed | ||||
|             @click="getCalculateLive" | ||||
|           > | ||||
|             조회 | ||||
|           </v-btn> | ||||
|         </v-col> | ||||
|  | ||||
|         <v-spacer /> | ||||
|  | ||||
|         <v-col cols="2"> | ||||
|           <vue-excel-xlsx | ||||
|             :data="items" | ||||
|             :columns="columns" | ||||
|             :file-name="'정산'" | ||||
|             :file-type="'xlsx'" | ||||
|             :sheet-name="'정산'" | ||||
|           > | ||||
|             <v-btn | ||||
|               block | ||||
|               color="#9970ff" | ||||
|               dark | ||||
|               depressed | ||||
|             > | ||||
|               엑셀 다운로드 | ||||
|             </v-btn> | ||||
|           </vue-excel-xlsx> | ||||
|         </v-col> | ||||
|       </v-row> | ||||
|  | ||||
|       <v-row> | ||||
|         <v-col> | ||||
|           <v-data-table | ||||
|             :headers="headers" | ||||
|             :items="items" | ||||
|             :loading="is_loading" | ||||
|             :items-per-page="-1" | ||||
|             class="elevation-1" | ||||
|             hide-default-footer | ||||
|           > | ||||
|             <template v-slot:item.email="{ item }"> | ||||
|               {{ item.email }} | ||||
|             </template> | ||||
|  | ||||
|             <template v-slot:item.nickname="{ item }"> | ||||
|               {{ item.nickname }} | ||||
|             </template> | ||||
|  | ||||
|             <template v-slot:item.date="{ item }"> | ||||
|               {{ item.date }} | ||||
|             </template> | ||||
|  | ||||
|             <template v-slot:item.title="{ item }"> | ||||
|               {{ item.title }} | ||||
|             </template> | ||||
|  | ||||
|             <template v-slot:item.entranceFee="{ item }"> | ||||
|               {{ item.entranceFee.toLocaleString() }} 캔 | ||||
|             </template> | ||||
|  | ||||
|             <template v-slot:item.canUsageStr="{ item }"> | ||||
|               {{ item.canUsageStr }} | ||||
|             </template> | ||||
|  | ||||
|             <template v-slot:item.totalAmount="{ item }"> | ||||
|               {{ item.totalAmount.toLocaleString() }} 캔 | ||||
|             </template> | ||||
|  | ||||
|             <template v-slot:item.totalKrw="{ item }"> | ||||
|               {{ item.totalKrw.toLocaleString() }} 원 | ||||
|             </template> | ||||
|  | ||||
|             <template v-slot:item.paymentFee="{ item }"> | ||||
|               {{ item.paymentFee.toLocaleString() }} 원 | ||||
|             </template> | ||||
|  | ||||
|             <template v-slot:item.settlementAmount="{ item }"> | ||||
|               {{ item.settlementAmount.toLocaleString() }} 원 | ||||
|             </template> | ||||
|  | ||||
|             <template v-slot:item.tax="{ item }"> | ||||
|               {{ item.tax.toLocaleString() }} 원 | ||||
|             </template> | ||||
|  | ||||
|             <template v-slot:item.depositAmount="{ item }"> | ||||
|               {{ item.depositAmount.toLocaleString() }} 원 | ||||
|             </template> | ||||
|           </v-data-table> | ||||
|         </v-col> | ||||
|       </v-row> | ||||
|     </v-container> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import * as api from "@/api/calculate"; | ||||
| import datetime from 'vuejs-datetimepicker'; | ||||
|  | ||||
| export default { | ||||
|   name: "CalculateLive", | ||||
|   components: {datetime}, | ||||
|  | ||||
|   data() { | ||||
|     return { | ||||
|       is_loading: false, | ||||
|       start_date: null, | ||||
|       end_date: null, | ||||
|       items: [], | ||||
|       columns: [ | ||||
|         { | ||||
|           label: "크리에이터", | ||||
|           field: "nickname", | ||||
|         }, | ||||
|         { | ||||
|           label: "날짜", | ||||
|           field: "date", | ||||
|         }, | ||||
|         { | ||||
|           label: "제목", | ||||
|           field: "title", | ||||
|         }, | ||||
|         { | ||||
|           label: "구분", | ||||
|           field: "canUsageStr", | ||||
|         }, | ||||
|         { | ||||
|           label: "입장캔", | ||||
|           field: "entranceFee", | ||||
|         }, | ||||
|         { | ||||
|           label: "인원", | ||||
|           field: "numberOfPeople", | ||||
|         }, | ||||
|         { | ||||
|           label: "합계(캔)", | ||||
|           field: "totalAmount", | ||||
|         }, | ||||
|         { | ||||
|           label: "원화", | ||||
|           field: "totalKrw", | ||||
|         }, | ||||
|         { | ||||
|           label: "결제수수료(6.6%)", | ||||
|           field: "paymentFee", | ||||
|         }, | ||||
|         { | ||||
|           label: "정산금액", | ||||
|           field: "settlementAmount", | ||||
|         }, | ||||
|         { | ||||
|           label: "원천세(3.3%)", | ||||
|           field: "tax", | ||||
|         }, | ||||
|         { | ||||
|           label: "입금액", | ||||
|           field: "depositAmount", | ||||
|         }, | ||||
|       ], | ||||
|       headers: [ | ||||
|         { | ||||
|           text: '크리에이터', | ||||
|           align: 'center', | ||||
|           sortable: false, | ||||
|           value: 'nickname', | ||||
|         }, | ||||
|         { | ||||
|           text: '날짜', | ||||
|           align: 'center', | ||||
|           sortable: false, | ||||
|           value: 'date', | ||||
|         }, | ||||
|         { | ||||
|           text: '제목', | ||||
|           sortable: false, | ||||
|           value: 'title', | ||||
|         }, | ||||
|         { | ||||
|           text: '구분', | ||||
|           align: 'center', | ||||
|           sortable: false, | ||||
|           value: 'canUsageStr', | ||||
|         }, | ||||
|         { | ||||
|           text: '입장캔', | ||||
|           align: 'center', | ||||
|           sortable: false, | ||||
|           value: 'entranceFee', | ||||
|         }, | ||||
|         { | ||||
|           text: '인원', | ||||
|           align: 'center', | ||||
|           sortable: false, | ||||
|           value: 'numberOfPeople', | ||||
|         }, | ||||
|         { | ||||
|           text: '합계(캔)', | ||||
|           align: 'center', | ||||
|           sortable: false, | ||||
|           value: 'totalAmount', | ||||
|         }, | ||||
|         { | ||||
|           text: '원화', | ||||
|           align: 'center', | ||||
|           sortable: false, | ||||
|           value: 'totalKrw', | ||||
|         }, | ||||
|         { | ||||
|           text: '수수료\n(6.6%)', | ||||
|           align: 'center', | ||||
|           sortable: false, | ||||
|           value: 'paymentFee', | ||||
|         }, | ||||
|         { | ||||
|           text: '정산금액', | ||||
|           align: 'center', | ||||
|           sortable: false, | ||||
|           value: 'settlementAmount', | ||||
|         }, | ||||
|         { | ||||
|           text: '원천세\n(3.3%)', | ||||
|           align: 'center', | ||||
|           sortable: false, | ||||
|           value: 'tax', | ||||
|         }, | ||||
|         { | ||||
|           text: '입금액', | ||||
|           align: 'center', | ||||
|           sortable: false, | ||||
|           value: 'depositAmount', | ||||
|         } | ||||
|       ], | ||||
|     } | ||||
|   }, | ||||
|  | ||||
|   async created() { | ||||
|     const date = new Date(); | ||||
|     const firstDate = new Date(date.getFullYear(), date.getMonth(), 1); | ||||
|     const lastDate = new Date(date.getFullYear(), date.getMonth() + 1, 0); | ||||
|  | ||||
|     let firstDateMonth = (firstDate.getMonth() + 1).toString() | ||||
|     if (firstDateMonth.length < 2) { | ||||
|       firstDateMonth = '0' + firstDateMonth | ||||
|     } | ||||
|  | ||||
|  | ||||
|     let lastDateMonth = (lastDate.getMonth() + 1).toString() | ||||
|     if (lastDateMonth.length < 2) { | ||||
|       lastDateMonth = '0' + lastDateMonth | ||||
|     } | ||||
|  | ||||
|     this.start_date = firstDate.getFullYear() + '-' + firstDateMonth + '-0' + firstDate.getDate() | ||||
|     this.end_date = lastDate.getFullYear() + '-' + lastDateMonth + '-' + lastDate.getDate() | ||||
|  | ||||
|     await this.getCalculateLive() | ||||
|   }, | ||||
|  | ||||
|   methods: { | ||||
|     notifyError(message) { | ||||
|       this.$dialog.notify.error(message) | ||||
|     }, | ||||
|  | ||||
|     notifySuccess(message) { | ||||
|       this.$dialog.notify.success(message) | ||||
|     }, | ||||
|  | ||||
|     async getCalculateLive() { | ||||
|       this.is_loading = true | ||||
|  | ||||
|       try { | ||||
|         const res = await api.getCalculateLive(this.start_date, this.end_date) | ||||
|         if (res.status === 200 && res.data.success === true) { | ||||
|           this.items = res.data.data | ||||
|         } else { | ||||
|           this.notifyError(res.data.message || '알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.') | ||||
|         } | ||||
|  | ||||
|         this.is_loading = false | ||||
|       } catch (e) { | ||||
|         this.notifyError('알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.') | ||||
|         this.is_loading = false | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
		Reference in New Issue
	
	Block a user
	 Yu Sung
					Yu Sung