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) {
|
export const render = async function (path, params, cfg) {
|
||||||
let paths = path.split("/");
|
let paths = path.split("/");
|
||||||
let { render, e } = cfg;
|
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], {
|
let base64 = await render(paths[0], paths[1], {
|
||||||
...params,
|
...params,
|
||||||
_layout_path,
|
_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 {
|
import {
|
||||||
AtlasAlias
|
AtlasAlias
|
||||||
} from "./apps/xiaoyao_image.js";
|
} 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 {
|
import {
|
||||||
rule as adminRule,
|
rule as adminRule,
|
||||||
updateRes,
|
updateRes,
|
||||||
updateMiaoPlugin
|
updateMiaoPlugin
|
||||||
} from "./apps/admin.js";
|
} from "./apps/admin.js";
|
||||||
export {
|
export {
|
||||||
updateRes,updateMiaoPlugin,versionInfo,calendar,
|
updateRes,
|
||||||
AtlasAlias
|
updateMiaoPlugin,
|
||||||
|
versionInfo,
|
||||||
|
calendar,
|
||||||
|
AtlasAlias,
|
||||||
|
Note
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
let rule = {
|
let rule = {
|
||||||
versionInfo: {
|
versionInfo: {
|
||||||
reg: "^#图鉴版本$",
|
reg: "^#图鉴版本$",
|
||||||
@ -27,6 +36,10 @@ let rule = {
|
|||||||
reg: "#*(.*)(信息|图鉴|命座|天赋|突破|材料|特色料理|特殊料理)$", //匹配消息正则,命令正则
|
reg: "#*(.*)(信息|图鉴|命座|天赋|突破|材料|特色料理|特殊料理)$", //匹配消息正则,命令正则
|
||||||
describe: "【刻晴信息、刻晴图鉴、刻晴突破、刻晴命座】角色信息图鉴", //【命令】功能说明
|
describe: "【刻晴信息、刻晴图鉴、刻晴突破、刻晴命座】角色信息图鉴", //【命令】功能说明
|
||||||
},
|
},
|
||||||
|
Note: {
|
||||||
|
reg: "^#*(体力|树脂|查询体力|便笺|便签)$", //匹配消息正则,命令正则
|
||||||
|
describe: "体力",
|
||||||
|
},
|
||||||
...adminRule
|
...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