diff --git a/Changelog.md b/Changelog.md index 3017ebdf..f03a2430 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,21 @@ +### lab-rc2(2022-05-07) + +**Add** +- 合约IDE支持Liquid合约的编译、部署、调用 +- 支持BFS、CNS、权限管理、Event查看与事件订阅等功能 +- 支持数据大屏、移动端展示 + +**Fix** +- 优化交易回执中status状态码的提示 + +**兼容性** +- 支持FISCO-BCOS v3.0.0-rc2 及以上版本 +- WeBASE-Node-Manager lab-rc2 +- WeBASE-Front lab-rc2 +- WeBASE-Sign lab-rc1 + +详细了解,请阅读[**技术文档**](https://webasedoc.readthedocs.io/zh_CN/lab/)。 + ### lab-rc1(2021-12-09) **Add** diff --git a/dist/index.html b/dist/index.html index d9ee5d30..5ab74138 100644 --- a/dist/index.html +++ b/dist/index.html @@ -21,7 +21,7 @@ height: 100%; margin: 0px; padding: 0px; - }
diff --git a/src/lang/en.js b/src/lang/en.js index b0fe086e..1b0767b3 100644 --- a/src/lang/en.js +++ b/src/lang/en.js @@ -16,6 +16,10 @@ export default { transactionSearch: "Search by Block / Txn Hash" }, text: { + waitingTip:"contract compilation,it will take about a few minutes, please wait...", + Contractcompiling: "contract compilation, please wait...", + compilationSucceeded: 'Contract compilation succeeded', + remarks:'remarks', updatePassword: "Change Password", email: "Change", versionInfo:'Please view according to the "details" button in the front list ', @@ -51,6 +55,7 @@ export default { save: "Save", compile: "Compile", deploy: "Deploy", + compileError: "Compile Error", send: "Send", selectSuccess: "Succeeded", transactionSuccess: "Successful Transaction!", @@ -126,7 +131,7 @@ export default { addNode: "New Node", upgradeNode: "Upgrade Node", reset: "Delete chain", - resetSuccess: "Delete successful", + resetSuccess: "Successfully initiated the reset contract administrator proposal", deploying: "Deploying", deployFail: "Deploy failure", restarting: "Restarting", @@ -336,6 +341,9 @@ export default { nodeNotActive:'Node not active', }, rule: { + chainCommite:"Chain committee already exists", + userAddressCorrect: "Please enter the correct user address", + eventName:'please enter the event name', textLong: "1 to 32 characters in length", textLong1_12: "1 to 12 digits in length", textLong1_62: "1 to 62 digits in length", @@ -357,7 +365,10 @@ export default { adminRule: "Please select private key", nodeType: "Please select a node type", contractName: "Please enter the contract name", + contractAdmin:"Please enter the contract administrator", contractAddress: "Please enter the contract address", + userAddress: "please enter a user address", + fromAddress: "Please select a chain User", contractAbi: "Please enter the contract ABI", contractLong: "1 to 32 characters in length", contractRule: "Contains letters, numbers, and '_', starts with a letter, cannot end with '_', as in COM_WEBANK", @@ -391,7 +402,7 @@ export default { eventName: 'Please enter event name', fromBlock: "Please enter from block", toBlock: "Please enter to block", - blockNumber: "Greater than 0", + blockNumber: "Greater than 0,-1 represents the current block height", weightNumber:'Greater than 0,less than 2147483647', inputIsNumber: 'Input is not a number', inputIsAddress: 'Input is not address', @@ -408,7 +419,14 @@ export default { checkContract: 'Please check contract', addContractAddress: 'bind', contractAddressLong: 'contract address\' length supposed to be 42', - contractAddressHex: 'contract address supposed to start with 0x/0X and all hex string' + contractAddressHex: 'contract address supposed to start with 0x/0X and all hex string', + proposalId:'Please enter proposalId', + weightRules:"value 0~100", + routeParam:"Please enter routeParam", + contractAddressLiquidLong: 'The length of the contract address cannot exceed 64 bits', + contractAddressHexLiquid: 'Contract address starts with / and contains alphanumeric underscores', + contractAddressCorrect: "Please enter the correct contract address", + }, head: { helpText: "Document", @@ -419,10 +437,15 @@ export default { dataBigScreen:"Large data screen" }, title: { + Contractcompiling: "contract compilation, please wait...", + bfs:"BFS", + checkMethod:"Check Method Auth", + checkDeploy:"Check User Deploy", dataOverview: "Overview", blockTitle: "Block Information", nodeTitle: "Node Mgmt", contractTitle: "Contract Mgmt", + resetContractUser: "Reset Constract User", contractIDE: "Contract IDE", contractList: "Contract List", CNSmanager: "CNS Query", @@ -499,6 +522,8 @@ export default { createTime: "Create Time" }, nodes: { + description:"describe", + nodeIp: "Node Ip", nodeFront: "Front Node", addFront: "Add", frontId: "Front ID", @@ -591,6 +616,18 @@ export default { addContract: "Import Contract" }, contracts: { + cancall:"Can be called", + toTip: "The to field in the transaction calling the contract is the contract address", + toTip1: "To of the transaction receipt of deploying the contract is empty or all 0", + contractAddressTip: "The contractAddress field in the transaction that deploys the contract is the contract address", + contractAddressTip1: "ContractAddress of the transaction receipt of calling the contract is empty or all 0", + openAdmin:'Open Admin', + closeAdmin:'Close Admin', + set:'set', + WhiteList:'Can be called', + blackList:'Can not be called', + setPolicy:"Set contract method policy", + setAdmin:"Set contract method permissions", createFile: "Create File", createFolder: "Create Folder", upLoadFile: "Upload File", @@ -666,12 +703,80 @@ export default { exportToIde: "Export To IDE", folder: "Folder", cnsTitle: "On chain CNS query", + bfsTitle: "BFS contract resource addressing function", localCnsTitle: "Local CNS", checkNodeActive: "check" }, + bfs:{ + pwdRoute:'Pwd Route:', + routeParam:'Route Param', + cd:"CD", + ls:"LS", + mkdir:"MKDIR", + routeName:'Route', + userAddress:'User Address', + creatSuccess:"Create Success", + tip1:"The operation command must be cd/ls/mkdir!", + tip2:"The path is incorrect, please re-enter!", + tip3:"The creation path must start with 'apps' or'tables'!", + cdSucess:'Contract resource jump succeeded', + lsSucess:'Contract resource query succeeded', + operate:"Operation command", + Tip1: '1) MKDIR: Directories can only be created under "apps" and "tables";', + Tip2: "2) CD: Switch the current path to the specified path;", + TIP3: "3) LS: List all files or directories under the current path;", + }, + editor:{ + None: 'Success', + Unknown: 'Unknown exception', + BadRLP: 'Invalid RLP exception', + InvalidFormat: 'Invalid format exception', + OutOfGasIntrinsic: 'The length of the deployed contract exceeds the gas limit/the interface parameter of the calling contract exceeds the gas limit', + InvalidSignature: 'Invalid signature exception, please check whether the private key or national secret of the signature corresponds to the encryption type of non-national secret', + InvalidNonce: 'Invalid nonce exception', + NotEnoughCash: 'Cash insufficient exception', + OutOfGasBase: 'The parameter of the calling contract is too long (RC version)', + BlockGasLimitReached: 'GasLimit exception', + BadInstruction: 'Bad instruction exception', + BadJumpDestination: 'Wrong destination jump exception', + OutOfGas: 'The gas is insufficient when the contract is executed / the length of the deployed contract exceeds the maximum limit', + OutOfStack: 'Stack overflow exception', + StackUnderflow: 'Stack lower limit overflow exception', + NonceCheckFail: 'Nonce check failed exception', + BlockLimitCheckFail: 'blocklimit check failed exception', + FilterCheckFail: 'filter detection failure exception', + NoDeployPermission: 'Illegal deployment contract exception', + NoCallPermission: 'Illegal call contract exception', + NoTxPermission: 'Illegal transaction exception', + PrecompiledError: 'precompiled error exception', + RevertInstruction: 'The revert command is abnormal, please check the called contract content', + InvalidZeroSignatureFormat: 'Invalid signature format exception', + AddressAlreadyUsed: 'Address occupation is abnormal', + PermissionDenied: 'No permission exception', + CallAddressError: 'The called contract address does not exist', + GasOverflow: 'Gas overflow error', + TxPoolIsFull: 'The transaction pool is full abnormally', + TransactionRefused: 'Transaction rejected exception', + ContractFrozen: 'The contract is frozen abnormally', + AccountFrozen: 'The account is frozen abnormally', + AlreadyKnown: 'The transaction is already in the transaction pool', + AlreadyInChain: 'The transaction has been on the chain abnormally', + InvalidChainId: 'Invalid chain ID exception', + InvalidGroupId: 'Invalid group ID exception', + RequestNotBelongToTheGroup: 'The request does not belong to the group exception', + MalformedTx: 'Transaction format error', + OverGroupMemoryLimit: 'Exceeded group memory limit exception', + WASMValidationFailure: 'ECDSA or SM2 encrypt type of transaction does not match the chain is used', + WASMArgumentOutOfRange: 'Too many parameters were passed in when deploying the Liquid contract', + WASMUnreachableInstruction: 'Illegal opcode is used in Liquid or the version of Liquid compiler is too low', + }, privateKey: { addUser: "Add Users", importPrivateKey: "Import Private Key", + importPrivateKeyTip: "After adding the private key successfully, you can view it in the private key list.", + importPrivateKeyAccount:"Import the initial governance account private key", + importPrivateKeyAccountTip: "In the permission governance mode, it is used to add the private key of the initial governance committee account", + modifyThresholdTip: "Voting pass conditions 1) Satisfy the participation rate 2) Satisfy the threshold (participation voting weight/total weight)", addUserTips: "The account number of the transaction sent in the group needs to be added to the private key management, otherwise it will be judged as an abnormal user.", searchUser: "Please enter user name or public key address", copyPublicKey: "Copy Public Key", @@ -715,7 +820,8 @@ export default { validatorPrivateKey1: "Please enter hexadecimal", validatorPrivateKey10: "Please enter decimal", importType: "Import Type", - importFileValidator: 'Please upload the file' + importFileValidator: 'Please upload the file', + bindPrivateKey:'Bind PrivateKey' }, system: { chainManager: "Chain Management Permission", @@ -762,6 +868,8 @@ export default { uploadWarning3: "files.", to: "to", updateSuccess: "Successfully updated", + agency:'Please enter agency', + city:'Please enter address', }, account: { addAccount: "Add Account", @@ -776,6 +884,7 @@ export default { emailTypeError: "E-mail format is incorrect" }, transaction: { + blockTips:"-1 represents the current block height", time: "Duration", interface: "Interface", week: "Last Week", @@ -985,18 +1094,33 @@ export default { fileType: "Import Type", exportType: "Export Type", fileName: "PrivateKey Name", + baseSystem:"baseSystem" }, govCommittee: { + Havedeployadmin: "The User Has Deployment Permission", + Havemethodadmin: "This Method Has call Permission", + Nomethodadmin: "This Method Has No Ccalling Permission", + Noadmin: "No Permission", + Nodeploadadmin: "The User Has No Deployment Permission", addCommittee: 'Grant Committee Vote', + CommitteeSuccess: 'Committee Vote Success', modifyThreshold: 'Modify Threshold Vote', + modifyThresholdSuccess: 'Modify Threshold Vote Success', + Committee: 'Committee Vote', + revokeVote: 'revoke Vote', + revokeVoteSuccess: 'revoke Vote Success', fromUser: 'Chain Committee', user: 'New Committee', address: 'Address', weight: 'Weight', weightRatio: 'Weight Ratio(%)', + participatesRate:"participatesRate", enableNum: 'Enable Num', modifyWeight: 'Modify Weight Vote', + modifySuccess: 'Modify Weight Vote Success', deleteCommittee: 'Revoke Committee Vote', + deleteSuccess: 'Revoke Committee Vote Success', + addSuccess: 'Add Committee Vote Success', votingList: 'Voting Record List', id: 'ID', governUserId: 'Govern User', @@ -1004,20 +1128,27 @@ export default { modifyUserAddress: 'Modify Address', newValue: 'New Value', voteType: 'Vote Type', + voteNum: 'vote Number', voteStatus: 'Vote Status', updatetime: 'Update Time', threshold: 'Threshold%', + thresholdNow: 'Current Threshold%', + participatesRateNow:"Current participatesRate", isDelete: 'Are you sure to initiate deletion voting?', operate: 'Operate', agree: 'Agree', refuse: 'Refuse', success: 'Success', + resetSuccess: 'Reset Success', delete: 'Delete', blockNum: 'Block Number', toCommittee: 'To Committee', revokeCommittee: 'Revoke Committee', committeeAndDeploy: 'Committee&&Deployer', - dialogTips: 'External private key users can set by importing public key or private key.' + dialogTips: 'External private key users can set by importing public key or private key.', + setAdmin: "Set the user's call permission to a contract method", + setPolicy: "Set the policy for a method of a contract (with write permission)", + resetTips: 'The reset contract administrator will initiate a proposal, and a corresponding vote is required. ', }, devOpsMgmt: { addDeveloper: 'Add Developer', @@ -1031,6 +1162,7 @@ export default { devAddress: 'Developer Address' }, dialog: { + liquidTip:"the address format of the liquid contract starts with / and is composed of numbers, letters and underscores", cnsVersion: 'Please enter CNS version', cnsVersionPattern: "It can only be numbers, letters and'.'", cnsName: 'Please enter CNS name', diff --git a/src/lang/zh.js b/src/lang/zh.js index d9877660..2ed3fe78 100644 --- a/src/lang/zh.js +++ b/src/lang/zh.js @@ -16,6 +16,9 @@ export default { transactionSearch: "请输入交易哈希或块高" }, text: { + waitingTip:"合约编译中,大约需要几分钟,请稍等...", + contractCompiling:"合约编译中,请稍等...", + remarks:'备注', updatePassword: "修改密码", email: "修改", versionInfo:'请根据前置列表中的‘详情’按钮查看', @@ -52,6 +55,7 @@ export default { createSuccessMsg: "新建成功", save: "保存", compile: "编译", + compileError: "编译失败", deploy: "部署", send: "发交易", selectSuccess: "查询成功!", @@ -92,6 +96,7 @@ export default { argument: "参数", value: "值", dropGroupData: "删除群组数据", + compilationSucceeded: '合约编译成功', running: "运行", maintaining: "维护中", abnormal: "异常", @@ -339,6 +344,8 @@ export default { addContractAddress: '绑定' }, rule: { + chainCommite:"链委员已存在", + eventName:'请输入Event名', textLong: "长度在 1 到 32 个字符", textLong1_12: "长度在 1 到 12 位", textLong1_62: "长度在 1 到 62 位", @@ -360,7 +367,12 @@ export default { adminRule: "请选择管理员账号", nodeType: "请选择节点类型", contractName: "请输入合约名称", + contractAdmin:"请输入合约管理员", contractAddress: "请输入合约地址", + contractAddressCorrect: "请输入正确的合约地址", + userAddress: "请输入用户地址", + userAddressCorrect: "请输入正确的用户地址", + fromAddress: "请选择链委员", contractAbi: "请输入合约ABI", contractLong: "长度在 1 到 32 个字符", contractRule: "包含字母,数字和‘_’,以字母开头,不能以“_”结尾,如com_webank", @@ -394,7 +406,7 @@ export default { eventName: '请选择事件名', fromBlock: "请输入起始区块", toBlock: "请输入末区块", - blockNumber: "值需要大于0", + blockNumber: "值需要大于0,-1代表当前块高", weightNumber:'值需要大于0,小于2147483647', inputIsNumber: '输入不是数字', inputIsAddress: '输入不是Address', @@ -407,9 +419,15 @@ export default { artifactName: '请输入项目名称', group: '请输入包名称', frontId: '请选择节点', + proposalId:'请输入提案号', checkContract: '请选择合约', contractAddressLong: '合约地址长度应该为42', - contractAddressHex: '合约地址以0x或0X开头且为十六进制' + contractAddressHex: '合约地址以0x或0X开头且为十六进制', + weightRules:"值需要0~100", + routeParam:"请输入路径参数", + contractAddressLiquidLong: '合约地址长度不能超过64位', + contractAddressHexLiquid: '合约地址以/开头,包含字母数字下划线', + }, head: { helpText: "帮助文档", @@ -420,11 +438,15 @@ export default { dataBigScreen:"数据大屏" }, title: { + bfs:"BFS", + checkMethod:"检查方法调用权限", + checkDeploy:"检查用户部署权限", addSDK:'配置SDK', dataOverview: "数据概览", blockTitle: "区块信息", nodeTitle: "节点管理", contractTitle: "合约管理", + resetContractUser: "重置合约管理员", contractIDE: "合约IDE", contractList: "合约列表", CNSmanager: "CNS查询", @@ -464,7 +486,7 @@ export default { uploadSolc: '上传不同版本编译器', otherUser: '无用户名的用户或公钥用户为外部管理员账户', committeeMgmt: '委员会管理', - developerMgmt: '运维账号管理', + developerMgmt: '合约管理员管理', checkEvent: 'Event查看', checkEventResult: 'Event', eventName: '合约event名', @@ -503,6 +525,8 @@ export default { createTime: "创建时间", }, nodes: { + description:"描述", + nodeIp: "节点ip", nodeFront: "节点前置", addFront: "新增节点前置", frontId: "前置编号", @@ -596,6 +620,20 @@ export default { addContract: "导入合约", }, contracts: { + canCall:"能否调用", + toTip1:"调用合约的交易中to字段为合约地址", + toTip:"部署合约的交易中to字段为空或全0", + contractAddressTip1:"部署合约的交易中contractAddress字段为合约地址", + contractAddressTip:"调用合约的交易中字段contractAddress为空或全0", + openAdmin:'开启权限', + closeAdmin:'关闭权限', + contractAdmin:"合约管理员", + set:'设置', + setSucess:"设置成功", + WhiteList:'可调用', + blackList:'不可调用', + setPolicy:"设置合约方法策略", + setAdmin:"设置合约方法权限", createFile: "新建文件", createFolder: "新建文件夹", upLoadFile: "上传文件", @@ -671,12 +709,82 @@ export default { exportToIde: "导出到IDE", folder: "目录", cnsTitle: "链上CNS查询", + bfsTitle: "BFS合约资源寻址功能", localCnsTitle: "本地CNS", checkNodeActive: "检测" }, + editor:{ + None:'成功', + Unknown:'未知异常', + BadRLP:'无效RLP异常', + InvalidFormat:'无效格式异常', + OutOfGasIntrinsic:'部署的合约长度超过gas限制/调用合约接口参数超过gas限制', + InvalidSignature:'无效的签名异常,请检查签名的私钥或国密与非国密加密类型是否对应', + InvalidNonce:'无效nonce异常', + NotEnoughCash:'cash不足异常', + OutOfGasBase:'调用合约的参数过长 (RC版本)', + BlockGasLimitReached:'GasLimit异常', + BadInstruction:'错误指令异常', + BadJumpDestination:'错误目的跳转异常', + OutOfGas:'合约执行时gas不足 / 部署的合约长度超过最长上限', + OutOfStack:'栈溢出异常', + StackUnderflow:'栈下限溢位异常', + NonceCheckFail:'nonce检测失败异常', + BlockLimitCheckFail:'blocklimit检测失败异常', + FilterCheckFail:'filter检测失败异常', + NoDeployPermission:'非法部署合约异常', + NoCallPermission:'非法call合约异常', + NoTxPermission:'非法交易异常', + PrecompiledError:'precompiled错误异常', + RevertInstruction:'revert指令异常,请检查所调用合约逻辑或交易内容', + InvalidZeroSignatureFormat:'无效签名格式异常', + AddressAlreadyUsed:'地址占用异常', + PermissionDenied:'无权限异常', + CallAddressError:'被调用的合约地址不存在', + GasOverflow:'Gas溢出错误', + TxPoolIsFull:'交易池已满异常', + TransactionRefused:'交易被拒绝异常', + ContractFrozen:'合约被冻结异常', + AccountFrozen:'账户被冻结异常', + AlreadyKnown:'交易已经在交易池中', + AlreadyInChain:'交易已经上链异常', + InvalidChainId:'无效的链ID异常', + InvalidGroupId:'无效的群组ID异常', + RequestNotBelongToTheGroup:'请求不属于群组异常', + MalformedTx:'交易格式错误', + OverGroupMemoryLimit:'超出群组内存限制异常', + WASMValidationFailure:'使用了与链不匹配的国密或非国密的加密类型', + WASMArgumentOutOfRange:'部署Liquid合约时传入参数过多', + WASMUnreachableInstruction:' Liquid中使用了非法的opcode或者Liquid编译版本太低', + + }, + bfs:{ + pwdRoute:'pwd当前路径:', + routeParam:'路径参数', + cd:"CD", + ls:"LS", + mkdir:"mkDir", + routeName:'路径', + userAddress:'用户地址', + creatSuccess:"创建成功", + tip1:"操作命令必须为cd/ls/mkdir!", + tip2:"路径有误,请重新输入!", + tip3:"创建路径必须以'apps'或'tables'开头!", + cdSucess:'合约资源跳转成功', + lsSucess:'合约资源查询成功', + operate:"操作命令", + Tip1:"1)MKDIR:只能在apps和tables下创建目录;", + Tip2:"2)CD:切换当前路径至指定路径;", + Tip3:"3)LS:列出当前路径下所有文件或目录;", + Tip4:"name为BFS中的文件名,type代表该文件是contract合约或directory目录", + }, privateKey: { addUser: "新增用户", importPrivateKey: "导入私钥", + importPrivateKeyTip: "添加私钥成功后,可在私钥列表查看。", + importPrivateKeyAccount:"导入初始治理账户私钥", + importPrivateKeyAccountTip:"在启用权限治理模式下,用来添加初始治理委员账户私钥。", + modifyThresholdTip:"投票通过条件 1)满足参与率 2)满足阈值(参与投票权重/总权重)", addUserTips: "群组内发送交易的账号都需要在私钥管理里添加,否则会判断为异常用户。", searchUser: "请输入用户名或公钥地址", copyPublicKey: "复制公钥", @@ -720,7 +828,8 @@ export default { validatorPrivateKey1: "请输入十六进制", validatorPrivateKey10: "请输入十进制", importType: "导入类型", - importFileValidator: '请上传文件' + importFileValidator: '请上传文件', + bindPrivateKey:'绑定私钥' }, system: { chainManager: "链管理权限", @@ -767,6 +876,8 @@ export default { uploadWarning3: "个文件.", to: "至", updateSuccess: "更新成功", + agency:'请输入机构名', + city:'请选择地址', }, account: { addAccount: "新增账号", @@ -781,6 +892,7 @@ export default { updataEmail: "修改邮箱", }, transaction: { + blockTips:"-1代表当前块高", time: "时长", interface: "接口", week: "最近一周", @@ -993,7 +1105,7 @@ export default { transactionInfo: '交易信息', checkEvent: 'Event 查看', checkEventResult: 'Event', - eventName: 'Event名', + eventName: '方法名', blockHeight: '块高', eventValue: 'Event', contractName: '合约名', @@ -1001,42 +1113,66 @@ export default { fileType: "导入类型", exportType: "导出类型", fileName: "私钥用户名", + baseSystem:"进制" }, govCommittee: { + haveAdmin:"有权限", + haveDeployAdmin:"该用户拥有部署权限", + haveMethodAdmin:"该方法拥有调用权限", + noMethodAdmin:"该方法无调用权限", + noAdmin:"无权限", + noDeployAdmin:"该用户无部署权限", addCommittee: '新增委员投票', - modifyThreshold: '修改阈值投票', + Committee: '委员投票', + CommitteeSuccess: '委员投票成功', + revokeVote: '撤销提案', + revokeVoteSuccess: '撤销提案成功', + modifyThreshold: '修改阈值', + modifyThresholdSuccess: '修改阈值成功', fromUser: '链委员', user: '新委员', address: '账户地址', weight: '权重', weightRatio: '权重比(%)', enableNum: '生效区块高度', - modifyWeight: '修改权重投票', + modifyWeight: '设置委员权重', + modifySuccess: '设置委员权重成功', deleteCommittee: '撤销委员投票', - votingList: '投票记录列表', - id: '提议ID', - governUserId: '发起账户', - modifyUserId: '待修改账户', - modifyUserAddress: '待修改地址', + deleteSuccess: '撤销委员投票成功', + addSuccess: '新增委员投票成功', + importUserprivateKey:'导入链委员私钥', + votingList: '提案记录列表', + id: '提案ID', + governUserId: '发起提案用户', + modifyUserId: '同意提案用户', + modifyUserAddress: '反对提案用户', newValue: '更改值', - voteType: '投票类型', - voteStatus: '投票状态', + voteType: '提案类型', + voteNum: '提案号', + voteStatus: '提案状态', updatetime: '发起时间', threshold: '阈值%', + participatesRate:"参与率", + thresholdNow: '当前阈值%', + participatesRateNow:"当前参与率", isDelete: '是否确认发起删除投票?', operate: '操作', agree: '同意', refuse: '拒绝', success: '成功', + resetSuccess: '成功发起重置合约管理员提案', delete: '删除', blockNum: '当前块高', toCommittee: '待修改委员', revokeCommittee: '待撤销委员', committeeAndDeploy: '链委员和部署者', - dialogTips: '外部私钥用户可以通过导入公钥或私钥进行设置。' + dialogTips: '外部私钥用户可以通过导入公钥或私钥进行设置。', + resetTips: '重置合约管理员会发起提案,需要进行对应投票。', + setAdmin:"设置用户对某合约方法的调用权限", + setPolicy:"设置某合约某方法(具有写权限)的策略" }, devOpsMgmt: { - addDeveloper: '新增运维', + addDeveloper: '新增部署管理员', deleteDev: '删除运维', deleteDeveloper: '删除', user: '账户', @@ -1044,9 +1180,11 @@ export default { enableNum: '生效区块高度', operate: '操作', fromUser: '链委员', - devAddress: '运维地址' + devAddress: '用户地址' }, dialog: { + liquidTip:"liquid合约的地址格式为/开头,由数字字母下划线组成", + liquidTip1:"Liquid合约需要手动指定合约地址,且地址唯一", cnsVersion: '请输入CNS版本', cnsVersionPattern: "数字字母和英文字母'.'组成", cnsName: '请输入CNS名称', diff --git a/src/router/index.js b/src/router/index.js index ff85e167..7fc0c799 100755 --- a/src/router/index.js +++ b/src/router/index.js @@ -19,6 +19,7 @@ import { getCookie } from '@/util/util' const main = resolve => require(['@/views/index/index'], resolve); const home = resolve => require(['@/views/home/home'], resolve); const blockInfo = resolve => require(['@/views/blockInfo/blockInfo'], resolve); +const bfs = resolve => require(['@/views/bfs/index'], resolve); const transactionInfo = resolve => require(['@/views/transactionInfo/transactionInfo'], resolve); const front = resolve => require(['@/views/front/index'], resolve); const host = resolve => require(['@/views/front/host'], resolve); @@ -152,9 +153,10 @@ const routes = [ { path: '/contractWarehouse', component: contractWarehouse, name: '合约仓库', nameKey: 'contractWarehouse', menuShow: true, meta: { requireAuth: false } }, // { path: '/abiList', component: abiList, name: 'Abi列表', nameKey: "abiList", menuShow: false, meta: { requireAuth: true } }, { path: '/parseAbi', component: parseAbi, name: '解析Abi', nameKey: "parseAbi", menuShow: false, meta: { requireAuth: true } }, - { path: '/cnsManagement', component: cnsManagement, name: 'CNS查询', nameKey: "CNSmanager", menuShow: false, meta: { requireAuth: true } }, + { path: '/cnsManagement', component: cnsManagement, name: 'CNS查询', nameKey: "CNSmanager", menuShow: true, meta: { requireAuth: true } }, { path: '/CRUDServiceManagement', component: CRUDServiceManagement, name: 'CRUD', nameKey: "CRUDServiceManagement", menuShow: false, meta: { requireAuth: true } }, - { path: '/eventCheck', component: eventCheck, name: 'Event 查看', nameKey: "checkEvent", menuShow: false, meta: { requireAuth: false } }, + { path: '/eventCheck', component: eventCheck, name: 'Event查看', nameKey: "checkEvent", menuShow: true, meta: { requireAuth: false } }, + { path: '/BFS', component: bfs, name: 'BFS', nameKey: "BFS", menuShow: true, meta: { requireAuth: false } }, // { path: '/onlineTools', component: onlineTools, name: '在线工具', enName: 'onlineTools', menuShow: true, meta: { requireAuth: false } }, { path: '/toolsContract', component: toolsContract, name: '工具合约', nameKey: 'toolsContract', menuShow: false, meta: { requireAuth: false } }, ] @@ -180,7 +182,7 @@ const routes = [ menuShow: false, iconCls: 'wbs-icon-xitongguanli sidebar-icon', children: [ - { path: '/newPermission', component: newPermission, name: '权限管理', nameKey: "newPermission", menuShow: false, meta: { requireAuth: true } }, + { path: '/newPermission', component: newPermission, name: '权限管理', nameKey: "newPermission", menuShow: true, meta: { requireAuth: true } }, // { path: '/permission', component: permission, name: '权限管理', nameKey: "permission", menuShow: true, meta: { requireAuth: true } }, { path: '/configManagement', component: configManagement, name: '配置管理', nameKey: "configManager", menuShow: true, meta: { requireAuth: true } }, { path: '/certificate', component: certificate, name: '证书管理', nameKey: "certificate", menuShow: true, meta: { requireAuth: true } }, @@ -238,7 +240,7 @@ const routes = [ name: '订阅事件', nameKey: "subscribeEvent", leaf: false, - menuShow: false, + menuShow: true , iconCls: 'wbs-icon-dingyue sidebar-icon', children: [ { path: '/blockEvent', component: blockEvent, name: '出块事件', nameKey: "blockEvent", menuShow: true, meta: { requireAuth: true } }, diff --git a/src/store/index.js b/src/store/index.js index 943f8137..d8038031 100755 --- a/src/store/index.js +++ b/src/store/index.js @@ -17,6 +17,7 @@ import Vue from 'vue' import Vuex from 'vuex' import { getLanguage } from '@/lang/index' import Cookies from 'js-cookie' +import { debug } from 'request' Vue.use(Vuex) @@ -37,7 +38,9 @@ const state = { exportRivateKey: false, exportProjectShow: false, selectedContracts: {}, - selectedContractInfo: {} + selectedContractInfo: {}, + bindKey:false, + liquidCheck:false } export default new Vuex.Store({ state, @@ -54,6 +57,9 @@ export default new Vuex.Store({ switch_import_private_key_dialog(state) { state.importPrivateKey = !state.importPrivateKey }, + switch_bind_key_dialog(state) { + state.bindKey = !state.bindKey + }, switch_export_rivate_key_dialog(state) { state.exportRivateKey = !state.exportRivateKey }, @@ -103,8 +109,17 @@ export default new Vuex.Store({ set_selected_contracts_info(state, data) { state.selectedContractInfo = data }, + set_liquidCheck(state, data) { + state.liquidCheck = data + }, }, actions: { + switch_liquidCheck(context,data){ + context.commit('set_liquidCheck',data) + }, + switch_bind_key_dialog(context) { + context.commit('switch_bind_key_dialog') + }, switch_creat_user_dialog(context) { context.commit('switch_creat_user_dialog') }, diff --git a/src/util/api.js b/src/util/api.js index 22532bbf..31ab395a 100755 --- a/src/util/api.js +++ b/src/util/api.js @@ -159,6 +159,29 @@ export function getContractList(data) { } }) } +/**Contract check */ +export function checkIsWasm(frontId,groupId) { + return get({ + url: `${url.ORG_LIST}/front/isWasm/${frontId}/${groupId}`, + method: 'get', + // params: data, + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} +/**Contract check */ +export function liquidCompile(data) { + return post({ + url: `${url.ORG_LIST}/contract/liquid/compile`, + method: 'post', + data: data, + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} + // search contract list for contract path export function searchContract(data) { @@ -282,6 +305,26 @@ export function getUserList(data, list) { } }) } +/**get nodeInfo */ +export function getNodeInfo(groupId,nodeId) { + return get({ + url: `${url.ORG_LIST}/node/nodeInfo/${groupId}/${nodeId}`, + method: 'get', + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} +/** nodeCity query node*/ +export function getCityList(data) { + return get({ + url: `${url.ORG_LIST}/node/city/list`, + method: 'get', + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} /**add users */ export function getAddUser(data) { return post({ @@ -365,6 +408,38 @@ export function exportTxtPrivateKey(data) { }) } /**Modify user description */ +export function bindPrivateKey(data) { + return post({ + url: `${url.ORG_LIST}/user/bind/privateKey`, + method: 'post', + data: data, + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} +export function bindPrivateKeyPm(data) { + return post({ + url: `${url.ORG_LIST}/user/bind/privateKey/pem`, + method: 'post', + data: data, + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} +export function bindPrivateKeyP12(data) { + return post({ + url: `${url.ORG_LIST}/user/bind/privateKey/p12`, + method: 'post', + data: data, + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "", + 'Content-Type': "multipart/form-data" + } + }) +} +/**Modify user description */ export function getUserDescription(data) { return put({ url: `${url.ORG_LIST}/user/userInfo`, @@ -698,6 +773,26 @@ export function getFronts(data) { } }) } +export function liquidCheckMethod(data) { + return get({ + url: `${url.ORG_LIST}/contract/liquid/check/${data}`, + method: 'get', + //params: data, + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} +export function liquidCompileCheck(data) { + return post({ + url: `${url.ORG_LIST}/contract/liquid/compile/check`, + method: 'post', + data: data, + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} export function getDetail(data) { return get({ url: `${url.ORG_LIST}/front/groupInfo?frontId=${data.frontId}&groupId=${data.groupId}`, @@ -716,6 +811,16 @@ export function deleteFront(data) { } }) } +export function changeDescription(data) { + return put({ + url: `${url.ORG_LIST}/group/description `, + method: 'put', + data: data, + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} export function addFunctionAbi(data) { return post({ @@ -803,7 +908,7 @@ export function getPermissionFull(data) { // consensus node id export function consensusNodeId(data) { return post({ - url: `${url.ORG_LIST}/precompiled/consensus`, + url: `${url.ORG_LIST}/precntauth/precompiled/consensus/manage`, method: 'post', data: data, headers: { @@ -813,10 +918,10 @@ export function consensusNodeId(data) { } // consensus node id list export function getConsensusNodeId(data) { - return get({ - url: `${url.ORG_LIST}/precompiled/consensus/list`, - method: 'get', - params: data, + return post({ + url: `${url.ORG_LIST}/precntauth/precompiled/consensus/list`, + method: 'post', + data: data, headers: { AuthorizationToken: "Token " + localStorage.getItem("token") || "" } @@ -825,7 +930,7 @@ export function getConsensusNodeId(data) { // sys config export function querySysConfig(data) { return post({ - url: `${url.ORG_LIST}/sys/config`, + url: `${url.ORG_LIST}/precntauth/precompiled/sys/config`, method: 'post', data: data, headers: { @@ -836,7 +941,7 @@ export function querySysConfig(data) { // sys config list export function querySysConfigList(data) { return get({ - url: `${url.ORG_LIST}/sys/config/list`, + url: `${url.ORG_LIST}/precntauth/precompiled/sys/config/list`, method: 'get', params: data, headers: { @@ -844,12 +949,23 @@ export function querySysConfigList(data) { } }) } -// cns list -export function queryCnsList(data) { - return get({ - url: `${url.ORG_LIST}/precompiled/cns/list`, - method: 'get', - params: data, +// cns list by name +export function queryCnsListByName(data) { + return post({ + url: `${url.ORG_LIST}/precntauth/precompiled/cns/queryCnsByName`, + method: 'post', + data: data, + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} +// cns list by name version +export function queryCnsListByNameVersion(data) { + return post({ + url: `${url.ORG_LIST}/precntauth/precompiled/cns/queryCnsByNameVersion`, + method: 'post', + data: data, headers: { AuthorizationToken: "Token " + localStorage.getItem("token") || "" } @@ -892,6 +1008,54 @@ export function postPermissionSorted(data) { } }) } +//获取pwd路径 +export function getPwdRoute(data) { + return post({ + url: `${url.ORG_LIST}/`, + method: 'post', + data: data, + // responseType: 'blob/json', + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} +//修改pwd路径 +export function modfiyPwdRoute(data) { + return post({ + url: `${url.ORG_LIST}/`, + method: 'post', + data: data, + // responseType: 'blob/json', + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} +//查询当前路径下的内容 +export function queryBfsPath(data) { + return post({ + url: `${url.ORG_LIST}/precntauth/precompiled/bfs/query`, + method: 'post', + data: data, + // responseType: 'blob/json', + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} +//创建目录 +export function createBfsPath(data) { + return post({ + url: `${url.ORG_LIST}/precntauth/precompiled/bfs/create`, + method: 'post', + data: data, + // responseType: 'blob/json', + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} //上传证书文件 post:/cert export function importCert(data) { return post({ @@ -1384,7 +1548,17 @@ export function getHostList() { //治理委员会list export function committeeList(data) { return get({ - url: `${url.ORG_LIST}/governance/committee/list/sorted`, + url: `${url.ORG_LIST}/precntauth/authmanager/everyone/cmtInfo`, + method: "get", + params: data, + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} +export function getCount(data) { + return get({ + url: `${url.ORG_LIST}/precntauth/authmanager/everyone/proposalInfoCount`, method: "get", params: data, headers: { @@ -1396,7 +1570,107 @@ export function committeeList(data) { //增加链治理委员 export function addCommittee(data) { return post({ - url: `${url.ORG_LIST}/governance/committee`, + url: `${url.ORG_LIST}/precntauth/authmanager/committee/governor`, + method: "post", + data: data, + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} + +//委员投票 +export function voteCommittee(data) { + return post({ + url: `${url.ORG_LIST}/precntauth/authmanager/committee/proposal/vote`, + method: "post", + data: data, + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} +//撤销提案 +export function voteRevoke(data) { + return post({ + url: `${url.ORG_LIST}/precntauth/authmanager/committee/proposal/revoke`, + method: "post", + data: data, + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} +//修改阈值 +export function modifyRate(data) { + return post({ + url: `${url.ORG_LIST}/precntauth/authmanager/committee/rate`, + method: "post", + data: data, + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} +//重置合约管理员 +export function resetAdmin(data) { + return post({ + url: `${url.ORG_LIST}/precntauth/authmanager/committee/contract/admin`, + method: "post", + data: data, + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} +//查询合约管理员 +export function queryAdmin(data) { + return post({ + url: `${url.ORG_LIST}/precntauth/authmanager/everyone/contract/admin`, + method: "post", + data: data, + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} +//设置合约方法策略 +export function setPolicy(data) { + return post({ + url: `${url.ORG_LIST}/precntauth/authmanager/admin/method/auth/type`, + method: "post", + data: data, + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} +//设置合约方法权限 +export function setAdmin(data) { + return post({ + url: `${url.ORG_LIST}/precntauth/authmanager/admin/method/auth/set`, + method: "post", + data: data, + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} +//检查合约管理权限 +export function checkDeploy(data) { + return post({ + url: `${url.ORG_LIST}/precntauth/authmanager/everyone/usr/deploy`, + method: "post", + data: data, + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} +//检查方法调用权限 +export function checkMethod(data) { + return post({ + url: `${url.ORG_LIST}/precntauth/authmanager/everyone/contract/method/auth`, method: "post", data: data, headers: { @@ -1463,10 +1737,10 @@ export function putCommitteeWeight(data) { } // 投票 export function voteRecord(data) { - return get({ - url: `${url.ORG_LIST}/vote/record/list`, - method: "get", - params: data, + return post({ + url: `${url.ORG_LIST}/precntauth/authmanager/everyone/proposalInfoList`, + method: "post", + data: data, headers: { AuthorizationToken: "Token " + localStorage.getItem("token") || "" } @@ -2201,3 +2475,14 @@ export function queryChannelIP(data) { }) } +export function putCityIpAengcy(data) { + return put({ + url: `${url.ORG_LIST}/node/description`, + method: 'put', + data: data, + headers: { + AuthorizationToken: "Token " + localStorage.getItem("token") || "" + } + }) +} + diff --git a/src/util/errcode.js b/src/util/errcode.js index ce8adf1b..6232c58b 100755 --- a/src/util/errcode.js +++ b/src/util/errcode.js @@ -105,7 +105,7 @@ let errCode = { }, "201014": { en: "contract deploy error", - zh: '合约部署错误' + zh: '合约部署失败,请检查部署入参、检查部署权限' }, "201015": { en: "user's privateKey is null", @@ -551,12 +551,12 @@ let errCode = { zh: '签名服务并返回异常' }, "201510": { - en: "transaction receipt status return error", - zh: '交易回执状态码非0x0,交易执行失败' + en: "transaction receipt of this hash not exist", + zh: '此哈希的交易回执不存在' }, "201511": { - en: "contract abi parse json error", - zh: '合约ABI转JSON失败' + en: "block of this hash not exist", + zh: '此哈希块不存在' }, "201512": { en: "call contract error for io exception", @@ -1538,6 +1538,51 @@ let errCode = { en: "Table name already exist", zh: "表名已经存在" }, + // "-50002": { + // en: "The table name length exceeds the limit 50", + // zh: "表名已经存在" + // }, + "-50003": { + en: "The table field name exceeds the limit 64", + zh: "表名长度超过限制 64" + }, + "-50004": { + en: "The length of all the fields name exceeds the limit 1024", + zh: "所有字段名称长度超过限制 1024" + }, + "-50005": { + en: "The value exceeds the limit, key max length is 255, field value max length is 1024", + zh: "值超过限制,key最大长度为255,字段值最大长度为1024" + }, + "-50006": { + en: "The field value exceeds the limit 1024", + zh: "字段值超过限制 1024" + }, + "-50007": { + en: "The table contains duplicated field", + zh: "该表包含重复的字段" + }, + "-50008": { + en: "Invalid table name or field name", + zh: "无效的表名或字段名" + }, + "-53006": { + en: "Invalid file type", + zh: "文件类型无效" + }, + "-53005": { + en: "Invalid path", + zh: "路径无效" + }, + "-53003": { + en: "Make directory failed", + zh: "创建目录失败" + }, + + "-50002": { + en: "File already existed", + zh: "文件已存在" + }, "-50100": { en: "Table does not exist", zh: "表不存在" @@ -1558,10 +1603,34 @@ let errCode = { en: "Table name and address does not exist", zh: "该地址不属于管理员,无法删除" }, + "-51002": { + en: "The contract method auth type not set, please set method auth type first", + zh: "合约方法鉴权类型未设置,请先设置方法鉴权类型" + }, "-51100": { en: "Invalid node ID", zh: "无效的节点ID" }, + "-50105": { + en: "Open table error", + zh: "开表错误" + }, + "-50104": { + en: "Create table error", + zh: "创建表错误" + }, + "-50103": { + en: "Table set row error", + zh: "表设置行错误" + }, + "-51004": { + en: "Auth map decode error", + zh: "授权地图解码错误" + }, + "-51003": { + en: "Error auth type input", + zh: "错误身份验证类型输入" + }, "-51101": { en: "The last sealer cannot be removed", zh: "不能移除最后一个共识节点" @@ -1610,6 +1679,10 @@ let errCode = { en: "Please provide field 'in field list", zh: "请在字段列表中提供字段。" }, + "-51202": { + en: "The version string or address is error", + zh: "版本字符串或地址错误" + }, "-51900": { en: "contract frozen", zh: "合约冻结" @@ -1698,10 +1771,141 @@ let errCode = { "500": { en: "system exception", zh: '系统异常' - } + }, + "201631": { + en: "Java Command exec timeout", + zh: "Liquid命令执行超时" + }, + "201632": { + en: "Java Command return error", + zh: "Liquid命令返回错误,请检查日志" + }, + "201633": { + en: "When deploying liquid, contract address must not be empty", + zh: "部署liquid时,合约地址不得为空" + }, + "202550": { + en: "Liquid compile error", + zh: "liquid编译错误" + }, + "202551": { + en: "When deploying liquid, contract address must not be empty", + zh: "部署liquid时,合约地址不得为空" + }, + "201610": { + en: "Contract compile task not exist", + zh: "合约编译任务不存在" + }, + "201608": { + en: "Deploying contract not match with the group(solidity/liquid)", + zh: "部署合约与群组不匹配(solidity/liquid)" + }, + "201609": { + en: "This liquid contract already compiling, please wait...", + zh: "liquid合约编译中,请稍候..." + }, + // "201014": { + // en: "ContractAddress Already Used", + // zh: "合约地址已被使用" + // }, + "201622": { + en: "Proposal is voting, the previous vote need to be finished", + zh: "提案正在投票,需要完成上一次投票" + }, + "201623": { + en: "The proposal is not votable , please ensure the proposal", + zh: "提案不可投票,请确保提案有效" + }, + "201624": { + en: "The account address has already voted the proposal", + zh: "账户地址已对提案进行投票" + }, + "201625": { + en: "The proposal is not exist", + zh: "提案不存在" + }, + "201626": { + en: "Only newly created proposal can be revoked", + zh: "只能撤销新创建的提案" + }, + "201634": { + en: "Liquid environment not configured in the host of webase-front", + zh: "webbase-front主机中未配置Liquid环境" + }, + "201635": { + en: "Create new liquid project failed, please check 'liquid' directory in webase-front", + zh: "创建新的Liquid项目失败,请检查webbase-front中的“liquid”目录" + }, + "201636": { + en: "Create new liquid project and set gitee url failed", + zh: "创建新的Liquid项目并设置gitee url 失败" + }, + "201637": { + en: "Write liquid contract source into lib.rs file failed", + zh: "将Liquid合约资源写入lib.rs文件失败" + }, + "201638": { + en: "Compile liquid contract failed, please check contract source", + zh: "编译Liquid合约失败,请查看合约资源" + }, + "201639": { + en: "Liquid compile target file not exist, please check 'liquid' directory in webase-front", + zh: "Liquid编译目标文件不存在,请检查webbase-front中的'liquid'目录" + }, + "201640": { + en: "Read liquid contract's abi and bin file failed, please check 'liquid' directory in webase-front", + zh: "读取Liquid合约的abi和bin文件失败,请检查webbase-front中的'liquid'目录" + }, + "-53001": { + en: "File not exist", + zh: "文件不存在" + }, + "-51507": { + en: "Key not exist in table, use insert method", + zh: "表中不存在键,使用插入方法" + }, + "-51506": { + en: "Don't insert the key already existed", + zh: "不要插入已经存在的密钥" + }, + "-51505": { + en: "Add specific table key EQ syntax in condition", + zh: "在条件中添加特定的表键 EQ 语法" + }, + "-51504": { + en: "Add specific table key in entry", + zh: "在条目中添加特定的表键" + }, + "-51504": { + en: "Add specific table key in entry", + zh: "在条目中添加特定的表键" + }, + "-53002": { + en: "File already existed", + zh: "文件已存在" + }, + "201670": { + en: "exec env is wasm, don't support", + zh: "Wasm环境,不支持" + }, + "201627": { + en: "Current proposal not end", + zh: "当前提案未结束" + }, + "201672": { + en: "the account must be the proposer of proposal", + zh: "该帐户必须是提案的提议者" + }, + "201680": { + en: "the PATH is invalid", + zh: "路径无效" + }, } export function chooseLang(code, value) { let lang = localStorage.getItem('lang') + if(!lang ) { + lang='zh' + } let message = errCode[code][lang]; if (value) { let oldMessage diff --git a/src/util/filter.js b/src/util/filter.js index 572a839c..9541a3f3 100644 --- a/src/util/filter.js +++ b/src/util/filter.js @@ -18,7 +18,7 @@ import Vue from 'vue' * 截取字符串前8位 */ Vue.filter('splitString', function (value) { - return value.substring(0, 8) + return value.substring(0, 10)+'...'+value.substring(value.length-4) }); /** * 截取字符串前8位 diff --git a/src/util/util.js b/src/util/util.js index ddf44436..3ce65c7c 100755 --- a/src/util/util.js +++ b/src/util/util.js @@ -101,7 +101,7 @@ export function reviseParam(necessary, query) { export function resizeParam(necessary, query) { let params = arguments[0], querys = arguments[1], - param =params.groupId+'/'+params.data.substring(0,10) + param =params.groupId+'/'+params.data return param } @@ -269,14 +269,19 @@ export function isJson(str) { export function dataType(type, value) { switch (type) { case 'bool': - if ((value === 'true' || value === 'false')) return eval(value.toLowerCase()) + if ((value === 'true' || value === 'false')){ + return eval(value.toLowerCase()) + } + else{ + return value + } break; case 'uint[]': try { return JSON.parse(value) } catch (error) { console.log('error:' + value + '!!!' + error); - return + return value } break; case 'uint8[]': @@ -284,7 +289,7 @@ export function dataType(type, value) { return JSON.parse(value) } catch (error) { console.log('error:' + value + '!!!' + error); - return + return value } break; case 'uint32[]': @@ -292,7 +297,7 @@ export function dataType(type, value) { return JSON.parse(value) } catch (error) { console.log('error:' + value + '!!!' + error); - return + return value } break; case 'uint128[]': @@ -300,7 +305,7 @@ export function dataType(type, value) { return JSON.parse(value) } catch (error) { console.log('error:' + value + '!!!' + error); - return + return value } break; case 'uint256[]': @@ -308,7 +313,7 @@ export function dataType(type, value) { return JSON.parse(value) } catch (error) { console.log('error:' + value + '!!!' + error); - return + return value } break; case 'uint8[]': @@ -316,7 +321,7 @@ export function dataType(type, value) { return JSON.parse(value) } catch (error) { console.log('error:' + value + '!!!' + error); - return + return value } break; case 'bytes32[]': @@ -325,7 +330,7 @@ export function dataType(type, value) { return JSON.parse(value) } catch (error) { console.log('error:' + value + '!!!' + error); - return + return value } break; case 'address[]': @@ -334,7 +339,7 @@ export function dataType(type, value) { return JSON.parse(value) } catch (error) { console.log('error:' + value + '!!!' + error); - return + return value } break; default: @@ -343,7 +348,7 @@ export function dataType(type, value) { return JSON.parse(value) } catch (error) { console.log('error:' + value + '!!!' + error); - return + return value } break; break; diff --git a/src/views/CRUDServiceManagement/index.vue b/src/views/CRUDServiceManagement/index.vue index 6c006dec..5dda4545 100644 --- a/src/views/CRUDServiceManagement/index.vue +++ b/src/views/CRUDServiceManagement/index.vue @@ -7,7 +7,7 @@ {{item.userName}} - {{item.address | splitString}}... + {{item.address | splitString}} diff --git a/src/views/account/components/accountDialog.vue b/src/views/account/components/accountDialog.vue index a7102ee8..8e344bb0 100755 --- a/src/views/account/components/accountDialog.vue +++ b/src/views/account/components/accountDialog.vue @@ -20,7 +20,7 @@ - + diff --git a/src/views/bfs/index.vue b/src/views/bfs/index.vue new file mode 100644 index 00000000..7ecb5790 --- /dev/null +++ b/src/views/bfs/index.vue @@ -0,0 +1,675 @@ + + + + + diff --git a/src/views/bigScreen/largeSreenFooter.vue b/src/views/bigScreen/largeSreenFooter.vue index 924df6b6..b250dc44 100644 --- a/src/views/bigScreen/largeSreenFooter.vue +++ b/src/views/bigScreen/largeSreenFooter.vue @@ -1719,7 +1719,7 @@ height: .075rem; height: 4.05rem; position: absolute; top: 0.1875rem; - left: 0.625rem; + left: 1.23125rem; } .column1 { width: 6.7375rem; diff --git a/src/views/bigScreen/largeSreenMiddle.vue b/src/views/bigScreen/largeSreenMiddle.vue index c28b0222..72172341 100644 --- a/src/views/bigScreen/largeSreenMiddle.vue +++ b/src/views/bigScreen/largeSreenMiddle.vue @@ -44,7 +44,7 @@ diff --git a/src/views/chaincode/components/contractCatalog.vue b/src/views/chaincode/components/contractCatalog.vue index 2dcbdac6..147507bb 100644 --- a/src/views/chaincode/components/contractCatalog.vue +++ b/src/views/chaincode/components/contractCatalog.vue @@ -14,1317 +14,1510 @@ * limitations under the License. */ diff --git a/src/views/chaincode/contract.vue b/src/views/chaincode/contract.vue index cbd39cfa..36a6f540 100755 --- a/src/views/chaincode/contract.vue +++ b/src/views/chaincode/contract.vue @@ -14,385 +14,492 @@ * limitations under the License. */ \ No newline at end of file diff --git a/src/views/chaincode/dialog/addFile.vue b/src/views/chaincode/dialog/addFile.vue index 8d6fb4fb..4d2c3278 100644 --- a/src/views/chaincode/dialog/addFile.vue +++ b/src/views/chaincode/dialog/addFile.vue @@ -18,7 +18,7 @@
- + diff --git a/src/views/chaincode/dialog/changeUser.vue b/src/views/chaincode/dialog/changeUser.vue index 9cc74a4a..84e573fb 100755 --- a/src/views/chaincode/dialog/changeUser.vue +++ b/src/views/chaincode/dialog/changeUser.vue @@ -14,86 +14,110 @@ * limitations under the License. */ diff --git a/src/views/chaincode/dialog/checkDeploy.vue b/src/views/chaincode/dialog/checkDeploy.vue new file mode 100644 index 00000000..90240f41 --- /dev/null +++ b/src/views/chaincode/dialog/checkDeploy.vue @@ -0,0 +1,420 @@ + + + + + diff --git a/src/views/chaincode/dialog/checkMethod.vue b/src/views/chaincode/dialog/checkMethod.vue new file mode 100644 index 00000000..1b1ef3d0 --- /dev/null +++ b/src/views/chaincode/dialog/checkMethod.vue @@ -0,0 +1,669 @@ + + + + + diff --git a/src/views/chaincode/dialog/freezeThaw.vue b/src/views/chaincode/dialog/freezeThaw.vue index 62edca09..5b114812 100644 --- a/src/views/chaincode/dialog/freezeThaw.vue +++ b/src/views/chaincode/dialog/freezeThaw.vue @@ -5,7 +5,7 @@ {{item.userName}} - {{item.address | splitString}}... + {{item.address | splitString}} diff --git a/src/views/chaincode/dialog/resetDialog.vue b/src/views/chaincode/dialog/resetDialog.vue new file mode 100644 index 00000000..f85b35a3 --- /dev/null +++ b/src/views/chaincode/dialog/resetDialog.vue @@ -0,0 +1,452 @@ + + + + + diff --git a/src/views/chaincode/dialog/setAdmin.vue b/src/views/chaincode/dialog/setAdmin.vue new file mode 100644 index 00000000..e8d48613 --- /dev/null +++ b/src/views/chaincode/dialog/setAdmin.vue @@ -0,0 +1,524 @@ + + + + + diff --git a/src/views/chaincode/dialog/setPolicy.vue b/src/views/chaincode/dialog/setPolicy.vue new file mode 100644 index 00000000..fd20a57a --- /dev/null +++ b/src/views/chaincode/dialog/setPolicy.vue @@ -0,0 +1,541 @@ + + + + + diff --git a/src/views/chaincode/oldContract.vue b/src/views/chaincode/oldContract.vue index ac33c7e9..21b4783c 100644 --- a/src/views/chaincode/oldContract.vue +++ b/src/views/chaincode/oldContract.vue @@ -20,6 +20,9 @@
{{this.$t("nodes.addAbi")}} {{$t('title.parseAbi')}} + {{$t('title.resetContractUser')}} + {{$t('title.checkDeploy')}} + {{$t('title.checkMethod')}}
@@ -70,9 +73,11 @@ {{$t('contracts.sendTransaction')}} {{$t('contracts.updateAbi')}} {{$t('contracts.deleteAbi')}} + {{$t('contracts.setPolicy')}} + {{$t('contracts.setAdmin')}} - - + {{$t('text.cns')}} + {{$t('title.checkEvent')}} @@ -82,9 +87,9 @@
- + - + @@ -100,6 +105,21 @@ + + + + + + + + + + + + + + + @@ -109,14 +129,20 @@ import sendTransation from "@/components/sendTransaction"; import editor from "@/components/editor" import abiDialog from "./dialog/abiDialog" +import resetDialog from "./dialog/resetDialog.vue" +import checkDeploy from "./dialog/checkDeploy.vue" +import checkMethod from "./dialog/checkMethod.vue" +import setPolicy from "./dialog/setPolicy.vue" +import setAdmin from "./dialog/setAdmin.vue" import freezeThaw from "./dialog/freezeThaw" import checkEventDialog from "./dialog/checkEventDialog" import checkEventResult from "./dialog/checkEventResult" import mgmtCns from "./dialog/mgmtCns" -import { getContractList, getAllContractStatus, deleteHandleHistory, getAllAbiList, deleteImportAbi, deleteCode } from "@/util/api" +import {getFronts, getContractList, getAllContractStatus, deleteHandleHistory, getAllAbiList, deleteImportAbi, deleteCode,checkIsWasm } from "@/util/api" import importAbi from "../abiList/components/importAbi" import updateAbi from "../abiList/components/updateAbi" import router from '@/router' +import Bus from "@/bus"; export default { name: "registeredContract", components: { @@ -128,7 +154,12 @@ export default { checkEventResult, mgmtCns, importAbi, - updateAbi + updateAbi, + resetDialog, + checkDeploy, + checkMethod, + setPolicy, + setAdmin }, data: function () { return { @@ -207,7 +238,15 @@ export default { mgmtCnsItem: {}, importVisibility: false, updateVisibility: false, - updateItem: null + resetVisibility: false, + checkVisibility:false, + checkMethodVisibility:false, + setPolicyVisibility:false, + setAdminVisibility:false, + checkMethodVisibility:false, + updateItem: null, + setPolicyItem:null, + liquidCheck: false, } }, created() { @@ -222,10 +261,62 @@ export default { this.disabled = true } if (localStorage.getItem("groupId")) { - this.getContracts() + this.getfrontList() + this.getContracts() + } + Bus.$on("changGroup", (data) => { + this.getfrontList() + this.getContracts() + }); }, methods: { + getfrontList() { + let reqData = { + frontId: this.frontId, + }; + getFronts(reqData) + .then((res) => { + if (res.data.code === 0) { + this.frontList = res.data.data || []; + this.frontId = this.frontList[0].frontId; + this.loading = false; + this.liquidCheckMethod(); + } else { + this.loading = false; + this.$message({ + message: this.$chooseLang(res.data.code), + type: "error", + duration: 2000, + }); + } + }) + .catch((err) => { + this.loading = false; + this.$message({ + message: err.data || this.$t("text.systemError"), + type: "error", + duration: 2000, + }); + }); + }, + liquidCheckMethod() { + let groupId = localStorage.getItem("groupId"); + checkIsWasm(this.frontId,groupId) + .then((res) => { + if (res.data.data == true) { + this.liquidCheck = false; + } else{ + this.liquidCheck = true; + } + }) + .catch((err) => { + this.$message({ + type: "error", + message: err.data || this.$t("text.systemError"), + }); + }); + }, formatterPath: function(row) { let str = row ? row : "-" return str @@ -412,6 +503,14 @@ export default { this.updateItem = val; this.updateVisibility = true; }, + setPolicy(val){ + this.setPolicyItem=val; + this.setPolicyVisibility=true + }, + setAdmin(val){ + this.setPolicyItem=val; + this.setAdminVisibility=true + }, updateSuccess() { this.updateVisibility = false; this.getContracts() @@ -419,6 +518,45 @@ export default { routeAbi() { this.$router.push("/parseAbi") }, + resetSuccess(){ + this.resetVisibility=false + }, + checkSuccess(){ + this.checkVisibility=false + }, + setPolicySuccess(){ + this.setPolicyVisibility=false + }, + setAdminSuccess(){ + this.setAdminVisibility=false + }, + checkMethodSuccess(){ + this.checkMethodVisibility=false + }, + closeCheckMethod(){ + this.checkMethodVisibility=false + }, + closeCheck(){ + this.checkVisibility=false + }, + closeSetPolicy(){ + this.setPolicyVisibility=false + }, + closeSetAdmin(){ + this.setAdminVisibility=false + }, + closeReset(){ + this.resetVisibility=false + }, + resetContractUser(){ + this.resetVisibility=true + }, + checkDeploy(){ + this.checkVisibility=true + }, + checkMethod(){ + this.checkMethodVisibility=true + }, deleteAbi(val) { this.$confirm(this.$t('text.confirmDelete')) .then(_ => { @@ -548,7 +686,10 @@ export default { this.abiData = null }, search: function () { - if (this.contractData && this.contractData.length && this.contractData.length < 20) { + if (this.contractData && this.contractData.length && this.contractData.substring(0,1)=='/') { + this.contractAddress = this.contractData; + this.contractName = "" + } else if (this.contractData && this.contractData.length && this.contractData.length < 20) { this.contractName = this.contractData; this.contractAddress = "" } else if (this.contractData && this.contractData.length && (this.contractData.length > 20 || this.contractData.length == 20)) { diff --git a/src/views/chaincode/totalContract.vue b/src/views/chaincode/totalContract.vue index 850378ca..4abd3993 100644 --- a/src/views/chaincode/totalContract.vue +++ b/src/views/chaincode/totalContract.vue @@ -60,7 +60,7 @@ - + @@ -77,7 +77,7 @@ diff --git a/src/views/committeeMgmt/components/bindKey.vue b/src/views/committeeMgmt/components/bindKey.vue new file mode 100644 index 00000000..e6df314f --- /dev/null +++ b/src/views/committeeMgmt/components/bindKey.vue @@ -0,0 +1,349 @@ + + + + + diff --git a/src/views/committeeMgmt/components/creatUser.vue b/src/views/committeeMgmt/components/creatUser.vue new file mode 100644 index 00000000..a2c51f35 --- /dev/null +++ b/src/views/committeeMgmt/components/creatUser.vue @@ -0,0 +1,276 @@ +/* + * Copyright 2014-2020 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + + + diff --git a/src/views/committeeMgmt/components/exportKey.vue b/src/views/committeeMgmt/components/exportKey.vue new file mode 100644 index 00000000..bf8b70a7 --- /dev/null +++ b/src/views/committeeMgmt/components/exportKey.vue @@ -0,0 +1,309 @@ + + + + + diff --git a/src/views/committeeMgmt/components/importKey.vue b/src/views/committeeMgmt/components/importKey.vue new file mode 100644 index 00000000..6bbd3fc3 --- /dev/null +++ b/src/views/committeeMgmt/components/importKey.vue @@ -0,0 +1,364 @@ + + + + + diff --git a/src/views/committeeMgmt/index.vue b/src/views/committeeMgmt/index.vue index f5a952dc..2e233b84 100644 --- a/src/views/committeeMgmt/index.vue +++ b/src/views/committeeMgmt/index.vue @@ -1,929 +1,1228 @@ diff --git a/src/views/configManagement/components/systemConfig.vue b/src/views/configManagement/components/systemConfig.vue index fe8b692f..70d107fe 100644 --- a/src/views/configManagement/components/systemConfig.vue +++ b/src/views/configManagement/components/systemConfig.vue @@ -8,7 +8,7 @@ {{item.userName}} - {{item.address | splitString}}... + {{item.address | splitString}} @@ -16,7 +16,7 @@
- +
@@ -115,14 +115,19 @@ export default { let reqData = { groupId: localStorage.getItem("groupId"), configKey: this.configKey, - configValue: this.modifyForm.configValue, + configValue: this.modifyForm.configValue.toString(), fromAddress: this.modifyForm.adminRivateKey, + signUserId:'' } querySysConfig(reqData) .then(res => { this.loading = false; if (res.data.code === 0) { this.$emit('modifySuccess') + this.$message({ + type: 'success', + message: this.$t('text.updateSuccessMsg') + }) } else { this.$message({ message: this.$chooseLang(res.data.code), diff --git a/src/views/configManagement/index.vue b/src/views/configManagement/index.vue index 5dc52a82..743ec5d5 100644 --- a/src/views/configManagement/index.vue +++ b/src/views/configManagement/index.vue @@ -140,8 +140,8 @@ export default { getSysConfigList() { let reqData = { groupId: localStorage.getItem("groupId"), - pageNumber: this.currentPage, - pageSize: this.pageSize, + // pageNumber: this.currentPage, + // pageSize: this.pageSize, } querySysConfigList(reqData) .then(res => { diff --git a/src/views/developerMgmt/components/developerDialog.vue b/src/views/developerMgmt/components/developerDialog.vue index c425fe8b..0e1b5d5b 100644 --- a/src/views/developerMgmt/components/developerDialog.vue +++ b/src/views/developerMgmt/components/developerDialog.vue @@ -5,7 +5,7 @@ {{item.userName}} - {{item.address | splitString}}... + {{item.address | splitString}} @@ -16,7 +16,7 @@ {{item.userName}} - {{item.address | splitString}}... + {{item.address | splitString}} diff --git a/src/views/developerMgmt/index.vue b/src/views/developerMgmt/index.vue index e7e7778c..920c2c3e 100644 --- a/src/views/developerMgmt/index.vue +++ b/src/views/developerMgmt/index.vue @@ -13,9 +13,12 @@ {{userName(scope.row['address'])}} {{scope.row[head.enName]}} - + @@ -93,7 +96,7 @@ export default { this.disabled = true } if (localStorage.getItem("groupId")) { - this.queryOperatorList() + //this.queryOperatorList() this.getUserData() } }, diff --git a/src/views/eventCheck/index.vue b/src/views/eventCheck/index.vue index 4c6da255..bd3d0ba1 100644 --- a/src/views/eventCheck/index.vue +++ b/src/views/eventCheck/index.vue @@ -1,572 +1,601 @@ diff --git a/src/views/front/components/hostDetail.vue b/src/views/front/components/hostDetail.vue index aa301dbb..3c63ee38 100644 --- a/src/views/front/components/hostDetail.vue +++ b/src/views/front/components/hostDetail.vue @@ -15,7 +15,7 @@ */ @@ -102,6 +110,19 @@ + + +
@@ -109,6 +130,7 @@ diff --git a/src/views/groupManagement/components/modifyNodeType.vue b/src/views/groupManagement/components/modifyNodeType.vue index bacf3d26..d4c9e568 100644 --- a/src/views/groupManagement/components/modifyNodeType.vue +++ b/src/views/groupManagement/components/modifyNodeType.vue @@ -8,7 +8,7 @@ {{item.userName}} - {{item.address | splitString}}... + {{item.address | splitString}} diff --git a/src/views/groupManagement/index.vue b/src/views/groupManagement/index.vue index 65c80d54..3ec6f9aa 100644 --- a/src/views/groupManagement/index.vue +++ b/src/views/groupManagement/index.vue @@ -16,13 +16,7 @@ @click="addHadGroup" >{{ this.$t("nodes.addHadGroup") }} --> - {{ this.$t('alarm.refresh') }} + {{ this.$t('alarm.refresh') }}
@@ -52,20 +46,8 @@ >{{ $t("text.update") }} --> {{ $t("text.dropGroupData") }} - + {{ $t("system.export") }} + {{ $t("text.remarks") }} @@ -118,6 +100,7 @@ import { getUpdateGroup, getGroupsInvalidIncluded, deleteGroupData, + changeDescription, } from "@/util/api"; const FileSaver = require("file-saver"); export default { @@ -151,6 +134,10 @@ export default { modifyGroupId: "", joinGroupTipsVisibility: false, descriptionShow: false, + nodes: { + description: "", + groupId: "", + }, }; }, @@ -371,6 +358,11 @@ export default { break; } }, + remarks(val) { + this.descriptionShow = true; + this.nodes.description = val.description; + this.nodes.groupId = val.groupId; + }, handleSizeChange(val) { this.pageSize = val; this.currentPage = 1; @@ -397,6 +389,34 @@ export default { break; } }, + changeDescriptions() { + let reqData = { + groupId: this.nodes.groupId, + description: this.nodes.description, + }; + changeDescription(reqData) + .then((res) => { + if (res.data.code === 0) { + this.$message({ + type: "success", + message: "修改成功", + }); + this.descriptionShow = false; + this.queryGroupTable(); + } + }) + .catch((err) => { + this.loading = false; + this.$message({ + type: "error", + message: err.data || this.$t("text.systemError"), + }); + this.descriptionShow = false; + }); + }, + closeThis(){ + this.descriptionShow = false; + }, }, }; @@ -405,4 +425,11 @@ export default { .search-part-left-btn { border-radius: 20px; } +.descr { + width: 50%; + margin: 0 auto; +} +.btn { + margin: 0 auto; +} diff --git a/src/views/index/main.vue b/src/views/index/main.vue index 6f099958..8f36518a 100755 --- a/src/views/index/main.vue +++ b/src/views/index/main.vue @@ -163,7 +163,7 @@ export default { }, mounted() { this.getEncryption(); - //this.getConfigList(); + this.getConfigList(); }, methods: { getConfigList: function () { diff --git a/src/views/index/sidebar.vue b/src/views/index/sidebar.vue index 5a5039bd..e42c90cb 100755 --- a/src/views/index/sidebar.vue +++ b/src/views/index/sidebar.vue @@ -14,540 +14,648 @@ * limitations under the License. */ diff --git a/src/views/login/login.vue b/src/views/login/login.vue index a53c89a8..8b9073a2 100755 --- a/src/views/login/login.vue +++ b/src/views/login/login.vue @@ -299,7 +299,7 @@ export default { } else { this.$message({ message: this.$chooseLang(res.data.code), - type: "error", + // type: "error", duration: 2000, }); } diff --git a/src/views/parseAbi/index.vue b/src/views/parseAbi/index.vue index b9ac0842..120fd858 100644 --- a/src/views/parseAbi/index.vue +++ b/src/views/parseAbi/index.vue @@ -314,8 +314,9 @@ export default { type: item.type, name: item.name }) + if(item.type=='string'||item.type=='address'){ inputsVal.push(item.argumentValue)}else{ inputsVal.push(dataType(item.type, item.argumentValue)) - + } }) if (!inputs.length) { this.textarea = ''; @@ -340,6 +341,7 @@ export default { inputs: inputs }, inputsVal) } + //console.log(inputsVal) } catch (error) { this.textarea = error } diff --git a/src/views/permission/components/authorizationRivateKey.vue b/src/views/permission/components/authorizationRivateKey.vue index 32f53a01..6602b614 100644 --- a/src/views/permission/components/authorizationRivateKey.vue +++ b/src/views/permission/components/authorizationRivateKey.vue @@ -6,7 +6,7 @@ {{item.userName}} - {{item.address | splitString}}... + {{item.address | splitString}} @@ -17,7 +17,7 @@ {{item.userName}} - {{item.address | splitString}}... + {{item.address | splitString}} diff --git a/src/views/permission/newPermission.vue b/src/views/permission/newPermission.vue index a4f2f8a7..27234879 100644 --- a/src/views/permission/newPermission.vue +++ b/src/views/permission/newPermission.vue @@ -2,19 +2,20 @@
-
+ +
- +
-
+
@@ -71,7 +72,7 @@ export default { if (this.activeName == 0) { if (localStorage.getItem("groupId")) { this.$refs.committeeMgmt.adminRivateKeyList = []; - this.$refs.committeeMgmt.queryGetThreshold() + // this.$refs.committeeMgmt.queryGetThreshold() this.$refs.committeeMgmt.getUserData() this.$refs.committeeMgmt.queryCommitteeList() this.$refs.committeeMgmt.queryVoteRecordList() diff --git a/src/views/privateKeyManagement/components/importKey.vue b/src/views/privateKeyManagement/components/importKey.vue index 047aa357..85ce2aaa 100644 --- a/src/views/privateKeyManagement/components/importKey.vue +++ b/src/views/privateKeyManagement/components/importKey.vue @@ -12,7 +12,7 @@ - + {{$t('text.hexType')}} {{$t('text.decimalType')}} @@ -31,6 +31,7 @@ +

{{$t('privateKey.importPrivateKeyTip')}}