mirror of
https://github.com/ctrlcvs/xiaoyao-cvs-plugin.git
synced 2024-12-23 03:20:52 +08:00
优化体力背景
This commit is contained in:
parent
0572cbf2ed
commit
d361ff155d
216
apps/Note.js
Normal file
216
apps/Note.js
Normal file
@ -0,0 +1,216 @@
|
||||
import {
|
||||
segment
|
||||
} from "oicq";
|
||||
import fetch from "node-fetch";
|
||||
import Common from "../components/Common.js";
|
||||
import fs from "fs";
|
||||
import format from "date-format";
|
||||
import puppeteer from "puppeteer";
|
||||
import common from "../../../lib/common.js";
|
||||
import lodash from "lodash";
|
||||
// import MysApi from "../components/MysApi.js"
|
||||
|
||||
import {
|
||||
getUrl,
|
||||
getHeaders
|
||||
} from "../../../lib/app/mysApi.js";
|
||||
|
||||
const _path = process.cwd();
|
||||
|
||||
//#体力
|
||||
export async function Note(e, {
|
||||
render
|
||||
}) {
|
||||
let cookie, uid;
|
||||
if (NoteCookie[e.user_id]) {
|
||||
cookie = NoteCookie[e.user_id].cookie;
|
||||
uid = NoteCookie[e.user_id].uid;
|
||||
} else if (BotConfig.dailyNote && BotConfig.dailyNote[e.user_id]) {
|
||||
cookie = BotConfig.dailyNote[e.user_id].cookie;
|
||||
uid = BotConfig.dailyNote[e.user_id].uid;
|
||||
} else {
|
||||
e.reply(`尚未配置,无法查询体力\n配置教程:${BotConfig.cookieDoc}`);
|
||||
return true;
|
||||
}
|
||||
|
||||
const response = await getDailyNote(uid, cookie);
|
||||
if (!response.ok) {
|
||||
e.reply("米游社接口错误");
|
||||
return true;
|
||||
}
|
||||
const res = await response.json();
|
||||
|
||||
if (res.retcode == 10102) {
|
||||
if (!e.openDailyNote) {
|
||||
e.openDailyNote = true;
|
||||
await openDailyNote(cookie); //自动开启
|
||||
dailyNote(e);
|
||||
} else {
|
||||
e.reply("请先开启实时便笺数据展示");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
if (res.retcode != 0) {
|
||||
if (res.message == "Please login") {
|
||||
Bot.logger.mark(`体力cookie已失效`);
|
||||
e.reply(`体力cookie已失效,请重新配置\n注意:退出米游社登录cookie将会失效!`);
|
||||
|
||||
if (NoteCookie[e.user_id]) {
|
||||
await MysUser.delNote(NoteCookie[e.user_id]);
|
||||
delete NoteCookie[e.user_id];
|
||||
saveJson();
|
||||
}
|
||||
} else {
|
||||
e.reply(`体力查询错误:${res.message}`);
|
||||
Bot.logger.mark(`体力查询错误:${JSON.stringify(res)}`);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//redis保存uid
|
||||
redis.set(`genshin:uid:${e.user_id}`, uid, {
|
||||
EX: 2592000
|
||||
});
|
||||
|
||||
//更新
|
||||
if (NoteCookie[e.user_id]) {
|
||||
NoteCookie[e.user_id].maxTime = new Date().getTime() + res.data.resin_recovery_time * 1000;
|
||||
saveJson();
|
||||
}
|
||||
|
||||
let data = res.data;
|
||||
|
||||
//推送任务
|
||||
if (e.isTask && data.current_resin < e.sendResin) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (e.isTask) {
|
||||
Bot.logger.mark(`体力推送:${e.user_id}`);
|
||||
}
|
||||
|
||||
let nowDay = format("dd", new Date());
|
||||
let resinMaxTime;
|
||||
if (data.resin_recovery_time > 0) {
|
||||
resinMaxTime = new Date().getTime() + data.resin_recovery_time * 1000;
|
||||
let maxDate = new Date(resinMaxTime);
|
||||
resinMaxTime = format("hh:mm", maxDate);
|
||||
|
||||
if (format("dd", maxDate) != nowDay) {
|
||||
resinMaxTime = `明天 ${resinMaxTime}`;
|
||||
} else {
|
||||
resinMaxTime = ` ${resinMaxTime}`;
|
||||
}
|
||||
}
|
||||
|
||||
let remained_time = "";
|
||||
if (data.expeditions && data.expeditions.length >= 1) {
|
||||
remained_time = lodash.map(data.expeditions, "remained_time");
|
||||
remained_time = lodash.min(remained_time);
|
||||
if (remained_time > 0) {
|
||||
for (let val of data.expeditions) {
|
||||
val.remained_time = new Date().getTime() + val.remained_time * 1000;
|
||||
let remainedDate = new Date(val.remained_time);
|
||||
val.remained_time = format("hh:mm", remainedDate);
|
||||
if (format("dd", remainedDate) != nowDay) {
|
||||
val.remained_time = `明天 ${val.remained_time}`;
|
||||
} else {
|
||||
val.remained_time = ` ${val.remained_time}`;
|
||||
}
|
||||
}
|
||||
remained_time = new Date().getTime() + remained_time * 1000;
|
||||
let remainedDate = new Date(remained_time);
|
||||
remained_time = format("hh:mm", remainedDate);
|
||||
|
||||
if (format("dd", remainedDate) != nowDay) {
|
||||
remained_time = `明天 ${remained_time}`;
|
||||
} else {
|
||||
remained_time = ` ${remained_time}`;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let coinTime = "";
|
||||
if (data.home_coin_recovery_time > 0) {
|
||||
let coinDay = Math.floor(data.home_coin_recovery_time / 3600 / 24);
|
||||
let coinHour = Math.floor((data.home_coin_recovery_time / 3600) % 24);
|
||||
let coinMin = Math.floor((data.home_coin_recovery_time / 60) % 60);
|
||||
if (coinDay > 0) {
|
||||
coinTime = `${coinDay}天${coinHour}小时${coinMin}分钟`;
|
||||
} else {
|
||||
let coinDate = new Date(new Date().getTime() + data.home_coin_recovery_time * 1000);
|
||||
if (format("dd", coinDate) != nowDay) {
|
||||
coinTime = `明天 ${format("hh:mm", coinDate)}`;
|
||||
} else {
|
||||
coinTime = format("hh:mm", coinDate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let day = format("MM-dd hh:mm", new Date());
|
||||
let week = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
|
||||
day += " " + week[new Date().getDay()];
|
||||
|
||||
//参量质变仪
|
||||
if (data?.transformer?.obtained) {
|
||||
data.transformer.reached = data.transformer.recovery_time.reached;
|
||||
let recovery_time = "";
|
||||
|
||||
if (data.transformer.recovery_time.Day > 0) {
|
||||
recovery_time += `${data.transformer.recovery_time.Day}天`;
|
||||
}
|
||||
if (data.transformer.recovery_time.Hour > 0) {
|
||||
recovery_time += `${data.transformer.recovery_time.Hour}小时`;
|
||||
}
|
||||
if (data.transformer.recovery_time.Minute > 0) {
|
||||
recovery_time += `${data.transformer.recovery_time.Minute}分钟`;
|
||||
}
|
||||
data.transformer.recovery_time = recovery_time;
|
||||
}
|
||||
var image= fs.readdirSync(`./plugins/xiaoyao-cvs-plugin/resources/dailyNote/background_image`);
|
||||
var list_img=[];
|
||||
for (let val of image) {
|
||||
list_img.push(val)
|
||||
}
|
||||
var imgs=list_img[lodash.random(0, list_img.length-1)];
|
||||
return await Common.render("dailyNote/dailyNote", {
|
||||
save_id: uid,
|
||||
uid: uid,
|
||||
resinMaxTime,
|
||||
remained_time,
|
||||
coinTime,
|
||||
imgs,
|
||||
day,
|
||||
...data,
|
||||
}, {
|
||||
e,
|
||||
render,
|
||||
scale: 1.2
|
||||
})
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
async function getDailyNote(uid, cookie) {
|
||||
let {
|
||||
url,
|
||||
headers,
|
||||
query,
|
||||
body
|
||||
} = getUrl("dailyNote", uid);
|
||||
|
||||
headers.Cookie = cookie;
|
||||
|
||||
const response = await fetch(url, {
|
||||
method: "get",
|
||||
headers
|
||||
});
|
||||
return response;
|
||||
}
|
||||
|
||||
export async function saveJson() {
|
||||
let path = "data/NoteCookie/NoteCookie.json";
|
||||
fs.writeFileSync(path, JSON.stringify(NoteCookie, "", "\t"));
|
||||
}
|
@ -5,7 +5,7 @@ import { currentVersion, yunzaiVersion } from "./Changelog.js";
|
||||
export const render = async function (path, params, cfg) {
|
||||
let paths = path.split("/");
|
||||
let { render, e } = cfg;
|
||||
let _layout_path = process.cwd() + "/plugins/miao-plugin/resources/common/layout/";
|
||||
let _layout_path = process.cwd() + "/plugins/xiaoyao-cvs-plugin/resources/";
|
||||
let base64 = await render(paths[0], paths[1], {
|
||||
...params,
|
||||
_layout_path,
|
||||
|
158
components/MysApi.js
Normal file
158
components/MysApi.js
Normal file
@ -0,0 +1,158 @@
|
||||
import md5 from "md5";
|
||||
import lodash from 'lodash';
|
||||
import fetch from "node-fetch";
|
||||
|
||||
let MysApi = {
|
||||
getUrl(type, uid, data = {}) {
|
||||
let url = "https://api-takumi.mihoyo.com";
|
||||
let game_record = "/game_record/app/genshin/api/";
|
||||
let server = MysApi.getServer(uid);
|
||||
let query, body;
|
||||
|
||||
switch (type) {
|
||||
//首页宝箱
|
||||
case "index":
|
||||
url += game_record + "index";
|
||||
query = `role_id=${uid}&server=${server}`;
|
||||
break;
|
||||
//深渊
|
||||
case "spiralAbyss":
|
||||
url += game_record + "spiralAbyss";
|
||||
query = `role_id=${uid}&schedule_type=${data.schedule_type}&server=${server}`;
|
||||
break;
|
||||
//角色详情
|
||||
case "character":
|
||||
url += game_record + "character";
|
||||
body = JSON.stringify(data);
|
||||
break;
|
||||
//树脂每日任务(只能当前id)
|
||||
case "dailyNote":
|
||||
url += game_record + "dailyNote";
|
||||
query = `role_id=${uid}&server=${server}`;
|
||||
break;
|
||||
case "detail":
|
||||
url += "/event/e20200928calculate/v1/sync/avatar/detail";
|
||||
query = `uid=${uid}®ion=${server}&avatar_id=${data.avatar_id}`;
|
||||
break;
|
||||
case "getAnnouncement":
|
||||
url += "/game_record/card/wapi/getAnnouncement";
|
||||
break;
|
||||
case "getGameRecordCard":
|
||||
url += "/game_record/card/wapi/getGameRecordCard";
|
||||
query = `uid=${uid}`;//米游社id
|
||||
break;
|
||||
case "bbs_sign_info":
|
||||
url += "/event/bbs_sign_reward/info";
|
||||
query = `act_id=e202009291139501®ion=${server}&uid=${uid}`;
|
||||
break;
|
||||
case "bbs_sign_home":
|
||||
url += "/event/bbs_sign_reward/home";
|
||||
query = `act_id=e202009291139501®ion=${server}&uid=${uid}`;
|
||||
break;
|
||||
case "bbs_sign":
|
||||
url += "/event/bbs_sign_reward/sign";
|
||||
body = JSON.stringify({ act_id: "e202009291139501", region: server, uid: uid, });
|
||||
break;
|
||||
case "ys_ledger":
|
||||
url = "https://hk4e-api.mihoyo.com/event/ys_ledger/monthInfo";
|
||||
query = `month=${data.month}&bind_uid=${uid}&bind_region=${server}`;
|
||||
break;
|
||||
}
|
||||
|
||||
if (query) {
|
||||
url += "?" + query;
|
||||
}
|
||||
|
||||
let headers;
|
||||
if (type === "bbs_sign") {
|
||||
headers = MysApi.getHeaders_sign();
|
||||
} else {
|
||||
headers = MysApi.getHeaders(query, body);
|
||||
}
|
||||
|
||||
return { url, headers, query, body };
|
||||
},
|
||||
|
||||
getServer(uid) {
|
||||
switch (uid.toString()[0]) {
|
||||
case "1":
|
||||
case "2":
|
||||
return "cn_gf01"; //官服
|
||||
case "5":
|
||||
return "cn_qd01"; //B服
|
||||
}
|
||||
return "cn_gf01"; //官服
|
||||
},
|
||||
|
||||
//# Github-@lulu666lulu
|
||||
getDs(q = "", b = "") {
|
||||
let n = "xV8v4Qu54lUKrEYFZkJhB8cuOh9Asafs";
|
||||
let t = Math.round(new Date().getTime() / 1000);
|
||||
let r = Math.floor(Math.random() * 900000 + 100000);
|
||||
let DS = md5(`salt=${n}&t=${t}&r=${r}&b=${b}&q=${q}`);
|
||||
return `${t},${r},${DS}`;
|
||||
},
|
||||
|
||||
//签到ds
|
||||
getDS_sign() {
|
||||
const n = "h8w582wxwgqvahcdkpvdhbh2w9casgfl";
|
||||
const t = Math.round(new Date().getTime() / 1000);
|
||||
const r = lodash.sampleSize("abcdefghijklmnopqrstuvwxyz0123456789", 6).join("");
|
||||
const DS = md5(`salt=${n}&t=${t}&r=${r}`);
|
||||
return `${t},${r},${DS}`;
|
||||
},
|
||||
|
||||
getHeaders(q = "", b = "") {
|
||||
return {
|
||||
"x-rpc-app_version": "2.20.1",
|
||||
"x-rpc-client_type": 5,
|
||||
DS: MysApi.getDs(q, b),
|
||||
};
|
||||
},
|
||||
|
||||
getHeaders_sign() {
|
||||
return {
|
||||
"x-rpc-app_version": "2.3.0",
|
||||
"x-rpc-client_type": 5,
|
||||
"x-rpc-device_id": MysApi.guid(),
|
||||
"User-Agent": " miHoYoBBS/2.3.0",
|
||||
DS: MysApi.getDS_sign(),
|
||||
};
|
||||
},
|
||||
|
||||
guid() {
|
||||
function S4() {
|
||||
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
|
||||
}
|
||||
|
||||
return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
|
||||
},
|
||||
|
||||
// 按type请求
|
||||
request: async function (type, cfg) {
|
||||
let { uid } = cfg;
|
||||
let { url, headers } = MysApi.getUrl(type, uid);
|
||||
return await MysApi.fetch(url, headers, cfg);
|
||||
},
|
||||
|
||||
// 发送请求
|
||||
fetch: async function (url, cfg) {
|
||||
let { cookie, error, success, headers, method } = cfg;
|
||||
headers = headers || {};
|
||||
method = method || "get";
|
||||
headers.Cookie = cookie;
|
||||
let response = await fetch(url, { method, headers });
|
||||
if (!response.ok) {
|
||||
return await error(-1, {
|
||||
msg: "米游社接口错误"
|
||||
})
|
||||
}
|
||||
let res = await response.json();
|
||||
if (res.retcode * 1 !== 0) {
|
||||
return await error(res.retcode * 1, res)
|
||||
}
|
||||
return await success(res.data, res)
|
||||
}
|
||||
}
|
||||
|
||||
export default MysApi;
|
21
index.js
21
index.js
@ -2,18 +2,27 @@ import lodash from "lodash";
|
||||
import {
|
||||
AtlasAlias
|
||||
} from "./apps/xiaoyao_image.js";
|
||||
import {versionInfo,calendar} from "./apps/help.js"
|
||||
import {
|
||||
versionInfo,
|
||||
calendar
|
||||
} from "./apps/help.js";
|
||||
import {
|
||||
Note
|
||||
} from "./apps/Note.js"
|
||||
import {
|
||||
rule as adminRule,
|
||||
updateRes,
|
||||
updateMiaoPlugin
|
||||
} from "./apps/admin.js";
|
||||
export {
|
||||
updateRes,updateMiaoPlugin,versionInfo,calendar,
|
||||
AtlasAlias
|
||||
updateRes,
|
||||
updateMiaoPlugin,
|
||||
versionInfo,
|
||||
calendar,
|
||||
AtlasAlias,
|
||||
Note
|
||||
};
|
||||
|
||||
|
||||
let rule = {
|
||||
versionInfo: {
|
||||
reg: "^#图鉴版本$",
|
||||
@ -27,6 +36,10 @@ let rule = {
|
||||
reg: "#*(.*)(信息|图鉴|命座|天赋|突破|材料|特色料理|特殊料理)$", //匹配消息正则,命令正则
|
||||
describe: "【刻晴信息、刻晴图鉴、刻晴突破、刻晴命座】角色信息图鉴", //【命令】功能说明
|
||||
},
|
||||
Note: {
|
||||
reg: "^#*(体力|树脂|查询体力|便笺|便签)$", //匹配消息正则,命令正则
|
||||
describe: "体力",
|
||||
},
|
||||
...adminRule
|
||||
};
|
||||
|
||||
|
BIN
resources/dailyNote/background_image/01.png
Normal file
BIN
resources/dailyNote/background_image/01.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 526 KiB |
BIN
resources/dailyNote/background_image/background.png
Normal file
BIN
resources/dailyNote/background_image/background.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 272 KiB |
91
resources/dailyNote/dailyNote.css
Normal file
91
resources/dailyNote/dailyNote.css
Normal file
@ -0,0 +1,91 @@
|
||||
@font-face {
|
||||
font-family: HYWenHei-55W;
|
||||
src: url('../font/HYWenHei-55W.ttf');
|
||||
}
|
||||
|
||||
html {
|
||||
width: 964px;
|
||||
height: 100%;
|
||||
font-family: HYWenHei-55W, monospace;
|
||||
}
|
||||
#container {
|
||||
min-height: 900px;
|
||||
height: auto;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.title {
|
||||
position: absolute;
|
||||
top: 64px;
|
||||
left: 225px;
|
||||
font-weight: bold;
|
||||
font-size: 22px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.item {
|
||||
width: 228px;
|
||||
left: 200px;
|
||||
top: 350px;
|
||||
color: #7b8386;
|
||||
font-weight: bold;
|
||||
font-size: 22px;
|
||||
margin-left: 205px;
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
.paiqian {
|
||||
position: absolute;
|
||||
width: 400px;
|
||||
height: 26px;
|
||||
left: 520px;
|
||||
top: 80px;
|
||||
text-align: center;
|
||||
color: #7b8386;
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.icon {
|
||||
width: 65px;
|
||||
margin: 5px 0 4px 13px;
|
||||
display: inline-block;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
.icon_div {
|
||||
display: inline-block;
|
||||
vertical-align: super;
|
||||
margin-top: -10px;
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
.all_icon {
|
||||
text-align: left;
|
||||
position: relative;
|
||||
top: -25px;
|
||||
}
|
||||
|
||||
.time {
|
||||
position: relative;
|
||||
top: -20px;
|
||||
}
|
||||
|
||||
.item .main .time {
|
||||
font-size: 12px;
|
||||
display: block;
|
||||
position: initial;
|
||||
}
|
||||
|
||||
.item .main {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.item .top {
|
||||
font-weight: bold;
|
||||
font-size: 30px;
|
||||
display: block;
|
||||
}
|
||||
.item:nth-last-child(2){
|
||||
margin-top: 35px;
|
||||
}
|
128
resources/dailyNote/dailyNote.html
Normal file
128
resources/dailyNote/dailyNote.html
Normal file
@ -0,0 +1,128 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
|
||||
<link rel="shortcut icon" href="#" />
|
||||
<link rel="stylesheet" type="text/css" href="{{_res_path}}dailyNote/dailyNote.css?v=1.0" />
|
||||
<link rel="preload" href="{{_res_path}}font/tttgbnumber.ttf" as="font">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container" id="container"
|
||||
style=" background-image: url({{_res_path}}/dailyNote/background_image/{{imgs}});">
|
||||
<div class="title">
|
||||
<div class="id">
|
||||
<span>{{uid}}</span>
|
||||
</div>
|
||||
<div class="day">
|
||||
<span>{{day}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item" style="padding-top: 185px;">
|
||||
<div class="top">
|
||||
<span>{{current_resin}}/{{max_resin}}</span>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="time">
|
||||
{{if resinMaxTime}}
|
||||
将于{{resinMaxTime}} 全部恢复
|
||||
{{else}}树脂已完全恢复{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="main">
|
||||
<div class="top">
|
||||
<span>{{finished_task_num}}/{{total_task_num}}</span>
|
||||
</div>
|
||||
<div class="info">
|
||||
<div class="time">今日委托奖励{{if is_extra_task_reward_received==1}}已{{else}}未{{/if}}领取
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
<div class="main">
|
||||
<div class="top">
|
||||
<span>{{3-remain_resin_discount_num}}/{{resin_discount_num_limit}}</span>
|
||||
</div>
|
||||
<div class="info">
|
||||
<div class="time">
|
||||
{{if remain_resin_discount_num<=0}}周本已完成
|
||||
{{else}}周本树脂减半次数已用{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="main">
|
||||
<div class="top">
|
||||
<span
|
||||
class="{{if transformer.obtained && transformer.reached }}red{{/if}}">{{if transformer.obtained }}{{if transformer.reached}}可使用
|
||||
{{else}}冷却中{{/if}}
|
||||
{{else}}尚未获得{{/if}}</span>
|
||||
</div>
|
||||
<div class="info">
|
||||
<div class="time">
|
||||
{{if transformer.obtained }}
|
||||
{{if transformer.reached}}已准备完成
|
||||
{{else}}{{transformer.recovery_time}}后可使用{{/if}}
|
||||
{{else}}尚未获得{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="main">
|
||||
<div class="top">
|
||||
<span
|
||||
class="{{if current_home_coin/max_home_coin > 0.9}}red{{/if}}">{{current_home_coin}}/{{max_home_coin}}</span>
|
||||
</div>
|
||||
<div class="info">
|
||||
<div class="time">
|
||||
{{if coinTime}}
|
||||
预计{{coinTime}}后达到上限
|
||||
{{else}}存储已满{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="paiqian">
|
||||
<div class="main">
|
||||
<div class="bg"></div>
|
||||
<div class="icon icon-派遣"></div>
|
||||
<div class="info">
|
||||
<div class="time">
|
||||
{{if !expeditions || expeditions.length<=0}}尚未进行派遣
|
||||
{{else if remained_time && remained_time!=0}}最快将于{{remained_time}} 完成
|
||||
{{else}}派遣已完成{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="all_icon">
|
||||
{{each expeditions list}}
|
||||
<div><img class="icon" src="{{list.avatar_side_icon}}" alt="">
|
||||
<div class="icon_div">
|
||||
{{list.remained_time}}完成
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
<script type="text/javascript">
|
||||
var count = 35;
|
||||
var item = document.getElementsByClassName("item");
|
||||
for (var i = 0; i < item.length; i++) {
|
||||
item[i].style.top = (count) + "%"
|
||||
count += 16;
|
||||
}
|
||||
</script>
|
||||
</html>
|
BIN
resources/font/HYWenHei-55W.ttf
Normal file
BIN
resources/font/HYWenHei-55W.ttf
Normal file
Binary file not shown.
BIN
resources/font/iconfont.fb3712d.woff2
Normal file
BIN
resources/font/iconfont.fb3712d.woff2
Normal file
Binary file not shown.
BIN
resources/font/tttgbnumber.ttf
Normal file
BIN
resources/font/tttgbnumber.ttf
Normal file
Binary file not shown.
BIN
resources/font/华文中宋.TTF
Normal file
BIN
resources/font/华文中宋.TTF
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user