122 lines
5.7 KiB
HTML
122 lines
5.7 KiB
HTML
<!DOCTYPE HTML>
|
|
|
|
<html xmlns:th="http://www.thymeleaf.org">
|
|
|
|
<head>
|
|
<title>任务确认</title>
|
|
|
|
<meta charset="utf-8">
|
|
<meta name="renderer" content="webkit">
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
<meta http-equiv="Expires" content="0">
|
|
<meta http-equiv="Pragma" content="no-cache">
|
|
<meta http-equiv="Cache-control" content="no-cache">
|
|
<meta http-equiv="Cache" content="no-cache">
|
|
|
|
<meta name="viewport" content="width=device-width,initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no, minimal-ui" />
|
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
<meta name="full-screen" content="true" />
|
|
<meta name="screen-orientation" content="portrait" />
|
|
<meta name="x5-fullscreen" content="true" />
|
|
<meta name="360-fullscreen" content="true" />
|
|
<meta name="apple-mobile-web-app-title" content="WJTX">
|
|
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
|
|
<link rel="stylesheet" type="text/css" href="assets/css/main.css"/>
|
|
</head>
|
|
|
|
<body>
|
|
<div id="app" class="container">
|
|
<div class="alert alert-dismissible fixed-top" :class="'alert-'+alertType" role="alert" v-if="alertShow">
|
|
<div>{{alertMsg}}</div>
|
|
<button type="button" class="btn-close" @click="closeAlert" aria-label="Close"></button>
|
|
</div>
|
|
<div class="page-header">
|
|
<h1>
|
|
{{task.name}} - <small>{{task.starterName}}</small>
|
|
</h1>
|
|
<p>{{task.desc}}</p>
|
|
<p>本次申请包含<b>{{subTasks.length}}</b>个链操作任务</p>
|
|
</div>
|
|
<div class="hstack gap-3 mb-1" v-if="hasRole">
|
|
<template v-if="!walletConnect">
|
|
<button type="button" class="btn btn-info" @click="initWallet">连接钱包</button>
|
|
<div class="vr"></div>
|
|
</template>
|
|
<template v-if="showConfirm">
|
|
<button type="button" class="btn btn-primary" @click="confirmTask">确认</button>
|
|
<div class="vr"></div>
|
|
</template>
|
|
<button type="button" class="btn btn-danger" v-if="showCancel" @click="rejectTask">取消</button>
|
|
</div>
|
|
<div class="hstack gap-3 mb-1" v-if="!hasRole">
|
|
<span class="badge text-bg-danger">没有操作权限<span>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="col-md-12">
|
|
<div class="accordion" id="accordionExample">
|
|
<div class="accordion-item" v-for="(item, i) in subTasks" >
|
|
<h2 class="accordion-header" :id="'heading'+i">
|
|
<button class="accordion-button" type="button" data-bs-toggle="collapse" :data-bs-target="'#collapse'+i" aria-expanded="true" :aria-controls="'collapse'+i">
|
|
任务数{{item.index}}: {{item.reqDatas.length}}
|
|
<div class="spinner-border" role="status" v-if="loading">
|
|
<span class="visually-hidden">Loading...</span>
|
|
</div>
|
|
<template v-for="sub in item.statusArr">
|
|
<span class="badge" :class="'text-bg-'+sub[1]">{{sub[0]}}</span>
|
|
</template>
|
|
</button>
|
|
</h2>
|
|
<div :id="'collapse'+i" class="accordion-collapse collapse show" :aria-labelledby="'heading'+i" data-bs-parent="#accordionExample">
|
|
<div class="accordion-body">
|
|
<div v-for="sub in item.reqDatas" class="border-bottom">
|
|
<p><label class="text-secondary">类型:</label> {{showType(sub.type)}}</p>
|
|
<p class="small-address"><label class="text-secondary">合约地址: </label>{{sub.address}}</p>
|
|
<p class="small-address" v-if="sub.from"><label class="text-secondary">转出钱包: </label>{{sub.from}}</p>
|
|
<p class="small-address"><label class="text-secondary">目标钱包: </label>{{sub.to}}</p>
|
|
<p v-if="sub.amount"><label class="text-secondary">数量: </label>{{sub.amount}}</p>
|
|
<p v-if="sub.tokenid || sub.tokenId"><label class="text-secondary">NFT ID: </label>{{sub.tokenId || sub.tokenid}}</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="loader" id="loader" v-if="loadingMask">
|
|
<div class="loader-inner">
|
|
<div class="loader-line-wrap">
|
|
<div class="loader-line"></div>
|
|
</div>
|
|
<div class="loader-line-wrap">
|
|
<div class="loader-line"></div>
|
|
</div>
|
|
<div class="loader-line-wrap">
|
|
<div class="loader-line"></div>
|
|
</div>
|
|
<div class="loader-line-wrap">
|
|
<div class="loader-line"></div>
|
|
</div>
|
|
<div class="loader-line-wrap">
|
|
<div class="loader-line"></div>
|
|
</div>
|
|
</div>
|
|
<div class="loader-tip">
|
|
<div class="msg">{{loadingTxt}}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/vconsole@3.15.0/dist/vconsole.min.js"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/web3@1.9.0/dist/web3.min.js"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/vue@3.2.47/dist/vue.global.min.js"></script>
|
|
<script src="assets/scripts/lib.js"></script>
|
|
<script src="assets/scripts/confirm.js"></script>
|
|
</body>
|
|
|
|
</html>
|