diff --git a/src/constants/enum/coinType.ts b/src/constants/enum/coinType.ts new file mode 100644 index 0000000..58343a1 --- /dev/null +++ b/src/constants/enum/coinType.ts @@ -0,0 +1,5 @@ +export enum CoinType { + ETH = 'eth', + TRON = 'tron', +} +export default CoinType; diff --git a/src/pages/Eth/Address/Edit/AddAddressModal.tsx b/src/pages/Eth/Address/Edit/AddAddressModal.tsx new file mode 100644 index 0000000..4476c3b --- /dev/null +++ b/src/pages/Eth/Address/Edit/AddAddressModal.tsx @@ -0,0 +1,67 @@ +import React, { useState } from 'react'; +import { createForm } from '@formily/core'; +import { createSchemaField } from '@formily/react'; +import Modal, { ModalProps } from '@/components/Modal'; +import { message } from 'antd'; + +import { Form, FormItem, Input, Submit } from '@formily/antd'; +import { AddAddress } from '@/services/eth'; +import { initWeb3, walletSign } from '../../../../utils/web3'; +import { values } from 'lodash'; + +interface AddAddressModalPropsType extends ModalProps { + onOk: (val: any) => void; +} + +const SchemaField = createSchemaField({ + components: { + FormItem, + Input, + Submit, + }, +}); + +const form = createForm({}); + +const AddAddressModal = (onOk, { ...rest }: AddAddressModalPropsType) => { + const handleOk = () => { + const val = form.getState(); + console.log('val = ', val); + onOk && onOk(val); + // try { + // await initWeb3(); + // const signInfo = await walletSign(); + // val.key = signInfo.raw; + // val.sign = signInfo.sign; + // val.coinType = 'eth'; + // val.num = parseInt(val.num); + // const params = { ...val }; + // await AddAddress(params); + // message.success('操作成功'); + // } catch (e) {} + }; + return ( + +
+ + + + +
+
+ ); +}; + +export default AddAddressModal; diff --git a/src/pages/Eth/Address/Edit/components/AddAddress.tsx b/src/pages/Eth/Address/Edit/components/AddAddress.tsx deleted file mode 100644 index e69de29..0000000 diff --git a/src/pages/Eth/Address/Edit/index.tsx b/src/pages/Eth/Address/Edit/index.tsx new file mode 100644 index 0000000..4946e4f --- /dev/null +++ b/src/pages/Eth/Address/Edit/index.tsx @@ -0,0 +1,70 @@ +import React, { useState } from 'react'; +import { createForm } from '@formily/core'; +import { createSchemaField } from '@formily/react'; +import { message, Spin } from 'antd'; +import DetailPageContainer from '@/components/DetailPageContainer'; +import { AddAddress } from '@/services/eth'; +import { initWeb3, walletSign } from '../../../../utils/web3'; +import { Form, FormItem, Input, FormButtonGroup, Submit } from '@formily/antd'; + +const SchemaField = createSchemaField({ + components: { + FormItem, + Input, + Submit, + }, +}); +const form = createForm({}); +const WorkEdit = () => { + const [loading, setLoading] = useState(false); + + const handleSubmit = async (val) => { + setLoading(true); + try { + await initWeb3(); + const signInfo = await walletSign(); + val.key = signInfo.raw; + val.sign = signInfo.sign; + val.coinType = 'eth'; + val.num = parseInt(val.num); + const params = { ...val }; + await AddAddress(params); + message.success('操作成功'); + setLoading(false); + history.back(); + } catch (e) { + setLoading(false); + } + }; + return ( + + +
+ + + + + + + 提交 + + +
+
+
+ ); +}; + +export default WorkEdit; diff --git a/src/pages/Eth/Address/List/index.tsx b/src/pages/Eth/Address/List/index.tsx index e69de29..805362f 100644 --- a/src/pages/Eth/Address/List/index.tsx +++ b/src/pages/Eth/Address/List/index.tsx @@ -0,0 +1,76 @@ +import React, { useRef, useState } from 'react'; +import Table, { ProColumns, ActionType } from '@/components/Table'; +import { history } from 'umi'; +import RoutePath from '@/routes/routePath'; +import { queryAddressList } from '@/services/eth'; +import { fetchTableData } from '@/utils/table'; +import CoinType from '@/constants/enum/coinType'; +// import WorkSelectModal from '@/widget/Work/WorkSelectModal'; +// import AddAddressModal from '../Edit/AddAddressModal'; + +const AddressList = () => { + // const [isModalVisible, setIsModalVisible] = useState(false); + const tableRef = useRef(); + const columns: ProColumns[] = [ + { + title: '备注', + dataIndex: 'remarks', + width: '20%', + // hideInSearch: true, + }, + { + title: '地址', + dataIndex: 'address', + hideInSearch: true, + ellipsis: true, + }, + // { + // title: '余额', + // dataIndex: 'series', + // hideInSearch: true, + // }, + { + title: 'key', + dataIndex: 'key', + hideInSearch: true, + }, + ]; + return ( +
+ { + history.push(RoutePath.ETH_ADDRESS.EDIT); + // setIsModalVisible(true); + }, + }, + ]} + request={async (params) => { + params.coinType = CoinType.ETH; + return fetchTableData(queryAddressList, params); + }} + /> + {/* */} + {/* */} + + ); +}; + +export default AddressList; diff --git a/src/pages/Eth/Record/List/index.tsx b/src/pages/Eth/Record/List/index.tsx index e69de29..6d791d8 100644 --- a/src/pages/Eth/Record/List/index.tsx +++ b/src/pages/Eth/Record/List/index.tsx @@ -0,0 +1,81 @@ +import React, { useRef } from 'react'; +import Table, { ProColumns, ActionType } from '@/components/Table'; +import { queryRecordList } from '@/services/eth'; +import { fetchTableData } from '@/utils/table'; +import CoinType from '@/constants/enum/coinType'; +import { web3 } from '@/utils/web3'; + +const AddressList = () => { + const tableRef = useRef(); + const columns: ProColumns[] = [ + { + title: '交易哈希', + dataIndex: 'txHash', + // width: '20%', + // hideInSearch: true, + }, + { + title: '金额', + dataIndex: 'amount', + // hideInSearch: true, + // ellipsis: true, + }, + { + title: '位数', + dataIndex: 'decimals', + // hideInSearch: true, + // ellipsis: true, + }, + { + title: '区块', + dataIndex: 'blockNumber', + // hideInSearch: true, + }, + { + title: '发送地址', + dataIndex: 'from', + // hideInSearch: true, + // ellipsis: true, + }, + { + title: '接受地址', + dataIndex: 'to', + // hideInSearch: true, + }, + ]; + return ( +
+
{ + // history.push(RoutePath.ETH_ADDRESS.EDIT); + // setIsModalVisible(true); + // }, + // }, + // ]} + request={async (params) => { + params.coinType = CoinType.ETH; + const res = await fetchTableData(queryRecordList, params); + for (const key in res.data) { + if (Object.prototype.hasOwnProperty.call(res.data, key)) { + const element = res.data[key]; + element.amount = web3.utils + .toBN(element.amount) + .div(web3.utils.toBN(Math.pow(10, Number(element.decimals)))) + .toNumber(); + } + } + return res; + }} + /> + + ); +}; + +export default AddressList; diff --git a/src/pages/Login/index.tsx b/src/pages/Login/index.tsx index 47cded9..45404eb 100644 --- a/src/pages/Login/index.tsx +++ b/src/pages/Login/index.tsx @@ -16,7 +16,7 @@ const Login: React.FC = () => { await initWeb3(); const signInfo = await walletSign(); const res: any = await login({ data: signInfo.raw, sign: signInfo.sign }); - localStorage.setItem(CACHE_TOKEN, res.token); + localStorage.setItem(CACHE_TOKEN, res); // const res: any = await login({ ...values }); // localStorage.setItem(CACHE_TOKEN, res.token); /** 此方法会跳转到 redirect 参数所在的位置 */ @@ -25,7 +25,6 @@ const Login: React.FC = () => { const { redirect } = query as { redirect: string }; history.push(redirect || '/'); }; - return (
diff --git a/src/pages/Work/List/index.tsx b/src/pages/Work/List/index.tsx index 0ad4609..9b0df54 100644 --- a/src/pages/Work/List/index.tsx +++ b/src/pages/Work/List/index.tsx @@ -7,6 +7,7 @@ import RoutePath from '@/routes/routePath'; import { queryWorkList, deleteWork } from '@/services/work'; import { fetchTableData } from '@/utils/table'; import TimeText from '@/components/Typography/TimeText'; +import WorkSelectModal from '@/widget/Work/WorkSelectModal'; const WorkList = () => { const tableRef = useRef(); @@ -74,23 +75,28 @@ const WorkList = () => { }, ]; return ( -
{ - history.push(RoutePath.WORK.EDIT); +
+
{ + history.push(RoutePath.WORK.EDIT); + }, }, - }, - ]} - request={async (params) => { - return fetchTableData(queryWorkList, params); - }} - /> + ]} + request={async (params) => { + return fetchTableData(queryWorkList, params); + }} + /> + + ); }; diff --git a/src/routes/index.ts b/src/routes/index.ts index 81dd357..986575d 100644 --- a/src/routes/index.ts +++ b/src/routes/index.ts @@ -16,39 +16,33 @@ export default [ routes: [ { path: RoutePath.ETH, - redirect: RoutePath.ADDRESS.LIST, + redirect: RoutePath.ETH_ADDRESS.LIST, hideInMenu: true, }, { name: 'ETH地址管理', - path: RoutePath.ADDRESS.LIST, - component: './Work/List', + path: RoutePath.ETH_ADDRESS.LIST, + component: './Eth/Address/List', }, { name: 'ETH地址详情', - path: RoutePath.ADDRESS.EDIT, + path: RoutePath.ETH_ADDRESS.EDIT, hideInMenu: true, - component: './Work/Edit', + component: './Eth/Address/Edit', }, { name: 'ETH充值记录', - path: RoutePath.RECORD.LIST, - component: './Work/List', - }, - { - name: 'ETH充值详情', - path: RoutePath.RECORD.EDIT, - hideInMenu: true, - component: './Work/Edit', + path: RoutePath.ETH_RECORD.LIST, + component: './Eth/Record/List', }, { name: 'ETH币种管理', - path: RoutePath.CURRENCY.LIST, + path: RoutePath.ETH_CURRENCY.LIST, component: './Work/List', }, { name: 'ETH币种详情', - path: RoutePath.CURRENCY.EDIT, + path: RoutePath.ETH_CURRENCY.EDIT, hideInMenu: true, component: './Work/Edit', }, @@ -79,7 +73,7 @@ export default [ }, { path: '/', - redirect: RoutePath.WORK.LIST, + redirect: RoutePath.ETH_ADDRESS.LIST, }, { diff --git a/src/routes/routePath.ts b/src/routes/routePath.ts index 6a53c47..1594520 100644 --- a/src/routes/routePath.ts +++ b/src/routes/routePath.ts @@ -3,15 +3,14 @@ const ETH = '/eth'; const RoutePath = { LOGIN: '/login', ETH: ETH, - ADDRESS: { + ETH_ADDRESS: { LIST: `${ETH}/address`, EDIT: `${ETH}/address/edit`, }, - RECORD: { + ETH_RECORD: { LIST: `${ETH}/record`, - EDIT: `${ETH}/record/edit`, }, - CURRENCY: { + ETH_CURRENCY: { LIST: `${ETH}/currency`, EDIT: `${ETH}/currency/edit`, }, diff --git a/src/services/eth.ts b/src/services/eth.ts new file mode 100644 index 0000000..d794879 --- /dev/null +++ b/src/services/eth.ts @@ -0,0 +1,25 @@ +import request from '@/utils/request'; + +export const queryAddressList = (data) => { + return request.request({ + url: '/admin/api/v1/address/get', + method: 'post', + data, + }); +}; + +export const AddAddress = (data) => { + return request.request({ + url: '/admin/api/v1/address/mask', + method: 'post', + data, + }); +}; + +export const queryRecordList = (data) => { + return request.request({ + url: '/admin/api/v1/records/get', + method: 'post', + data, + }); +}; diff --git a/src/utils/table.ts b/src/utils/table.ts index d02e49a..47bb6fc 100644 --- a/src/utils/table.ts +++ b/src/utils/table.ts @@ -9,8 +9,7 @@ export const fetchTableData = async ( delete params.current; delete params.pageSize; const res = (await fetch(params)) || {}; - const data = res.data; - + const data = res; data?.forEach((n: any) => { for (const key in formatObj) { n[key] = n[formatObj[key]];