USER-20230908AJ\Administrator 6 kuukautta sitten
vanhempi
commit
27d7cc55a0
4 muutettua tiedostoa jossa 1056 lisäystä ja 19 poistoa
  1. 727 18
      package-lock.json
  2. 2 1
      package.json
  3. 146 0
      src/common/js/tools.js
  4. 181 0
      src/common/wallet/tokenpocket-wallet/tokenpocket-bnb.js

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 727 - 18
package-lock.json


+ 2 - 1
package.json

@@ -14,7 +14,8 @@
     "lib-flexible": "^0.3.2",
     "vue": "^2.6.14",
     "vue-router": "^3.5.1",
-    "vuex": "^3.6.2"
+    "vuex": "^3.6.2",
+    "web3": "^4.16.0"
   },
   "devDependencies": {
     "@babel/core": "^7.12.16",

+ 146 - 0
src/common/js/tools.js

@@ -0,0 +1,146 @@
+let tools = {}
+/**
+ * 大小判断
+ * @param a
+ * @param b
+ * @returns {number}
+ */
+tools.sortNumber = function (a, b) {
+    return a - b;
+}
+
+
+/**
+ * 保留两位小数
+ * @param num
+ * @returns {string}
+ */
+tools.twoFloating = function (num) {
+    // 获取两位小数
+    let price = "";
+    price = num * 1;
+    price = String(price).split(".")[1];
+    if (price !== undefined && price.length === 1) {
+        price = `.${price}0`;
+    } else {
+        price === undefined ? (price = ".00") : (price = `.${price}`);
+    }
+    return price;
+}
+tools.formatDecimal = function (num, decimal) {
+    num = num.toString()
+    let index = num.indexOf('.')
+    if (index !== -1) {
+        num = num.substring(0, decimal + index + 1)
+    } else {
+        num = num.substring(0)
+    }
+    return parseFloat(num).toFixed(decimal)
+}
+
+/**
+ * 错误提示
+ * @param msg
+ */
+tools.error = function (msg) {
+    console.log(msg)
+}
+
+/**
+ * 成功提示
+ * @param msg
+ */
+tools.success = function (msg) {
+    console.log(msg)
+}
+
+/**
+ * 显示Loading
+ */
+tools.showLoading = function () {
+
+}
+
+/**
+ * 关闭Loading
+ */
+tools.hideLoading = function () {
+
+}
+
+/**
+ * 获取时间戳(毫秒)
+ * @returns {number}
+ */
+tools.getTime = function () {
+    return new Date().getTime();
+}
+
+
+
+/**
+ * uniapp  html图片显示控制
+ * @param str
+ * @returns {*}
+ */
+tools.imgDeal = function (str) {
+    console.log(str)
+
+
+}
+
+
+/**
+ * 获取平台类型  1:微信,2:支付宝
+ * @returns {boolean|number}
+ */
+tools.platformType = function () {
+    let ua = window.navigator.userAgent.toLowerCase();
+    if (ua.indexOf('micromessenger') != -1) {
+        return 1;
+    } else if (ua.indexOf('alipay') != -1) {
+        return 2;
+    } else {
+        return 0;
+    }
+}
+
+
+
+
+tools.leftClick=function (){
+
+}
+
+/**
+ * 跳转到异常界面
+ * @param errorType
+ */
+tools.goToError=function (errorType){
+    console.log(errorType)
+}
+
+tools.toError=function (errorMsg){
+    console.log(errorMsg)
+}
+
+
+
+tools.getShowAddress=function (address){
+    return (address.substr(0,8)+'...'+address.substr(address.length-4))
+}
+
+tools.getAddress=function (address){
+    return address.substr(0,4)+'...'+address.substr(-4);
+}
+
+tools.isDevelopment=function () {
+    if(process.env.NODE_ENV==='development'){
+        return true
+    }else {
+        return false
+    }
+}
+
+
+export default tools

+ 181 - 0
src/common/wallet/tokenpocket-wallet/tokenpocket-bnb.js

@@ -0,0 +1,181 @@
+/**
+ * bitkeep钱包的tron
+ * @type {{}}
+ */
+import tools from "@/common/js/tools";
+import {ethers} from "ethers";
+import web3 from "web3";
+let tokenpocketBnb = {}
+
+
+let chainId=''
+let provider;
+/**
+ * 钱包初始校验
+ * @returns {*}
+ */
+tokenpocketBnb.getProvider= function (){
+    console.log(window.ethereum)
+    console.log(window.ethereum.isTokenPocket)
+    if (!window.ethereum || typeof window.ethereum.isTokenPocket === 'undefined') {
+        return false
+    }
+    if(!provider){
+        provider = window.ethereum;
+    }
+    // alert(provider.isConnected())
+    console.log(chainId)
+    if(!chainId){
+        provider.request({method:'eth_chainId'}).then((ethChainId)=>{
+            console.log(ethChainId)
+            if(ethChainId!=='0x38'){
+                // uni.$emit('noBan',false)
+            }else {
+                chainId=ethChainId
+            }
+        })
+    }
+    return provider;
+}
+
+/**
+ * 获取我登陆的地址
+ * @returns {any}
+ */
+tokenpocketBnb.getMyAddress=function () {
+   // return  uni.getStorageSync('babAddress')
+}
+
+/**
+ * 获取基本账户地址
+ * @returns {Promise<unknown>}
+ */
+tokenpocketBnb.getAccounts=async function (){
+    return new Promise( (resolve, reject) => {
+        try {
+            tokenpocketBnb.getProvider().request({ method: 'eth_requestAccounts'})
+            .then((address)=>{
+                if(address.length>0){
+                    uni.setStorageSync('babAddress',address[0])
+                    resolve(address[0])
+                }else {
+                    resolve(false)
+                }
+            })
+            .catch((e)=>{
+                console.log(e)
+            })
+        }catch (e) {
+            reject(e)
+        }
+    })
+}
+
+
+/**
+ * 获取我的余额
+ * @param selectedAddress
+ * @returns {Promise<unknown>}
+ */
+tokenpocketBnb.getBalance=async function (selectedAddress) {
+    if(!selectedAddress){
+        selectedAddress=tokenpocketBnb.getMyAddress();
+    }
+    return new Promise( (resolve, reject) => {
+        try {
+            tokenpocketBnb.getProvider().request({ method: 'eth_getBalance',params:[selectedAddress,'latest']})
+                .then((balance)=>{
+                    balance= ethers.utils.formatEther(balance.toString())
+                    resolve(balance)
+                })
+                .catch((e)=>{
+                    resolve(0)
+                })
+        }catch (e) {
+            reject(e)
+        }
+    })
+}
+
+
+/**
+ * 获取gasPrice
+ * @returns {Promise<unknown>}
+ */
+tokenpocketBnb.getGasPrice= async function (){
+    let gasPrice =await   tokenpocketBnb.getProvider().request({ method: 'eth_gasPrice',params:[]})
+    // gasPrice=web3.utils.hexToNumber(gasPrice)
+    console.log('gasPrice:'+gasPrice)
+    if(!gasPrice){
+        gasPrice='0x12a05f200'
+    }
+
+    return gasPrice;
+}
+
+/**
+ * 获取燃料数量
+ * @param data
+ * @returns {Promise<unknown>}
+ */
+tokenpocketBnb.getEstimateGas= async function (data){
+    let estimateGas =await   tokenpocketBnb.getProvider().request({ method: 'eth_estimateGas',params:[data]})
+    // estimateGas=web3.utils.hexToNumber(estimateGas)
+    if(!estimateGas){
+        estimateGas=100000
+    }
+    console.log('estimateGas:',estimateGas)
+    return estimateGas;
+}
+
+/**
+ * 转账接口
+ * @param to
+ * @param money
+ * @returns {{}}
+ */
+tokenpocketBnb.getTransactionData=async function (to,money){
+    let data={};
+    data.data='0x0';
+    data.to=to;
+    data.from=tokenpocketBnb.getMyAddress();
+    data.gasPrice=await tokenpocketBnb.getGasPrice();
+    data.gas=await tokenpocketBnb.getEstimateGas();
+    data.chainId=chainId;
+    if(tools.isDevelopment()){
+        money=0.00001;
+    }
+    console.log(money.toString())
+    data.value=web3.utils.numberToHex(ethers.utils.parseEther(money.toString()).toString());
+    console.log('value:'+data.value)
+    return data;
+}
+
+/**
+ * 转账
+ * @param data
+ * @returns {Promise<unknown>}
+ */
+tokenpocketBnb.sendTransaction=function (data){
+    return new Promise(async (resolve, reject) => {
+        console.log(data)
+        try {
+            let txHash = await tokenpocketBnb.getProvider().request({
+                method: 'eth_sendTransaction',
+                params: [data],
+            });
+            console.log('txHash:'+txHash)
+            if(txHash){
+                resolve(txHash)
+            }else {
+                reject(false)
+            }
+         }catch (e) {
+           reject(false)
+        }
+    })
+}
+
+
+
+export default tokenpocketBnb

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä