准备0726版本

This commit is contained in:
yuyongdong 2024-07-25 13:53:48 +08:00
parent 3c53269ca2
commit 15715d28cf
12 changed files with 425 additions and 67 deletions

View File

@ -1,7 +1,7 @@
VUE_APP_BASE_API='https://market.cebg.games' VUE_APP_BASE_API='https://market.cebg.games'
VUE_APP_BASE_API2='https://invitation.counterfire.games' VUE_APP_BASE_API2='https://invitation.counterfire.games'
//VUE_APP_BASE_API2='http://192.168.100.83:3000/' //VUE_APP_BASE_API2='http://192.168.100.83:3000/'
VUE_APP_GPAL_API='https://game2006api.cebggame.com/' VUE_APP_GPAL_API='https://game2006sapi.cebggame.com/'
# VUE_APP_PASSPORT_PUBLISHABLE_KEY=pk_imapik-test-8c2FAlWxWAoRITk1v9rH # VUE_APP_PASSPORT_PUBLISHABLE_KEY=pk_imapik-test-8c2FAlWxWAoRITk1v9rH
VUE_APP_PASSPORT_PUBLISHABLE_KEY=pk_imapik-test-eRr-kyOKaZ0jIdrvrPCn VUE_APP_PASSPORT_PUBLISHABLE_KEY=pk_imapik-test-eRr-kyOKaZ0jIdrvrPCn
VUE_APP_PASSPORT_REDIRECT_URI=http://localhost:4000 VUE_APP_PASSPORT_REDIRECT_URI=http://localhost:4000
@ -9,7 +9,7 @@ VUE_APP_PASSPORT_LOGOUT_URI=http://localhost:4000
# VUE_APP_PASSPORT_CLIENT_ID=eTmUah69p7ZdRhRYzBta6lZRKXXeXDYj # VUE_APP_PASSPORT_CLIENT_ID=eTmUah69p7ZdRhRYzBta6lZRKXXeXDYj
VUE_APP_PASSPORT_CLIENT_ID=0FNfXxQywm7wjdbyLTDzWt4txc53yRrT VUE_APP_PASSPORT_CLIENT_ID=0FNfXxQywm7wjdbyLTDzWt4txc53yRrT
VUE_APP_PASSPORT_MARKET_ADDRESS=0x7d117aA8BD6D31c4fa91722f246388f38ab1942c VUE_APP_PASSPORT_MARKET_ADDRESS=0x7d117aA8BD6D31c4fa91722f246388f38ab1942c
VUE_APP_UAW_API='https://oauth-svr.cebggame.com' VUE_APP_UAW_API='https://oauth-svr.cebggame.com/task'
VUE_APP_MKT_API='https://market-test.kingsome.cn' VUE_APP_MKT_API='https://market-test.kingsome.cn'
VUE_APP_NET_ID='13473' VUE_APP_NET_ID='13473'
VUE_APP_MARKET_CURRENCY='0xFd42bfb03212dA7e1A4608a44d7658641D99CF34' VUE_APP_MARKET_CURRENCY='0xFd42bfb03212dA7e1A4608a44d7658641D99CF34'

View File

