|
|
@@ -0,0 +1,180 @@
|
|
|
+<template>
|
|
|
+ <b-card ref="graph-1" class="card-bc"
|
|
|
+ no-body>
|
|
|
+ <div class="title text-center"><feather-icon class="arrow-left"
|
|
|
+ icon="ChevronsLeftIcon"
|
|
|
+ size="50"
|
|
|
+ @click="shiftPrize(1)"/>{{ prizeName }}<feather-icon class="arrow-right"
|
|
|
+ icon="ChevronsRightIcon"
|
|
|
+ size="50"
|
|
|
+ @click="shiftPrize(-1)"/></div>
|
|
|
+ <div style="background-image: url(./flower-r.png);" class="back">
|
|
|
+ <b-row style=" margin-right: 0rem; margin-left: 0rem;">
|
|
|
+ <!-- <table-custom-render /> -->
|
|
|
+ <b-col class="prize-list" :key="index" v-for="(item, index) in prizeList" lg="3" md="3">
|
|
|
+ <b-badge pill :variant="isClaim(item.is_claimed)">{{ item.user_id + " " + item.name }}</b-badge>
|
|
|
+ </b-col>
|
|
|
+
|
|
|
+ <b-button variant="danger"
|
|
|
+ style="height: 45px; margin-left: auto; margin-right: 44px; margin-bottom: 20px; margin-top: auto;"
|
|
|
+ @click="toggleFullscreen('graph-1')" size="sm"><feather-icon
|
|
|
+ icon="MaximizeIcon"
|
|
|
+ size="16" />
|
|
|
+ </b-button>
|
|
|
+ </b-row>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </b-card>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import BCardCode from '@core/components/b-card-code/BCardCode.vue'
|
|
|
+import { BCard, BCardTitle, BRow, BCol, BBadge, BButton } from 'bootstrap-vue'
|
|
|
+
|
|
|
+import useJwt from '@/auth/jwt/useJwt'
|
|
|
+
|
|
|
+export default {
|
|
|
+ components: {
|
|
|
+ BCard,
|
|
|
+ BCardTitle,
|
|
|
+ BCardCode,
|
|
|
+ BRow,
|
|
|
+ BCol,
|
|
|
+ BBadge,
|
|
|
+ BButton,
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ prizeName: "",
|
|
|
+ prizeList:[],
|
|
|
+ prizes:[],
|
|
|
+ index:0,
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.getPrize(this.$route.params.activity_id)
|
|
|
+
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ getPrize(activity_id) {
|
|
|
+ useJwt.postData('/api/prize/index_by_activity', { activity_id: activity_id }).then(response => {
|
|
|
+ console.log(response.data);
|
|
|
+ this.prizes = response.data;
|
|
|
+ this.index = this.prizes.length - 1;
|
|
|
+ let prize_id = this.prizes[this.index].id;
|
|
|
+ this.getPrizeList(prize_id);
|
|
|
+ }).catch(error => {
|
|
|
+ console.log("error: " + error);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ getPrizeList(prize_id) {
|
|
|
+ useJwt.postData('/api/recipient/indexByPrize', { prize_id: prize_id }).then(response => {
|
|
|
+ console.log(response.data);
|
|
|
+ this.prizeList = response.data.list;
|
|
|
+ this.prizeName = response.data.prize[0].name;
|
|
|
+ }).catch(error => {
|
|
|
+ console.log("error: " + error);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ shiftPrize(index){
|
|
|
+ this.index = (this.index + this.prizes.length + index) % this.prizes.length;
|
|
|
+ this.getPrizeList(this.prizes[this.index].id);
|
|
|
+ },
|
|
|
+ isClaim(status) {
|
|
|
+ return status == 1 ? 'success' : 'danger';
|
|
|
+ },
|
|
|
+ toggleFullscreen(ref) {
|
|
|
+ const elem = this.$refs[ref];
|
|
|
+ const isFullscreen = document.fullscreenElement !== null;
|
|
|
+
|
|
|
+ if (isFullscreen) {
|
|
|
+ this.closeFullscreen();
|
|
|
+ } else {
|
|
|
+ this.openFullscreen(elem);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ openFullscreen(elem) {
|
|
|
+ if (elem.requestFullscreen) {
|
|
|
+ elem.requestFullscreen();
|
|
|
+ } else if (elem.mozRequestFullScreen) {
|
|
|
+ /* Firefox */
|
|
|
+ elem.mozRequestFullScreen();
|
|
|
+ } else if (elem.webkitRequestFullscreen) {
|
|
|
+ /* Chrome, Safari and Opera */
|
|
|
+ elem.webkitRequestFullscreen();
|
|
|
+ } else if (elem.msRequestFullscreen) {
|
|
|
+ /* IE/Edge */
|
|
|
+ elem.msRequestFullscreen();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ closeFullscreen() {
|
|
|
+ if (document.exitFullscreen) {
|
|
|
+ document.exitFullscreen();
|
|
|
+ } else if (document.mozCancelFullScreen) {
|
|
|
+ /* Firefox */
|
|
|
+ document.mozCancelFullScreen();
|
|
|
+ } else if (document.webkitExitFullscreen) {
|
|
|
+ /* Chrome, Safari and Opera */
|
|
|
+ document.webkitExitFullscreen();
|
|
|
+ } else if (document.msExitFullscreen) {
|
|
|
+ /* IE/Edge */
|
|
|
+ document.msExitFullscreen();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss">
|
|
|
+@import '~@resources/scss/vue/libs/vue-select.scss';
|
|
|
+
|
|
|
+.prize-list {
|
|
|
+ font-size: 30px;
|
|
|
+ text-align: center;
|
|
|
+ margin-top: 8px;
|
|
|
+ margin-bottom: 8px;
|
|
|
+}
|
|
|
+
|
|
|
+.card-bc {
|
|
|
+ background-color: #CA0000;
|
|
|
+}
|
|
|
+
|
|
|
+.badge-pill {
|
|
|
+ width: 98%;
|
|
|
+ background-color: #df1a1a85;
|
|
|
+ height: 60px;
|
|
|
+ padding-top: 17px;
|
|
|
+}
|
|
|
+
|
|
|
+.title {
|
|
|
+ background-color: #CA0000;
|
|
|
+ width: 100%;
|
|
|
+ font-size: 35px;
|
|
|
+ color: white;
|
|
|
+ font-weight: bold;
|
|
|
+}
|
|
|
+
|
|
|
+.back {
|
|
|
+ background-color: #c72c2cee;
|
|
|
+ background-repeat: no-repeat;
|
|
|
+ background-size: 600px 600px;
|
|
|
+ background-attachment: fixed;
|
|
|
+ background-position: -5% 120%;
|
|
|
+}
|
|
|
+
|
|
|
+.arrow-right {
|
|
|
+ right: 0;
|
|
|
+ position: absolute;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+.arrow-left {
|
|
|
+ left: 0;
|
|
|
+ position: absolute;
|
|
|
+ cursor: pointer;
|
|
|
+}
|
|
|
+
|
|
|
+body::-webkit-scrollbar {
|
|
|
+ display: none;
|
|
|
+}
|
|
|
+</style>
|