1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116 |
- <template>
- <div class="app-container">
- <div class="top">
- <div class="title">
- 任务列表
- </div>
- <div class="add">
- <div class="button" @click="addTaskDetails">
- <img src="../../assets/airdrop/add.svg" alt="add">
- 添加任务
- </div>
- </div>
- </div>
- <div class="app-container-table-screening">
- <div class="app-container-table-screening-item">
- 账号类型
- <img src="../../assets/address/unfold_more.svg" alt="unfold_more">
- </div>
- <div class="app-container-table-screening-item">
- 余额
- <img src="../../assets/address/unfold_more.svg" alt="unfold_more">
- </div>
- </div>
- <div class="app-container-table-main">
- <div class="app-container-table-main-item" v-for="(item,index) in missionData">
- <div class="head">
- <div class="avatar">
- <img class="avatar" :src="url + 'disk/file/' + item.projectLogo" alt="avatar">
- </div>
- <div class="name" @click="viewTaskDetails(item)">
- <div class="missionName">
- {{ item.taskName }}
- <img src="../../assets/autoplay/arrow_forward.svg" alt="arrow_forward">
- </div>
- <div class="projectName">
- {{ item.projectName }}
- </div>
- </div>
- </div>
- <div class="jump" @click="viewExecutionHistory(item)">
- 执行记录
- <img src="../../assets/autoplay/arrow_forward.svg" alt="arrow_forward">
- </div>
- <div class="implementationStrategy">
- <!-- <div class="item" v-if="item.implementationStrategy.length > 0" v-for="(item1,index) in item.implementationStrategy">-->
- <!-- {{item1}}-->
- <!-- </div>-->
- <div class="item-no">
- 暂无
- </div>
- </div>
- <div class="implementationStrategyText">
- 执行策略
- </div>
- <div class="underImplementation" v-if="item.executeStatus === 0">
- <div class="numberOfExecutions">
- <div class="text">
- 当前执行/计划执行次数
- </div>
- <div class="number">
- {{ item.executeTimes }}/{{ item.planTimes }}
- </div>
- </div>
- <div class="progressBar" @click="progressBarDetails(item)">
- <div class="progressBar-blue">
- <img src="../../assets/autoplay/airplanemode_active.svg" alt="airplanemode_active">
- 进行中
- </div>
- <div class="details">
- 详情
- <img src="../../assets/autoplay/arrow_forward.svg" alt="arrow_forward">
- </div>
- </div>
- </div>
- <div class="batchExecution" v-if="item.executeStatus !== 0">
- <div class="left">
- <div class="number">
- {{ item.executeTimes }}/{{ item.planTimes }}
- </div>
- <div class="text">
- 当前执行/计划执行次数
- </div>
- </div>
- <div class="right" @click="batchExecution(item)">
- <img src="../../assets/autoplay/autoplay.svg" alt="autoplay">
- 批量执行
- </div>
- </div>
- <div class="horizontalLine"/>
- <div class="time">
- 上次执行时间: {{ item.lastExecuteTime }}
- </div>
- </div>
- </div>
- <el-drawer
- :visible.sync="drawerDetails"
- :with-header="false">
- <div class="drawerAddress-container">
- <div class="drawerAddress-container-head">
- <div class="drawerAddress-container-head-left">
- <div class="avatar">
- <img class="avatar" :src="url + 'disk/file/' + currentTaskInfo.projectLogo" alt="avatar">
- </div>
- <div class="info">
- <div class="projectName">
- {{ currentTaskInfo.projectName }}
- </div>
- <div class="id">
- {{ currentTaskInfo.amsTaskId }}
- </div>
- </div>
- </div>
- <div class="drawerAddress-container-head-right">
- <div class="complete" @click="modifyTask">
- <img src="../../assets/address/done_all.svg" alt="done_all">
- 完成
- </div>
- </div>
- </div>
- <div class="drawerAddress-container-main">
- <div class="title">
- 任务详情
- </div>
- <div class="input">
- 任务名称
- <el-input v-model="currentTaskInfo.taskName" placeholder="任务名称"></el-input>
- </div>
- <div class="select">
- <div class="input">
- 选择类型
- <el-select style="width: 140px" v-model="currentTaskInfo.taskType" placeholder="选择类型">
- <el-option
- v-for="item in optionsTaskType"
- :key="item.value"
- :label="item.label"
- :value="item.value">
- </el-option>
- </el-select>
- </div>
- <div class="input">
- 任务code
- <el-input v-model="currentTaskInfo.taskCode" placeholder="任务code"></el-input>
- </div>
- </div>
- <div class="input">
- 计划任务执行次数
- <el-input v-model="currentTaskInfo.planTimes" placeholder="计划任务执行次数"></el-input>
- </div>
- <div class="input">
- 预估GAS
- <el-input v-model="currentTaskInfo.estimatedGas" placeholder="预估GAS"></el-input>
- </div>
- </div>
- </div>
- </el-drawer>
- <el-drawer
- :visible.sync="drawerRecord"
- :with-header="false"
- @closed="drawerRecordClosed">
- <div class="drawerRecord-container" v-if="drawerRecordStatus === 0">
- <div class="drawerAddress-container-head">
- <div class="drawerAddress-container-head-left">
- <div class="missionName">
- <div class="name">
- 任务名称
- </div>
- </div>
- <div class="text">
- 查看历史交互记录
- </div>
- </div>
- </div>
- <div class="drawerAddress-container-main">
- <div class="drawerAddress-container-head-left">
- <div class="avatar">
- <img class="avatar" :src="url + 'disk/file/' + currentTaskInfo.projectLogo" alt="avatar">
- </div>
- <div class="info">
- <div class="projectName">
- {{ currentTaskInfo.projectName }}
- </div>
- <div class="webLink">
- <img src="../../assets/autoplay/language.svg" alt="language">
- <!-- {{currentTaskInfo.projectUrl}}-->
- <a :href="currentTaskInfo.projectUrl" target="_blank">{{ currentTaskInfo.projectUrl }}</a>
- </div>
- </div>
- </div>
- <div class="horizontalLine"/>
- <div class="recordTitle">
- <div class="left">
- <div class="text">
- 执行记录
- </div>
- <div class="number">
- 累计执行: {{ recordData.length }}
- </div>
- </div>
- <div class="right">
- <!-- <el-date-picker-->
- <!-- v-model="value1"-->
- <!-- type="daterange"-->
- <!-- range-separator="至"-->
- <!-- start-placeholder="开始日期"-->
- <!-- end-placeholder="结束日期">-->
- <!-- </el-date-picker>-->
- </div>
- </div>
- <div class="table">
- <el-table
- :data="recordData"
- style="width: 100%">
- <el-table-column
- prop="executeId"
- label="执行ID">
- </el-table-column>
- <el-table-column
- prop="createTime"
- label="时间">
- </el-table-column>
- <el-table-column
- prop="groupName"
- label="钱包名称">
- </el-table-column>
- <el-table-column
- prop="totalGas"
- label="总GAS">
- </el-table-column>
- <el-table-column
- prop="executeStatus"
- label="状态"
- width="120"
- align="center">
- <template v-slot="scope">
- <div class="status" v-if="scope.row.executeStatus === 0" @click="viewRecordDetails(scope.row,1)">
- <div class="text" style="color: #2980FF;">
- <img src="../../assets/autoplay/clock_loader_60.svg" alt="clock_loader_60">
- 进行中
- </div>
- <img src="../../assets/autoplay/chevron_right.svg" alt="chevron_right">
- </div>
- <div class="status" v-if="scope.row.executeStatus === 1" @click="viewRecordDetails(scope.row,2)">
- <div class="text">
- <img src="../../assets/autoplay/check.svg" alt="check">
- 已完成
- </div>
- <img src="../../assets/autoplay/chevron_right.svg" alt="chevron_right">
- </div>
- <div class="status" v-if="scope.row.executeStatus === 2" @click="viewRecordDetails(scope.row,3)">
- <div class="text" style="color: #EB5757">
- <img src="../../assets/autoplay/cancel.svg" alt="cancel">
- 未完成
- </div>
- <img src="../../assets/autoplay/chevron_right.svg" alt="chevron_right">
- </div>
- </template>
- </el-table-column>
- </el-table>
- </div>
- </div>
- <div class="drawerView-container-footer">
- <div class="pagination">
- <el-pagination
- small
- layout="prev, pager, next"
- :page-size="10"
- :total="3">
- </el-pagination>
- </div>
- </div>
- </div>
- <div class="drawerRecord-container" v-if="drawerRecordStatus === 1">
- <div class="drawerAddress-container-head">
- <div class="drawerAddress-container-head-left">
- <div class="back" style="cursor: pointer;" @click="drawerRecordStatus = 0">
- <img src="../../assets/autoplay/arrow_left_alt.svg" alt="arrow_left_alt">
- 返回
- </div>
- <div class="missionName">
- <div class="id">
- {{ currentTaskInfo.amsTaskId }}
- </div>
- <div class="name">
- {{ currentTaskInfo.taskName }}
- </div>
- </div>
- <div class="text" style="color: #2980FF">
- 任务交互类型: {{ currentTaskInfo.taskType }}
- </div>
- </div>
- </div>
- <div class="drawerAddress-container-main">
- <div class="interactionStrategy">
- <div class="item">
- <div class="title">
- <img src="../../assets/autoplay/account_balance_wallet.svg" alt="account_balance_wallet">
- 交互钱包
- </div>
- <div class="info">
- {{ currentRecordData.groupName }}
- </div>
- </div>
- <div class="item">
- <div class="title">
- <img src="../../assets/autoplay/avg_pace.svg" alt="avg_pace">
- 最小间隔时间
- </div>
- <div class="info">
- {{ currentRecordData.intervalMin }}/分
- </div>
- </div>
- <div class="item">
- <div class="title">
- <img src="../../assets/autoplay/avg_pace.svg" alt="avg_pace">
- 最大间隔时间
- </div>
- <div class="info">
- {{ currentRecordData.intervalMax }}/分
- </div>
- </div>
- <div class="item">
- <div class="title">
- <img src="../../assets/autoplay/gas_meter.svg" alt="gas_meter">
- 最大 Gas fee
- </div>
- <div class="info">
- {{ currentRecordData.maxGas }}
- </div>
- </div>
- <div class="item" v-for="item in currentRecordData.airdropParams">
- <div class="title">
- {{ item.note }}
- </div>
- <div class="info">
- {{ item.value }}
- </div>
- </div>
- </div>
- <div class="recordTitle">
- <div class="left">
- <div class="text">
- 正在进行中
- </div>
- <div class="number">
- 总计交互地址: {{ ongoingDataTotal }}
- </div>
- </div>
- <!-- <div class="right" style="cursor: pointer" @click="refresh">-->
- <!-- <img src="../../assets/autoplay/Frame.svg" alt="Frame">-->
- <!-- </div>-->
- <div class="button" @click="refresh">
- <img src="../../assets/autoplay/Frame.svg" alt="Frame">
- 刷新
- </div>
- </div>
- <div class="table">
- <el-table
- :data="ongoingData"
- style="width: 100%">
- <el-table-column
- prop="address"
- label="地址"
- width="150">
- </el-table-column>
- <el-table-column
- label="金额"
- prop="amount">
- </el-table-column>
- <el-table-column
- label="Gas"
- prop="gas">
- </el-table-column>
- <el-table-column
- label="TX ID"
- prop="txId">
- </el-table-column>
- <el-table-column
- label="状态"
- prop="status">
- <template v-slot="scope">
- <div class="status" style="cursor: auto">
- <div class="text" v-if="scope.row.status === 0" style="color: #EB5757;">
- <img src="../../assets/autoplay/cancel.svg" alt="cancel">
- 未完成
- </div>
- <div class="text" v-if="scope.row.status === 1">
- <img src="../../assets/autoplay/check.svg" alt="check">
- 已完成
- </div>
- </div>
- </template>
- </el-table-column>
- </el-table>
- </div>
- </div>
- <div class="drawerView-container-footer">
- <div class="pagination">
- <el-pagination
- small
- layout="prev, pager, next"
- :page-size="10"
- :total="3">
- </el-pagination>
- </div>
- </div>
- <div class="progressBarBox">
- <div class="progressBar">
- <div class="progressBar-two">
- <img src="../../assets/autoplay/motion_photos_paused.svg" alt="motion_photos_paused">
- 当前执行进度
- </div>
- <div class="number">
- {{ currentTaskInfo.executeTimes }}/{{ currentTaskInfo.planTimes }}
- </div>
- </div>
- </div>
- </div>
- <div class="drawerRecord-container" v-if="drawerRecordStatus === 2">
- <div class="drawerAddress-container-head">
- <div class="drawerAddress-container-head-left">
- <div class="back" style="cursor: pointer;" @click="drawerRecordStatus = 0">
- <img src="../../assets/autoplay/arrow_left_alt.svg" alt="arrow_left_alt">
- 返回
- </div>
- <div class="missionName">
- <div class="id">
- {{ currentTaskInfo.amsTaskId }}
- </div>
- <div class="name">
- {{ currentTaskInfo.taskName }}
- </div>
- </div>
- <div class="text" style="color: #2980FF">
- 任务交互类型: {{ currentTaskInfo.taskType }}
- </div>
- </div>
- </div>
- <div class="drawerAddress-container-main">
- <div class="interactionStrategy">
- <div class="item">
- <div class="title">
- <img src="../../assets/autoplay/account_balance_wallet.svg" alt="account_balance_wallet">
- 交互钱包
- </div>
- <div class="info">
- {{ currentRecordData.groupName }}
- </div>
- </div>
- <div class="item">
- <div class="title">
- <img src="../../assets/autoplay/avg_pace.svg" alt="avg_pace">
- 最小间隔时间
- </div>
- <div class="info">
- {{ currentRecordData.intervalMin }}/分
- </div>
- </div>
- <div class="item">
- <div class="title">
- <img src="../../assets/autoplay/avg_pace.svg" alt="avg_pace">
- 最大间隔时间
- </div>
- <div class="info">
- {{ currentRecordData.intervalMax }}/分
- </div>
- </div>
- <div class="item" v-for="item in currentRecordData.airdropParams">
- <div class="title">
- {{ item.note }}
- </div>
- <div class="info">
- {{ item.value }}
- </div>
- </div>
- </div>
- <div class="recordTitle">
- <div class="left">
- <div class="text">
- 已完成
- </div>
- <div class="number">
- 总计交互地址: {{ ongoingDataTotal }}
- </div>
- </div>
- </div>
- <div class="table">
- <el-table
- :data="ongoingData"
- style="width: 100%">
- <el-table-column
- prop="address"
- label="地址"
- width="150">
- </el-table-column>
- <el-table-column
- label="金额"
- prop="amount">
- </el-table-column>
- <el-table-column
- label="Gas"
- prop="gas">
- </el-table-column>
- <el-table-column
- label="TX ID"
- prop="txId">
- </el-table-column>
- <el-table-column
- label="状态"
- prop="status">
- <template v-slot="scope">
- <div class="status" style="cursor: auto">
- <div class="text">
- <img src="../../assets/autoplay/check.svg" alt="check">
- 已完成
- </div>
- </div>
- </template>
- </el-table-column>
- </el-table>
- </div>
- </div>
- <div class="drawerView-container-footer">
- <div class="pagination">
- <el-pagination
- small
- layout="prev, pager, next"
- :page-size="10"
- :total="3">
- </el-pagination>
- </div>
- </div>
- <div class="progressBarBox">
- <div class="progressBar" style="background: black">
- <div class="progressBar-two" style="background: black">
- <img src="../../assets/autoplay/done_all.svg" alt="done_all">
- 执行进度已完成
- </div>
- <!-- <div class="number">-->
- <!-- {{ currentTaskInfo.executeTimes }}/{{ currentTaskInfo.planTimes }}-->
- <!-- </div>-->
- </div>
- </div>
- </div>
- <div class="drawerRecord-container" v-if="drawerRecordStatus === 3">
- <div class="drawerAddress-container-head">
- <div class="drawerAddress-container-head-left">
- <div class="back" style="cursor: pointer;" @click="drawerRecordStatus = 0">
- <img src="../../assets/autoplay/arrow_left_alt.svg" alt="arrow_left_alt">
- 返回
- </div>
- <div class="missionName">
- <div class="id">
- {{ currentTaskInfo.amsTaskId }}
- </div>
- <div class="name">
- {{ currentTaskInfo.taskName }}
- </div>
- </div>
- <div class="text" style="color: #2980FF">
- 任务交互类型: {{ currentTaskInfo.taskType }}
- </div>
- </div>
- </div>
- <div class="drawerAddress-container-main">
- <div class="interactionStrategy">
- <div class="item">
- <div class="title">
- <img src="../../assets/autoplay/account_balance_wallet.svg" alt="account_balance_wallet">
- 交互钱包
- </div>
- <div class="info">
- {{ currentRecordData.groupName }}
- </div>
- </div>
- <div class="item">
- <div class="title">
- <img src="../../assets/autoplay/avg_pace.svg" alt="avg_pace">
- 最小间隔时间
- </div>
- <div class="info">
- {{ currentRecordData.intervalMin }}/分
- </div>
- </div>
- <div class="item">
- <div class="title">
- <img src="../../assets/autoplay/avg_pace.svg" alt="avg_pace">
- 最大间隔时间
- </div>
- <div class="info">
- {{ currentRecordData.intervalMax }}/分
- </div>
- </div>
- <div class="item">
- <div class="title">
- <img src="../../assets/autoplay/gas_meter.svg" alt="gas_meter">
- 最大 Gas fee
- </div>
- <div class="info">
- {{ currentRecordData.maxGas }}
- </div>
- </div>
- <div class="item" v-for="item in currentRecordData.airdropParams">
- <div class="title">
- {{ item.note }}
- </div>
- <div class="info">
- {{ item.value }}
- </div>
- </div>
- </div>
- <div class="recordTitle">
- <div class="left">
- <div class="text">
- 正在进行中
- </div>
- <div class="number">
- 总计交互地址: {{ ongoingDataTotal }}
- </div>
- </div>
- <div style="display: flex;align-items: center;gap:32px">
- <div class="button" style="color: #EB5757" @click="retryPassword = true">
- <img src="../../assets/autoplay/retry.svg" alt="retry">
- 重试失败
- </div>
- <div class="button" @click="refresh">
- <img src="../../assets/autoplay/Frame.svg" alt="Frame">
- 刷新
- </div>
- </div>
- </div>
- <div class="table">
- <el-table
- :data="ongoingData"
- style="width: 100%">
- <el-table-column
- prop="address"
- label="地址"
- width="150">
- </el-table-column>
- <el-table-column
- label="金额"
- prop="amount">
- </el-table-column>
- <el-table-column
- label="Gas"
- prop="gas">
- </el-table-column>
- <el-table-column
- label="TX ID"
- prop="txId">
- </el-table-column>
- <el-table-column
- label="状态"
- prop="status">
- <template v-slot="scope">
- <div class="status" style="cursor: auto">
- <div class="text" v-if="scope.row.status === 0" style="color: #EB5757;">
- <img src="../../assets/autoplay/cancel.svg" alt="cancel">
- 未完成
- </div>
- <div class="text" v-if="scope.row.status === 1">
- <img src="../../assets/autoplay/check.svg" alt="check">
- 已完成
- </div>
- </div>
- </template>
- </el-table-column>
- </el-table>
- </div>
- </div>
- <div class="drawerView-container-footer">
- <div class="pagination">
- <el-pagination
- small
- layout="prev, pager, next"
- :page-size="10"
- :total="3">
- </el-pagination>
- </div>
- </div>
- <div class="progressBarBox">
- <div class="progressBar" style="background: #EB5757">
- <div class="progressBar-two" style="background: #EB5757">
- <img src="../../assets/autoplay/done_all.svg" alt="done_all">
- 执行进度已完成,部分失败
- </div>
- <!-- <div class="number">-->
- <!-- {{ currentTaskInfo.executeTimes }}/{{ currentTaskInfo.planTimes }}-->
- <!-- </div>-->
- </div>
- </div>
- <div class="accountPassword" v-if="retryPassword">
- <div class="title">
- 输入钱包密码
- </div>
- <div class="inputTitle">
- 钱包密码
- </div>
- <el-input type="password" :show-password="true" v-model="retryParams.password"
- placeholder="输入钱包密码"></el-input>
- <div class="confirm" @click="retry">
- <img src="../../assets/autoplay/check1.svg" alt="check1">
- 确认
- </div>
- <div class="tip">
- <div class="title">
- <img src="../../assets/address/tips_and_updates.svg" alt="tips_and_updates">
- 提示
- </div>
- <div class="description">
- 此密码为您账户钱包的 Keystore 密码,请妥善保管,
- 系统无法为您找回。
- </div>
- </div>
- </div>
- </div>
- </el-drawer>
- <el-drawer
- :visible.sync="drawerStrategy"
- :with-header="false"
- @closed="accountPassword = false">
- <div class="drawerStrategy-container">
- <div class="drawerAddress-container-head">
- <div class="drawerAddress-container-head-left">
- <div class="info">
- <div class="projectName">
- 执行策略
- </div>
- <div class="id">
- {{ currentTaskInfo.taskType }} | {{ currentTaskInfo.taskName }}
- </div>
- </div>
- </div>
- <div class="drawerAddress-container-head-right">
- <div class="complete" @click="accountPassword = true">
- <img src="../../assets/address/done_all.svg" alt="done_all">
- 下一步
- </div>
- </div>
- </div>
- <div class="drawerAddress-container-main">
- <div class="item">
- <div class="title">
- 交互钱包
- </div>
- <el-select v-model="batchExecutionParams.groupName" placeholder="选择交互钱包">
- <el-option
- v-for="item in optionsAddress"
- :key="item.value"
- :label="item.label"
- :value="item.value">
- </el-option>
- </el-select>
- </div>
- <!-- <div class="item">-->
- <!-- <div class="title">-->
- <!-- 目标资产(From)-->
- <!-- </div>-->
- <!-- <el-select v-model="chainId" placeholder="选择交互资产">-->
- <!-- <el-option-->
- <!-- v-for="item in options"-->
- <!-- :key="item.value"-->
- <!-- :label="item.label"-->
- <!-- :value="item.value">-->
- <!-- </el-option>-->
- <!-- </el-select>-->
- <!-- </div>-->
- <!-- <div class="item">-->
- <!-- <div class="title">-->
- <!-- 目标资产(To)-->
- <!-- </div>-->
- <!-- <el-select v-model="chainId" placeholder="选择交互资产">-->
- <!-- <el-option-->
- <!-- v-for="item in options"-->
- <!-- :key="item.value"-->
- <!-- :label="item.label"-->
- <!-- :value="item.value">-->
- <!-- </el-option>-->
- <!-- </el-select>-->
- <!-- </div>-->
- <div class="item">
- <div class="title">
- 间隔时间
- </div>
- <div style="display: flex;gap:24px">
- <el-input v-model="batchExecutionParams.intervalMin" placeholder="输入最小间隔时间/分"></el-input>
- <el-input v-model="batchExecutionParams.intervalMax" placeholder="输入最大间隔时间/分"></el-input>
- </div>
- </div>
- <!-- <div class="item">-->
- <!-- <div class="title">-->
- <!-- 交互金额-->
- <!-- </div>-->
- <!-- <el-input v-model="batchExecutionParams.amount" placeholder="输入最大交互金额"></el-input>-->
- <!-- </div>-->
- <!-- <div class="item">-->
- <!-- <div class="title">-->
- <!-- 最大 Gas fee-->
- <!-- </div>-->
- <!-- <el-input v-model="batchExecutionParams.maxGas" placeholder="输入最大 Gas fee"></el-input>-->
- <!-- </div>-->
- <div class="item" v-for="item in paramsData">
- <div class="title">
- {{ item.note }}
- </div>
- <el-input v-model="item.value"></el-input>
- </div>
- </div>
- <div class="accountPassword" v-if="accountPassword">
- <div class="title">
- 输入钱包密码
- </div>
- <div class="inputTitle">
- 钱包密码
- </div>
- <el-input type="password" :show-password="true" v-model="password"
- placeholder="输入钱包密码"></el-input>
- <div class="confirm" @click="batchExecutionTask">
- <img v-if="!confirmLoading" src="../../assets/autoplay/check1.svg" alt="check1">
- <div v-if="confirmLoading" style="width: 20px;height: 20px;margin-top: -2px">
- <Loading/>
- </div>
- 确认
- </div>
- <div class="tip">
- <div class="title">
- <img src="../../assets/address/tips_and_updates.svg" alt="tips_and_updates">
- 提示
- </div>
- <div class="description">
- 此密码为您账户钱包的 Keystore 密码,请妥善保管,
- 系统无法为您找回。
- </div>
- </div>
- </div>
- </div>
- </el-drawer>
- <el-drawer
- :visible.sync="drawerAdd"
- :with-header="false">
- <div class="drawerAddress-container">
- <div class="drawerAddress-container-head">
- <div class="drawerAddress-container-head-left" style="align-items: center">
- <!-- <div class="avatar">-->
- <!-- <img v-if="currentAddTaskInfo.projectLogo" class="avatar" :src="url + 'disk/file/' + currentAddTaskInfo.projectLogo" alt="avatar">-->
- <!-- </div>-->
- <!-- <div class="info">-->
- <!-- <div class="projectName">-->
- <!-- {{currentAddTaskInfo.projectName || '项目名称'}}-->
- <!-- </div>-->
- <!-- <div class="id">-->
- <!-- {{currentAddTaskInfo.amsTaskId}}-->
- <!-- </div>-->
- <!-- </div>-->
- </div>
- <div class="drawerAddress-container-head-right">
- <div class="complete" @click="addTask">
- <img src="../../assets/address/done_all.svg" alt="done_all">
- 完成
- </div>
- </div>
- </div>
- <div class="drawerAddress-container-main">
- <div class="title">
- 任务详情
- </div>
- <div class="input">
- 任务名称
- <el-input v-model="currentAddTaskInfo.taskName" placeholder="任务名称"></el-input>
- </div>
- <div class="input">
- 选择项目
- <el-select v-model="currentAddTaskInfo.airdropProjectId" placeholder="选择项目">
- <el-option
- v-for="item in addTaskProjectData"
- :key="item.amsProjectId"
- :label="item.projectName"
- :value="item.amsProjectId">
- </el-option>
- </el-select>
- </div>
- <div class="select">
- <div class="input">
- 选择类型
- <el-select style="width: 140px" v-model="currentAddTaskInfo.taskType" placeholder="选择类型">
- <el-option
- v-for="item in optionsTaskType"
- :key="item.value"
- :label="item.label"
- :value="item.value">
- </el-option>
- </el-select>
- </div>
- <div class="input">
- 输入合约code
- <el-input v-model="currentAddTaskInfo.taskCode" placeholder="输入合约code"></el-input>
- </div>
- </div>
- <div class="input">
- 计划任务执行次数
- <el-input v-model="currentAddTaskInfo.planTimes" placeholder="计划任务执行次数"></el-input>
- </div>
- <div class="input">
- 预估GAS
- <el-input v-model="currentAddTaskInfo.estimatedGas" placeholder="预估GAS"></el-input>
- </div>
- </div>
- </div>
- </el-drawer>
- </div>
- </template>
- <script>
- import {addTaskInfo, batchExecution, getExecutionRecord, modifyTaskInfo, parameterSearch, taskPage} from "@/api/task";
- import {getGroupList} from "@/api/adress";
- import {getInteractionRecord, retryFailed} from "@/api/record";
- import {projectPage} from "@/api/project";
- import CryptoJS from "crypto-js";
- import Web3 from 'web3'
- import Loading from "@/components/Loading";
- export default {
- components: {Loading},
- data() {
- return {
- missionData: [],
- drawerDetails: false,
- input: '',
- chainId: '',
- optionsTaskType: [
- {
- value: 'BRIDGE',
- label: 'Bridge'
- },
- {
- value: 'NFT',
- label: 'NFT'
- },
- {
- value: 'SWAP',
- label: 'MuteSwap'
- }
- ],
- optionsAddress: [],
- drawerRecord: false,
- drawerRecordStatus: 0,
- value1: '',
- recordData: [],
- ongoingData: [],//下一层
- ongoingDataTotal: 0,
- drawerStrategy: false,
- accountPassword: false,
- retryPassword: false,
- batchExecutionParams: {
- groupName: '',
- maxGas: '',
- intervalMax: 10,
- intervalMin: 1,
- amount: '',
- password: '',
- projectId: '',
- taskId: ''
- },
- password:'',
- retryParams: {
- executeId: '',
- password: ''
- },
- currentTaskInfo: {
- taskType: '',
- taskName: '',
- amsProjectId: '',
- amsTaskId: '',
- planTimes: '',
- projectName: '',
- taskCode: '',
- estimatedGas: ''
- },
- currentRecordData: {},
- paramsData: [],
- url: process.env.VUE_APP_BASE_API,
- drawerAdd: false,
- currentAddTaskInfo: {
- taskType: '',
- taskName: '',
- airdropProjectId: '',
- planTimes: '',
- projectName: '',
- taskCode: ''
- },
- addTaskProjectData: [],
- confirmLoading:false
- }
- },
- mounted() {
- this.getTaskList()
- this.getWalletAddress()
- },
- methods: {
- progressBarDetails(item) {
- console.log(item);
- this.drawerRecord = true
- this.drawerRecordStatus = 1
- this.currentTaskInfo = JSON.parse(JSON.stringify(item))
- this.currentRecordData.groupName = item.groupName
- this.currentRecordData.intervalMax = item.intervalMax
- this.currentRecordData.intervalMin = item.intervalMin
- this.currentRecordData.maxGas = item.maxGas
- this.currentRecordData.executeId = item.executeId
- let params = {
- page: 1,
- pageSize: 10,
- queryValue: item.executeId
- }
- getInteractionRecord(params).then(res => {
- this.ongoingData = res.records
- this.ongoingDataTotal = res.total
- })
- },
- getTaskList() {
- taskPage().then(res => {
- this.missionData = res
- })
- },
- batchExecution(item) {
- this.drawerStrategy = true
- this.currentTaskInfo.taskName = item.taskName
- this.currentTaskInfo.taskType = item.taskType
- this.batchExecutionParams.projectId = item.amsProjectId
- this.batchExecutionParams.taskId = item.amsTaskId
- if (item.taskCode) {
- this.getParameterSearch(item.taskCode)
- }
- },
- getWalletAddress() {
- getGroupList().then(res => {
- res.forEach((item) => {
- let obj = {
- value: item,
- label: item
- }
- this.optionsAddress.push(obj)
- })
- })
- },
- batchExecutionTask() {
- if (this.confirmLoading){
- return
- }
- this.confirmLoading = true
- // 要加密的数据
- const dataToEncrypt = this.password;
- // console.log('输入的密码:', dataToEncrypt);
- // 获取当前北京时间
- const beijingDate = this.getCurrentBeijingTime();
- // 生成keyByte
- const keyByte = this.generateKeyByteArray(beijingDate);
- // console.log('生成的toHex:', keyByte);
- // 加密数据
- const encryptedData = this.encryptData(dataToEncrypt, keyByte);
- console.log('加密后的数据:', encryptedData);
- this.batchExecutionParams.password = encryptedData
- this.batchExecutionParams.airdropParams = this.paramsData
- batchExecution(this.batchExecutionParams).then(() => {
- this.accountPassword = false
- this.drawerStrategy = false
- this.confirmLoading = false
- this.getTaskList()
- }).catch(()=>{
- this.confirmLoading = false
- })
- },
- // 获取当前北京时间并格式化为 YYYYMMDD
- getCurrentBeijingTime() {
- const localDate = new Date();
- const localTime = localDate.getTime(); // 获取当前本地时间的时间戳
- const localOffset = localDate.getTimezoneOffset() * 60000; // 本地时区偏移的毫秒数
- const utcTime = localTime + localOffset; // 转换为 UTC 时间
- const beijingOffset = 8 * 60 * 60000; // 北京时区偏移的毫秒数
- const beijingTime = utcTime + beijingOffset; // 加上北京时区偏移
- const beijingDate = new Date(beijingTime);
- const year = beijingDate.getFullYear();
- const month = (beijingDate.getMonth() + 1).toString().padStart(2, '0');
- const day = beijingDate.getDate().toString().padStart(2, '0');
- return `${year}${month}${day}${year}${month}${day}`;
- },
- // 生成
- generateKeyByteArray(content) {
- let bytes = [];
- let len, c;
- len = content.length;
- for (let i = 0; i < len; i++) {
- c = content[i];
- bytes.push(parseInt(c))
- }
- // console.log('当前北京时间的数组',bytes);
- return Web3.utils.bytesToHex(bytes).substring(2);
- },
- // 加密函数
- encryptData(word, keyStr) {
- let key = CryptoJS.enc.Hex.parse(keyStr)
- // console.log('CryptoJS生成的key',key);
- let encrypted = CryptoJS.AES.encrypt(word, key, {mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7}) // 加密模式为ECB,补码方式为PKCS5Padding(也就是PKCS7)
- return encrypted.toString()
- },
- viewTaskDetails(item) {
- this.currentTaskInfo = JSON.parse(JSON.stringify(item))
- this.drawerDetails = true
- },
- modifyTask() {
- let params = {
- taskType: this.currentTaskInfo.taskType,
- taskName: this.currentTaskInfo.taskName,
- airdropProjectId: this.currentTaskInfo.amsProjectId,
- amsTaskId: this.currentTaskInfo.amsTaskId,
- planTimes: this.currentTaskInfo.planTimes,
- taskCode: this.currentTaskInfo.taskCode,
- estimatedGas: this.currentTaskInfo.estimatedGas
- }
- modifyTaskInfo(params).then(() => {
- this.drawerDetails = false
- this.getTaskList()
- })
- },
- addTaskDetails() {
- this.drawerAdd = true
- this.getProjectPage()
- },
- getProjectPage() {
- let params = {
- page: 1,
- pageSize: 100,
- }
- projectPage(params).then(res => {
- this.addTaskProjectData = res.records
- })
- },
- addTask() {
- let params = {
- taskType: this.currentAddTaskInfo.taskType,
- taskName: this.currentAddTaskInfo.taskName,
- airdropProjectId: this.currentAddTaskInfo.airdropProjectId,
- planTimes: this.currentAddTaskInfo.planTimes,
- taskCode: this.currentAddTaskInfo.taskCode,
- estimatedGas: this.currentAddTaskInfo.estimatedGas
- }
- console.log(params);
- addTaskInfo(params).then(() => {
- this.drawerAdd = false
- this.getTaskList()
- })
- },
- viewExecutionHistory(item) {
- this.currentTaskInfo = JSON.parse(JSON.stringify(item))
- let params = {
- page: 1,
- pageSize: 10,
- queryValue: item.amsTaskId
- }
- getExecutionRecord(params).then((res) => {
- this.drawerRecord = true
- this.recordData = res.records
- })
- },
- viewRecordDetails(item, page) {
- this.drawerRecordStatus = page
- this.currentRecordData = item
- console.log(item);
- let params = {
- page: 1,
- pageSize: 10,
- queryValue: item.executeId
- }
- getInteractionRecord(params).then(res => {
- this.ongoingData = res.records
- this.ongoingDataTotal = res.total
- })
- },
- refresh() {
- let params = {
- page: 1,
- pageSize: 10,
- queryValue: this.currentRecordData.executeId
- }
- getInteractionRecord(params).then(res => {
- this.ongoingData = res.records
- })
- },
- getParameterSearch(taskCode) {
- parameterSearch(taskCode).then(res => {
- this.paramsData = res
- })
- },
- retry() {
- let params = {
- executeId: this.currentRecordData.executeId,
- password: this.retryParams.password
- }
- retryFailed(params).then(res => {
- console.log(res);
- this.refresh()
- this.retryPassword = false
- })
- },
- drawerRecordClosed() {
- this.drawerRecordStatus = 0;
- this.retryPassword = false
- }
- }
- }
- </script>
- <style lang="scss" scoped>
- .app-container {
- .title {
- font-weight: 700;
- font-size: 21px;
- line-height: 28px;
- color: #181818;
- }
- .input {
- display: flex;
- flex-direction: column;
- gap: 10px;
- }
- .top {
- display: flex;
- align-items: center;
- justify-content: space-between;
- .add {
- .button {
- width: 148px;
- height: 52px;
- display: flex;
- flex-direction: row;
- justify-content: center;
- align-items: center;
- gap: 4px;
- background: #4A76FF;
- border-radius: 10px;
- font-weight: 700;
- font-size: 15px;
- line-height: 20px;
- color: #FFFFFF;
- cursor: pointer;
- }
- }
- }
- .app-container-table-screening {
- display: flex;
- align-items: center;
- gap: 100px;
- padding: 20px 0;
- margin: 20px 0;
- border-top: 1px solid #f5f5f5;
- border-bottom: 1px solid #f5f5f5;
- .app-container-table-screening-item {
- display: flex;
- align-items: center;
- gap: 6px;
- font-weight: 400;
- font-size: 15px;
- line-height: 20px;
- color: #4d4d4e;
- }
- }
- .app-container-table-main {
- display: flex;
- //justify-content: space-between;
- gap: 20px;
- flex-wrap: wrap;
- height: 650px;
- overflow: auto;
- .app-container-table-main-item {
- width: 340px;
- height: 315px;
- background: #FFFFFF;
- border: 1px solid #2980FF;
- border-radius: 10px;
- padding: 24px;
- position: relative;
- .head {
- display: flex;
- gap: 8px;
- .avatar {
- width: 46px;
- height: 46px;
- background: black;
- border-radius: 50%;
- }
- .name {
- display: flex;
- flex-direction: column;
- gap: 8px;
- cursor: pointer;
- .projectName {
- font-weight: 700;
- font-size: 12px;
- line-height: 16px;
- color: #919191;
- }
- .missionName {
- font-weight: 700;
- font-size: 17px;
- line-height: 22px;
- color: #222222;
- display: flex;
- align-items: center;
- gap: 8px
- }
- }
- }
- .jump {
- position: absolute;
- bottom: 25px;
- right: 24px;
- display: flex;
- gap: 8px;
- font-weight: 700;
- font-size: 12px;
- line-height: 16px;
- color: #2980FF;
- cursor: pointer;
- }
- .implementationStrategy {
- display: flex;
- gap: 12px;
- margin-top: 32px;
- .item {
- width: 68px;
- height: 24px;
- background: #edf2ff;
- border: 1px solid #2980FF;
- border-radius: 4px;
- display: flex;
- justify-content: center;
- align-items: center;
- font-weight: 500;
- font-size: 12px;
- line-height: 16px;
- color: #222222;
- }
- .item-no {
- width: 44px;
- height: 24px;
- background: #F5F5F5;
- border: 1px solid #E0E0E0;
- border-radius: 4px;
- display: flex;
- justify-content: center;
- align-items: center;
- font-weight: 500;
- font-size: 12px;
- line-height: 16px;
- color: #828282;
- }
- }
- .implementationStrategyText {
- font-weight: 400;
- font-size: 12px;
- line-height: 16px;
- color: #919191;
- margin-top: 8px;
- }
- .underImplementation {
- display: flex;
- flex-direction: column;
- gap: 8px;
- margin-top: 24px;
- height: 50px;
- .numberOfExecutions {
- display: flex;
- gap: 4px;
- .text {
- font-weight: 400;
- font-size: 12px;
- line-height: 16px;
- color: #919191;
- }
- .number {
- font-weight: 700;
- font-size: 12px;
- line-height: 16px;
- color: #222222;
- }
- }
- .progressBar {
- width: 100%;
- height: 28px;
- background: #F5F5F5;
- border-radius: 21px;
- display: flex;
- justify-content: space-between;
- padding-right: 6px;
- cursor: pointer;
- .progressBar-blue {
- width: 147px;
- height: 28px;
- background: #2980FF;
- border-radius: 26px;
- display: flex;
- align-items: center;
- padding-left: 10px;
- gap: 4px;
- font-weight: 400;
- font-size: 12px;
- line-height: 16px;
- color: #FFFFFF;
- }
- .details {
- display: flex;
- align-items: center;
- gap: 4px;
- font-weight: 400;
- font-size: 12px;
- line-height: 16px;
- color: #7b7b7b;
- }
- }
- }
- .batchExecution {
- display: flex;
- justify-content: space-between;
- gap: 8px;
- margin-top: 24px;
- height: 50px;
- .left {
- display: flex;
- gap: 8px;
- flex-direction: column;
- .text {
- font-weight: 400;
- font-size: 12px;
- line-height: 16px;
- color: #919191;
- }
- .number {
- font-weight: 700;
- font-size: 17px;
- line-height: 22px;
- color: #222222;
- }
- }
- .right {
- display: flex;
- gap: 4px;
- align-items: center;
- font-weight: 700;
- font-size: 15px;
- line-height: 20px;
- color: #FFFFFF;
- width: 132px;
- height: 44px;
- justify-content: center;
- background: #2980FF;
- border: 1px solid #2980FF;
- border-radius: 10px;
- cursor: pointer;
- }
- }
- .horizontalLine {
- width: 343px;
- height: 1px;
- border-bottom: 1px solid #F5F5F5;
- margin-left: -24px;
- margin-top: 28px;
- }
- .time {
- font-weight: 400;
- font-size: 12px;
- line-height: 16px;
- color: #919191;
- margin-top: 20px;
- }
- }
- }
- .drawerAddress-container {
- display: flex;
- flex-direction: column;
- height: 100vh;
- overflow: auto;
- .drawerAddress-container-head {
- padding: 56px 40px;
- background: #FFFFFF;
- display: flex;
- align-items: center;
- justify-content: space-between;
- .drawerAddress-container-head-left {
- display: flex;
- gap: 8px;
- .avatar {
- width: 46px;
- height: 46px;
- border-radius: 50%;
- background: black;
- }
- .info {
- display: flex;
- flex-direction: column;
- gap: 8px;
- .projectName {
- font-weight: 700;
- font-size: 17px;
- line-height: 22px;
- color: #222222;
- }
- .id {
- font-weight: 400;
- font-size: 12px;
- line-height: 16px;
- color: #838383;
- }
- }
- }
- .drawerAddress-container-head-right {
- display: flex;
- align-items: center;
- gap: 48px;
- .complete {
- width: 118px;
- height: 52px;
- border: 2px solid #4A76FF;
- border-radius: 10px;
- gap: 4px;
- display: flex;
- align-items: center;
- justify-content: center;
- font-weight: 700;
- font-size: 15px;
- line-height: 20px;
- color: #2980FF;
- cursor: pointer;
- }
- }
- }
- .drawerAddress-container-main {
- padding: 36px 40px;
- background: #f9fbff;
- flex-grow: 1;
- display: flex;
- flex-direction: column;
- gap: 20px;
- .select {
- display: flex;
- gap: 24px;
- }
- }
- }
- .drawerRecord-container {
- display: flex;
- flex-direction: column;
- height: 100vh;
- overflow: auto;
- position: relative;
- .drawerAddress-container-head {
- padding: 56px 40px;
- background: #FFFFFF;
- display: flex;
- align-items: center;
- justify-content: space-between;
- .drawerAddress-container-head-left {
- display: flex;
- flex-direction: column;
- gap: 8px;
- .back {
- cursor: pointer;
- display: flex;
- align-items: center;
- gap: 4px;
- }
- .missionName {
- display: flex;
- gap: 8px;
- align-items: center;
- .id {
- padding: 0 8px;
- height: 24px;
- background: #F5F5F5;
- border: 1px solid #E0E0E0;
- border-radius: 4px;
- font-weight: 400;
- font-size: 12px;
- line-height: 16px;
- color: #7b7b7b;
- display: flex;
- align-items: center;
- justify-content: center;
- }
- .name {
- font-weight: 700;
- font-size: 21px;
- line-height: 28px;
- color: #181818;
- }
- }
- .text {
- font-weight: 400;
- font-size: 12px;
- line-height: 16px;
- color: #919191;
- }
- }
- }
- .drawerAddress-container-main {
- padding: 36px 40px;
- background: #f9fbff;
- flex-grow: 1;
- display: flex;
- flex-direction: column;
- gap: 20px;
- .drawerAddress-container-head-left {
- display: flex;
- gap: 24px;
- .avatar {
- width: 46px;
- height: 46px;
- border-radius: 50%;
- background: black;
- }
- .info {
- display: flex;
- flex-direction: column;
- gap: 8px;
- .projectName {
- font-weight: 700;
- font-size: 17px;
- line-height: 22px;
- color: #222222;
- }
- .webLink {
- font-weight: 700;
- font-size: 15px;
- line-height: 20px;
- color: #2980FF;
- text-decoration-line: underline;
- display: flex;
- align-items: center;
- gap: 8px
- }
- }
- }
- .horizontalLine {
- width: 100%;
- height: 1px;
- border-bottom: 1px solid #f1f1f1;
- margin-top: 40px;
- margin-bottom: 30px;
- }
- .interactionStrategy {
- width: 100%;
- background: #FFFFFF;
- border: 1px solid #F5F5F5;
- border-radius: 4px;
- padding: 28px;
- display: flex;
- justify-content: space-between;
- flex-wrap: wrap;
- gap: 20px;
- .item {
- display: flex;
- flex-direction: column;
- gap: 12px;
- .title {
- font-weight: 400;
- font-size: 14px;
- line-height: 18px;
- color: #181818;
- display: flex;
- align-items: center;
- gap: 6px;
- }
- .info {
- font-weight: 700;
- font-size: 17px;
- line-height: 22px;
- color: #222222;
- }
- }
- }
- .recordTitle {
- display: flex;
- justify-content: space-between;
- align-items: center;
- .left {
- display: flex;
- flex-direction: column;
- gap: 8px;
- .text {
- font-weight: 700;
- font-size: 21px;
- line-height: 28px;
- color: #181818;
- }
- .number {
- font-weight: 700;
- font-size: 12px;
- line-height: 16px;
- color: #8e8f91;
- }
- }
- .button {
- display: flex;
- align-items: center;
- width: fit-content;
- height: 36px;
- gap: 4px;
- border: 1px solid #E0E0E0;
- border-radius: 40px;
- padding: 0 12px;
- cursor: pointer;
- }
- }
- .table {
- .status {
- display: flex;
- justify-content: space-between;
- cursor: pointer;
- .text {
- display: flex;
- align-items: center;
- gap: 4px;
- font-weight: 400;
- font-size: 15px;
- line-height: 20px;
- color: #222222;
- white-space: nowrap;
- }
- }
- }
- }
- .drawerView-container-footer {
- height: 84px;
- padding: 30px 10px;
- display: flex;
- align-items: center;
- //justify-content: space-around;
- .pagination {
- width: 250px;
- }
- .manageAccount {
- display: flex;
- align-items: center;
- gap: 12px;
- font-weight: 700;
- font-size: 17px;
- line-height: 22px;
- color: #222222;
- }
- .disassociation {
- display: flex;
- align-items: center;
- gap: 12px;
- font-weight: 700;
- font-size: 17px;
- line-height: 22px;
- color: #EB5757;
- }
- }
- .progressBarBox {
- display: flex;
- justify-content: center;
- .progressBar {
- position: absolute;
- top: 168px;
- width: 90%;
- height: 50px;
- background: #2980FF;
- box-shadow: 0px 1px 16px rgba(15, 15, 15, 0.16);
- border-radius: 144px;
- display: flex;
- align-items: center;
- justify-content: space-between;
- .progressBar-two {
- width: 40%;
- height: 50px;
- background: #3b9ffa;
- border-radius: 144px;
- display: flex;
- align-items: center;
- padding-left: 16px;
- gap: 6px;
- font-weight: 400;
- font-size: 14px;
- line-height: 18px;
- color: #FFFFFF;
- }
- .number {
- font-weight: 700;
- font-size: 17px;
- line-height: 22px;
- color: #FFFFFF;
- padding-right: 16px;
- }
- }
- }
- .accountPassword {
- width: 440px;
- height: 374px;
- background: #fbfdff;
- border-radius: 10px;
- position: fixed;
- margin: auto;
- left: 0;
- right: 0;
- top: 0;
- bottom: 0;
- padding: 36px 40px;
- .title {
- font-weight: 700;
- font-size: 21px;
- line-height: 28px;
- color: #212121;
- }
- .inputTitle {
- font-weight: 500;
- font-size: 14px;
- line-height: 18px;
- color: #383838;
- margin-top: 32px;
- margin-bottom: 12px;
- }
- .confirm {
- display: flex;
- align-items: center;
- justify-content: center;
- gap: 8px;
- font-weight: 700;
- font-size: 15px;
- line-height: 20px;
- color: #FFFFFF;
- width: 100%;
- height: 52px;
- background: #2980ff;
- border-radius: 6px;
- margin-top: 12px;
- margin-bottom: 20px;
- cursor: pointer;
- }
- .tip {
- display: flex;
- flex-direction: column;
- gap: 9px;
- margin-top: 36px;
- .title {
- display: flex;
- align-items: center;
- gap: 4px;
- font-weight: 700;
- font-size: 17px;
- line-height: 22px;
- color: #EB5757;
- }
- .description {
- font-weight: 400;
- font-size: 14px;
- line-height: 18px;
- color: #EB5757;
- }
- }
- }
- }
- .drawerStrategy-container {
- display: flex;
- flex-direction: column;
- height: 100vh;
- overflow: auto;
- .drawerAddress-container-head {
- padding: 56px 40px;
- background: #FFFFFF;
- display: flex;
- align-items: center;
- justify-content: space-between;
- .drawerAddress-container-head-left {
- display: flex;
- gap: 8px;
- .info {
- display: flex;
- flex-direction: column;
- gap: 8px;
- .projectName {
- font-weight: 700;
- font-size: 17px;
- line-height: 22px;
- color: #222222;
- }
- .id {
- font-weight: 400;
- font-size: 12px;
- line-height: 16px;
- color: #838383;
- }
- }
- }
- .drawerAddress-container-head-right {
- display: flex;
- align-items: center;
- gap: 48px;
- .complete {
- width: 118px;
- height: 52px;
- border: 2px solid #4A76FF;
- border-radius: 10px;
- gap: 4px;
- display: flex;
- align-items: center;
- justify-content: center;
- font-weight: 700;
- font-size: 15px;
- line-height: 20px;
- color: #2980FF;
- cursor: pointer;
- }
- }
- }
- .drawerAddress-container-main {
- padding: 36px 40px;
- background: #f9fbff;
- flex-grow: 1;
- display: flex;
- flex-direction: column;
- gap: 12px;
- .item {
- display: flex;
- flex-direction: column;
- gap: 12px;
- .title {
- font-weight: 400;
- font-size: 14px;
- line-height: 18px;
- color: #181818;
- }
- }
- }
- .accountPassword {
- width: 440px;
- height: 374px;
- background: #fbfdff;
- border-radius: 10px;
- position: fixed;
- margin: auto;
- left: 0;
- right: 0;
- top: 0;
- bottom: 0;
- padding: 36px 40px;
- .title {
- font-weight: 700;
- font-size: 21px;
- line-height: 28px;
- color: #212121;
- }
- .inputTitle {
- font-weight: 500;
- font-size: 14px;
- line-height: 18px;
- color: #383838;
- margin-top: 32px;
- margin-bottom: 12px;
- }
- .confirm {
- display: flex;
- align-items: center;
- justify-content: center;
- gap: 8px;
- font-weight: 700;
- font-size: 15px;
- line-height: 20px;
- color: #FFFFFF;
- width: 100%;
- height: 52px;
- background: #2980ff;
- border-radius: 6px;
- margin-top: 12px;
- margin-bottom: 20px;
- cursor: pointer;
- }
- .tip {
- display: flex;
- flex-direction: column;
- gap: 9px;
- margin-top: 36px;
- .title {
- display: flex;
- align-items: center;
- gap: 4px;
- font-weight: 700;
- font-size: 17px;
- line-height: 22px;
- color: #EB5757;
- }
- .description {
- font-weight: 400;
- font-size: 14px;
- line-height: 18px;
- color: #EB5757;
- }
- }
- }
- }
- }
- </style>
|