@ -1,7 +1,7 @@
VUE_APP_BASE_API='https://market.cebg.games' VUE_APP_BASE_API='https://market.cebg.games'
VUE_APP_BASE_API2='https://invitation.counterfire.games' VUE_APP_BASE_API2='https://invitation.counterfire.games'
//VUE_APP_BASE_API2='http://192.168.100.83:3000/' //VUE_APP_BASE_API2='http://192.168.100.83:3000/'
VUE_APP_GPAL_API='https://game2006api.cebggame.com/' VUE_APP_GPAL_API='https://game2006sapi.cebggame.com/'
# VUE_APP_PASSPORT_PUBLISHABLE_KEY=pk_imapik-test-8c2FAlWxWAoRITk1v9rH # VUE_APP_PASSPORT_PUBLISHABLE_KEY=pk_imapik-test-8c2FAlWxWAoRITk1v9rH
VUE_APP_PASSPORT_PUBLISHABLE_KEY=pk_imapik-test-eRr-kyOKaZ0jIdrvrPCn VUE_APP_PASSPORT_PUBLISHABLE_KEY=pk_imapik-test-eRr-kyOKaZ0jIdrvrPCn
VUE_APP_PASSPORT_REDIRECT_URI=https://market.kingsome.cn VUE_APP_PASSPORT_REDIRECT_URI=https://market.kingsome.cn
@ -9,7 +9,7 @@ VUE_APP_PASSPORT_LOGOUT_URI=https://market.kingsome.cn
# VUE_APP_PASSPORT_CLIENT_ID=eTmUah69p7ZdRhRYzBta6lZRKXXeXDYj # VUE_APP_PASSPORT_CLIENT_ID=eTmUah69p7ZdRhRYzBta6lZRKXXeXDYj
VUE_APP_PASSPORT_CLIENT_ID=0FNfXxQywm7wjdbyLTDzWt4txc53yRrT VUE_APP_PASSPORT_CLIENT_ID=0FNfXxQywm7wjdbyLTDzWt4txc53yRrT
VUE_APP_PASSPORT_MARKET_ADDRESS=0x7d117aA8BD6D31c4fa91722f246388f38ab1942c VUE_APP_PASSPORT_MARKET_ADDRESS=0x7d117aA8BD6D31c4fa91722f246388f38ab1942c
VUE_APP_UAW_API='https://oauth-svr.cebggame.com' VUE_APP_UAW_API='https://oauth-svr.cebggame.com/task'
VUE_APP_MKT_API='https://market-test.kingsome.cn' VUE_APP_MKT_API='https://market-test.kingsome.cn'
VUE_APP_NET_ID='13473' VUE_APP_NET_ID='13473'
VUE_APP_MARKET_CURRENCY='0xFd42bfb03212dA7e1A4608a44d7658641D99CF34' VUE_APP_MARKET_CURRENCY='0xFd42bfb03212dA7e1A4608a44d7658641D99CF34'

View File

