test #1
							
								
								
									
										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',
 | 
					                path: '/content/list',
 | 
				
			||||||
                name: 'ContentList',
 | 
					                name: 'ContentList',
 | 
				
			||||||
                component: () => import(/* webpackChunkName: "content" */ '../views/Content/ContentList.vue')
 | 
					                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