Browse Source

feat

master
fave3722 3 years ago
parent
commit
0229cadfe4
  1. 12
      components.d.ts
  2. BIN
      dist.zip
  3. 2
      src/api/TokensController/index.ts
  4. 12
      src/components/row-search.vue
  5. 2
      src/components/table/constant.ts
  6. 12
      src/components/table/dBase/bkRow.vue
  7. 10
      src/components/table/desktop/tokensTable.vue
  8. 30
      src/pages/BitcNFt/centerContent.vue
  9. 12
      src/routes.ts

12
components.d.ts

@ -11,18 +11,6 @@ declare module '@vue/runtime-core' {
BkTable: typeof import('./src/components/table/desktop/bkTable.vue')['default'] BkTable: typeof import('./src/components/table/desktop/bkTable.vue')['default']
BkTableDetails: typeof import('./src/components/table/desktop/bkTableDetails.vue')['default'] BkTableDetails: typeof import('./src/components/table/desktop/bkTableDetails.vue')['default']
DetailsRow: typeof import('./src/components/table/dBase/detailsRow.vue')['default'] DetailsRow: typeof import('./src/components/table/dBase/detailsRow.vue')['default']
ElButton: typeof import('element-plus/es')['ElButton']
ElIcon: typeof import('element-plus/es')['ElIcon']
ElInput: typeof import('element-plus/es')['ElInput']
ElPagination: typeof import('element-plus/es')['ElPagination']
ElPopover: typeof import('element-plus/es')['ElPopover']
ElSkeleton: typeof import('element-plus/es')['ElSkeleton']
ElSkeletonItem: typeof import('element-plus/es')['ElSkeletonItem']
ElTable: typeof import('element-plus/es')['ElTable']
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
ElTabPane: typeof import('element-plus/es')['ElTabPane']
ElTabs: typeof import('element-plus/es')['ElTabs']
ElTooltip: typeof import('element-plus/es')['ElTooltip']
Footer: typeof import('./src/components/footer.vue')['default'] Footer: typeof import('./src/components/footer.vue')['default']
Hp_card: typeof import('./src/components/base/hp_card.vue')['default'] Hp_card: typeof import('./src/components/base/hp_card.vue')['default']
HpRow: typeof import('./src/components/table/dBase/hpRow.vue')['default'] HpRow: typeof import('./src/components/table/dBase/hpRow.vue')['default']

BIN
dist.zip

Binary file not shown.

2
src/api/TokensController/index.ts

@ -30,7 +30,7 @@ export const getFindReceiptByTokenPage = (
interface TokenInfoProps { interface TokenInfoProps {
pageNum?: number pageNum?: number
pageSize?: number pageSize?: number
tokenId: string tokenId?: string
contractAddress: string contractAddress: string
} }
///api/token/findTokenInfo ///api/token/findTokenInfo

12
src/components/row-search.vue

@ -40,7 +40,7 @@
" "
@click="handleClick(item)" @click="handleClick(item)"
> >
<span class="text-blue-65B5FF">{{ item.hash || '-' }}</span> <span class="text-blue-65B5FF">{{ item.info || '-' }}</span>
</div> </div>
</div> </div>
</div> </div>
@ -125,7 +125,6 @@ const handleEnter = (e: string | number) => {
} }
// //
const handleClick = (item: any) => { const handleClick = (item: any) => {
console.log('click', item)
// type // type
let route = '' let route = ''
switch (item?.type) { switch (item?.type) {
@ -141,9 +140,16 @@ const handleClick = (item: any) => {
route = 'tokens' route = 'tokens'
break break
} }
case 4: {
route = 'BitcNFT'
}
} }
// //
router.push(`/${route}/${item.hash}`) if (item?.type == 4) {
router.replace(`/${route}/${item?.hash}`)
return
}
router.replace(`/${route}/${item.info}`)
} }
// input // input
const handleChangeInput = () => { const handleChangeInput = () => {

2
src/components/table/constant.ts

@ -174,6 +174,8 @@ export const tokensTableCollocate = {
], // 对应数据的变量名称 ], // 对应数据的变量名称
// 数据颜色 // 数据颜色
colorSequence: ['', 'text-blue-65B5FF', 'text-blue-65B5FF', '', ''], colorSequence: ['', 'text-blue-65B5FF', 'text-blue-65B5FF', '', ''],
// 是否跳转 / 跳转的路由
links: ['', 'BitcNFt', 'tokens', '', ''],
} }
// tokensTable 表配置 // tokensTable 表配置
export const tokensMobileCollocate = { export const tokensMobileCollocate = {

12
src/components/table/dBase/bkRow.vue

@ -19,7 +19,9 @@
v-if="item !== 'result'" v-if="item !== 'result'"
:class="colorSequence[index] || 'text-white'" :class="colorSequence[index] || 'text-white'"
class="text-[14px] font-medium" class="text-[14px] font-medium"
>{{ values[item] }} @click="handleClick(link?.[index])"
>
{{ values[item] }}
</span> </span>
<div <div
v-else v-else
@ -50,6 +52,7 @@
import type { PropType } from 'vue' import type { PropType } from 'vue'
import TableTypes from '../table' import TableTypes from '../table'
import Icons from '@src/components/icons/index.vue' import Icons from '@src/components/icons/index.vue'
import { useRouter } from 'vue-router'
const props = defineProps({ const props = defineProps({
sequence: { sequence: {
type: Array as PropType<TableTypes.tRow['sequence']>, type: Array as PropType<TableTypes.tRow['sequence']>,
@ -63,8 +66,15 @@ const props = defineProps({
type: Array as PropType<TableTypes.tRow['colorSequence']>, type: Array as PropType<TableTypes.tRow['colorSequence']>,
required: true, required: true,
}, },
link: Array,
last: Boolean, last: Boolean,
}) })
const router = useRouter()
const handleClick = (route: any) => {
console.log(props.values)
router.replace(`/${route}/${props.values.txnContractAddress}`)
}
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped></style>

10
src/components/table/desktop/tokensTable.vue

@ -21,13 +21,13 @@
<div <div
v-for="(item, index) in currentData" v-for="(item, index) in currentData"
:key="item?.txnContractAddress + index" :key="item?.txnContractAddress + index"
@click="routerLink(item.txnContractAddress)"
> >
<!-- :values="{ ...item, serialNumber: index + 1 }" --> <!-- :values="{ ...item, serialNumber: index + 1 }" -->
<bk-row <bk-row
:sequence="invariable.sequence" :sequence="invariable.sequence"
:values="item" :values="item"
:colorSequence="invariable.colorSequence" :colorSequence="invariable.colorSequence"
:link="invariable.links"
/> />
</div> </div>
@ -105,10 +105,10 @@ watchEffect(() => {
initBlock(currentPage.value, input.value) initBlock(currentPage.value, input.value)
}) })
// //
const routerLink = (id: string | number) => { // const routerLink = (id: string | number) => {
console.log(id) // console.log(id)
id && router.push(`/tokens/${id}`) // id && router.push(`/tokens/${id}`)
} // }
</script> </script>
<style lang="scss"> <style lang="scss">

30
src/pages/BitcNFt/centerContent.vue

@ -4,7 +4,7 @@
> >
<Cards <Cards
:title="cardOptions.title" :title="cardOptions.title"
:value="value" :value="hashv"
:options="cardOptions.options" :options="cardOptions.options"
:totalSupply="cardOptions.totalSupply" :totalSupply="cardOptions.totalSupply"
:qrcodeurl="'https://baidu.com'" :qrcodeurl="'https://baidu.com'"
@ -70,14 +70,16 @@ import {
getContractAddressInfoList, getContractAddressInfoList,
getContractHoldingQuantity, getContractHoldingQuantity,
} from '@src/api/AddressController' } from '@src/api/AddressController'
import { onMounted, reactive, ref } from 'vue' import { onMounted, reactive, ref, watchEffect } from 'vue'
import holdersRow from './holdersRow.vue' import holdersRow from './holdersRow.vue'
import transfersRow from '../VNFT/transfersRow.vue' import transfersRow from '../VNFT/transfersRow.vue'
import Cards from './cards.vue' import Cards from './cards.vue'
import { getFindReceiptByAddressPage } from '@src/api/TransactionsController' import { getFindReceiptByAddressPage } from '@src/api/TransactionsController'
import { useRoute } from 'vue-router'
const active = ref('tokenTransfers') const active = ref('tokenTransfers')
const value = '0x4f2c168174266781008ba5d722d1bdc9ee52a874'
const route = useRoute()
const hashv = ref<string>()
const cardOptions = reactive({ const cardOptions = reactive({
title: '', title: '',
options: [ options: [
@ -99,24 +101,25 @@ const cardOptions = reactive({
const holdrersRows = ref<any>([]) const holdrersRows = ref<any>([])
const transfersRows = ref<any>([]) const transfersRows = ref<any>([])
// //
const requestInfo = async () => { const requestInfo = async (address: string) => {
const params = { const params = {
contractAddress: value, contractAddress: address,
} }
const res = await getContractAddressInfoList(params) const res = await getContractAddressInfoList(params)
const { data } = res const { data } = res
cardOptions.title = data.name cardOptions.title = data.name
hashv.value = data?.contractAddress
cardOptions.totalSupply = `${data.totalSupply} ${data.name}` cardOptions.totalSupply = `${data.totalSupply} ${data.name}`
cardOptions.options[0].key = data.tokenType cardOptions.options[0].key = data.tokenType
cardOptions.options[1].value = data.addressesCount cardOptions.options[1].value = data.addressesCount
cardOptions.options[2].value = data.transfers cardOptions.options[2].value = data.transfers
} }
// Token Holders // Token Holders
const requestHolders = async () => { const requestHolders = async (address: string) => {
const params = { const params = {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
contractAddress: value, contractAddress: address,
} }
const res = await getContractHoldingQuantity(params) const res = await getContractHoldingQuantity(params)
holdrersRows.value = res.data.rows.map((item: any) => { holdrersRows.value = res.data.rows.map((item: any) => {
@ -129,9 +132,9 @@ const requestHolders = async () => {
}) })
} }
// Token Transfers // Token Transfers
const requestTransfers = async () => { const requestTransfers = async (address: string) => {
const params = { const params = {
address: value, address: address,
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
filterType: 'all', filterType: 'all',
@ -148,10 +151,11 @@ const requestTransfers = async () => {
}) })
console.log(res) console.log(res)
} }
onMounted(() => { watchEffect(() => {
requestInfo() let address = route.path.split('/')?.[2]
requestHolders() requestInfo(address)
requestTransfers() requestHolders(address)
requestTransfers(address)
}) })
</script> </script>

12
src/routes.ts

@ -66,10 +66,22 @@ const routes: VueRouter.RouteRecordRaw[] = [
{ {
path: '/BitcNFT', path: '/BitcNFT',
component: BitcNFT, component: BitcNFT,
children: [
{
path: '/BitcNFT/:id',
component: BitcNFT,
},
],
}, },
{ {
path: '/VNFT', path: '/VNFT',
component: AliasVNFT, component: AliasVNFT,
children: [
{
path: '/VNFT/:id',
component: AliasVNFT,
},
],
}, },
] ]

Loading…
Cancel
Save