@ -4,6 +4,7 @@
"version": "0.0.0", "version": "0.0.0",
"scripts": { "scripts": {
"task": "vite --host --mode dev", "task": "vite --host --mode dev",
"test": "vite --host --mode test",
"dev": "vite --host --mode development", "dev": "vite --host --mode development",
"prod": "vite --host --mode production", "prod": "vite --host --mode production",
"build:task": "vite build --mode dev", "build:task": "vite build --mode dev",

View File

@ -300,10 +300,12 @@ onMounted(() => {
height: 30px; height: 30px;
top: 20px; top: 20px;
left: 20px; left: 20px;
font-size: 18px;
} }
.img-btm { .img-btm {
bottom: 30px; bottom: 30px;
left: 30px; left: 30px;
font-size: 18px;
>div { >div {
width: 120px; width: 120px;
height: 40px; height: 40px;

View File

@ -139,9 +139,9 @@ const getMyAssets = async () => {
reqData.value.cursor = next_cursor.value.next_cursor reqData.value.cursor = next_cursor.value.next_cursor
// let res = await apiLockState(myADdress, reqData.value) // let res = await apiLockState(myADdress, reqData.value)
let res = await apiActivity(data, myADdress) let res = await apiActivity(data, myADdress)
console.log(res,'--------------------------------') // console.log(res,'--------------------------------')
return // return
// nftList.value = [...nftList.value, ...res.rows] nftList.value = [...nftList.value, ...res.rows]
// nftListBox = nftList.value.reduce((acc, obj) => { // nftListBox = nftList.value.reduce((acc, obj) => {
// const existingObj = acc.find(item => item.token_id == obj.token_id) // const existingObj = acc.find(item => item.token_id == obj.token_id)
// if(!existingObj) { // if(!existingObj) {

View File

@ -10,7 +10,7 @@
<div class="total"> <div class="total">
<p>Total Contribution Credits:&nbsp; <span>{{ contributionPointTotal }}</span></p> <p>Total Contribution Credits:&nbsp; <span>{{ contributionPointTotal }}</span></p>
<img src="@/assets/img/marketplace/totalContribution.png" alt=""> <img src="@/assets/img/marketplace/totalContribution.png" alt="">
<img class="icon" @click="rulesDialogVisible = true" src="@/assets/img/marketplace/History.png" alt=""> <img class="icon" @click="conLogDialogVisible = true" src="@/assets/img/marketplace/History.png" alt="">
</div> </div>
<div class="day"> <div class="day">
<p>Daily Expected:&nbsp;&nbsp; <span>+{{ contributionPoint }}/d</span></p> <p>Daily Expected:&nbsp;&nbsp; <span>+{{ contributionPoint }}/d</span></p>
@ -42,17 +42,59 @@
<div class="uaw-cec-amount"> <div class="uaw-cec-amount">
<p> <p>
CEC: CEC:
<span v-if="cecInfo?.total != 0">{{ priceCalculated(BigInt(cecInfo?.total),18) }}</span> <span v-if="cecInfo?.total != 0">{{ priceCalculated(BigInt(cecInfo?.total),18).toString().match(/^\d+(?:\.\d{0,2})?/)[0] }}</span>
<span v-else>0</span> <span v-else>0</span>
</p> </p>
</div> </div>
<div class="btn"> <div class="btn">
<span class="yes" v-if="cecInfo?.stages[0]?.unlocked || cecInfo?.stages[1]?.unlocked" @click="confirmDialogVisible = false">Collection</span> <!-- <span class="yes" v-if="cecInfo?.stages[0]?.unlocked || cecInfo?.stages[1]?.unlocked" @click="confirmDialogVisible = false">Collection</span>
<span class="no" v-else @click="confirmCec">Collection</span> <span class="no" v-else @click="confirmCec">Collection</span> -->
</div> </div>
<div ref="logModal"> <div ref="conLogModal">
<a-modal :class="'logModal'" :getContainer="() => $refs.logModal" v-model:open="logDialogVisible" :closable="false" :footer="null" :maskClosable="false"> <a-modal :class="'conLogModal'" :getContainer="() => $refs.conLogModal" v-model:open="conLogDialogVisible" :closable="false" :footer="null" :maskClosable="false">
<div class="log-title">CEC Incentives Record</div> <div class="log-title">Staking Contribution Credits Record</div>
<div class="closable" @click="conLogDialogVisible = false">
<img src="@/assets/img/marketplace/Close_counter.png" alt="">
</div>
<div class="log-content">
<div class="log-header">
<!-- <li>
Event
</li> -->
<li>
Date
</li>
<li>
Reward
</li>
</div>
<div class="log-body">
<div v-if="contributionList == undefined || contributionList.length <= 0" class="no-data">
<div>
<img src="@/assets/img/marketplace/Empty_state.png" alt="">
</div>
<p>No Data</p>
</div>
<div v-else class="pages" v-for="(item, index) in contributionList" :key="index">
<!-- <li>
<span>contributionList</span>
</li> -->
<li>
{{ timeFormat(item.date*1000) }}
</li>
<li class="cec-amount">
<!-- <span>{{ priceCalculated(BigInt(item.contribution_point),18).toString().match(/^\d+(?:\.\d{0,2})?/)[0] }}</span> -->
<span>{{item.contribution_point.match(/^\d+(?:\.\d{0,.})?/)[0]}}</span>
<img src="@/assets/img/marketplace/totalContribution.png" alt="">
</li>
</div>
</div>
</div>
</a-modal>
</div>
<div ref="cecLogModal">
<a-modal :class="'cecLogModal'" :getContainer="() => $refs.cecLogModal" v-model:open="logDialogVisible" :closable="false" :footer="null" :maskClosable="false">
<div class="log-title">CEC Allocation Record</div>
<div class="closable" @click="logDialogVisible = false"> <div class="closable" @click="logDialogVisible = false">
<img src="@/assets/img/marketplace/Close_counter.png" alt=""> <img src="@/assets/img/marketplace/Close_counter.png" alt="">
</div> </div>
@ -74,13 +116,14 @@
<span v-if="item.desc == 'uaw'">Hill's Treasure Hunt</span> <span v-if="item.desc == 'uaw'">Hill's Treasure Hunt</span>
<span v-else-if="item.desc == 'p2a'">Wheel of Fortune</span> <span v-else-if="item.desc == 'p2a'">Wheel of Fortune</span>
<span v-else-if="item.desc == 'game test parse 1'">P2E Season 1</span> <span v-else-if="item.desc == 'game test parse 1'">P2E Season 1</span>
<span v-else>{{ item.desc }}</span>
</li> </li>
<li> <li>
{{ item.earnTime }} {{ item.earnTime }}
</li> </li>
<li class="cec-amount"> <li class="cec-amount">
<span v-if="item.desc != ''">{{ priceCalculated(BigInt(item.amount),18) }}</span> <span v-if="item.desc != ''">{{ priceCalculated(BigInt(item.amount),18).toString().match(/^\d+(?:\.\d{0,2})?/)[0] }}</span>
<img v-if="item.desc != ''" src="@/assets/img/marketplace/Icon_Points.png" alt=""> <img v-if="item.desc != ''" src="@/assets/img/marketplace/CECIcon.png" alt="">
</li> </li>
</div> </div>
<div class="no-data" v-if="cecInfo?.total == 0"> <div class="no-data" v-if="cecInfo?.total == 0">
@ -266,8 +309,8 @@
import { ref, watch, computed, onMounted } from "vue" import { ref, watch, computed, onMounted } from "vue"
import ConfirmDialog from "@/components/Dialogs/confirmDialog.vue"; import ConfirmDialog from "@/components/Dialogs/confirmDialog.vue";
import {createModal} from "@/utils/model.util"; import {createModal} from "@/utils/model.util";
import { apiCecInfo, apiExpected, apiUserData } from "@/utils/marketplace" import { apiCecInfo, apiExpected, apiUserData, apiContribution } from "@/utils/marketplace"
import { priceCalculated } from "@/configs/priceCalculate" import { priceCalculated, timeFormat } from "@/configs/priceCalculate"
import { useMarketplaceStore } from "@/store/marketplace" import { useMarketplaceStore } from "@/store/marketplace"
import {walletStore} from "@/store/wallet"; import {walletStore} from "@/store/wallet";
@ -338,6 +381,20 @@ const getCecInfo = async () => {
} }
} }
const conLogDialogVisible = ref(false)
const contributionList = ref()
const getContribution = async () => {
let address = localWalletStore.address
if(address) {
const {Rows, errcode} = await apiContribution(address)
if(errcode == 0) {
contributionList.value = Rows
}
} else {
return
}
}
const contributionPoint = ref(0) const contributionPoint = ref(0)
const getExpected = async () => { const getExpected = async () => {
let address = localWalletStore.address let address = localWalletStore.address
@ -367,6 +424,7 @@ const getUserData = async () => {
const dataInfo = async () => { const dataInfo = async () => {
await getCecInfo() await getCecInfo()
await getContribution()
await getExpected() await getExpected()
await getUserData() await getUserData()
} }
@ -458,6 +516,11 @@ onMounted(() => {
height: 23px; height: 23px;
margin-left: 10px; margin-left: 10px;
} }
.icon {
width: 27px;
height: 27px;
cursor: pointer;
}
} }
.day { .day {
font-family: 'Poppins'; font-family: 'Poppins';
@ -589,7 +652,250 @@ onMounted(() => {
} }
} }
} }
:deep(.logModal) { :deep(.conLogModal) {
width: 1052px !important;
height: 714px;
background: #1A1821;
box-shadow: 0px 15px 28px 3px rgba(22,22,22,0.13);
border-radius: 100px;
border: 1px solid #B966FF;
.ant-modal-content {
padding: 0 99px;
color: #FFF;
background: #1A1821;
box-shadow: 0px 0px 0px 0px rgba(22,22,22,0.13);
border-radius: 100px;
.ant-modal-body {
overflow: hidden;
.log-title {
font-family: 'Anton';
font-weight: 400;
font-size: 48px;
color: #FFFFFF;
margin-top: 23px;
}
.closable {
position: absolute;
right: -30px;
top: -30px;
z-index: 99;
cursor: pointer;
img {
width: 120px;
height: 120px;
}
}
.log-content {
min-height: 510px;
.log-header {
display: flex;
li {
width: 50%;
height: 48px;
line-height: 48px;
text-align: center;
font-family: 'Poppins';
font-weight: 400;
font-size: 14px;
color: #A8A5AC;
background: #2d2738;
&:nth-child(1) {
border-radius: 50px 0 0 50px;
}
// &:nth-child(2) {
// width: 40%;
// }
&:nth-child(2) {
border-radius: 0 50px 50px 0;
}
}
}
.log-body {
width: 100%;
height: 520px;
overflow-y: auto;
.pages {
display: flex;
width: 100%;
li {
width: 50%;
height: 60px;
line-height: 60px;
font-weight: 600;
font-size: 16px;
font-family: 'Poppins';
text-align: center;
}
.cec-amount {
display: flex;
justify-content: center;
align-items: center;
color: #9950FA;
span {
display: flex;
justify-content: end;
// width: 80px;
text-align: right;
}
img {
width: 28px;
height: 25px;
margin-left: 15px;
}
}
}
.no-data {
position: relative;
margin-top: 60px;
div {
width: 260px;
height: 260px;
margin: 0 auto;
}
p {
position: absolute;
bottom: 50px;
left: 52%;
transform: translateX(-50%);
font-family: 'Poppins';
font-weight: bold;
font-size: 28px;
color: #8587B2;
}
}
&::-webkit-scrollbar {
width: 5px;
}
&::-webkit-scrollbar-track {
background: #171220;
border-radius: 2px;
}
&::-webkit-scrollbar-corner {
display: block;
}
&::-webkit-scrollbar-thumb {
height: 15px;
background: #9950fd;
border-radius: 10px;
}
}
}
.pagination {
display: flex;
align-items: center;
justify-content: space-between;
// background: #1778f1;
// .prev {
// // width: 100px;
// // height: 100px;
// display: flex;
// align-items: center;
// div {
// width: 100px;
// height: 100px;
// }
// }
.pager {
span {
display: inline-block;
width: 29px;
height: 29px;
line-height: 29px;
text-align: center;
border-radius: 10px;
margin: 0 5px;
background: #2d2738;
font-family: 'Poppins';
font-weight: 200;
font-size: 14px;
cursor: pointer;
}
.active {
background: #5d5275;
}
}
.prev, .next {
// width: 100px;
// height: 100px;
display: flex;
align-items: center;
font-family: 'Poppins';
font-weight: 600;
font-size: 16px;
color: #9950FD;
cursor: pointer;
div {
width: 100px;
height: 100px;
}
}
img {
width: 100%;
height: 100%;
}
}
.ant-table-wrapper {
.ant-spin-nested-loading {
.ant-spin-container {
.ant-table {
background: #2d2738;
border-bottom: 0px solid #2d2738;
color: #FFF;
.ant-table-container {
.ant-table-content {
.ant-table-thead {
border-radius: 60px;
tr {
border-radius: 60px;
overflow: hidden;
height: 40px;
line-height: 40px;
th {
background: #2d2738;
border-color: rgba(0,0,0,0);
text-align: center;
font-family: 'Poppins';
font-weight: 400;
font-size: 14px;
color: #A8A5AC;
border-radius: 50px !important;
padding: 0;
overflow: hidden;
&::before {
display: none;
}
}
.ant-table-cell {
overflow: hidden;
border-radius: 50px !important;
}
}
.ant-table-cell {
overflow: hidden;
border-radius: 50px !important;
}
}
.ant-table-tbody {
tr {
background: #16141b;
td {
border-color: rgba(0,0,0,0);
background: #16141b !important;
overflow: visible !important;
vertical-align: middle;
}
}
}
}
}
}
}
}
}
}
}
}
:deep(.cecLogModal) {
width: 1052px !important; width: 1052px !important;
height: 714px; height: 714px;
background: #1A1821; background: #1A1821;
@ -626,7 +932,7 @@ onMounted(() => {
.log-header { .log-header {
display: flex; display: flex;
li { li {
width: 33%; width: 30%;
height: 48px; height: 48px;
line-height: 48px; line-height: 48px;
text-align: center; text-align: center;
@ -638,6 +944,9 @@ onMounted(() => {
&:nth-child(1) { &:nth-child(1) {
border-radius: 50px 0 0 50px; border-radius: 50px 0 0 50px;
} }
&:nth-child(2) {
width: 40%;
}
&:nth-child(3) { &:nth-child(3) {
border-radius: 0 50px 50px 0; border-radius: 0 50px 50px 0;
} }
@ -649,13 +958,16 @@ onMounted(() => {
display: flex; display: flex;
width: 100%; width: 100%;
li { li {
width: 33%; width: 30%;
height: 60px; height: 60px;
line-height: 60px; line-height: 60px;
font-weight: 600; font-weight: 600;
font-size: 16px; font-size: 16px;
font-family: 'Poppins'; font-family: 'Poppins';
text-align: center; text-align: center;
&:nth-child(2) {
width: 40%;
}
} }
.cec-amount { .cec-amount {
display: flex; display: flex;
@ -663,7 +975,7 @@ onMounted(() => {
align-items: center; align-items: center;
color: #9950FA; color: #9950FA;
img { img {
width: 20px; width: 25px;
height: 28px; height: 28px;
margin-left: 15px; margin-left: 15px;
} }
@ -671,6 +983,7 @@ onMounted(() => {
} }
.no-data { .no-data {
position: relative; position: relative;
margin-top: 60px;
div { div {
width: 260px; width: 260px;
height: 260px; height: 260px;

View File

@ -43,7 +43,7 @@
</div> </div>
<div class="card-btn" v-if="nftData.type != 13 && LOCKER_ADDRESS.toLowerCase() != nftData.owner_address.toLowerCase()"> <div class="card-btn" v-if="nftData.type != 13 && LOCKER_ADDRESS.toLowerCase() != nftData.owner_address.toLowerCase()">
<div class="card-sell" v-if="nftData.on_sale == 0"> <div class="card-sell" v-if="nftData.on_sale == 0">
<span v-if="nftData?.status">loading</span> <span v-if="nftData?.status" class="bgC">loading</span>
<span v-else @click="sellNft(nftData)">List</span> <span v-else @click="sellNft(nftData)">List</span>
</div> </div>
<div class="card-cancel" v-if="nftData.on_sale == 1" @click="cancelNft(nftData)">Cancel listing</div> <div class="card-cancel" v-if="nftData.on_sale == 1" @click="cancelNft(nftData)">Cancel listing</div>
@ -53,10 +53,10 @@
<span v-if="nftData?.status">loading</span> <span v-if="nftData?.status">loading</span>
<span @click="unStake(nftData)">Unstake</span> <span @click="unStake(nftData)">Unstake</span>
</div> </div>
<div class="card-sell" v-else> <!-- <div class="card-sell" v-else>
<span v-if="nftData?.status">loading</span> <span v-if="nftData?.status">loading</span>
<span v-else @click="lockToGame('founder')">Stake</span> <span v-else @click="lockToGame('founder')">Stake</span>
</div> </div> -->
</div> </div>
<SellDialog :sellDialogVisible="sellDialogVisible" :floorPrice="floorPrice" :sellDataArr="sellDataArr" @handleClose="sellHandleClose" /> <SellDialog :sellDialogVisible="sellDialogVisible" :floorPrice="floorPrice" :sellDataArr="sellDataArr" @handleClose="sellHandleClose" />
<LoadingDialog :loadingDialogVisible="loadingDialogVisible" /> <LoadingDialog :loadingDialogVisible="loadingDialogVisible" />
@ -504,6 +504,16 @@ onMounted(() => {
width: 140px; width: 140px;
height: 48px; height: 48px;
} }
span {
display: flex;
justify-content: center;
border-radius: 10px;
align-items: center;
width: 100%;
height: 100%;
color: #FF6271;
border: 2px solid #ff6978;
}
} }
.enabled { .enabled {
justify-content: center; justify-content: center;
@ -548,6 +558,12 @@ onMounted(() => {
.card-cancel { .card-cancel {
background: #ff6271; background: #ff6271;
} }
.card-sell {
.bgC {
background: #ff6271;
border-radius: 12px;
}
}
.card-cat { .card-cat {
width: 71px; width: 71px;
display: flex; display: flex;

View File

@ -11,11 +11,14 @@
</div> </div>
</template> </template>
</a-table-column> </a-table-column>
<a-table-column title="Status" data-index="nft" :width="400"> <a-table-column title="Status" data-index="type" :width="400">
<template #default="{ text: nft }"> <template #default="{ text: type }">
<div class="status"> <div class="status">
<div class="nft-status" v-if="nft.item_id == '10017' || nft.item_id == '10018'">Redeem</div> <!-- <div class="nft-status" v-if="nft.item_id == '10017' || nft.item_id == '10018'">Redeem</div>
<div class="nft-status" v-else>Stake</div> <div class="nft-status" v-else>Stake</div> -->
<div class="nft-status" v-if="type == 1">Mint</div>
<div class="nft-status" v-else-if="type == 2">Stake</div>
<div class="nft-status" v-else-if="type == 3">UnStake</div>
</div> </div>
</template> </template>
</a-table-column> </a-table-column>
@ -27,10 +30,10 @@
</div> </div>
</template> </template>
</a-table-column> </a-table-column>
<a-table-column title="From" data-index="event" :width="400"> <a-table-column title="From" data-index="from" :width="400">
<template #default="{ text: event }"> <template #default="{ text: from }">
<div class="sender"> <div class="sender">
<div class="nft-sender">{{ sliceAddress(localWalletStore.address) }}</div> <div class="nft-sender">{{ sliceAddress(from) }}</div>
</div> </div>
</template> </template>
</a-table-column> </a-table-column>
@ -41,17 +44,17 @@
</div> </div>
</template> </template>
</a-table-column> </a-table-column>
<a-table-column title="To" data-index="nft" :width="400"> <a-table-column title="To" data-index="to" :width="400">
<template #default="{ text: nft }"> <template #default="{ text: to }">
<div class="recipient"> <div class="recipient">
<div class="nft-recipient">{{ sliceAddress(nft.owner_address) }}</div> <div class="nft-recipient">{{ sliceAddress(to) }}</div>
</div> </div>
</template> </template>
</a-table-column> </a-table-column>
<a-table-column title="Date" data-index="nft" :width="400"> <a-table-column title="Date" data-index="date" :width="400">
<template #default="{ text: nft }"> <template #default="{ text: date }">
<div class="date"> <div class="date">
<div class="nft-date">{{ timeFormat(nft.last_lock_time*1000) }}</div> <div class="nft-date">{{ timeFormat(date*1000) }}</div>
</div> </div>
</template> </template>
</a-table-column> </a-table-column>

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="price"> <div class="price">
<h2>Price</h2> <h2>Price (USDT)</h2>
<div class="sort-price"> <div class="sort-price">
<a-input v-model:value="minPriceValue" placeholder="Min" /> <a-input v-model:value="minPriceValue" placeholder="Min" />
<span>to</span> <span>to</span>

View File

@ -109,11 +109,7 @@ const navList = reactive([
{ id: 0, name: "ABOUT", path: "/about" }, { id: 0, name: "ABOUT", path: "/about" },
// { id: 1, name: "ASSETS", path: "https://pledge.kingsome.cn/" }, // { id: 1, name: "ASSETS", path: "https://pledge.kingsome.cn/" },
// { id: 1, name: "planet", path: "https://planet.kingsome.cn/" }, // { id: 1, name: "planet", path: "https://planet.kingsome.cn/" },
// {
// id: 2,
// name: "STAKE",
// path: "https://pledge.kingsome.cn",
// },
// { // {
// id: 3, // id: 3,
// name: "hashrate", // name: "hashrate",
@ -139,18 +135,6 @@ const navList = reactive([
{ label: "Discord", link: "https://discord.gg/counterfire" }, { label: "Discord", link: "https://discord.gg/counterfire" },
], ],
}, },
// {
// id: 5,
// name: "EVENT",
// path: "/contact",
// submenu: [
// { label: "Badge", link: "https://badge.counterfire.games/" },
// {
// label: "Gacha",
// link: "https://gacha.counterfire.games/",
// },
// ],
// },
{ {
id: 2, id: 2,
name: "MARKETPLACE", name: "MARKETPLACE",
@ -160,12 +144,36 @@ const navList = reactive([
id: 3, id: 3,
name: "ASSETS", name: "ASSETS",
path: "/assets", path: "/assets",
submenu: [
{ label: "Before 2024", link: "https://pledge.kingsome.cn" },
{
label: "After 2024",
path: "/assets",
},
],
}, },
{ {
id: 4, id: 4,
name: "NOTICE", name: "NOTICE",
path: "/notice", path: "/notice",
} },
{
id: 5,
name: "EVENT",
path: "/contact",
submenu: [
{ label: "Badge", link: "https://badge.counterfire.games/" },
{
label: "Gacha",
link: "https://gacha.counterfire.games/",
},
],
},
// {
// id: 6,
// name: "STAKE",
// path: "https://pledge.kingsome.cn",
// },
]); ]);
function click(event) { function click(event) {
router.push(event.key); router.push(event.key);
@ -185,6 +193,8 @@ const handlHome = () => {
}; };
function handNavCurent(nav) { function handNavCurent(nav) {
// console.log(nav)
// return
activeIndex.value = nav.id; activeIndex.value = nav.id;
// if (nav.id == 1) { // if (nav.id == 1) {
// window.open(nav.path, "_blank"); // window.open(nav.path, "_blank");
@ -194,9 +204,13 @@ function handNavCurent(nav) {
} else if(nav.id == 2) { } else if(nav.id == 2) {
router.push(nav.path); router.push(nav.path);
} else if(nav.id == 3) { } else if(nav.id == 3) {
router.push(nav.path); if(nav.submenu[1]?.path) {
router.push(nav.submenu[1]?.path)
}
} else if(nav.id == 4) { } else if(nav.id == 4) {
router.push(nav.path); router.push(nav.path);
// } else if(nav.id == 6) {
// window.open(nav.path, "_blank");
} }
// if (nav.id == 1 || nav.id == 2 || nav.id == 3) { // if (nav.id == 1 || nav.id == 2 || nav.id == 3) {
// window.open(nav.path, "_blank"); // window.open(nav.path, "_blank");

View File

@ -115,7 +115,7 @@ export const nftDetail = async(address, tokenId) => {
// UAW查询领取 // UAW查询领取
export const apiCecInfo = async(address) => { export const apiCecInfo = async(address) => {
let res = await axios.get(`${API_UAW}/task/api/cec/info/${address}`) let res = await axios.get(`${API_UAW}/api/cec/info/${address}`)
return res.data return res.data
} }
@ -156,6 +156,12 @@ export const apiTxHash = async (net_id, account_address) => {
// 活动交易记录 // 活动交易记录
export const apiActivity = async (data, account_address) => { export const apiActivity = async (data, account_address) => {
const url = `${API_BASE}/api/chain/activity/${account_address}` const url = `${API_BASE}/api/chain/event/activity/${account_address}`
return httpPost(url, data) return httpPost(url, data)
} }
// 贡献值记录
export const apiContribution = async (account_address) => {
const url = `${API_BASE}/api/activity/stacking/history/${account_address}`
return httpGet(url, {})
}

View File

@ -85,17 +85,20 @@
<div v-if="myAddress == detailData.nft.owner_address && detailData.nft?.status != 1"> <div v-if="myAddress == detailData.nft.owner_address && detailData.nft?.status != 1">
<div class="sell" @click="beginSell" v-if="detailData.nft.on_sale == 0 && detailData.nft.type != 13">List</div> <div class="sell" @click="beginSell" v-if="detailData.nft.on_sale == 0 && detailData.nft.type != 13">List</div>
<div class="cancel" @click="cancelSell" v-if="detailData.nft.on_sale == 1">Cancel listing</div> <div class="cancel" @click="cancelSell" v-if="detailData.nft.on_sale == 1">Cancel listing</div>
<div v-if="detailData.nft?.status == 1" class="cancel"> <div class="redeem" v-if="detailData.nft.on_sale == 0 && (detailData.nft.type == 1 || detailData.nft.type == 12)" @click="lockToGame('convert')">
<span>Loading</span> <span>Stake</span>
</div>
<div class="redeem" v-else-if="detailData.nft.on_sale == 0 && (detailData.nft.type == 1 || detailData.nft.type == 12)">
<span @click="lockToGame('convert')">Stake</span>
</div> </div>
<div class="redeem" v-else-if="detailData.nft.type == 13"> <div class="redeem" v-else-if="detailData.nft.type == 13">
<span @click="lockToGame('founder')">Stake</span> <span v-if="detailData.nft?.status == 1" @click="lockToGame('founder')">Loading</span>
<span v-else @click="lockToGame('founder')">Stake</span>
</div> </div>
<!-- <div class="redeem" @click="lockToGame('redeem')" v-if="detailData.nft.on_sale == 0 && detailData.nft.type == 11">Redeem</div> --> <!-- <div class="redeem" @click="lockToGame('redeem')" v-if="detailData.nft.on_sale == 0 && detailData.nft.type == 11">Redeem</div> -->
</div> </div>
<!-- <div v-else-if="detailData.nft?.status == 1">
<div class="cancel">
<span>Loading</span>
</div>
</div> -->
</div> </div>
<div class="info"> <div class="info">
<h2>Info</h2> <h2>Info</h2>