将tokenomic的表格改为table
This commit is contained in:
parent
e2f5abae37
commit
9ff4ca52e1
0
src/api/Market.ts
Normal file
0
src/api/Market.ts
Normal file
28
src/components/layout/BaseFooter.vue
Normal file
28
src/components/layout/BaseFooter.vue
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<template>
|
||||||
|
<div class="">
|
||||||
|
<desktop-footer v-if="!mobile"></desktop-footer>
|
||||||
|
<mobile-footer v-if="mobile"></mobile-footer>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script lang="ts">
|
||||||
|
import { Component, Vue } from 'vue-property-decorator'
|
||||||
|
import { AppModule, DeviceType } from '@/store/modules/app'
|
||||||
|
import DesktopFooter from '@/components/index/DesktopFooter.vue'
|
||||||
|
import MobileFooter from '@/components/mobile/main/MobileFooter.vue'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
name: 'Footer',
|
||||||
|
components: {
|
||||||
|
MobileFooter,
|
||||||
|
DesktopFooter
|
||||||
|
}
|
||||||
|
})
|
||||||
|
export default class BaseFooter extends Vue {
|
||||||
|
get mobile() {
|
||||||
|
return AppModule.device === DeviceType.Mobile
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
|
</style>
|
43
src/components/market/NftTypeBar.vue
Normal file
43
src/components/market/NftTypeBar.vue
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
<template>
|
||||||
|
<div class="nft-type-bar">
|
||||||
|
<div class="type-item "
|
||||||
|
v-for="(s, i) in types"
|
||||||
|
:key="i"
|
||||||
|
:class="{'active': selected === s}"
|
||||||
|
>{{s}}</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script lang="ts">
|
||||||
|
import { Component, Vue } from 'vue-property-decorator'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
name: 'NftTypeBar',
|
||||||
|
components: {
|
||||||
|
}
|
||||||
|
})
|
||||||
|
export default class NftTypeBar extends Vue {
|
||||||
|
private types = [
|
||||||
|
'Hero',
|
||||||
|
'Weapon',
|
||||||
|
'Chip'
|
||||||
|
]
|
||||||
|
|
||||||
|
private selected = 'Hero'
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.nft-type-bar{
|
||||||
|
width: 100%;
|
||||||
|
color: white;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
.type-item{
|
||||||
|
font-size: 20px;
|
||||||
|
line-height: 32px;
|
||||||
|
&.active{
|
||||||
|
color: #46E0F4;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="searchResult">
|
<div class="searchResult">
|
||||||
|
<nft-type-bar></nft-type-bar>
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<sort-select v-if="showSort"></sort-select>
|
<sort-select v-if="showSort"></sort-select>
|
||||||
<button class="general-btn btnFilter" v-if="showSort" @click="showFilter">
|
<button class="general-btn btnFilter" v-if="showSort" @click="showFilter">
|
||||||
@ -15,6 +16,7 @@ import { Component, Vue } from 'vue-property-decorator'
|
|||||||
import SortSelect from '@/components/market/SortSelect.vue'
|
import SortSelect from '@/components/market/SortSelect.vue'
|
||||||
import CardList from '@/components/market/CardList.vue'
|
import CardList from '@/components/market/CardList.vue'
|
||||||
import ResultNo from '@/components/market/ResultNo.vue'
|
import ResultNo from '@/components/market/ResultNo.vue'
|
||||||
|
import NftTypeBar from '@/components/market/NftTypeBar.vue'
|
||||||
|
|
||||||
declare module 'vue/types/vue' {
|
declare module 'vue/types/vue' {
|
||||||
interface Vue {
|
interface Vue {
|
||||||
@ -24,6 +26,7 @@ declare module 'vue/types/vue' {
|
|||||||
@Component({
|
@Component({
|
||||||
name: 'SearchResult',
|
name: 'SearchResult',
|
||||||
components: {
|
components: {
|
||||||
|
NftTypeBar,
|
||||||
ResultNo,
|
ResultNo,
|
||||||
CardList,
|
CardList,
|
||||||
SortSelect
|
SortSelect
|
||||||
|
@ -268,6 +268,7 @@ export default class extends Vue {
|
|||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
line-height: 80px;
|
line-height: 80px;
|
||||||
height: 80px;
|
height: 80px;
|
||||||
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
.walletBtn span{
|
.walletBtn span{
|
||||||
vertical-align: bottom;
|
vertical-align: bottom;
|
||||||
@ -355,6 +356,7 @@ export default class extends Vue {
|
|||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
padding: 1.5em 0;
|
padding: 1.5em 0;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
&:not(:first-child) {
|
&:not(:first-child) {
|
||||||
border-top: 1px solid #3d2a84;
|
border-top: 1px solid #3d2a84;
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
import { Component, Vue } from 'vue-property-decorator'
|
import { Component, Vue } from 'vue-property-decorator'
|
||||||
import { BlockChain } from '@/utils/blockchain'
|
import { BlockChain } from '@/utils/blockchain'
|
||||||
import { AppModule } from '@/store/modules/app'
|
import { AppModule } from '@/store/modules/app'
|
||||||
|
import VueClipboard from 'vue-clipboard2'
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
name: 'TopUserInfo',
|
name: 'TopUserInfo',
|
||||||
@ -51,6 +52,10 @@ export default class extends Vue {
|
|||||||
this.$emit('close-self')
|
this.$emit('close-self')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
beforeMount() {
|
||||||
|
Vue.use(VueClipboard)
|
||||||
|
}
|
||||||
|
|
||||||
get walletCollected() {
|
get walletCollected() {
|
||||||
return AppModule.walletConnected
|
return AppModule.walletConnected
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,72 @@
|
|||||||
</div>
|
</div>
|
||||||
<icon-title-bar :title-img="require('@/assets/202202/tokenomic/schedule.png')"></icon-title-bar>
|
<icon-title-bar :title-img="require('@/assets/202202/tokenomic/schedule.png')"></icon-title-bar>
|
||||||
<div class="main-img-container">
|
<div class="main-img-container">
|
||||||
<img class="schedule" src="@/assets/202202/tokenomic/schedule-table.png" alt="schedule"/>
|
<table class="allocation-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th width="30%"></th>
|
||||||
|
<th width="9%">TGE</th>
|
||||||
|
<th width="16%">Locking period</th>
|
||||||
|
<th>Release(linear)</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>15% Team</td>
|
||||||
|
<td>-</td>
|
||||||
|
<td>6m</td>
|
||||||
|
<td>5% release for 6 months and 12 months respectively;<br/> 15% linear release per 6 month afterwards</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>5% Advisors</td>
|
||||||
|
<td>-</td>
|
||||||
|
<td>6m</td>
|
||||||
|
<td>15% per 6 month</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>8% Angel Round</td>
|
||||||
|
<td>3%</td>
|
||||||
|
<td>6m</td>
|
||||||
|
<td>Linear release per quarter in 2 years</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>6% Private Round</td>
|
||||||
|
<td>5%</td>
|
||||||
|
<td>6m</td>
|
||||||
|
<td>Linear release per quarter in 2 years</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>35% Play to Earn</td>
|
||||||
|
<td>-</td>
|
||||||
|
<td>-</td>
|
||||||
|
<td>Released at a 15% annual reduction in production</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>19% Staking and Liquidity Mining</td>
|
||||||
|
<td>-</td>
|
||||||
|
<td>-</td>
|
||||||
|
<td>Released at a 15% annual reduction in production</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>9% Ecosystem Construction</td>
|
||||||
|
<td>10%</td>
|
||||||
|
<td>TGE 10%</td>
|
||||||
|
<td>Linear release per quarter in 30 months</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>2% Initial Liquidity Pool</td>
|
||||||
|
<td>100%</td>
|
||||||
|
<td>-</td>
|
||||||
|
<td>-</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>1% IDO</td>
|
||||||
|
<td>100%</td>
|
||||||
|
<td>-</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -43,6 +108,49 @@ export default class extends Vue {
|
|||||||
width: 960px;
|
width: 960px;
|
||||||
margin-bottom: 90px;
|
margin-bottom: 90px;
|
||||||
}
|
}
|
||||||
|
.allocation-table{
|
||||||
|
width: 960px;
|
||||||
|
color: white;
|
||||||
|
font-size: 14px;
|
||||||
|
margin-bottom: 50px;
|
||||||
|
thead{
|
||||||
|
tr{
|
||||||
|
th{
|
||||||
|
text-align: center;
|
||||||
|
border-bottom: 3px solid #7c7c7c;
|
||||||
|
border-top: 3px solid #7c7c7c;
|
||||||
|
line-height: 54px;
|
||||||
|
&:not(:last-child) {
|
||||||
|
border-right: 3px solid #7c7c7c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tbody{
|
||||||
|
tr{
|
||||||
|
td{
|
||||||
|
font-weight: 500;
|
||||||
|
text-align: center;
|
||||||
|
border-bottom: 1px solid #7c7c7c;
|
||||||
|
line-height: 54px;
|
||||||
|
&:not(:last-child) {
|
||||||
|
border-right: 3px solid #7c7c7c;
|
||||||
|
}
|
||||||
|
&:first-child{
|
||||||
|
text-align: left;
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
&:last-child{
|
||||||
|
text-align: right;
|
||||||
|
padding-right: 50px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:first-child td{
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.root.mobile{
|
.root.mobile{
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
@ -72,5 +180,22 @@ export default class extends Vue {
|
|||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.allocation-table{
|
||||||
|
width: 200vw;
|
||||||
|
font-size: 3.4vw;
|
||||||
|
tbody{
|
||||||
|
tr{
|
||||||
|
td{
|
||||||
|
line-height: 14vw;
|
||||||
|
&:last-child{
|
||||||
|
padding-right: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:first-child td{
|
||||||
|
line-height: 8vw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
<div class="root">
|
<div class="root">
|
||||||
<nft-detail :data="nftData"></nft-detail>
|
<nft-detail :data="nftData"></nft-detail>
|
||||||
</div>
|
</div>
|
||||||
|
<base-footer></base-footer>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -15,9 +16,11 @@ import NftDetail from '@/components/market/NftDetail.vue'
|
|||||||
import { INftAttr, ISpineData } from '@/utils/SpineRender'
|
import { INftAttr, ISpineData } from '@/utils/SpineRender'
|
||||||
import { defaultINftAttr, getNftDetail } from '@/api/Mall'
|
import { defaultINftAttr, getNftDetail } from '@/api/Mall'
|
||||||
import { AppModule } from '@/store/modules/app'
|
import { AppModule } from '@/store/modules/app'
|
||||||
|
import BaseFooter from '@/components/layout/BaseFooter.vue'
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
components: {
|
components: {
|
||||||
|
BaseFooter,
|
||||||
NftDetail,
|
NftDetail,
|
||||||
ItemDetail,
|
ItemDetail,
|
||||||
TopMenu
|
TopMenu
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
<search-result @filter-show="showFilter" :show-sort="true"></search-result>
|
<search-result @filter-show="showFilter" :show-sort="true"></search-result>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
<base-footer></base-footer>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -15,9 +16,11 @@ import { Component, Vue } from 'vue-property-decorator'
|
|||||||
import SearchPanel from '@/components/market/SearchPanel.vue'
|
import SearchPanel from '@/components/market/SearchPanel.vue'
|
||||||
import SearchResult from '@/components/market/SearchResult.vue'
|
import SearchResult from '@/components/market/SearchResult.vue'
|
||||||
import TopMenu from '@/components/market/TopMenu.vue'
|
import TopMenu from '@/components/market/TopMenu.vue'
|
||||||
|
import BaseFooter from '@/components/layout/BaseFooter.vue'
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
components: {
|
components: {
|
||||||
|
BaseFooter,
|
||||||
SearchResult,
|
SearchResult,
|
||||||
SearchPanel,
|
SearchPanel,
|
||||||
TopMenu
|
TopMenu
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
<nft-list :nft-datas="nftList"></nft-list>
|
<nft-list :nft-datas="nftList"></nft-list>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
<base-footer></base-footer>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -18,9 +19,11 @@ import NftList from '@/components/market/NftList.vue'
|
|||||||
import { INftAttr, ISpineData } from '@/utils/SpineRender'
|
import { INftAttr, ISpineData } from '@/utils/SpineRender'
|
||||||
import { getNftList } from '@/api/Mall'
|
import { getNftList } from '@/api/Mall'
|
||||||
import { AppModule } from '@/store/modules/app'
|
import { AppModule } from '@/store/modules/app'
|
||||||
|
import BaseFooter from '@/components/layout/BaseFooter.vue'
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
components: {
|
components: {
|
||||||
|
BaseFooter,
|
||||||
NftList,
|
NftList,
|
||||||
SearchResult,
|
SearchResult,
|
||||||
SearchPanel,
|
SearchPanel,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user