Compare commits

...

18 commits

Author SHA1 Message Date
eae8926fdc 简化活动和签到的transition 2024-09-03 00:23:36 +08:00
af51fbd349 ruff修复代码 2024-09-03 00:22:12 +08:00
8b0004363b Merge branch 'main' of https://git.zhaozuohong.vip/mower-ng/mower-ng into ff0000 2024-09-02 23:25:54 +08:00
d8c1beb86c 活动关卡导航场景加入场景图 2024-09-02 22:27:53 +08:00
0a136afbf4 移除hot_update工具 2024-09-02 22:25:07 +08:00
21a32de5f8 补充classmethod装饰器 2024-09-02 22:22:37 +08:00
2664144160 迷宫饭关卡导航 2024-09-02 22:13:12 +08:00
dcc48dc0fb 补充提交dist 2024-09-02 21:34:15 +08:00
1abb32645c 补充提交基建buff 2024-09-02 21:26:43 +08:00
9e2e902a80 迷宫饭签到活动 2024-09-02 18:01:28 +08:00
9bffc270c7 2024-09-02资源更新 2024-09-02 15:43:39 +08:00
ca5dc08e6d 修复模糊不清的打印: “启动”
改为 “启动肉鸽/保全”
2024-08-29 15:47:38 +08:00
f02a81681c 多开器适配新版更新方式 2024-08-28 10:52:12 +08:00
0222fa5517 修复前端LOGIN_LOADING的显示名称 2024-08-27 20:28:47 +08:00
65278f8009 修复多开器启动路径 2024-08-27 16:59:49 +08:00
7e4ff61fc4 修复多开器url路径 2024-08-27 16:58:22 +08:00
764247407c Merge branch 'main' of https://git.zhaozuohong.vip/mower-ng/mower-ng into ff0000 2024-08-27 14:56:12 +08:00
e616efda56 尝试新的更新方式 2024-08-27 09:44:28 +08:00
1644 changed files with 10417 additions and 1178 deletions

3
.gitignore vendored
View file

@ -41,7 +41,7 @@ __pycache__/
mower/
build/
develop-eggs/
dist/
/dist/
downloads/
eggs/
.eggs/
@ -192,7 +192,6 @@ dmypy.json
# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode
/*.json
dist
MAA
/*.yml

3
.gitmodules vendored
View file

@ -1,3 +1,6 @@
[submodule "ArknightsGameResource"]
path = ArknightsGameResource
url = https://github.com/yuanyan3060/ArknightsGameResource
[submodule "ArknightsGameData"]
path = ArknightsGameData
url = https://github.com/Kengxxiao/ArknightsGameData.git

1
ArknightsGameData Submodule

@ -0,0 +1 @@
Subproject commit 9a47cf12ea076eeb9a6b622bc5523451d1b8cc63

@ -1 +1 @@
Subproject commit 394b0bc717df173eff1d9880f2ac0249dfedcfd2
Subproject commit 9826fca7f304b5f3e39bd42f4406a27b1015bf2c

View file

@ -1 +1 @@
["芬", "梅", "宴", "砾", "孑", "吽", "红", "空", "黑", "W", "夕", "林", "令", "阿", "黍", "年", "山", "陈", "锏", "煌", "夜刀", "黑角", "杜林", "香草", "翎羽", "卡缇", "斑点", "炎熔", "芙蓉", "梓兰", "夜烟", "远山", "卡达", "深靛", "布丁", "流星", "红云", "白雪", "松果", "酸糖", "铅踝", "跃跃", "讯使", "红豆", "豆苗", "杜宾", "缠丸", "霜叶", "慕斯", "刻刀", "芳汀", "石英", "暗索", "末药", "清流", "褐果", "角峰", "泡泡", "露托", "古米", "坚雷", "地灵", "伊桑", "阿消", "维荻", "微风", "凛冬", "贾维", "青枳", "红隼", "苇草", "野鬃", "极境", "万顷", "夜半", "渡桥", "晓歌", "谜图", "鞭刃", "苍苔", "医生", "炎客", "摩根", "燧石", "断崖", "烈夏", "铎铃", "柏喙", "战车", "星极", "铸铁", "赤冬", "海沫", "奥达", "蓝毒", "白金", "灰喉", "四月", "隐现", "陨星", "慑砂", "截云", "苦艾", "雪绒", "天火", "惊蛰", "星源", "蜜蜡", "寒檀", "薄绿", "和弦", "蚀清", "耶拉", "洛洛", "至简", "折光", "温米", "梅尔", "稀音", "衡沙", "赫默", "亚叶", "锡兰", "絮雨", "图耶", "桑葚", "蜜莓", "刺玫", "明椒", "莎草", "临光", "深律", "槐琥", "乌有", "雷蛇", "深巡", "可颂", "拜松", "火神", "石棉", "暮落", "闪击", "暴雨", "灰毫", "火哨", "极光", "洋灰", "玫拉", "子月", "熔泉", "冰酿", "空构", "崖心", "雪雉", "杏仁", "初雪", "巫恋", "海霓", "真理", "但书", "小满", "掠风", "海蒂", "月禾", "夏栎", "凛视", "狮蝎", "绮良", "罗宾", "霜华", "贝娜", "风丸", "双月", "锡人", "空弦", "灰烬", "鸿雪", "远牙", "早露", "提丰", "莱伊", "风笛", "嵯峨", "琴柳", "焰尾", "伺夜", "异客", "澄闪", "黑键", "妮芙", "灵知", "铃兰", "魔王", "白铁", "塑心", "傀影", "老鲤", "温蒂", "水月", "艾拉", "闪灵", "夜莺", "流明", "星熊", "瑕光", "泥岩", "斥罪", "森蚺", "号角", "重岳", "银灰", "棘刺", "仇白", "佩佩", "左乐", "止颂", "暴行", "空爆", "猎蜂", "杰克", "夜魔", "巡林者", "12F", "玫兰莎", "泡普卡", "米格鲁", "克洛丝", "安赛尔", "格雷伊", "杰西卡", "安比尔", "清道夫", "桃金娘", "断罪者", "罗小黑", "休谟斯", "嘉维尔", "苏苏洛", "调香师", "蛇屠箱", "深海色", "波登可", "白面鸮", "诗怀雅", "芙兰卡", "因陀罗", "达格达", "幽灵鲨", "布洛卡", "导火索", "羽毛笔", "龙舌兰", "送葬人", "奥斯塔", "阿米娅", "特米米", "爱丽丝", "戴菲恩", "阿罗玛", "华法琳", "哈洛德", "卡夫卡", "车尔尼", "守林人", "安哲拉", "埃拉托", "九色鹿", "食铁兽", "见行者", "能天使", "迷迭香", "伊内丝", "刻俄柏", "逻各斯", "麦哲伦", "多萝西", "凯尔希", "塞雷娅", "赫德雷", "艾丽妮", "赫拉格", "帕拉斯", "玛恩纳", "月见夜", "格拉尼", "斯卡蒂", "安德切尔", "史都华德", "艾丝黛尔", "罗比菈塔", "德克萨斯", "拉普兰德", "莱恩哈特", "炎狱炎熔", "濯尘芙蓉", "普罗旺斯", "格劳克斯", "菲亚梅塔", "维什戴尔", "娜仁图亚", "推进之王", "缪尔赛思", "伊芙利特", "莫斯提马", "艾雅法拉", "霍尔海雅", "卡涅利安", "安洁莉娜", "淬羽赫默", "歌蕾蒂娅", "阿斯卡纶", "焰影苇草", "乌尔比安", "史尔特尔", "薇薇安娜", "正义骑士号", "历阵锐枪芬", "火龙S黑角", "寒芒克洛丝", "承曦格雷伊", "假日威龙陈", "浊心斯卡蒂", "麒麟R夜刀", "琳琅诗怀雅", "归溟幽灵鲨", "涤火杰西卡", "百炼嘉维尔", "耀骑士临光", "圣约送葬人", "缄默德克萨斯", "纯烬艾雅法拉", "THRM-EX", "泰拉大陆调查团", "Lancet-2", "Castle-3", "PhonoR-0", "Friston-3", "U-Official"]
["芬", "梅", "宴", "砾", "孑", "吽", "红", "空", "黑", "W", "夕", "林", "令", "阿", "黍", "年", "山", "陈", "锏", "煌", "夜刀", "黑角", "杜林", "香草", "翎羽", "卡缇", "斑点", "炎熔", "芙蓉", "梓兰", "夜烟", "远山", "卡达", "深靛", "布丁", "流星", "红云", "白雪", "松果", "酸糖", "铅踝", "跃跃", "讯使", "红豆", "豆苗", "杜宾", "缠丸", "霜叶", "慕斯", "刻刀", "芳汀", "石英", "暗索", "末药", "清流", "褐果", "角峰", "泡泡", "露托", "古米", "坚雷", "地灵", "伊桑", "阿消", "维荻", "微风", "凛冬", "贾维", "青枳", "红隼", "苇草", "野鬃", "极境", "万顷", "夜半", "渡桥", "晓歌", "谜图", "鞭刃", "苍苔", "医生", "炎客", "摩根", "燧石", "断崖", "烈夏", "铎铃", "柏喙", "战车", "星极", "铸铁", "赤冬", "海沫", "奥达", "蓝毒", "白金", "灰喉", "四月", "隐现", "陨星", "慑砂", "截云", "苦艾", "雪绒", "天火", "惊蛰", "星源", "蜜蜡", "寒檀", "薄绿", "和弦", "蚀清", "耶拉", "洛洛", "至简", "折光", "温米", "梅尔", "稀音", "衡沙", "赫默", "亚叶", "锡兰", "絮雨", "图耶", "桑葚", "蜜莓", "刺玫", "明椒", "莎草", "临光", "深律", "森西", "槐琥", "乌有", "雷蛇", "深巡", "可颂", "拜松", "火神", "石棉", "暮落", "闪击", "暴雨", "灰毫", "火哨", "极光", "洋灰", "玫拉", "子月", "熔泉", "冰酿", "空构", "崖心", "雪雉", "杏仁", "初雪", "巫恋", "海霓", "真理", "但书", "小满", "掠风", "海蒂", "月禾", "夏栎", "凛视", "狮蝎", "绮良", "罗宾", "霜华", "贝娜", "风丸", "双月", "锡人", "空弦", "灰烬", "鸿雪", "远牙", "早露", "提丰", "莱伊", "风笛", "嵯峨", "琴柳", "焰尾", "伺夜", "异客", "澄闪", "黑键", "妮芙", "灵知", "铃兰", "魔王", "白铁", "塑心", "傀影", "老鲤", "温蒂", "水月", "艾拉", "闪灵", "夜莺", "流明", "星熊", "瑕光", "泥岩", "斥罪", "森蚺", "号角", "重岳", "银灰", "棘刺", "仇白", "佩佩", "左乐", "止颂", "暴行", "空爆", "猎蜂", "杰克", "夜魔", "巡林者", "12F", "玫兰莎", "泡普卡", "米格鲁", "克洛丝", "安赛尔", "格雷伊", "杰西卡", "安比尔", "清道夫", "桃金娘", "断罪者", "罗小黑", "休谟斯", "嘉维尔", "苏苏洛", "调香师", "蛇屠箱", "深海色", "波登可", "白面鸮", "诗怀雅", "芙兰卡", "莱欧斯", "因陀罗", "达格达", "幽灵鲨", "布洛卡", "导火索", "羽毛笔", "龙舌兰", "送葬人", "奥斯塔", "阿米娅", "特米米", "爱丽丝", "戴菲恩", "阿罗玛", "华法琳", "哈洛德", "卡夫卡", "车尔尼", "守林人", "安哲拉", "埃拉托", "九色鹿", "食铁兽", "见行者", "能天使", "迷迭香", "伊内丝", "刻俄柏", "逻各斯", "麦哲伦", "多萝西", "凯尔希", "塞雷娅", "赫德雷", "艾丽妮", "赫拉格", "帕拉斯", "玛恩纳", "月见夜", "格拉尼", "斯卡蒂", "安德切尔", "史都华德", "艾丝黛尔", "罗比菈塔", "德克萨斯", "齐尔查克", "拉普兰德", "莱恩哈特", "炎狱炎熔", "濯尘芙蓉", "普罗旺斯", "格劳克斯", "菲亚梅塔", "维什戴尔", "娜仁图亚", "推进之王", "缪尔赛思", "伊芙利特", "莫斯提马", "艾雅法拉", "霍尔海雅", "玛露西尔", "卡涅利安", "安洁莉娜", "淬羽赫默", "歌蕾蒂娅", "阿斯卡纶", "焰影苇草", "乌尔比安", "史尔特尔", "薇薇安娜", "正义骑士号", "历阵锐枪芬", "火龙S黑角", "寒芒克洛丝", "承曦格雷伊", "假日威龙陈", "浊心斯卡蒂", "麒麟R夜刀", "琳琅诗怀雅", "归溟幽灵鲨", "涤火杰西卡", "百炼嘉维尔", "耀骑士临光", "圣约送葬人", "缄默德克萨斯", "纯烬艾雅法拉", "THRM-EX", "泰拉大陆调查团", "Lancet-2", "Castle-3", "PhonoR-0", "Friston-3", "U-Official"]

View file

@ -377,6 +377,20 @@
"NORMAL",
40001
],
"LINKAGE_TKT_GACHA_10_5401": [
"LINKAGE_TKT_GACHA_10_5401",
"LINKAGE_TKT_GACHA_10_5401",
"好好吃饭寻访凭证",
"NORMAL",
40003
],
"好好吃饭寻访凭证": [
"LINKAGE_TKT_GACHA_10_5401",
"LINKAGE_TKT_GACHA_10_5401",
"好好吃饭寻访凭证",
"NORMAL",
40003
],
"7003": [
"7003",
"TKT_GACHA",
@ -6551,6 +6565,48 @@
"MATERIAL",
700151
],
"p_char_4142_laios": [
"p_char_4142_laios",
"p_char_4142_laios",
"莱欧斯的信物",
"MATERIAL",
700152
],
"莱欧斯的信物": [
"p_char_4142_laios",
"p_char_4142_laios",
"莱欧斯的信物",
"MATERIAL",
700152
],
"p_char_4143_sensi": [
"p_char_4143_sensi",
"p_char_4143_sensi",
"森西的信物",
"MATERIAL",
700153
],
"森西的信物": [
"p_char_4143_sensi",
"p_char_4143_sensi",
"森西的信物",
"MATERIAL",
700153
],
"p_char_4144_chilc": [
"p_char_4144_chilc",
"p_char_4144_chilc",
"齐尔查克的信物",
"MATERIAL",
700154
],
"齐尔查克的信物": [
"p_char_4144_chilc",
"p_char_4144_chilc",
"齐尔查克的信物",
"MATERIAL",
700154
],
"p_char_103_angel": [
"p_char_103_angel",
"p_char_103_angel",
@ -7895,6 +7951,20 @@
"MATERIAL",
600096
],
"p_char_4141_marcil": [
"p_char_4141_marcil",
"p_char_4141_marcil",
"玛露西尔的信物",
"MATERIAL",
600097
],
"玛露西尔的信物": [
"p_char_4141_marcil",
"p_char_4141_marcil",
"玛露西尔的信物",
"MATERIAL",
600097
],
"class_p_char_123_fang": [
"class_p_char_123_fang",
"class_p_char_123_fang",

View file

@ -555,6 +555,18 @@
"label": "DEPOT",
"comment": "仓库"
},
"1401": {
"label": "ACTIVITY_MAIN",
"comment": "活动主界面"
},
"1402": {
"label": "ACTIVITY_CHOOSE_LEVEL",
"comment": "活动关选择"
},
"1501": {
"label": "SIGN_IN_DAILY",
"comment": "签到活动"
},
"9998": {
"label": "LOADING",
"comment": "场景跳转时的等待界面"

BIN
arknights_mower/models/CONSUME.pkl (Stored with Git LFS)

Binary file not shown.

BIN
arknights_mower/models/NORMAL.pkl (Stored with Git LFS)

Binary file not shown.

BIN
arknights_mower/models/avatar.pkl (Stored with Git LFS)

Binary file not shown.

BIN
arknights_mower/models/levels.pkl (Stored with Git LFS)

Binary file not shown.

BIN
arknights_mower/models/operator_room.model (Stored with Git LFS)

Binary file not shown.

BIN
arknights_mower/models/portrait.pkl (Stored with Git LFS)

Binary file not shown.

Binary file not shown.

BIN
arknights_mower/resources/login_new.png (Stored with Git LFS)

Binary file not shown.

Binary file not shown.

BIN
arknights_mower/resources/navigation/activity/DT-1.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
arknights_mower/resources/navigation/activity/DT-2.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
arknights_mower/resources/navigation/activity/DT-3.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
arknights_mower/resources/navigation/activity/DT-4.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
arknights_mower/resources/navigation/activity/DT-5.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
arknights_mower/resources/navigation/activity/DT-6.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
arknights_mower/resources/navigation/activity/DT-7.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
arknights_mower/resources/navigation/activity/DT-8.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
arknights_mower/resources/navigation/activity/banner.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
arknights_mower/resources/navigation/activity/entry.png (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

BIN
arknights_mower/resources/sign_in/banner.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
arknights_mower/resources/sign_in/entry.png (Stored with Git LFS) Normal file

Binary file not shown.

View file

@ -25,9 +25,10 @@ from arknights_mower.solvers.recruit import RecruitSolver
from arknights_mower.solvers.report import ReportSolver
from arknights_mower.solvers.secret_front import SecretFront
from arknights_mower.solvers.shop import CreditShop
from arknights_mower.solvers.sign_in import SignInSolver
from arknights_mower.solvers.skland import SKLand
from arknights_mower.solvers.sss_navi import SSSNaviSolver
from arknights_mower.utils import config, detector, hot_update, rapidocr
from arknights_mower.utils import config, detector, rapidocr
from arknights_mower.utils import typealias as tp
from arknights_mower.utils.csleep import MowerExit, csleep
from arknights_mower.utils.datetime import format_time, get_server_weekday
@ -3213,7 +3214,7 @@ class BaseSchedulerSolver(SceneGraphSolver, BaseMixin):
"SSSCopilot",
{"filename": str(copilot), "loop_times": 9999999},
)
logger.info("启动")
logger.info("启动肉鸽/保全")
self.MAA.start()
maa_crash = True
while self.MAA.running():
@ -3315,17 +3316,13 @@ class BaseSchedulerSolver(SceneGraphSolver, BaseMixin):
def sign_in_plan_solver(self):
if not config.conf.sign_in.enable:
return
hot_update.update()
try:
import sign_in
sign_in_solver = sign_in.SignInSolver()
return sign_in_solver.run()
return SignInSolver().run()
except MowerExit:
raise
except Exception as e:
logger.exception(e)
return True
return False
def 仓库扫描(self):
try:

View file

@ -3,13 +3,15 @@ import re
import cv2
from arknights_mower.models import navigation
from arknights_mower.utils import config, hot_update
from arknights_mower.utils import config
from arknights_mower.utils.graph import SceneGraphSolver
from arknights_mower.utils.image import thres2
from arknights_mower.utils.log import logger
from arknights_mower.utils.scene import Scene
from arknights_mower.utils.vector import va, vs
from .activity import ActivityNavigation
location = {
1: {
"1-1": (0, 0),
@ -146,15 +148,12 @@ difficulty_str = [
class NavigationSolver(SceneGraphSolver):
def run(self, name: str):
logger.info("Start: 关卡导航")
self.success = False
self.act = None
hot_update.update()
if name in hot_update.navigation.NavigationSolver.location:
hot_update.navigation.NavigationSolver().run(name)
if name in ActivityNavigation.location():
ActivityNavigation().run(name)
return True
self.success = False
self.act = None
self.name = name
prefix = name.split("-")[0]
pr_prefix = ""

View file

@ -0,0 +1,75 @@
from datetime import datetime
import cv2
from arknights_mower.utils import config
from arknights_mower.utils.graph import SceneGraphSolver
from arknights_mower.utils.image import loadres, saveimg
from arknights_mower.utils.log import logger
from arknights_mower.utils.matcher import (
GOOD_DISTANCE_LIMIT,
flann,
keypoints_scale_invariant,
)
from arknights_mower.utils.scene import Scene
class ActivityNavigation(SceneGraphSolver):
@classmethod
def location(cls):
if datetime.now() > datetime(2024, 9, 16, 4):
return {}
return [f"DT-{i}" for i in range(1, 9)]
def run(self, name: str) -> None:
logger.info("Start: 活动关卡导航")
self.name = name
super().run()
return True
def current_level(self):
for i in self.location():
if self.find(f"navigation/activity/{i}"):
return int(i[-1])
def transition(self) -> bool:
if (scene := self.scene()) == Scene.TERMINAL_MAIN:
img = loadres("navigation/activity/terminal.jpg", True)
kp1, des1 = keypoints_scale_invariant(img)
kp2, des2 = config.recog.matcher.kp, config.recog.matcher.des
matches = flann.knnMatch(des1, des2, k=2)
good = []
for pair in matches:
if (len_pair := len(pair)) == 2:
x, y = pair
if x.distance < GOOD_DISTANCE_LIMIT * y.distance:
good.append(x)
elif len_pair == 1:
good.append(pair[0])
good = sorted(good, key=lambda x: x.distance)
debug_img = cv2.drawMatches(
img,
kp1,
config.recog.gray,
kp2,
good[:10],
None,
flags=cv2.DrawMatchesFlags_NOT_DRAW_SINGLE_POINTS,
)
saveimg(debug_img, "navigation")
self.tap(kp2[good[0].trainIdx].pt, interval=4)
elif scene == Scene.ACTIVITY_MAIN:
self.tap_element("navigation/activity/entry", interval=2)
elif scene == Scene.ACTIVITY_CHOOSE_LEVEL:
current_level = self.current_level()
target_level = int(self.name[-1])
if current_level < target_level:
self.tap((1840, 563))
elif current_level > target_level:
self.tap((78, 562))
else:
self.tap_element(f"navigation/activity/{self.name}")
elif self.find("ope_start"):
return True
else:
self.scene_graph_step(Scene.TERMINAL_MAIN)

View file

@ -0,0 +1,13 @@
from datetime import datetime
from arknights_mower.utils.graph import SceneGraphSolver
from .sign_in import SignIn
class SignInSolver(SceneGraphSolver):
def run(self):
success = True
if datetime.now() < datetime(2024, 9, 16):
success = success and SignIn().run()
return success

View file

@ -0,0 +1,60 @@
from datetime import datetime, timedelta
import cv2
import numpy as np
from arknights_mower.utils import config
from arknights_mower.utils.graph import SceneGraphSolver
from arknights_mower.utils.image import cropimg
from arknights_mower.utils.log import logger
from arknights_mower.utils.scene import Scene
from arknights_mower.utils.vector import va
from .utils import notify
activity_name = "品鉴泰拉魔物"
class SignIn(SceneGraphSolver):
def run(self):
logger.info(f"Start: {activity_name}签到")
self.in_progress = False
self.start_time = datetime.now()
self.success = False
super().run()
return self.success
def transition(self) -> bool:
if datetime.now() - self.start_time > timedelta(minutes=2):
notify(f"{activity_name}签到超时", level="ERROR")
return True
elif (scene := self.scene()) == Scene.MATERIEL:
self.sleep()
notify(f"{activity_name}奖励领取")
self.tap((960, 960))
elif scene == Scene.INDEX:
if pos := self.find("sign_in/entry"):
self.tap(pos)
else:
notify(f"未找到{activity_name}签到入口")
self.success = True
return True
elif scene == Scene.SIGN_IN_DAILY:
img = cropimg(config.recog.img, ((680, 360), (1800, 540)))
img = cv2.cvtColor(img, cv2.COLOR_RGB2HSV)
img = cv2.inRange(img, (0, 10, 150), (5, 255, 255))
tpl = np.ones((100, 100), dtype=np.uint8) * 255
result = cv2.matchTemplate(img, tpl, cv2.TM_CCORR_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
if max_val > 0.9:
self.in_progress = True
self.ctap(va(max_loc, (730, 410)))
else:
if not self.in_progress:
notify(f"{activity_name}签到奖励已领完")
self.in_progress = False
self.success = True
return True
else:
self.scene_graph_step(Scene.INDEX)

View file

@ -0,0 +1,8 @@
from arknights_mower.utils import config
from arknights_mower.utils.email import send_message
from arknights_mower.utils.log import logger
def notify(msg, level="INFO"):
logger.info(msg)
send_message(msg, level=level, attach_image=config.recog.img)

View file

@ -49,6 +49,7 @@ def edge(v_from: int, v_to: int, interval: int = 1):
@edge(Scene.DEPOT, Scene.INDEX)
@edge(Scene.HEADHUNTING, Scene.INDEX)
@edge(Scene.MAIL, Scene.INDEX)
@edge(Scene.SIGN_IN_DAILY, Scene.INDEX)
def back_to_index(solver: BaseSolver):
solver.back()
@ -190,6 +191,8 @@ def index_to_headhunting(solver: BaseSolver):
@edge(Scene.UNKNOWN_WITH_NAVBAR, Scene.NAVIGATION_BAR)
@edge(Scene.SSS_MAIN, Scene.NAVIGATION_BAR)
@edge(Scene.SSS_START, Scene.NAVIGATION_BAR)
@edge(Scene.ACTIVITY_MAIN, Scene.NAVIGATION_BAR)
@edge(Scene.ACTIVITY_CHOOSE_LEVEL, Scene.NAVIGATION_BAR)
def index_nav(solver: BaseSolver):
solver.tap_element("nav_button")
@ -324,6 +327,8 @@ for s in range(501, 509):
@edge(Scene.OPERATOR_CHOOSE_LEVEL, Scene.TERMINAL_MAIN_THEME)
@edge(Scene.OPERATOR_CHOOSE_LEVEL, Scene.TERMINAL_BIOGRAPHY)
@edge(Scene.OPERATOR_CHOOSE_LEVEL, Scene.TERMINAL_COLLECTION)
@edge(Scene.ACTIVITY_MAIN, Scene.TERMINAL_MAIN)
@edge(Scene.ACTIVITY_CHOOSE_LEVEL, Scene.ACTIVITY_MAIN)
@edge(Scene.OPERATOR_SUPPORT, Scene.OPERATOR_SELECT)
@edge(Scene.OPERATOR_STRANGER_SUPPORT, Scene.OPERATOR_SUPPORT)
@edge(Scene.OPERATOR_ELIMINATE_AGENCY, Scene.OPERATOR_ELIMINATE)

View file

@ -1,76 +0,0 @@
import os
import sys
from datetime import datetime, timedelta
from importlib import reload
from io import BytesIO
from shutil import rmtree
from zipfile import ZipFile
import requests
from arknights_mower.utils.image import loadimg
from arknights_mower.utils.log import logger
from arknights_mower.utils.path import get_path
extract_path = get_path("@install/tmp/hot_update")
sign_in = None
navigation = None
last_listing = None, []
last_update = None
def load_module(download_update):
global sign_in
global navigation
if "sign_in" in sys.modules and "navigation" in sys.modules:
if download_update:
loadimg.cache_clear()
reload(sign_in)
reload(navigation)
else:
if extract_path not in sys.path:
sys.path.append(str(extract_path))
import navigation
import sign_in
def update():
global last_update
if last_update and datetime.now() - last_update < timedelta(minutes=30):
logger.info("跳过热更新检查")
load_module(False)
return
logger.info("检查热更新资源")
r = requests.get("https://git.zhaozuohong.vip/api/v1/repos/mower-ng/hot_update")
remote_time = datetime.fromisoformat(r.json()["updated_at"])
download_update = True
if extract_path.exists():
local_time = datetime.fromtimestamp(os.path.getctime(extract_path)).astimezone()
if local_time > remote_time:
download_update = False
else:
rmtree(extract_path)
if download_update:
logger.info("开始下载热更新资源")
retry_times = 3
for i in range(retry_times):
try:
r = requests.get(
"https://git.zhaozuohong.vip/mower-ng/hot_update/archive/main.zip"
)
ZipFile(BytesIO(r.content)).extractall(extract_path.parent)
break
except Exception as e:
logger.exception(f"热更新出错:{e}")
if i >= retry_times:
logger.error("热更新失败!")
return
logger.info("热更新成功")
else:
logger.info("本地资源已是最新")
last_update = datetime.now()
load_module(download_update)

View file

@ -1,11 +1,11 @@
import time
from typing import List, Optional, Tuple
from typing import Optional, Tuple
import cv2
import numpy as np
from skimage.metrics import structural_similarity
from arknights_mower import __rootdir__
from arknights_mower import __rootdir__ as __rootdir__
from arknights_mower.utils import config
from arknights_mower.utils import typealias as tp
from arknights_mower.utils.csleep import MowerExit
@ -16,6 +16,8 @@ from arknights_mower.utils.matcher import Matcher
from arknights_mower.utils.scene import Scene, SceneComment
from arknights_mower.utils.vector import va
from .data import color, template_matching, template_matching_score
class RecognizeError(Exception):
pass
@ -282,7 +284,12 @@ class Recognizer:
self.scene = Scene.SSS_TERMINATED
elif self.find("login_captcha"):
self.scene = Scene.LOGIN_CAPTCHA
elif self.find("sign_in/banner"):
self.scene = Scene.SIGN_IN_DAILY
elif self.find("navigation/activity/entry"):
self.scene = Scene.ACTIVITY_MAIN
elif self.find("navigation/activity/banner"):
self.scene = Scene.ACTIVITY_CHOOSE_LEVEL
elif self.is_black():
self.scene = Scene.LOADING
@ -619,96 +626,6 @@ class Recognizer:
:return ret: 若匹配成功则返回元素在游戏界面中出现的位置否则返回 None
"""
color = {
"1800": (158, 958),
"12cadpa": (1810, 21),
"arrange_confirm": (755, 903),
"arrange_order_options": (1652, 23),
"arrange_order_options_scene": (369, 199),
"clue": (1740, 855),
"clue/daily": (526, 623),
"clue/filter_all": (1297, 99),
"clue/give_away": (25, 18),
"clue/receive": (1295, 15),
"clue/summary": (59, 153),
"confirm": (0, 683),
"control_central_assistants": (39, 560),
"credit_shop_countdown": (1511, 1017),
"depot": (0, 955),
"double_confirm/exit": (940, 464),
"double_confirm/friend": (978, 465),
"double_confirm/give_up": (574, 716),
"double_confirm/infrastructure": (1077, 435),
"double_confirm/main": (835, 683),
"double_confirm/network": (708, 435),
"double_confirm/recruit": (981, 464),
"double_confirm/voice": (745, 435),
"drone": (274, 437),
"factory_collect": (1542, 886),
"fight/refresh": (1639, 22),
"hypergryph": (0, 961),
"infra_overview": (54, 135),
"infra_overview_in": (64, 705),
"infra_overview_top_right": (1820, 0),
"infra_todo": (13, 1013),
"loading2": (620, 247),
"loading7": (106, 635),
"login_account": (622, 703),
"login_awake": (888, 743),
"login_bilibili": (870, 282),
"login_captcha": (651, 814),
"login_connecting": (760, 881),
"login_loading": (920, 388),
"login_logo": (601, 332),
"mail": (307, 39),
"mission_trainee_on": (690, 17),
"nav_bar": (655, 0),
"nav_button": (26, 20),
"navigation/collection/AP-1": (203, 821),
"navigation/collection/CA-1": (203, 821),
"navigation/collection/CE-1": (243, 822),
"navigation/collection/LS-1": (240, 822),
"navigation/collection/SK-1": (204, 821),
"navigation/collection/PR-A-1": (550, 629),
"navigation/collection/PR-B-1": (496, 629),
"navigation/collection/PR-C-1": (487, 586),
"navigation/collection/PR-D-1": (516, 619),
"navigation/ope_hard_small": (819, 937),
"navigation/ope_normal_small": (494, 930),
"navigation/record_restoration": (274, 970),
"next_step": (915, 811),
"notice": (155, 132),
"ope_agency_lock": [(1565, 856), (1565, 875)],
"ope_elimi_agency_confirm": (1554, 941),
"ope_elimi_agency_panel": (1409, 612),
"ope_eliminate": (1332, 938),
"ope_recover_originite_on": (1514, 124),
"ope_recover_potion_on": (1046, 127),
"ope_select_start": (1579, 701),
"open_recruitment": (192, 143),
"order_label": (404, 137),
"pull_once": (1260, 950),
"read_and_agree": (1115, 767),
"recruiting_instructions": (343, 179),
"riic/exp": (1385, 239),
"riic/manufacture": (1328, 126),
"riic/report_title": (1712, 25),
"room_detail": (1291, 33),
"spent_credit": (332, 264),
"shop_cart": (1252, 842),
"shop_credit_2": (1657, 135),
"skip": (1803, 32),
"sss/deploy": (1645, 971),
"sss/device": (1644, 969),
"sss/ec": (1644, 969),
"sss/loading": (1642, 517),
"sss/main": (1224, 60),
"sss/redeploy": (1644, 970),
"sss/start": (1547, 968),
"sss/squad": (1645, 970),
"sss/terminated": (29, 241),
}
if res in color:
res_img = loadres(res)
h, w, _ = res_img.shape
@ -729,110 +646,15 @@ class Recognizer:
return None
template_matching = {
"arrange_check_in": ((30, 300), (175, 700)),
"arrange_check_in_on": ((30, 300), (175, 700)),
"biography": (768, 934),
"business_card": (55, 165),
"collection": (1005, 943),
"collection_small": (1053, 982),
"connecting": (1087, 978),
"episode": (535, 937),
"fight/use": (858, 864),
"friend_list": (61, 306),
"credit_visiting": (78, 220),
"loading": (736, 333),
"loading2": (620, 247),
"loading3": (1681, 1000),
"loading4": (828, 429),
"main_theme": (283, 945),
"main_theme_small": (321, 973),
"materiel_ico": (892, 61),
"mission_daily_on": ((685, 15), (1910, 100)),
"mission_weekly_on": ((685, 15), (1910, 100)),
"navigation/collection/AP_entry": ((0, 170), (1920, 870)),
"navigation/collection/CA_entry": ((0, 170), (1920, 870)),
"navigation/collection/CE_entry": ((0, 170), (1920, 870)),
"navigation/collection/LS_entry": ((0, 170), (1920, 870)),
"navigation/collection/SK_entry": ((0, 170), (1920, 870)),
"navigation/collection/PR-A_entry": ((0, 170), (1920, 870)),
"navigation/collection/PR-B_entry": ((0, 170), (1920, 870)),
"navigation/collection/PR-C_entry": ((0, 170), (1920, 870)),
"navigation/collection/PR-D_entry": ((0, 170), (1920, 870)),
"navigation/episode": (1560, 944),
"navigation/ope_difficulty": [(0, 920), (120, 1080)],
"navigation/ope_normal": (172, 950),
"navigation/ope_normal_small": (494, 930),
"navigation/ope_hard": (172, 950),
"navigation/ope_hard_small": (819, 937),
"ope_agency_going": ((508, 941), (715, 1021)),
"ope_agency_fail": (809, 959),
"ope_failed": (183, 465),
"ope_finish": (87, 265),
"ope_plan": (1278, 24),
"ope_select_start_empty": ((0, 0), (400, 400)),
"recruit/agent_token": ((1740, 765), (1920, 805)),
"recruit/agent_token_first": ((1700, 760), (1920, 810)),
"recruit/available_level": (1294, 234),
"recruit/begin_recruit": scope,
"recruit/career_needs": (350, 593),
"recruit/lmb": (945, 27),
"recruit/recruit_done": scope,
"recruit/recruit_lock": scope,
"recruit/job_requirements": scope,
"recruit/ticket": ((900, 0), (1920, 120)),
"recruit/time": (1304, 112),
"recruit/refresh": (1366, 560),
"recruit/refresh_comfirm": (1237, 714),
"recruit/riic_res/CASTER": ((750, 730), (1920, 860)),
"recruit/riic_res/MEDIC": ((750, 730), (1920, 860)),
"recruit/riic_res/PIONEER": ((750, 730), (1920, 860)),
"recruit/riic_res/SPECIAL": ((750, 730), (1920, 860)),
"recruit/riic_res/SNIPER": ((750, 730), (1920, 860)),
"recruit/riic_res/SUPPORT": ((750, 730), (1920, 860)),
"recruit/riic_res/TANK": ((750, 730), (1920, 860)),
"recruit/riic_res/WARRIOR": ((750, 730), (1920, 860)),
"recruit/start_recruit": (1438, 849),
"recruit/stone": ((900, 0), (1920, 120)),
"riic/assistants": ((1320, 400), (1600, 650)),
"riic/iron": ((1570, 230), (1630, 340)),
"riic/orundum": ((1500, 320), (1800, 550)),
"riic/trade": ((1320, 250), (1600, 500)),
"terminal_main": (73, 959),
"terminal_regular": (1247, 980),
"upgrade": (997, 501),
}
template_matching_score = {
"connecting": 0.7,
"navigation/ope_hard": 0.7,
"navigation/ope_hard_small": 0.7,
"navigation/ope_normal": 0.7,
"navigation/ope_normal_small": 0.7,
"recruit/agent_token": 0.8,
"recruit/agent_token_first": 0.8,
"recruit/lmb": 0.7,
"recruit/riic_res/CASTER": 0.7,
"recruit/riic_res/MEDIC": 0.7,
"recruit/riic_res/PIONEER": 0.7,
"recruit/riic_res/SPECIAL": 0.7,
"recruit/riic_res/SNIPER": 0.7,
"recruit/riic_res/SUPPORT": 0.7,
"recruit/riic_res/TANK": 0.7,
"recruit/riic_res/WARRIOR": 0.7,
"recruit/time": 0.8,
"recruit/stone": 0.7,
}
if res in template_matching:
threshold = 0.9
if res in template_matching_score:
threshold = template_matching_score[res]
pos = template_matching[res]
res_img = loadres(res, True)
h, w = res_img.shape
pos = template_matching[res] or scope
if isinstance(pos[0], tuple):
scope = pos
else:
@ -877,37 +699,6 @@ class Recognizer:
raise RecognizeError(f"Can't find '{res}'")
return ret
def score(
self,
res: str,
draw: bool = False,
scope: tp.Scope = None,
thres: int | None = None,
) -> Optional[List[float]]:
"""
查找元素是否出现在画面中并返回分数
:param res: 待识别元素资源文件名
:param draw: 是否将识别结果输出到屏幕
:param scope: ((x0, y0), (x1, y1))提前限定元素可能出现的范围
:param thres: 是否在匹配前对图像进行二值化处理
:return ret: 若匹配成功则返回元素在游戏界面中出现的位置否则返回 None
"""
logger.debug(res)
res = f"{__rootdir__}/resources/{res}.png"
res_img = loadres(res, True)
if thres is not None:
# 对图像二值化处理
res_img = thres2(res_img, thres)
gray_img = cropimg(self.gray, scope)
matcher = Matcher(thres2(gray_img, thres))
else:
matcher = self.matcher
score = matcher.score(res_img, draw=draw, scope=scope, only_score=True)
return score
def template_match(
self,
res: str,

View file

@ -0,0 +1,195 @@
color = {
"1800": (158, 958),
"12cadpa": (1810, 21),
"arrange_confirm": (755, 903),
"arrange_order_options": (1652, 23),
"arrange_order_options_scene": (369, 199),
"clue": (1740, 855),
"clue/daily": (526, 623),
"clue/filter_all": (1297, 99),
"clue/give_away": (25, 18),
"clue/receive": (1295, 15),
"clue/summary": (59, 153),
"confirm": (0, 683),
"control_central_assistants": (39, 560),
"credit_shop_countdown": (1511, 1017),
"depot": (0, 955),
"double_confirm/exit": (940, 464),
"double_confirm/friend": (978, 465),
"double_confirm/give_up": (574, 716),
"double_confirm/infrastructure": (1077, 435),
"double_confirm/main": (835, 683),
"double_confirm/network": (708, 435),
"double_confirm/recruit": (981, 464),
"double_confirm/voice": (745, 435),
"drone": (274, 437),
"factory_collect": (1542, 886),
"fight/refresh": (1639, 22),
"hypergryph": (0, 961),
"infra_overview": (54, 135),
"infra_overview_in": (64, 705),
"infra_overview_top_right": (1820, 0),
"infra_todo": (13, 1013),
"loading2": (620, 247),
"loading7": (106, 635),
"login_account": (622, 703),
"login_awake": (888, 743),
"login_bilibili": (870, 282),
"login_captcha": (651, 814),
"login_connecting": (760, 881),
"login_loading": (920, 388),
"login_logo": (601, 332),
"mail": (307, 39),
"mission_trainee_on": (690, 17),
"nav_bar": (655, 0),
"nav_button": (26, 20),
"navigation/activity/banner": (24, 894),
"navigation/activity/DT-1": (466, 270),
"navigation/activity/DT-2": (1131, 318),
"navigation/activity/DT-3": (1125, 401),
"navigation/activity/DT-4": (1117, 430),
"navigation/activity/DT-5": (1109, 512),
"navigation/activity/DT-6": (1104, 540),
"navigation/activity/DT-7": (1100, 588),
"navigation/activity/DT-8": (1094, 596),
"navigation/activity/entry": (1555, 700),
"navigation/collection/AP-1": (203, 821),
"navigation/collection/CA-1": (203, 821),
"navigation/collection/CE-1": (243, 822),
"navigation/collection/LS-1": (240, 822),
"navigation/collection/SK-1": (204, 821),
"navigation/collection/PR-A-1": (550, 629),
"navigation/collection/PR-B-1": (496, 629),
"navigation/collection/PR-C-1": (487, 586),
"navigation/collection/PR-D-1": (516, 619),
"navigation/ope_hard_small": (819, 937),
"navigation/ope_normal_small": (494, 930),
"navigation/record_restoration": (274, 970),
"next_step": (915, 811),
"notice": (155, 132),
"ope_agency_lock": [(1565, 856), (1565, 875)],
"ope_elimi_agency_confirm": (1554, 941),
"ope_elimi_agency_panel": (1409, 612),
"ope_eliminate": (1332, 938),
"ope_recover_originite_on": (1514, 124),
"ope_recover_potion_on": (1046, 127),
"ope_select_start": (1579, 701),
"open_recruitment": (192, 143),
"order_label": (404, 137),
"pull_once": (1260, 950),
"read_and_agree": (1115, 767),
"recruiting_instructions": (343, 179),
"riic/exp": (1385, 239),
"riic/manufacture": (1328, 126),
"riic/report_title": (1712, 25),
"room_detail": (1291, 33),
"spent_credit": (332, 264),
"shop_cart": (1252, 842),
"shop_credit_2": (1657, 135),
"sign_in/banner": (147, 746),
"skip": (1803, 32),
"sss/deploy": (1645, 971),
"sss/device": (1644, 969),
"sss/ec": (1644, 969),
"sss/loading": (1642, 517),
"sss/main": (1224, 60),
"sss/redeploy": (1644, 970),
"sss/start": (1547, 968),
"sss/squad": (1645, 970),
"sss/terminated": (29, 241),
}
template_matching = {
"arrange_check_in": ((30, 300), (175, 700)),
"arrange_check_in_on": ((30, 300), (175, 700)),
"biography": (768, 934),
"business_card": (55, 165),
"collection": (1005, 943),
"collection_small": (1053, 982),
"connecting": (1087, 978),
"episode": (535, 937),
"fight/use": (858, 864),
"friend_list": (61, 306),
"credit_visiting": (78, 220),
"loading": (736, 333),
"loading2": (620, 247),
"loading3": (1681, 1000),
"loading4": (828, 429),
"main_theme": (283, 945),
"main_theme_small": (321, 973),
"materiel_ico": (892, 61),
"mission_daily_on": ((685, 15), (1910, 100)),
"mission_weekly_on": ((685, 15), (1910, 100)),
"navigation/collection/AP_entry": ((0, 170), (1920, 870)),
"navigation/collection/CA_entry": ((0, 170), (1920, 870)),
"navigation/collection/CE_entry": ((0, 170), (1920, 870)),
"navigation/collection/LS_entry": ((0, 170), (1920, 870)),
"navigation/collection/SK_entry": ((0, 170), (1920, 870)),
"navigation/collection/PR-A_entry": ((0, 170), (1920, 870)),
"navigation/collection/PR-B_entry": ((0, 170), (1920, 870)),
"navigation/collection/PR-C_entry": ((0, 170), (1920, 870)),
"navigation/collection/PR-D_entry": ((0, 170), (1920, 870)),
"navigation/episode": (1560, 944),
"navigation/ope_difficulty": [(0, 920), (120, 1080)],
"navigation/ope_normal": (172, 950),
"navigation/ope_normal_small": (494, 930),
"navigation/ope_hard": (172, 950),
"navigation/ope_hard_small": (819, 937),
"ope_agency_going": ((508, 941), (715, 1021)),
"ope_agency_fail": (809, 959),
"ope_failed": (183, 465),
"ope_finish": (87, 265),
"ope_plan": (1278, 24),
"ope_select_start_empty": ((0, 0), (400, 400)),
"recruit/agent_token": ((1740, 765), (1920, 805)),
"recruit/agent_token_first": ((1700, 760), (1920, 810)),
"recruit/available_level": (1294, 234),
"recruit/begin_recruit": None,
"recruit/career_needs": (350, 593),
"recruit/lmb": (945, 27),
"recruit/recruit_done": None,
"recruit/recruit_lock": None,
"recruit/job_requirements": None,
"recruit/ticket": ((900, 0), (1920, 120)),
"recruit/time": (1304, 112),
"recruit/refresh": (1366, 560),
"recruit/refresh_comfirm": (1237, 714),
"recruit/riic_res/CASTER": ((750, 730), (1920, 860)),
"recruit/riic_res/MEDIC": ((750, 730), (1920, 860)),
"recruit/riic_res/PIONEER": ((750, 730), (1920, 860)),
"recruit/riic_res/SPECIAL": ((750, 730), (1920, 860)),
"recruit/riic_res/SNIPER": ((750, 730), (1920, 860)),
"recruit/riic_res/SUPPORT": ((750, 730), (1920, 860)),
"recruit/riic_res/TANK": ((750, 730), (1920, 860)),
"recruit/riic_res/WARRIOR": ((750, 730), (1920, 860)),
"recruit/start_recruit": (1438, 849),
"recruit/stone": ((900, 0), (1920, 120)),
"riic/assistants": ((1320, 400), (1600, 650)),
"riic/iron": ((1570, 230), (1630, 340)),
"riic/orundum": ((1500, 320), (1800, 550)),
"riic/trade": ((1320, 250), (1600, 500)),
"terminal_main": (73, 959),
"terminal_regular": (1247, 980),
"upgrade": (997, 501),
}
template_matching_score = {
"connecting": 0.7,
"navigation/ope_hard": 0.7,
"navigation/ope_hard_small": 0.7,
"navigation/ope_normal": 0.7,
"navigation/ope_normal_small": 0.7,
"recruit/agent_token": 0.8,
"recruit/agent_token_first": 0.8,
"recruit/lmb": 0.7,
"recruit/riic_res/CASTER": 0.7,
"recruit/riic_res/MEDIC": 0.7,
"recruit/riic_res/PIONEER": 0.7,
"recruit/riic_res/SPECIAL": 0.7,
"recruit/riic_res/SNIPER": 0.7,
"recruit/riic_res/SUPPORT": 0.7,
"recruit/riic_res/TANK": 0.7,
"recruit/riic_res/WARRIOR": 0.7,
"recruit/time": 0.8,
"recruit/stone": 0.7,
}

View file

@ -277,6 +277,12 @@ class Scene:
"干员寻访"
DEPOT = 1301
"仓库"
ACTIVITY_MAIN = 1401
"活动主界面"
ACTIVITY_CHOOSE_LEVEL = 1402
"活动关选择"
SIGN_IN_DAILY = 1501
"签到活动"
LOADING = 9998
"场景跳转时的等待界面"
CONFIRM = 9999
@ -423,6 +429,9 @@ SceneComment = {
1111: "抵达终点",
1201: "干员寻访",
1301: "仓库",
1401: "活动主界面",
1402: "活动关选择",
1501: "签到活动",
9998: "场景跳转时的等待界面",
9999: "确认对话框",
}

View file

@ -17,7 +17,6 @@ Res = Literal[
"clue",
"clue_next",
"collection",
"collection_small",
"confirm",
"confirm_blue",
"connecting",
@ -62,10 +61,8 @@ Res = Literal[
"login_connecting",
"login_loading",
"login_logo",
"login_new",
"mail",
"main_theme",
"main_theme_small",
"materiel_ico",
"mission_collect",
"mission_daily",
@ -471,6 +468,8 @@ Res = Literal[
"recruit/stone",
"recruit/ticket",
"recruit/time",
"sign_in/banner",
"sign_in/entry",
"navigation/act/0",
"navigation/act/1",
"navigation/act/2",
@ -517,6 +516,16 @@ Res = Literal[
"navigation/main/7",
"navigation/main/8",
"navigation/main/9",
"navigation/activity/banner",
"navigation/activity/entry",
"navigation/activity/DT-1",
"navigation/activity/DT-2",
"navigation/activity/DT-3",
"navigation/activity/DT-4",
"navigation/activity/DT-5",
"navigation/activity/DT-6",
"navigation/activity/DT-7",
"navigation/activity/DT-8",
"ra/map/base",
"ra/map/冲突区_丢失的订单",
"ra/map/后舍_众人会聚之地",

View file

@ -20,7 +20,10 @@ with open("arknights_mower/utils/typealias/res.py", "w", encoding="utf-8") as f:
for py_file in sorted(Path("arknights_mower").glob("**/*.py")):
posix_path = py_file.as_posix()
if posix_path == "arknights_mower/utils/typealias/res.py":
if posix_path in [
"arknights_mower/utils/typealias/res.py",
"arknights_mower/utils/recognize/data.py",
]:
continue
with py_file.open("r", encoding="utf-8") as f:
content = f.read()

View file

@ -45,19 +45,10 @@ class Api:
return folder
def start(self, idx):
import platform
import sys
from subprocess import Popen
is_win = platform.system() == "Windows"
frozen = getattr(sys, "frozen", False) and hasattr(sys, "_MEIPASS")
if is_win and frozen:
Popen(["mower.exe", self.instances[idx]["path"]])
else:
if is_win:
Popen(["python.exe", "webview_ui.py", self.instances[idx]["path"]])
else:
Popen(["python3", "webview_ui.py", self.instances[idx]["path"]])
Popen([sys.executable, "webview_ui.py", self.instances[idx]["path"]])
def jump_to_index(window):
@ -68,7 +59,7 @@ if __name__ == "__main__":
api = Api()
window = webview.create_window(
title="多开管理器",
url="dist/index.html",
url="ui/dist/index.html",
js_api=api,
min_size=(400, 500),
width=400,

View file

@ -26,7 +26,7 @@ mimetypes.add_type("text/html", ".html")
mimetypes.add_type("text/css", ".css")
mimetypes.add_type("application/javascript", ".js")
app = Flask(__name__, static_folder="dist", static_url_path="")
app = Flask(__name__, static_folder="ui/dist", static_url_path="")
sock = Sock(app)
CORS(app)
@ -62,17 +62,17 @@ def require_token(f):
@app.route("/<path:path>")
def serve_index(path):
return send_from_directory("dist", path)
return send_from_directory("ui/dist", path)
@app.errorhandler(404)
def not_found(e):
if (path := request.path).startswith("/docs"):
try:
return send_from_directory("dist" + path, "index.html")
return send_from_directory("ui/dist" + path, "index.html")
except NotFound:
return "<h1>404 Not Found</h1>", 404
return send_from_directory("dist", "index.html")
return send_from_directory("ui/dist", "index.html")
@app.route("/conf", methods=["GET", "POST"])

1
ui/.gitignore vendored
View file

@ -9,7 +9,6 @@ lerna-debug.log*
node_modules
.DS_Store
dist
dist-ssr
coverage
*.local

30
ui/dist/assets/Avatar.js vendored Normal file
View file

@ -0,0 +1,30 @@
import{N as W,z as N,as as k,a_ as G,ar as P,bQ as K,au as C,B as V,ax as Y,r as y,d as T,j as x,ay as B,aY as q,aA as D,c3 as Q,s as U,az as X,u as J,w as Z,b4 as ee,H as R,aG as re,bf as oe}from"./_plugin-vue_export-helper.js";import{a as te}from"./Tag.js";import{au as ne}from"./main.js";const se=W&&"loading"in document.createElement("img"),ae=(e={})=>{var a;const{root:l=null}=e;return{hash:`${e.rootMargin||"0px 0px 0px 0px"}-${Array.isArray(e.threshold)?e.threshold.join(","):(a=e.threshold)!==null&&a!==void 0?a:"0"}`,options:Object.assign(Object.assign({},e),{root:(typeof l=="string"?document.querySelector(l):l)||document.documentElement})}},F=new WeakMap,_=new WeakMap,H=new WeakMap,ie=(e,a,l)=>{if(!e)return()=>{};const i=ae(a),{root:d}=i.options;let n;const c=F.get(d);c?n=c:(n=new Map,F.set(d,n));let h,t;n.has(i.hash)?(t=n.get(i.hash),t[1].has(e)||(h=t[0],t[1].add(e),h.observe(e))):(h=new IntersectionObserver(p=>{p.forEach(f=>{if(f.isIntersecting){const b=_.get(f.target),O=H.get(f.target);b&&b(),O&&(O.value=!0)}})},i.options),h.observe(e),t=[h,new Set([e])],n.set(i.hash,t));let u=!1;const g=()=>{u||(_.delete(e),H.delete(e),u=!0,t[1].has(e)&&(t[0].unobserve(e),t[1].delete(e)),t[1].size<=0&&n.delete(i.hash),n.size||F.delete(d))};return _.set(e,g),H.set(e,l),g},le=N("n-avatar-group"),de=k("avatar",`
width: var(--n-merged-size);
height: var(--n-merged-size);
color: #FFF;
font-size: var(--n-font-size);
display: inline-flex;
position: relative;
overflow: hidden;
text-align: center;
border: var(--n-border);
border-radius: var(--n-border-radius);
--n-merged-color: var(--n-color);
background-color: var(--n-merged-color);
transition:
border-color .3s var(--n-bezier),
background-color .3s var(--n-bezier),
color .3s var(--n-bezier);
`,[G(P("&","--n-merged-color: var(--n-color-modal);")),K(P("&","--n-merged-color: var(--n-color-popover);")),P("img",`
width: 100%;
height: 100%;
`),C("text",`
white-space: nowrap;
display: inline-block;
position: absolute;
left: 50%;
top: 50%;
`),k("icon",`
vertical-align: bottom;
font-size: calc(var(--n-merged-size) - 6px);
`),C("text","line-height: 1.25")]),ce=Object.assign(Object.assign({},B.props),{size:[String,Number],src:String,circle:{type:Boolean,default:void 0},objectFit:String,round:{type:Boolean,default:void 0},bordered:{type:Boolean,default:void 0},onError:Function,fallbackSrc:String,intersectionObserverOptions:Object,lazy:Boolean,onLoad:Function,renderPlaceholder:Function,renderFallback:Function,imgProps:Object,color:String}),he=V({name:"Avatar",props:ce,setup(e){const{mergedClsPrefixRef:a,inlineThemeDisabled:l}=Y(e),i=y(!1);let d=null;const n=y(null),c=y(null),h=()=>{const{value:r}=n;if(r&&(d===null||d!==r.innerHTML)){d=r.innerHTML;const{value:o}=c;if(o){const{offsetWidth:s,offsetHeight:m}=o,{offsetWidth:v,offsetHeight:E}=r,S=.9,L=Math.min(s/v*S,m/E*S,1);r.style.transform=`translateX(-50%) translateY(-50%) scale(${L})`}}},t=T(le,null),u=x(()=>{const{size:r}=e;if(r)return r;const{size:o}=t||{};return o||"medium"}),g=B("Avatar","-avatar",de,ne,e,a),p=T(te,null),f=x(()=>{if(t)return!0;const{round:r,circle:o}=e;return r!==void 0||o!==void 0?r||o:p?p.roundRef.value:!1}),b=x(()=>t?!0:e.bordered||!1),O=x(()=>{const r=u.value,o=f.value,s=b.value,{color:m}=e,{self:{borderRadius:v,fontSize:E,color:S,border:L,colorModal:$,colorPopover:A},common:{cubicBezierEaseInOut:I}}=g.value;let w;return typeof r=="number"?w=`${r}px`:w=g.value.self[q("height",r)],{"--n-font-size":E,"--n-border":s?L:"none","--n-border-radius":o?"50%":v,"--n-color":m||S,"--n-color-modal":m||$,"--n-color-popover":m||A,"--n-bezier":I,"--n-merged-size":`var(--n-avatar-size-override, ${w})`}}),z=l?D("avatar",x(()=>{const r=u.value,o=f.value,s=b.value,{color:m}=e;let v="";return r&&(typeof r=="number"?v+=`a${r}`:v+=r[0]),o&&(v+="b"),s&&(v+="c"),m&&(v+=Q(m)),v}),O,e):void 0,j=y(!e.lazy);U(()=>{if(e.lazy&&e.intersectionObserverOptions){let r;const o=X(()=>{r==null||r(),r=void 0,e.lazy&&(r=ie(c.value,e.intersectionObserverOptions,j))});J(()=>{o(),r==null||r()})}}),Z(()=>{var r;return e.src||((r=e.imgProps)===null||r===void 0?void 0:r.src)},()=>{i.value=!1});const M=y(!e.lazy);return{textRef:n,selfRef:c,mergedRoundRef:f,mergedClsPrefix:a,fitTextTransform:h,cssVars:l?void 0:O,themeClass:z==null?void 0:z.themeClass,onRender:z==null?void 0:z.onRender,hasLoadError:i,shouldStartLoading:j,loaded:M,mergedOnError:r=>{if(!j.value)return;i.value=!0;const{onError:o,imgProps:{onError:s}={}}=e;o==null||o(r),s==null||s(r)},mergedOnLoad:r=>{const{onLoad:o,imgProps:{onLoad:s}={}}=e;o==null||o(r),s==null||s(r),M.value=!0}}},render(){var e,a;const{$slots:l,src:i,mergedClsPrefix:d,lazy:n,onRender:c,loaded:h,hasLoadError:t,imgProps:u={}}=this;c==null||c();let g;const p=!h&&!t&&(this.renderPlaceholder?this.renderPlaceholder():(a=(e=this.$slots).placeholder)===null||a===void 0?void 0:a.call(e));return this.hasLoadError?g=this.renderFallback?this.renderFallback():ee(l.fallback,()=>[R("img",{src:this.fallbackSrc,style:{objectFit:this.objectFit}})]):g=re(l.default,f=>{if(f)return R(oe,{onResize:this.fitTextTransform},{default:()=>R("span",{ref:"textRef",class:`${d}-avatar__text`},f)});if(i||u.src){const b=this.src||u.src;return R("img",Object.assign(Object.assign({},u),{loading:se&&!this.intersectionObserverOptions&&n?"lazy":"eager",src:n&&this.intersectionObserverOptions?this.shouldStartLoading?b:void 0:b,"data-image-src":b,onLoad:this.mergedOnLoad,onError:this.mergedOnError,style:[u.style||"",{objectFit:this.objectFit},p?{height:"0",width:"0",visibility:"hidden",position:"absolute"}:""]}))}}),R("span",{ref:"selfRef",class:[`${d}-avatar`,this.themeClass],style:this.cssVars},g,n&&p)}});export{he as _,se as i,ie as o};

1
ui/dist/assets/BasementSkill.css vendored Normal file
View file

@ -0,0 +1 @@
.cc-vup{color:#0098dc}.cc-vdown{color:#ff6237}.cc-rem{color:#f49800}.cc-kw{color:#00b0ff}.riic-term{text-decoration:underline}

67
ui/dist/assets/BasementSkill.js vendored Normal file

File diff suppressed because one or more lines are too long

42
ui/dist/assets/Divider.js vendored Normal file
View file

@ -0,0 +1,42 @@
import{as as p,at as c,au as n,av as t,B as u,ax as f,ay as v,j as x,aA as b,H as d,F as _}from"./_plugin-vue_export-helper.js";import{at as C}from"./main.js";const $=p("divider",`
position: relative;
display: flex;
width: 100%;
box-sizing: border-box;
font-size: 16px;
color: var(--n-text-color);
transition:
color .3s var(--n-bezier),
background-color .3s var(--n-bezier);
`,[c("vertical",`
margin-top: 24px;
margin-bottom: 24px;
`,[c("no-title",`
display: flex;
align-items: center;
`)]),n("title",`
display: flex;
align-items: center;
margin-left: 12px;
margin-right: 12px;
white-space: nowrap;
font-weight: var(--n-font-weight);
`),t("title-position-left",[n("line",[t("left",{width:"28px"})])]),t("title-position-right",[n("line",[t("right",{width:"28px"})])]),t("dashed",[n("line",`
background-color: #0000;
height: 0px;
width: 100%;
border-style: dashed;
border-width: 1px 0 0;
`)]),t("vertical",`
display: inline-block;
height: 1em;
margin: 0 8px;
vertical-align: middle;
width: 1px;
`),n("line",`
border: none;
transition: background-color .3s var(--n-bezier), border-color .3s var(--n-bezier);
height: 1px;
width: 100%;
margin: 0;
`),c("dashed",[n("line",{backgroundColor:"var(--n-color)"})]),t("dashed",[n("line",{borderColor:"var(--n-color)"})]),t("vertical",{backgroundColor:"var(--n-color)"})]),w=Object.assign(Object.assign({},v.props),{titlePlacement:{type:String,default:"center"},dashed:Boolean,vertical:Boolean}),k=u({name:"Divider",props:w,setup(r){const{mergedClsPrefixRef:o,inlineThemeDisabled:l}=f(r),s=v("Divider","-divider",$,C,r,o),a=x(()=>{const{common:{cubicBezierEaseInOut:e},self:{color:h,textColor:g,fontWeight:m}}=s.value;return{"--n-bezier":e,"--n-color":h,"--n-text-color":g,"--n-font-weight":m}}),i=l?b("divider",void 0,a,r):void 0;return{mergedClsPrefix:o,cssVars:l?void 0:a,themeClass:i==null?void 0:i.themeClass,onRender:i==null?void 0:i.onRender}},render(){var r;const{$slots:o,titlePlacement:l,vertical:s,dashed:a,cssVars:i,mergedClsPrefix:e}=this;return(r=this.onRender)===null||r===void 0||r.call(this),d("div",{role:"separator",class:[`${e}-divider`,this.themeClass,{[`${e}-divider--vertical`]:s,[`${e}-divider--no-title`]:!o.default,[`${e}-divider--dashed`]:a,[`${e}-divider--title-position-${l}`]:o.default&&l}],style:i},s?null:d("div",{class:`${e}-divider__line ${e}-divider__line--left`}),!s&&o.default?d(_,null,d("div",{class:`${e}-divider__title`},this.$slots),d("div",{class:`${e}-divider__line ${e}-divider__line--right`})):null)}});export{k as _};

1
ui/dist/assets/Doc.css vendored Normal file
View file

@ -0,0 +1 @@
.link-container[data-v-4abe2846]{width:100%;padding:6px 12px 0;box-sizing:border-box}

1
ui/dist/assets/Doc.js vendored Normal file
View file

@ -0,0 +1 @@
import{br as a,bs as r,bC as n,bx as t,k as o,bv as c,bu as i,F as _,bF as l,bG as p}from"./_plugin-vue_export-helper.js";import{_ as d}from"./a.js";import"./main.js";const h={},m=e=>(l("data-v-4abe2846"),e=e(),p(),e),b={class:"link-container"},u=m(()=>t("iframe",{src:"/docs/index.html",sandbox:"allow-popups allow-scripts allow-same-origin allow-forms",style:{width:"100%",height:"100vh",border:"none"}},null,-1));function f(e,w){const s=d;return r(),n(_,null,[t("div",b,[o(" 在线文档地址: "),c(s,{href:"https://arkmowers.github.io/arknights-mower/",target:"_blank"},{default:i(()=>[o(" https://arkmowers.github.io/arknights-mower/ ")]),_:1})]),u],64)}const v=a(h,[["render",f],["__scopeId","data-v-4abe2846"]]);export{v as default};

1
ui/dist/assets/DropDown.css vendored Normal file
View file

@ -0,0 +1 @@
.button_row[data-v-0b959ed7]{margin-top:8px}.task_row[data-v-0b959ed7]{display:flex;align-items:center;gap:8px;width:100%}.task_row .n-input[data-v-0b959ed7]{width:140px}.outer[data-v-0b959ed7]{display:flex;flex-direction:row;align-items:center;gap:18px}.inner[data-v-0b959ed7]{display:flex;flex-direction:column;gap:8px}.task-col[data-v-0b959ed7]{display:flex;flex-direction:row;gap:8px;align-items:center}.n-dynamic-tags[data-v-0b959ed7]{align-items:center}.ml[data-v-0b959ed7]{margin-left:16px}.dropdown[data-v-751873a1]{padding-left:var(--3750a4ee);padding-right:var(--3750a4ee)}

341
ui/dist/assets/DropDown.js vendored Normal file

File diff suppressed because one or more lines are too long

1
ui/dist/assets/Forward.js vendored Normal file
View file

@ -0,0 +1 @@
import{B as e,H as r}from"./_plugin-vue_export-helper.js";function t(n){switch(n){case"tiny":return"mini";case"small":return"tiny";case"medium":return"small";case"large":return"medium";case"huge":return"large"}throw Error(`${n} has no smaller size.`)}const l=e({name:"Backward",render(){return r("svg",{viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r("path",{d:"M12.2674 15.793C11.9675 16.0787 11.4927 16.0672 11.2071 15.7673L6.20572 10.5168C5.9298 10.2271 5.9298 9.7719 6.20572 9.48223L11.2071 4.23177C11.4927 3.93184 11.9675 3.92031 12.2674 4.206C12.5673 4.49169 12.5789 4.96642 12.2932 5.26634L7.78458 9.99952L12.2932 14.7327C12.5789 15.0326 12.5673 15.5074 12.2674 15.793Z",fill:"currentColor"}))}}),s=e({name:"FastBackward",render(){return r("svg",{viewBox:"0 0 20 20",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},r("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},r("g",{fill:"currentColor","fill-rule":"nonzero"},r("path",{d:"M8.73171,16.7949 C9.03264,17.0795 9.50733,17.0663 9.79196,16.7654 C10.0766,16.4644 10.0634,15.9897 9.76243,15.7051 L4.52339,10.75 L17.2471,10.75 C17.6613,10.75 17.9971,10.4142 17.9971,10 C17.9971,9.58579 17.6613,9.25 17.2471,9.25 L4.52112,9.25 L9.76243,4.29275 C10.0634,4.00812 10.0766,3.53343 9.79196,3.2325 C9.50733,2.93156 9.03264,2.91834 8.73171,3.20297 L2.31449,9.27241 C2.14819,9.4297 2.04819,9.62981 2.01448,9.8386 C2.00308,9.89058 1.99707,9.94459 1.99707,10 C1.99707,10.0576 2.00356,10.1137 2.01585,10.1675 C2.05084,10.3733 2.15039,10.5702 2.31449,10.7254 L8.73171,16.7949 Z"}))))}}),a=e({name:"FastForward",render(){return r("svg",{viewBox:"0 0 20 20",version:"1.1",xmlns:"http://www.w3.org/2000/svg"},r("g",{stroke:"none","stroke-width":"1",fill:"none","fill-rule":"evenodd"},r("g",{fill:"currentColor","fill-rule":"nonzero"},r("path",{d:"M11.2654,3.20511 C10.9644,2.92049 10.4897,2.93371 10.2051,3.23464 C9.92049,3.53558 9.93371,4.01027 10.2346,4.29489 L15.4737,9.25 L2.75,9.25 C2.33579,9.25 2,9.58579 2,10.0000012 C2,10.4142 2.33579,10.75 2.75,10.75 L15.476,10.75 L10.2346,15.7073 C9.93371,15.9919 9.92049,16.4666 10.2051,16.7675 C10.4897,17.0684 10.9644,17.0817 11.2654,16.797 L17.6826,10.7276 C17.8489,10.5703 17.9489,10.3702 17.9826,10.1614 C17.994,10.1094 18,10.0554 18,10.0000012 C18,9.94241 17.9935,9.88633 17.9812,9.83246 C17.9462,9.62667 17.8467,9.42976 17.6826,9.27455 L11.2654,3.20511 Z"}))))}}),C=e({name:"Forward",render(){return r("svg",{viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg"},r("path",{d:"M7.73271 4.20694C8.03263 3.92125 8.50737 3.93279 8.79306 4.23271L13.7944 9.48318C14.0703 9.77285 14.0703 10.2281 13.7944 10.5178L8.79306 15.7682C8.50737 16.0681 8.03263 16.0797 7.73271 15.794C7.43279 15.5083 7.42125 15.0336 7.70694 14.7336L12.2155 10.0005L7.70694 5.26729C7.42125 4.96737 7.43279 4.49264 7.73271 4.20694Z",fill:"currentColor"}))}});export{l as B,s as F,C as a,a as b,t as s};

1
ui/dist/assets/Grid.js vendored Normal file

File diff suppressed because one or more lines are too long

1
ui/dist/assets/HelpText.css vendored Normal file
View file

@ -0,0 +1 @@
.help[data-v-a623cdce]{z-index:100}

1
ui/dist/assets/HelpText.js vendored Normal file
View file

@ -0,0 +1 @@
import{br as _,bs as a,bt as i,bu as t,bv as n,K as l,aX as p,b3 as d,bF as u,bG as m,bx as e}from"./_plugin-vue_export-helper.js";import{N as f}from"./main.js";const w={},g=o=>(u("data-v-a623cdce"),o=o(),m(),o),h=g(()=>e("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 512 512"},[e("path",{d:"M160 164s1.44-33 33.54-59.46C212.6 88.83 235.49 84.28 256 84c18.73-.23 35.47 2.94 45.48 7.82C318.59 100.2 352 120.6 352 164c0 45.67-29.18 66.37-62.35 89.18S248 298.36 248 324",fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-miterlimit":"10","stroke-width":"40"}),e("circle",{cx:"248",cy:"399.99",r:"32",fill:"currentColor"})],-1));function b(o,x){const c=p,s=d,r=f;return a(),i(r,{trigger:"hover"},{trigger:t(()=>[n(s,{tertiary:"",circle:"",class:"help",size:"tiny"},{icon:t(()=>[n(c,null,{default:t(()=>[h]),_:1})]),_:1})]),default:t(()=>[l(o.$slots,"default",{},void 0,!0)]),_:3})}const C=_(w,[["render",b],["__scopeId","data-v-a623cdce"]]);export{C as _};

258
ui/dist/assets/Input.js vendored Normal file

File diff suppressed because one or more lines are too long

1
ui/dist/assets/Log.css vendored Normal file
View file

@ -0,0 +1 @@
.log[data-v-9d004220]{overflow:hidden;flex:1}.task-table[data-v-9d004220]{max-width:600px}.task-table th[data-v-9d004220]{padding:2px 16px}.task-table td[data-v-9d004220]{height:24px;padding:2px 8px}.task-table td[data-v-9d004220]:last-child{width:100%}.action-container[data-v-9d004220]{display:flex;align-items:center;gap:12px}.scroll-container[data-v-9d004220]{display:flex;align-items:center;gap:4px}.expand[data-v-9d004220]{flex-grow:1}.toggle-table-collapse-btn[data-v-9d004220]{position:absolute;top:12px;right:12px}.log-bg[data-v-9d004220]{content:"";width:100%;height:100%;position:absolute;top:0;left:0;opacity:var(--3d2cf20e);background-image:url(/bg.webp);background-repeat:no-repeat;background-size:cover;background-position:65% 50%;pointer-events:none}.hljs-date{color:#f0a020!important;font-weight:700}.hljs-time{color:#2080f0!important;font-weight:700}.hljs-room{color:#18a058!important;font-weight:700}.hljs-operator{color:#d03050!important}.hljs-info{font-weight:700}.hljs-warning{color:#f0a020!important;font-weight:700}.hljs-error{color:#d03050!important;font-weight:700}.hljs-scene{font-style:italic}

145
ui/dist/assets/Log.js vendored Normal file

File diff suppressed because one or more lines are too long

478
ui/dist/assets/Material_all_in_one.js vendored Normal file

File diff suppressed because one or more lines are too long

1
ui/dist/assets/NotFound.js vendored Normal file
View file

@ -0,0 +1 @@
import{br as o,bs as e,bt as n,bu as r,k as c}from"./_plugin-vue_export-helper.js";import{a}from"./headers.js";import"./main.js";const s={};function _(f,u){const t=a;return e(),n(t,null,{default:r(()=>[c("404 Not Found")]),_:1})}const i=o(s,[["render",_]]);export{i as default};

1
ui/dist/assets/Plan.css vendored Normal file
View file

@ -0,0 +1 @@
.select-label[data-v-78258008]{width:44px}.type-select[data-v-78258008]{width:100px;margin-right:8px}.product-select[data-v-78258008]{width:180px;margin-right:8px}.operator-select[data-v-78258008]{width:220px}.replacement-select[data-v-78258008]{min-width:400px}.plan-container[data-v-78258008]{width:980px;min-width:980px;display:flex;flex-direction:column;gap:12px}.group[data-v-78258008]{width:160px}.facility-2[data-v-78258008]{width:124px;height:76px;margin:2px 3px}.facility-3[data-v-78258008]{width:175px;height:76px;margin:2px 3px}.facility-5[data-v-78258008]{width:277px;height:76px;margin:2px 3px}.avatars[data-v-78258008]{display:flex;gap:6px;z-index:5}.avatars img[data-v-78258008]{box-sizing:content-box;border-radius:2px;background:var(--3a9b0e51)}.facility-name[data-v-78258008]{margin-bottom:4px;text-align:center;line-height:1;display:flex;justify-content:space-around;z-index:5}.outer[data-v-78258008]{display:flex;margin:0 auto}.left_box[data-v-78258008]{display:flex;flex-direction:column;gap:4px;padding-top:82px;padding-right:2px}.left_box .left_contain[data-v-78258008]{display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px}.left_box .left_contain>div[data-v-78258008]{box-sizing:border-box;width:175px;height:76px;cursor:pointer}.left_box .left_contain .info[data-v-78258008]{background-color:#2080f029;border-radius:3px;border:1px solid transparent;transition:all .3s;position:relative}.left_box .left_contain .info[data-v-78258008]:hover{background-color:#2080f038}.left_box .left_contain .info.true[data-v-78258008]{background-color:var(--n-color);border:1px solid rgb(32,128,240)}.left_box .left_contain .info .facility-name[data-v-78258008]{color:#2080f0}.left_box .left_contain .warning[data-v-78258008]{background-color:#f0a02029;border-radius:3px;border:1px solid transparent;transition:all .3s;position:relative}.left_box .left_contain .warning[data-v-78258008]:hover{background-color:#f0a02038}.left_box .left_contain .warning.true[data-v-78258008]{background-color:var(--n-color);border:1px solid rgb(240,160,32)}.left_box .left_contain .warning .facility-name[data-v-78258008]{color:#f0a020}.left_box .left_contain .primary[data-v-78258008]{background-color:#18a05829;border-radius:3px;border:1px solid transparent;transition:all .3s}.left_box .left_contain .primary[data-v-78258008]:hover{background-color:#18a05838}.left_box .left_contain .primary.true[data-v-78258008]{background-color:var(--n-color);border:1px solid rgb(24,160,88)}.left_box .left_contain .primary .facility-name[data-v-78258008]{color:#18a058}.mid_box[data-v-78258008]{display:flex;flex-direction:column}.waiting[data-v-78258008]{width:100%;height:100%;display:flex;align-items:center;justify-content:center;border:1px dashed rgb(51,54,57);opacity:.6;transition:all .3s;cursor:pointer;border-radius:3px}.waiting[data-v-78258008]:hover{opacity:1;border:1px dashed rgb(54,173,106);color:#36ad6a}.waiting div[data-v-78258008]{text-align:center}.draggable[data-v-78258008]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.product-bg[data-v-78258008]{content:"";position:absolute;top:0;left:0;width:173px;height:74px;opacity:var(--7f05acbb);background-repeat:no-repeat;background-size:100%;background-position:110px -20px;z-index:3;pointer-events:none}.avatar-wrapper[data-v-78258008]{position:relative}.workaholic[data-v-78258008]{position:absolute;content:"";top:0;left:0;width:45px;height:45px;opacity:.35;background-color:red;pointer-events:none}.n-base-selection-placeholder .n-avatar{display:none}.n-table[data-v-d70a169d]{min-width:100%}.n-table th[data-v-d70a169d]{width:124px;box-sizing:border-box}.label[data-v-d70a169d]{display:flex;flex-direction:row;align-items:center;gap:6px}.dropdown-container{display:flex;align-items:center;margin-top:5px}.dropdown-label{flex:0 0 40%;max-width:125px}.dropdown-select{flex:1}.w-980[data-v-53621c35]{width:100%;max-width:980px}.mx-auto[data-v-53621c35]{margin:0 auto}.mt-12[data-v-53621c35]{margin-top:12px}.mb-12[data-v-53621c35]{margin-bottom:12px}.px-12[data-v-53621c35]{padding:0 12px}.mw-980[data-v-53621c35]{min-width:980px}.plan-bar[data-v-53621c35]{display:flex;flex-direction:row;flex-grow:0;gap:6px;padding:0 12px}

17
ui/dist/assets/Plan.js vendored Normal file

File diff suppressed because one or more lines are too long

1
ui/dist/assets/Play.js vendored Normal file
View file

@ -0,0 +1 @@
import{bm as o}from"./_plugin-vue_export-helper.js";var n={};Object.defineProperty(n,"__esModule",{value:!0});const e=o,c={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 512 512"},a=(0,e.createElementVNode)("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"32",d:"M256 112v288"},null,-1),i=(0,e.createElementVNode)("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"32",d:"M400 256H112"},null,-1),u=[a,i];var k=n.default=(0,e.defineComponent)({name:"Add",render:function(d,s){return(0,e.openBlock)(),(0,e.createElementBlock)("svg",c,u)}}),r={};Object.defineProperty(r,"__esModule",{value:!0});const t=o,_={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 512 512"},w=(0,t.createElementVNode)("path",{d:"M133 440a35.37 35.37 0 0 1-17.5-4.67c-12-6.8-19.46-20-19.46-34.33V111c0-14.37 7.46-27.53 19.46-34.33a35.13 35.13 0 0 1 35.77.45l247.85 148.36a36 36 0 0 1 0 61l-247.89 148.4A35.5 35.5 0 0 1 133 440z",fill:"currentColor"},null,-1),h=[w];var m=r.default=(0,t.defineComponent)({name:"Play",render:function(d,s){return(0,t.openBlock)(),(0,t.createElementBlock)("svg",_,h)}});export{k as _,m as a};

157
ui/dist/assets/RadioGroup.js vendored Normal file
View file

@ -0,0 +1,157 @@
import{z as ne,bH as O,r as I,d as ae,b as U,aI as N,A as G,ax as j,aL as F,as as _,av as f,au as s,ar as R,at as H,B as M,ay as D,j as $,aY as V,b0 as K,aA as L,H as y,aG as ie,D as de}from"./_plugin-vue_export-helper.js";import{ad as W,C as se}from"./main.js";import{g as le}from"./get-slot.js";const Re=(e,o)=>{if(!e)return;const t=document.createElement("a");t.href=e,o!==void 0&&(t.download=o),document.body.appendChild(t),t.click(),document.body.removeChild(t)},ce={name:String,value:{type:[String,Number,Boolean],default:"on"},checked:{type:Boolean,default:void 0},defaultChecked:Boolean,disabled:{type:Boolean,default:void 0},label:String,size:String,onUpdateChecked:[Function,Array],"onUpdate:checked":[Function,Array],checkedValue:{type:Boolean,default:void 0}},Y=ne("n-radio-group");function ue(e){const o=O(e,{mergedSize(a){const{size:l}=e;if(l!==void 0)return l;if(r){const{mergedSizeRef:{value:u}}=r;if(u!==void 0)return u}return a?a.mergedSize.value:"medium"},mergedDisabled(a){return!!(e.disabled||r!=null&&r.disabledRef.value||a!=null&&a.disabled.value)}}),{mergedSizeRef:t,mergedDisabledRef:i}=o,n=I(null),g=I(null),r=ae(Y,null),b=I(e.defaultChecked),d=U(e,"checked"),p=N(d,b),m=G(()=>r?r.valueRef.value===e.value:p.value),w=G(()=>{const{name:a}=e;if(a!==void 0)return a;if(r)return r.nameRef.value}),v=I(!1);function C(){if(r){const{doUpdateValue:a}=r,{value:l}=e;F(a,l)}else{const{onUpdateChecked:a,"onUpdate:checked":l}=e,{nTriggerFormInput:u,nTriggerFormChange:c}=o;a&&F(a,!0),l&&F(l,!0),u(),c(),b.value=!0}}function x(){i.value||m.value||C()}function k(){x(),n.value&&(n.value.checked=m.value)}function z(){v.value=!1}function S(){v.value=!0}return{mergedClsPrefix:r?r.mergedClsPrefixRef:j(e).mergedClsPrefixRef,inputRef:n,labelRef:g,mergedName:w,mergedDisabled:i,renderSafeChecked:m,focus:v,mergedSize:t,handleRadioInputChange:k,handleRadioInputBlur:z,handleRadioInputFocus:S}}const be=_("radio",`
line-height: var(--n-label-line-height);
outline: none;
position: relative;
user-select: none;
-webkit-user-select: none;
display: inline-flex;
align-items: flex-start;
flex-wrap: nowrap;
font-size: var(--n-font-size);
word-break: break-word;
`,[f("checked",[s("dot",`
background-color: var(--n-color-active);
`)]),s("dot-wrapper",`
position: relative;
flex-shrink: 0;
flex-grow: 0;
width: var(--n-radio-size);
`),_("radio-input",`
position: absolute;
border: 0;
border-radius: inherit;
left: 0;
right: 0;
top: 0;
bottom: 0;
opacity: 0;
z-index: 1;
cursor: pointer;
`),s("dot",`
position: absolute;
top: 50%;
left: 0;
transform: translateY(-50%);
height: var(--n-radio-size);
width: var(--n-radio-size);
background: var(--n-color);
box-shadow: var(--n-box-shadow);
border-radius: 50%;
transition:
background-color .3s var(--n-bezier),
box-shadow .3s var(--n-bezier);
`,[R("&::before",`
content: "";
opacity: 0;
position: absolute;
left: 4px;
top: 4px;
height: calc(100% - 8px);
width: calc(100% - 8px);
border-radius: 50%;
transform: scale(.8);
background: var(--n-dot-color-active);
transition:
opacity .3s var(--n-bezier),
background-color .3s var(--n-bezier),
transform .3s var(--n-bezier);
`),f("checked",{boxShadow:"var(--n-box-shadow-active)"},[R("&::before",`
opacity: 1;
transform: scale(1);
`)])]),s("label",`
color: var(--n-text-color);
padding: var(--n-label-padding);
font-weight: var(--n-label-font-weight);
display: inline-block;
transition: color .3s var(--n-bezier);
`),H("disabled",`
cursor: pointer;
`,[R("&:hover",[s("dot",{boxShadow:"var(--n-box-shadow-hover)"})]),f("focus",[R("&:not(:active)",[s("dot",{boxShadow:"var(--n-box-shadow-focus)"})])])]),f("disabled",`
cursor: not-allowed;
`,[s("dot",{boxShadow:"var(--n-box-shadow-disabled)",backgroundColor:"var(--n-color-disabled)"},[R("&::before",{backgroundColor:"var(--n-dot-color-disabled)"}),f("checked",`
opacity: 1;
`)]),s("label",{color:"var(--n-text-color-disabled)"}),_("radio-input",`
cursor: not-allowed;
`)])]),he=Object.assign(Object.assign({},D.props),ce),we=M({name:"Radio",props:he,setup(e){const o=ue(e),t=D("Radio","-radio",be,W,e,o.mergedClsPrefix),i=$(()=>{const{mergedSize:{value:p}}=o,{common:{cubicBezierEaseInOut:m},self:{boxShadow:w,boxShadowActive:v,boxShadowDisabled:C,boxShadowFocus:x,boxShadowHover:k,color:z,colorDisabled:S,colorActive:a,textColor:l,textColorDisabled:u,dotColorActive:c,dotColorDisabled:h,labelPadding:B,labelLineHeight:T,labelFontWeight:E,[V("fontSize",p)]:A,[V("radioSize",p)]:P}}=t.value;return{"--n-bezier":m,"--n-label-line-height":T,"--n-label-font-weight":E,"--n-box-shadow":w,"--n-box-shadow-active":v,"--n-box-shadow-disabled":C,"--n-box-shadow-focus":x,"--n-box-shadow-hover":k,"--n-color":z,"--n-color-active":a,"--n-color-disabled":S,"--n-dot-color-active":c,"--n-dot-color-disabled":h,"--n-font-size":A,"--n-radio-size":P,"--n-text-color":l,"--n-text-color-disabled":u,"--n-label-padding":B}}),{inlineThemeDisabled:n,mergedClsPrefixRef:g,mergedRtlRef:r}=j(e),b=K("Radio",r,g),d=n?L("radio",$(()=>o.mergedSize.value[0]),i,e):void 0;return Object.assign(o,{rtlEnabled:b,cssVars:n?void 0:i,themeClass:d==null?void 0:d.themeClass,onRender:d==null?void 0:d.onRender})},render(){const{$slots:e,mergedClsPrefix:o,onRender:t,label:i}=this;return t==null||t(),y("label",{class:[`${o}-radio`,this.themeClass,this.rtlEnabled&&`${o}-radio--rtl`,this.mergedDisabled&&`${o}-radio--disabled`,this.renderSafeChecked&&`${o}-radio--checked`,this.focus&&`${o}-radio--focus`],style:this.cssVars},y("input",{ref:"inputRef",type:"radio",class:`${o}-radio-input`,value:this.value,name:this.mergedName,checked:this.renderSafeChecked,disabled:this.mergedDisabled,onChange:this.handleRadioInputChange,onFocus:this.handleRadioInputFocus,onBlur:this.handleRadioInputBlur}),y("div",{class:`${o}-radio__dot-wrapper`}," ",y("div",{class:[`${o}-radio__dot`,this.renderSafeChecked&&`${o}-radio__dot--checked`]})),ie(e.default,n=>!n&&!i?null:y("div",{ref:"labelRef",class:`${o}-radio__label`},n||i)))}}),ve=_("radio-group",`
display: inline-block;
font-size: var(--n-font-size);
`,[s("splitor",`
display: inline-block;
vertical-align: bottom;
width: 1px;
transition:
background-color .3s var(--n-bezier),
opacity .3s var(--n-bezier);
background: var(--n-button-border-color);
`,[f("checked",{backgroundColor:"var(--n-button-border-color-active)"}),f("disabled",{opacity:"var(--n-opacity-disabled)"})]),f("button-group",`
white-space: nowrap;
height: var(--n-height);
line-height: var(--n-height);
`,[_("radio-button",{height:"var(--n-height)",lineHeight:"var(--n-height)"}),s("splitor",{height:"var(--n-height)"})]),_("radio-button",`
vertical-align: bottom;
outline: none;
position: relative;
user-select: none;
-webkit-user-select: none;
display: inline-block;
box-sizing: border-box;
padding-left: 14px;
padding-right: 14px;
white-space: nowrap;
transition:
background-color .3s var(--n-bezier),
opacity .3s var(--n-bezier),
border-color .3s var(--n-bezier),
color .3s var(--n-bezier);
background: var(--n-button-color);
color: var(--n-button-text-color);
border-top: 1px solid var(--n-button-border-color);
border-bottom: 1px solid var(--n-button-border-color);
`,[_("radio-input",`
pointer-events: none;
position: absolute;
border: 0;
border-radius: inherit;
left: 0;
right: 0;
top: 0;
bottom: 0;
opacity: 0;
z-index: 1;
`),s("state-border",`
z-index: 1;
pointer-events: none;
position: absolute;
box-shadow: var(--n-button-box-shadow);
transition: box-shadow .3s var(--n-bezier);
left: -1px;
bottom: -1px;
right: -1px;
top: -1px;
`),R("&:first-child",`
border-top-left-radius: var(--n-button-border-radius);
border-bottom-left-radius: var(--n-button-border-radius);
border-left: 1px solid var(--n-button-border-color);
`,[s("state-border",`
border-top-left-radius: var(--n-button-border-radius);
border-bottom-left-radius: var(--n-button-border-radius);
`)]),R("&:last-child",`
border-top-right-radius: var(--n-button-border-radius);
border-bottom-right-radius: var(--n-button-border-radius);
border-right: 1px solid var(--n-button-border-color);
`,[s("state-border",`
border-top-right-radius: var(--n-button-border-radius);
border-bottom-right-radius: var(--n-button-border-radius);
`)]),H("disabled",`
cursor: pointer;
`,[R("&:hover",[s("state-border",`
transition: box-shadow .3s var(--n-bezier);
box-shadow: var(--n-button-box-shadow-hover);
`),H("checked",{color:"var(--n-button-text-color-hover)"})]),f("focus",[R("&:not(:active)",[s("state-border",{boxShadow:"var(--n-button-box-shadow-focus)"})])])]),f("checked",`
background: var(--n-button-color-active);
color: var(--n-button-text-color-active);
border-color: var(--n-button-border-color-active);
`),f("disabled",`
cursor: not-allowed;
opacity: var(--n-opacity-disabled);
`)])]);function fe(e,o,t){var i;const n=[];let g=!1;for(let r=0;r<e.length;++r){const b=e[r],d=(i=b.type)===null||i===void 0?void 0:i.name;d==="RadioButton"&&(g=!0);const p=b.props;if(d!=="RadioButton"){n.push(b);continue}if(r===0)n.push(b);else{const m=n[n.length-1].props,w=o===m.value,v=m.disabled,C=o===p.value,x=p.disabled,k=(w?2:0)+(v?0:1),z=(C?2:0)+(x?0:1),S={[`${t}-radio-group__splitor--disabled`]:v,[`${t}-radio-group__splitor--checked`]:w},a={[`${t}-radio-group__splitor--disabled`]:x,[`${t}-radio-group__splitor--checked`]:C},l=k<z?a:S;n.push(y("div",{class:[`${t}-radio-group__splitor`,l]}),b)}}return{children:n,isButtonGroup:g}}const ge=Object.assign(Object.assign({},D.props),{name:String,value:[String,Number,Boolean],defaultValue:{type:[String,Number,Boolean],default:null},size:String,disabled:{type:Boolean,default:void 0},"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array]}),Ce=M({name:"RadioGroup",props:ge,setup(e){const o=I(null),{mergedSizeRef:t,mergedDisabledRef:i,nTriggerFormChange:n,nTriggerFormInput:g,nTriggerFormBlur:r,nTriggerFormFocus:b}=O(e),{mergedClsPrefixRef:d,inlineThemeDisabled:p,mergedRtlRef:m}=j(e),w=D("Radio","-radio-group",ve,W,e,d),v=I(e.defaultValue),C=U(e,"value"),x=N(C,v);function k(c){const{onUpdateValue:h,"onUpdate:value":B}=e;h&&F(h,c),B&&F(B,c),v.value=c,n(),g()}function z(c){const{value:h}=o;h&&(h.contains(c.relatedTarget)||b())}function S(c){const{value:h}=o;h&&(h.contains(c.relatedTarget)||r())}de(Y,{mergedClsPrefixRef:d,nameRef:U(e,"name"),valueRef:x,disabledRef:i,mergedSizeRef:t,doUpdateValue:k});const a=K("Radio",m,d),l=$(()=>{const{value:c}=t,{common:{cubicBezierEaseInOut:h},self:{buttonBorderColor:B,buttonBorderColorActive:T,buttonBorderRadius:E,buttonBoxShadow:A,buttonBoxShadowFocus:P,buttonBoxShadowHover:q,buttonColor:J,buttonColorActive:Q,buttonTextColor:X,buttonTextColorActive:Z,buttonTextColorHover:ee,opacityDisabled:oe,[V("buttonHeight",c)]:te,[V("fontSize",c)]:re}}=w.value;return{"--n-font-size":re,"--n-bezier":h,"--n-button-border-color":B,"--n-button-border-color-active":T,"--n-button-border-radius":E,"--n-button-box-shadow":A,"--n-button-box-shadow-focus":P,"--n-button-box-shadow-hover":q,"--n-button-color":J,"--n-button-color-active":Q,"--n-button-text-color":X,"--n-button-text-color-hover":ee,"--n-button-text-color-active":Z,"--n-height":te,"--n-opacity-disabled":oe}}),u=p?L("radio-group",$(()=>t.value[0]),l,e):void 0;return{selfElRef:o,rtlEnabled:a,mergedClsPrefix:d,mergedValue:x,handleFocusout:S,handleFocusin:z,cssVars:p?void 0:l,themeClass:u==null?void 0:u.themeClass,onRender:u==null?void 0:u.onRender}},render(){var e;const{mergedValue:o,mergedClsPrefix:t,handleFocusin:i,handleFocusout:n}=this,{children:g,isButtonGroup:r}=fe(se(le(this)),o,t);return(e=this.onRender)===null||e===void 0||e.call(this),y("div",{onFocusin:i,onFocusout:n,ref:"selfElRef",class:[`${t}-radio-group`,this.rtlEnabled&&`${t}-radio-group--rtl`,this.themeClass,r&&`${t}-radio-group--button-group`],style:this.cssVars},g)}});export{we as _,Ce as a,Re as d,ce as r,ue as s};

1
ui/dist/assets/RecordLine.css vendored Normal file
View file

@ -0,0 +1 @@
h2[data-v-a94ff07f]{margin:0;font-size:1.2rem;text-align:center}.page-title[data-v-a94ff07f]{text-align:center;font-size:24px;margin-bottom:20px}.report-card[data-v-a94ff07f]{position:relative;background-color:var(--n-color);padding:10px 20px 16px;height:300px;box-sizing:border-box;border-radius:8px}.report-card-expand[data-v-a94ff07f]{position:absolute;width:calc(100% - 24px);height:calc(100% - 24px);top:12px;left:12px;box-sizing:border-box;z-index:9}.toggle[data-v-a94ff07f]{position:absolute;top:10px}.toggle-size[data-v-a94ff07f]{right:10px}.toggle-width[data-v-a94ff07f]{left:10px}.line-outer-container[data-v-a94ff07f]{width:100%;overflow-x:scroll;flex:1}.line-inner-container[data-v-a94ff07f]{padding:0 12px 16px;height:100%;box-sizing:border-box}

1
ui/dist/assets/RecordLine.js vendored Normal file
View file

@ -0,0 +1 @@
import{u as z,C as N,a as V,L,T as j,b as D,P as I,c as P,p as R,d as O,e as F,f as H,A as T,g as q,h as G}from"./record.js";import{bm as f,br as K,r as u,s as X,bs as r,bC as x,bv as o,bu as l,F as Z,bD as J,bF as Q,bG as U,bx as _,bt as v,bK as W,bE as Y,bL as ee,bo as d,aX as te,b3 as oe}from"./_plugin-vue_export-helper.js";import{b as ae,_ as ne}from"./Grid.js";import"./main.js";import"./get-slot.js";var M={};Object.defineProperty(M,"__esModule",{value:!0});const h=f,se={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},le=(0,h.createStaticVNode)('<g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 4h4v4"></path><path d="M14 10l6-6"></path><path d="M8 20H4v-4"></path><path d="M4 20l6-6"></path></g>',1),re=[le];var ce=M.default=(0,h.defineComponent)({name:"ArrowsDiagonal",render:function(c,i){return(0,h.openBlock)(),(0,h.createElementBlock)("svg",se,re)}}),y={};Object.defineProperty(y,"__esModule",{value:!0});const m=f,ie={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},pe=(0,m.createStaticVNode)('<g fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 10h-4V6"></path><path d="M20 4l-6 6"></path><path d="M6 14h4v4"></path><path d="M10 14l-6 6"></path></g>',1),ue=[pe];var de=y.default=(0,m.defineComponent)({name:"ArrowsDiagonalMinimize2",render:function(c,i){return(0,m.openBlock)(),(0,m.createElementBlock)("svg",ie,ue)}}),C={};Object.defineProperty(C,"__esModule",{value:!0});const a=f,_e={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},he=(0,a.createElementVNode)("g",{fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[(0,a.createElementVNode)("path",{d:"M7 8l-4 4l4 4"}),(0,a.createElementVNode)("path",{d:"M17 8l4 4l-4 4"}),(0,a.createElementVNode)("path",{d:"M3 12h18"})],-1),me=[he];var ge=C.default=(0,a.defineComponent)({name:"ArrowsHorizontal",render:function(c,i){return(0,a.openBlock)(),(0,a.createElementBlock)("svg",_e,me)}});const ve=e=>(Q("data-v-a94ff07f"),e=e(),U(),e),fe=ve(()=>_("h1",{class:"page-title"},"干员心情折线表",-1)),we={class:"line-outer-container"},ke={__name:"RecordLine",setup(e){const c=z(),{getMoodRatios:i}=c;N.register(V,L,j,D,I,P,R,O,F,H,T,q);const p=u(-1),t=u([]),g=u([]);X(async()=>{g.value=await i(),t.value=new Array(g.value.length).fill(100)});const S=u({responsive:!0,maintainAspectRatio:!1,scales:{x:{autoSkip:!0,type:"time",time:{unit:"day"}},y:{beginAtZero:!0,ticks:{min:0,max:24,stepSize:4}}},plugins:{datalabels:{display:!1}}});function $(n){t.value[n]==100?t.value[n]=300:t.value[n]==300?t.value[n]=700:t.value[n]=100}return(n,be)=>{const w=te,k=oe,B=ne,E=ae;return r(),x("div",null,[fe,o(E,{"x-gap":12,"y-gap":8,collapsed:!1,cols:"1 s:1 m:2 l:3 xl:4 2xl:5",responsive:"screen"},{default:l(()=>[(r(!0),x(Z,null,J(g.value,(b,s)=>(r(),v(B,{key:s,class:W(["report-card",{"report-card-expand":p.value==s}])},{default:l(()=>[_("h2",null,Y(b.groupName),1),_("div",we,[_("div",{class:"line-inner-container",style:ee({width:t.value[s]+"%"})},[o(d(G),{data:b.moodData,options:S.value},null,8,["data","options"])],4)]),o(k,{class:"toggle toggle-size",size:"small",onClick:A=>p.value=p.value==-1?s:-1,focusable:!1},{icon:l(()=>[o(w,null,{default:l(()=>[p.value==s?(r(),v(d(de),{key:0})):(r(),v(d(ce),{key:1}))]),_:2},1024)]),_:2},1032,["onClick"]),o(k,{class:"toggle toggle-width",size:"small",onClick:A=>$(s),focusable:!1},{icon:l(()=>[o(w,null,{default:l(()=>[o(d(ge))]),_:1})]),_:2},1032,["onClick"])]),_:2},1032,["class"]))),128))]),_:1})])}}},$e=K(ke,[["__scopeId","data-v-a94ff07f"]]);export{$e as default};

1
ui/dist/assets/RecordPie.css vendored Normal file
View file

@ -0,0 +1 @@
h2[data-v-2cc4b433]{margin-bottom:10px;font-size:1.2rem;text-align:center}.page-title[data-v-2cc4b433]{text-align:center;font-size:24px;margin-bottom:20px}

1
ui/dist/assets/RecordPie.js vendored Normal file
View file

@ -0,0 +1 @@
import{u as f,C as S,a as h,L as x,T as k,b as v,P as y,c as C,p as E,d as P,e as R,f as w,A as B,g as I,i as L}from"./record.js";import{br as D,r as l,s as F,bs as n,bC as i,bv as p,bu as _,F as M,bD as N,bF as T,bG as A,bx as d,bt as V,bE as G,bo as O}from"./_plugin-vue_export-helper.js";import{b as j,_ as q}from"./Grid.js";import"./main.js";import"./get-slot.js";const z=a=>(T("data-v-2cc4b433"),a=a(),A(),a),H=z(()=>d("h1",{class:"page-title"},"工作休息比例报表",-1)),J={__name:"RecordPie",setup(a){const u=f(),{getMoodRatios:m}=u;S.register(h,x,k,v,y,C,E,P,R,w,B,I);const r=l([]);F(async()=>{r.value=await m()});const g=l({plugins:{datalabels:{color:"black",formatter:function(t,c){let e=c.dataset.data.reduce((o,s)=>o+s,0);return console.log(t,e,t/e),Math.round(t/e*100)+"%"}},legend:{display:!1}}});return(t,c)=>{const e=q,o=j;return n(),i("div",null,[H,p(o,{"x-gap":12,"y-gap":8,collapsed:!1,cols:"1 s:1 m:2 l:3 xl:4 2xl:5",responsive:"screen"},{default:_(()=>[(n(!0),i(M,null,N(r.value,(s,b)=>(n(),V(e,{key:b,class:"report-card"},{default:_(()=>[d("h2",null,G(s.groupName),1),p(O(L),{data:s.workRestData,options:g.value},null,8,["data","options"])]),_:2},1024))),128))]),_:1})])}}},Y=D(J,[["__scopeId","data-v-2cc4b433"]]);export{Y as default};

443
ui/dist/assets/Select.js vendored Normal file

File diff suppressed because one or more lines are too long

1
ui/dist/assets/Settings.css vendored Normal file
View file

@ -0,0 +1 @@
@charset "UTF-8";.sss-container[data-v-19f9e9b9]{display:flex;width:100%;gap:8px}.wrapper[data-v-19f9e9b9]{white-space:pre-wrap;-webkit-user-select:text;user-select:text}.title[data-v-19f9e9b9]{font-size:18px;font-weight:500;margin-bottom:6px}p[data-v-666d3ffa]{margin:0 0 10px}.misc-container[data-v-666d3ffa]{margin-top:12px;display:flex;align-items:center;gap:12px}@media screen and (max-width: 1399px){.tasktable[data-v-10266f44]{height:300px;overflow-y:auto}.tasktable table[data-v-10266f44]{border-collapse:collapse}.tasktable td[data-v-10266f44]:first-child{width:10%}.tasktable td[data-v-10266f44]:nth-child(2){width:18%}.tasktable td[data-v-10266f44]:not(:first-child):not(:nth-child(2)){width:10.2857142857%}.tasktable thead[data-v-10266f44]{position:sticky;top:0;background-color:#7ea5b4;z-index:1}}@media screen and (min-width: 1400px){.tasktable[data-v-10266f44]{height:auto}.tasktable table[data-v-10266f44]{border-collapse:collapse}.tasktable td[data-v-10266f44]:first-child{width:10%}.tasktable td[data-v-10266f44]:nth-child(2){width:18%}.tasktable td[data-v-10266f44]:not(:first-child):not(:nth-child(2)){width:10.2857142857%}.tasktable thead[data-v-10266f44]{background-color:#7ea5b4}}.class1[data-v-10266f44]{background-color:#efe9e1;text-align:center;vertical-align:middle}.class2[data-v-10266f44]{background-color:#55c1f6;text-align:center;vertical-align:middle}table[data-v-0c5dc699]{width:100%}table td[data-v-0c5dc699]:nth-child(1){width:40px;text-align:left}table td[data-v-0c5dc699]:nth-child(3){width:80px}.tag-mr[data-v-0c5dc699]{margin-right:4px}.prts-wiki-link[data-v-0c5dc699]{margin:8px 0;flex-shrink:1;min-width:0}.prts-wiki-link-text[data-v-0c5dc699]{overflow:hidden;text-overflow:ellipsis}p[data-v-c062d730]{margin:0 0 8px}h4[data-v-c062d730]{margin:12px 0 10px}.big-table[data-v-c062d730]{margin-top:10px;max-width:320px}.big-table th[data-v-c062d730]{text-align:center}.big-table tr[data-v-c062d730]{width:70px}.big-table td[data-v-c062d730]{height:24px}.big-table td[data-v-c062d730]:nth-child(1){width:70px;text-align:center}.big-table td[data-v-c062d730]:nth-child(2){width:420px}.final[data-v-c062d730]{margin:16px 0 0}p[data-v-72c0637f]{margin:2px 0}h4[data-v-72c0637f]{margin:12px 0 8px}table[data-v-72c0637f]{width:100%}td[data-v-72c0637f]:nth-child(1){width:80px}.ignore-blacklist[data-v-72c0637f]{margin-bottom:10px;display:flex;gap:12px}.h4[data-v-72c0637f]{font-size:16px;font-weight:500}.maa-shop[data-v-72c0637f]{margin:8px 0}.item[data-v-72c0637f]{font-weight:500;font-size:16px}.email-title[data-v-9528d27c]{width:100%}.expand[data-v-9528d27c]{flex-grow:1}.email-table[data-v-9528d27c]{width:100%;margin-bottom:12px}.email-test[data-v-9528d27c]{display:flex;align-items:center;gap:16px}.email-mode[data-v-9528d27c]{margin-left:20px}.email-label[data-v-9528d27c]{width:68px}p[data-v-9528d27c]{margin:0 0 10px}.mt-16[data-v-9528d27c]{margin-top:16px}.item[data-v-65920527]{font-weight:500;font-size:16px}.n-divider[data-v-65920527]:not(.n-divider--vertical){margin:6px 0}.misc-container{margin-top:12px;display:flex;align-items:center;gap:12px}.threshold[data-v-7b9369bc]{display:flex;align-items:center;gap:14px;width:100%}.mower-basic[data-v-7b9369bc]{width:100%}.mower-basic td[data-v-7b9369bc]:nth-child(1){width:120px}.mower-basic td[data-v-7b9369bc]:nth-child(3){padding-left:6px;width:40px}.riic-conf[data-v-7b9369bc]{width:100%}.riic-conf td[data-v-7b9369bc]:nth-child(1){width:130px}.riic-conf td[data-v-7b9369bc]:nth-child(3){padding-left:12px;width:120px}.coord td[data-v-7b9369bc]{width:120px}.coord td[data-v-7b9369bc]:nth-child(1),.coord td[data-v-7b9369bc]:nth-child(3){width:30px}.coord td[data-v-7b9369bc]:nth-child(2){padding-right:30px}.coord-label[data-v-7b9369bc]{width:40px;padding-left:8px}p[data-v-7b9369bc]{margin:0 0 8px}h4[data-v-7b9369bc]{margin:12px 0 10px}.time-table[data-v-7b9369bc]{width:100%;margin-bottom:12px}.time-table td[data-v-7b9369bc]:nth-child(1){width:40px}.scale[data-v-7b9369bc]{width:60px;text-align:right}.scale-apply[data-v-7b9369bc]{margin-left:24px}.waiting-table th[data-v-7b9369bc],.waiting-table td[data-v-7b9369bc]{padding:4px;min-width:70px;width:100px}.waiting-table th[data-v-7b9369bc]:first-child,.waiting-table td[data-v-7b9369bc]:first-child{width:auto;padding:4px 8px}@media (max-width: 1399px){.grid-two{margin:0 0 -10px;width:100%;max-width:600px}.grid-left{display:grid;row-gap:10px;grid-template-columns:100%}.grid-right{display:grid;row-gap:10px;grid-template-columns:100%;margin-top:10px}}@media (min-width: 1400px){.grid-two{display:grid;grid-template-columns:minmax(0px,1fr) minmax(0px,1fr);align-items:flex-start;gap:5px}.grid-left,.grid-right{display:grid;gap:5px;grid-template-columns:100%;max-width:600px}}.n-divider:not(.n-divider--vertical){margin:14px 0 8px}

303
ui/dist/assets/Settings.js vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
.width100[data-v-b1322d95]{width:100%}

549
ui/dist/assets/SlickOperatorSelect.js vendored Normal file

File diff suppressed because one or more lines are too long

71
ui/dist/assets/Tag.js vendored Normal file
View file

@ -0,0 +1,71 @@
import{an as co,aM as o,as as no,av as p,au as x,at as I,ar as z,B as so,r as to,ax as io,ay as N,D as ho,b as go,b0 as bo,j as L,aA as Co,aG as D,H as y,b5 as vo,z as uo,aL as po,aY as d,b1 as fo,c3 as U}from"./_plugin-vue_export-helper.js";import{av as ko}from"./main.js";const mo=a=>{const{textColor2:h,primaryColorHover:r,primaryColorPressed:f,primaryColor:c,infoColor:i,successColor:s,warningColor:n,errorColor:t,baseColor:k,borderColor:m,opacityDisabled:g,tagColor:v,closeIconColor:e,closeIconColorHover:l,closeIconColorPressed:u,borderRadiusSmall:b,fontSizeMini:C,fontSizeTiny:S,fontSizeSmall:B,fontSizeMedium:$,heightMini:H,heightTiny:R,heightSmall:M,heightMedium:_,closeColorHover:T,closeColorPressed:E,buttonColor2Hover:W,buttonColor2Pressed:j,fontWeightStrong:w}=a;return Object.assign(Object.assign({},ko),{closeBorderRadius:b,heightTiny:H,heightSmall:R,heightMedium:M,heightLarge:_,borderRadius:b,opacityDisabled:g,fontSizeTiny:C,fontSizeSmall:S,fontSizeMedium:B,fontSizeLarge:$,fontWeightStrong:w,textColorCheckable:h,textColorHoverCheckable:h,textColorPressedCheckable:h,textColorChecked:k,colorCheckable:"#0000",colorHoverCheckable:W,colorPressedCheckable:j,colorChecked:c,colorCheckedHover:r,colorCheckedPressed:f,border:`1px solid ${m}`,textColor:h,color:v,colorBordered:"rgb(250, 250, 252)",closeIconColor:e,closeIconColorHover:l,closeIconColorPressed:u,closeColorHover:T,closeColorPressed:E,borderPrimary:`1px solid ${o(c,{alpha:.3})}`,textColorPrimary:c,colorPrimary:o(c,{alpha:.12}),colorBorderedPrimary:o(c,{alpha:.1}),closeIconColorPrimary:c,closeIconColorHoverPrimary:c,closeIconColorPressedPrimary:c,closeColorHoverPrimary:o(c,{alpha:.12}),closeColorPressedPrimary:o(c,{alpha:.18}),borderInfo:`1px solid ${o(i,{alpha:.3})}`,textColorInfo:i,colorInfo:o(i,{alpha:.12}),colorBorderedInfo:o(i,{alpha:.1}),closeIconColorInfo:i,closeIconColorHoverInfo:i,closeIconColorPressedInfo:i,closeColorHoverInfo:o(i,{alpha:.12}),closeColorPressedInfo:o(i,{alpha:.18}),borderSuccess:`1px solid ${o(s,{alpha:.3})}`,textColorSuccess:s,colorSuccess:o(s,{alpha:.12}),colorBorderedSuccess:o(s,{alpha:.1}),closeIconColorSuccess:s,closeIconColorHoverSuccess:s,closeIconColorPressedSuccess:s,closeColorHoverSuccess:o(s,{alpha:.12}),closeColorPressedSuccess:o(s,{alpha:.18}),borderWarning:`1px solid ${o(n,{alpha:.35})}`,textColorWarning:n,colorWarning:o(n,{alpha:.15}),colorBorderedWarning:o(n,{alpha:.12}),closeIconColorWarning:n,closeIconColorHoverWarning:n,closeIconColorPressedWarning:n,closeColorHoverWarning:o(n,{alpha:.12}),closeColorPressedWarning:o(n,{alpha:.18}),borderError:`1px solid ${o(t,{alpha:.23})}`,textColorError:t,colorError:o(t,{alpha:.1}),colorBorderedError:o(t,{alpha:.08}),closeIconColorError:t,closeIconColorHoverError:t,closeIconColorPressedError:t,closeColorHoverError:o(t,{alpha:.12}),closeColorPressedError:o(t,{alpha:.18})})},xo={name:"Tag",common:co,self:mo},yo=xo,Po={color:Object,type:{type:String,default:"default"},round:Boolean,size:{type:String,default:"medium"},closable:Boolean,disabled:{type:Boolean,default:void 0}},Io=no("tag",`
--n-close-margin: var(--n-close-margin-top) var(--n-close-margin-right) var(--n-close-margin-bottom) var(--n-close-margin-left);
white-space: nowrap;
position: relative;
box-sizing: border-box;
cursor: default;
display: inline-flex;
align-items: center;
flex-wrap: nowrap;
padding: var(--n-padding);
border-radius: var(--n-border-radius);
color: var(--n-text-color);
background-color: var(--n-color);
transition:
border-color .3s var(--n-bezier),
background-color .3s var(--n-bezier),
color .3s var(--n-bezier),
box-shadow .3s var(--n-bezier),
opacity .3s var(--n-bezier);
line-height: 1;
height: var(--n-height);
font-size: var(--n-font-size);
`,[p("strong",`
font-weight: var(--n-font-weight-strong);
`),x("border",`
pointer-events: none;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
border-radius: inherit;
border: var(--n-border);
transition: border-color .3s var(--n-bezier);
`),x("icon",`
display: flex;
margin: 0 4px 0 0;
color: var(--n-text-color);
transition: color .3s var(--n-bezier);
font-size: var(--n-avatar-size-override);
`),x("avatar",`
display: flex;
margin: 0 6px 0 0;
`),x("close",`
margin: var(--n-close-margin);
transition:
background-color .3s var(--n-bezier),
color .3s var(--n-bezier);
`),p("round",`
padding: 0 calc(var(--n-height) / 3);
border-radius: calc(var(--n-height) / 2);
`,[x("icon",`
margin: 0 4px 0 calc((var(--n-height) - 8px) / -2);
`),x("avatar",`
margin: 0 6px 0 calc((var(--n-height) - 8px) / -2);
`),p("closable",`
padding: 0 calc(var(--n-height) / 4) 0 calc(var(--n-height) / 3);
`)]),p("icon, avatar",[p("round",`
padding: 0 calc(var(--n-height) / 3) 0 calc(var(--n-height) / 2);
`)]),p("disabled",`
cursor: not-allowed !important;
opacity: var(--n-opacity-disabled);
`),p("checkable",`
cursor: pointer;
box-shadow: none;
color: var(--n-text-color-checkable);
background-color: var(--n-color-checkable);
`,[I("disabled",[z("&:hover","background-color: var(--n-color-hover-checkable);",[I("checked","color: var(--n-text-color-hover-checkable);")]),z("&:active","background-color: var(--n-color-pressed-checkable);",[I("checked","color: var(--n-text-color-pressed-checkable);")])]),p("checked",`
color: var(--n-text-color-checked);
background-color: var(--n-color-checked);
`,[I("disabled",[z("&:hover","background-color: var(--n-color-checked-hover);"),z("&:active","background-color: var(--n-color-checked-pressed);")])])])]),zo=Object.assign(Object.assign(Object.assign({},N.props),Po),{bordered:{type:Boolean,default:void 0},checked:Boolean,checkable:Boolean,strong:Boolean,triggerClickOnClose:Boolean,onClose:[Array,Function],onMouseenter:Function,onMouseleave:Function,"onUpdate:checked":Function,onUpdateChecked:Function,internalCloseFocusable:{type:Boolean,default:!0},internalCloseIsButtonTag:{type:Boolean,default:!0},onCheckedChange:Function}),So=uo("n-tag"),Ho=so({name:"Tag",props:zo,setup(a){const h=to(null),{mergedBorderedRef:r,mergedClsPrefixRef:f,inlineThemeDisabled:c,mergedRtlRef:i}=io(a),s=N("Tag","-tag",Io,yo,a,f);ho(So,{roundRef:go(a,"round")});function n(e){if(!a.disabled&&a.checkable){const{checked:l,onCheckedChange:u,onUpdateChecked:b,"onUpdate:checked":C}=a;b&&b(!l),C&&C(!l),u&&u(!l)}}function t(e){if(a.triggerClickOnClose||e.stopPropagation(),!a.disabled){const{onClose:l}=a;l&&po(l,e)}}const k={setTextContent(e){const{value:l}=h;l&&(l.textContent=e)}},m=bo("Tag",i,f),g=L(()=>{const{type:e,size:l,color:{color:u,textColor:b}={}}=a,{common:{cubicBezierEaseInOut:C},self:{padding:S,closeMargin:B,borderRadius:$,opacityDisabled:H,textColorCheckable:R,textColorHoverCheckable:M,textColorPressedCheckable:_,textColorChecked:T,colorCheckable:E,colorHoverCheckable:W,colorPressedCheckable:j,colorChecked:w,colorCheckedHover:V,colorCheckedPressed:K,closeBorderRadius:A,fontWeightStrong:G,[d("colorBordered",e)]:Y,[d("closeSize",l)]:q,[d("closeIconSize",l)]:J,[d("fontSize",l)]:Q,[d("height",l)]:O,[d("color",e)]:X,[d("textColor",e)]:Z,[d("border",e)]:oo,[d("closeIconColor",e)]:F,[d("closeIconColorHover",e)]:eo,[d("closeIconColorPressed",e)]:ro,[d("closeColorHover",e)]:lo,[d("closeColorPressed",e)]:ao}}=s.value,P=fo(B);return{"--n-font-weight-strong":G,"--n-avatar-size-override":`calc(${O} - 8px)`,"--n-bezier":C,"--n-border-radius":$,"--n-border":oo,"--n-close-icon-size":J,"--n-close-color-pressed":ao,"--n-close-color-hover":lo,"--n-close-border-radius":A,"--n-close-icon-color":F,"--n-close-icon-color-hover":eo,"--n-close-icon-color-pressed":ro,"--n-close-icon-color-disabled":F,"--n-close-margin-top":P.top,"--n-close-margin-right":P.right,"--n-close-margin-bottom":P.bottom,"--n-close-margin-left":P.left,"--n-close-size":q,"--n-color":u||(r.value?Y:X),"--n-color-checkable":E,"--n-color-checked":w,"--n-color-checked-hover":V,"--n-color-checked-pressed":K,"--n-color-hover-checkable":W,"--n-color-pressed-checkable":j,"--n-font-size":Q,"--n-height":O,"--n-opacity-disabled":H,"--n-padding":S,"--n-text-color":b||Z,"--n-text-color-checkable":R,"--n-text-color-checked":T,"--n-text-color-hover-checkable":M,"--n-text-color-pressed-checkable":_}}),v=c?Co("tag",L(()=>{let e="";const{type:l,size:u,color:{color:b,textColor:C}={}}=a;return e+=l[0],e+=u[0],b&&(e+=`a${U(b)}`),C&&(e+=`b${U(C)}`),r.value&&(e+="c"),e}),g,a):void 0;return Object.assign(Object.assign({},k),{rtlEnabled:m,mergedClsPrefix:f,contentRef:h,mergedBordered:r,handleClick:n,handleCloseClick:t,cssVars:c?void 0:g,themeClass:v==null?void 0:v.themeClass,onRender:v==null?void 0:v.onRender})},render(){var a,h;const{mergedClsPrefix:r,rtlEnabled:f,closable:c,color:{borderColor:i}={},round:s,onRender:n,$slots:t}=this;n==null||n();const k=D(t.avatar,g=>g&&y("div",{class:`${r}-tag__avatar`},g)),m=D(t.icon,g=>g&&y("div",{class:`${r}-tag__icon`},g));return y("div",{class:[`${r}-tag`,this.themeClass,{[`${r}-tag--rtl`]:f,[`${r}-tag--strong`]:this.strong,[`${r}-tag--disabled`]:this.disabled,[`${r}-tag--checkable`]:this.checkable,[`${r}-tag--checked`]:this.checkable&&this.checked,[`${r}-tag--round`]:s,[`${r}-tag--avatar`]:k,[`${r}-tag--icon`]:m,[`${r}-tag--closable`]:c}],style:this.cssVars,onClick:this.handleClick,onMouseenter:this.onMouseenter,onMouseleave:this.onMouseleave},m||k,y("span",{class:`${r}-tag__content`,ref:"contentRef"},(h=(a=this.$slots).default)===null||h===void 0?void 0:h.call(a)),!this.checkable&&c?y(vo,{clsPrefix:r,class:`${r}-tag__close`,disabled:this.disabled,onClick:this.handleCloseClick,focusable:this.internalCloseFocusable,round:s,isButtonTag:this.internalCloseIsButtonTag,absolute:!0}):null,!this.checkable&&this.mergedBordered?y("div",{class:`${r}-tag__border`,style:{borderColor:i}}):null)}});export{Ho as _,So as a,Po as c,yo as t};

1
ui/dist/assets/TrashOutline.js vendored Normal file
View file

@ -0,0 +1 @@
import{bm as t}from"./_plugin-vue_export-helper.js";var o={};Object.defineProperty(o,"__esModule",{value:!0});const e=t,r={xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 512 512"},n=(0,e.createStaticVNode)('<path d="M112 112l20 320c.95 18.49 14.4 32 32 32h184c17.67 0 30.87-13.51 32-32l20-320" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"></path><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="32" d="M80 112h352" fill="currentColor"></path><path d="M192 112V72h0a23.93 23.93 0 0 1 24-24h80a23.93 23.93 0 0 1 24 24h0v40" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"></path><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M256 176v224"></path><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M184 176l8 224"></path><path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="32" d="M328 176l-8 224"></path>',6),l=[n];var h=o.default=(0,e.defineComponent)({name:"TrashOutline",render:function(s,a){return(0,e.openBlock)(),(0,e.createElementBlock)("svg",r,l)}});export{h as _};

1
ui/dist/assets/VirtualList.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

8
ui/dist/assets/a.js vendored Normal file
View file

@ -0,0 +1,8 @@
import{as as c,B as d,ax as m,ay as r,j as u,aA as h,H as f}from"./_plugin-vue_export-helper.js";import{an as p}from"./main.js";const v=c("a",`
cursor: pointer;
transition:
color .3s var(--n-bezier),
text-decoration-color .3s var(--n-bezier);
text-decoration-color: var(--n-text-color);
color: var(--n-text-color);
`),x=Object.assign({},r.props),y=d({name:"A",props:x,setup(e){const{mergedClsPrefixRef:o,inlineThemeDisabled:n}=m(e),a=r("Typography","-a",v,p,e,o),t=u(()=>{const{common:{cubicBezierEaseInOut:i},self:{aTextColor:l}}=a.value;return{"--n-text-color":l,"--n-bezier":i}}),s=n?h("a",void 0,t,e):void 0;return{mergedClsPrefix:o,cssVars:n?void 0:t,themeClass:s==null?void 0:s.themeClass,onRender:s==null?void 0:s.onRender}},render(){var e;return(e=this.onRender)===null||e===void 0||e.call(this),f("a",{class:[`${this.mergedClsPrefix}-a`,this.themeClass],style:this.cssVars},this.$slots)}});export{y as _};

1
ui/dist/assets/depot.css vendored Normal file
View file

@ -0,0 +1 @@
.card-container{display:flex;margin:10px,0px,0px,50px;flex-wrap:wrap}

34
ui/dist/assets/depot.js vendored Normal file
View file

@ -0,0 +1,34 @@
import{ar as I,as as F,y as N}from"./main.js";import{N as P}from"./headers.js";import{as as h,au as f,ar as b,B as V,ax as H,ay as B,b0 as L,j as A,aA as M,H as a,F as S,r as T,s as W,bs as m,bC as C,bv as o,bu as l,b3 as q,k as _,bE as y,bD as z,bo as G,bx as J,bt as R}from"./_plugin-vue_export-helper.js";import{b as K,_ as Q}from"./Grid.js";import{_ as U}from"./Divider.js";import{_ as X}from"./Avatar.js";import"./get-slot.js";import"./Tag.js";const Y=h("thing",`
display: flex;
transition: color .3s var(--n-bezier);
font-size: var(--n-font-size);
color: var(--n-text-color);
`,[h("thing-avatar",`
margin-right: 12px;
margin-top: 2px;
`),h("thing-avatar-header-wrapper",`
display: flex;
flex-wrap: nowrap;
`,[h("thing-header-wrapper",`
flex: 1;
`)]),h("thing-main",`
flex-grow: 1;
`,[h("thing-header",`
display: flex;
margin-bottom: 4px;
justify-content: space-between;
align-items: center;
`,[f("title",`
font-size: 16px;
font-weight: var(--n-title-font-weight);
transition: color .3s var(--n-bezier);
color: var(--n-title-text-color);
`)]),f("description",[b("&:not(:last-child)",`
margin-bottom: 4px;
`)]),f("content",[b("&:not(:first-child)",`
margin-top: 12px;
`)]),f("footer",[b("&:not(:first-child)",`
margin-top: 12px;
`)]),f("action",[b("&:not(:first-child)",`
margin-top: 12px;
`)])])]),Z=Object.assign(Object.assign({},B.props),{title:String,titleExtra:String,description:String,descriptionClass:String,descriptionStyle:[String,Object],content:String,contentClass:String,contentStyle:[String,Object],contentIndented:Boolean}),ee=V({name:"Thing",props:Z,setup(t,{slots:e}){const{mergedClsPrefixRef:g,inlineThemeDisabled:d,mergedRtlRef:s}=H(t),$=B("Thing","-thing",Y,I,t,g),v=L("Thing",s,g),p=A(()=>{const{self:{titleTextColor:u,textColor:n,titleFontWeight:r,fontSize:c},common:{cubicBezierEaseInOut:w}}=$.value;return{"--n-bezier":w,"--n-font-size":c,"--n-text-color":n,"--n-title-font-weight":r,"--n-title-text-color":u}}),i=d?M("thing",void 0,p,t):void 0;return()=>{var u;const{value:n}=g,r=v?v.value:!1;return(u=i==null?void 0:i.onRender)===null||u===void 0||u.call(i),a("div",{class:[`${n}-thing`,i==null?void 0:i.themeClass,r&&`${n}-thing--rtl`],style:d?void 0:p.value},e.avatar&&t.contentIndented?a("div",{class:`${n}-thing-avatar`},e.avatar()):null,a("div",{class:`${n}-thing-main`},!t.contentIndented&&(e.header||t.title||e["header-extra"]||t.titleExtra||e.avatar)?a("div",{class:`${n}-thing-avatar-header-wrapper`},e.avatar?a("div",{class:`${n}-thing-avatar`},e.avatar()):null,e.header||t.title||e["header-extra"]||t.titleExtra?a("div",{class:`${n}-thing-header-wrapper`},a("div",{class:`${n}-thing-header`},e.header||t.title?a("div",{class:`${n}-thing-header__title`},e.header?e.header():t.title):null,e["header-extra"]||t.titleExtra?a("div",{class:`${n}-thing-header__extra`},e["header-extra"]?e["header-extra"]():t.titleExtra):null),e.description||t.description?a("div",{class:[`${n}-thing-main__description`,t.descriptionClass],style:t.descriptionStyle},e.description?e.description():t.description):null):null):a(S,null,e.header||t.title||e["header-extra"]||t.titleExtra?a("div",{class:`${n}-thing-header`},e.header||t.title?a("div",{class:`${n}-thing-header__title`},e.header?e.header():t.title):null,e["header-extra"]||t.titleExtra?a("div",{class:`${n}-thing-header__extra`},e["header-extra"]?e["header-extra"]():t.titleExtra):null):null,e.description||t.description?a("div",{class:[`${n}-thing-main__description`,t.descriptionClass],style:t.descriptionStyle},e.description?e.description():t.description):null),e.default||t.content?a("div",{class:[`${n}-thing-main__content`,t.contentClass],style:t.contentStyle},e.default?e.default():t.content):null,e.footer?a("div",{class:`${n}-thing-main__footer`},e.footer()):null,e.action?a("div",{class:`${n}-thing-main__action`},e.action()):null))}}}),te=F("depot",()=>{async function t(){return(await N.get("/depot/readdepot")).data}return{getDepotinfo:t}}),ne={class:"card-container"},ae=J("br",null,null,-1),he={__name:"depot",setup(t){const e=te(),{getDepotinfo:g}=e,d=T([]);let s=T([]);async function $(){d.value=await g(),v()}function v(){s.value={...d.value[0]};for(const i in s.value)if(s.value.hasOwnProperty(i)){const u=s.value[i],n=Object.entries(u).map(([r,c])=>({key:r,...c})).sort((r,c)=>r.sort-c.sort);s.value[i]=n}}W($);const p=async()=>{try{await navigator.clipboard.writeText(d.value[1]),console.log("Text copied:",d.value[1])}catch(i){console.error("Failed to copy text:",i)}};return(i,u)=>{const n=q,r=U,c=Q,w=P,D=X,j=ee,E=K;return m(),C("div",ne,[o(n,{onClick:p,tag:"a",href:"https://arkntools.app/#/material",target:"_blank"},{default:l(()=>[_(" 明日方舟工具箱代码 点击复制 ")]),_:1}),o(r),o(E,{cols:"1",responsive:"screen"},{default:l(()=>[o(c,null,{default:l(()=>[_(" 扫描时间:"+y(d.value[2])+" ",1),ae,_(" 注:万以下的数字并不会计入,如“龙门币 245万” “资质凭证 2万”"),o(r)]),_:1}),(m(!0),C(S,null,z(G(s),(O,k)=>(m(),R(c,{key:k},{default:l(()=>[o(w,null,{default:l(()=>[_(y(k.slice(1)),1)]),_:2},1024),o(E,{"x-gap":"10px","y-gap":"10px",cols:"2 m:6 l:6 ",responsive:"screen"},{default:l(()=>[(m(!0),C(S,null,z(O,x=>(m(),R(c,{key:x},{default:l(()=>[o(j,null,{avatar:l(()=>[o(D,{color:"000",size:"large",src:"/depot/"+x.icon+".webp"},null,8,["src"])]),header:l(()=>[_(y(x.key),1)]),description:l(()=>[_("拥有:"+y(x.number),1)]),_:2},1024)]),_:2},1024))),128))]),_:2},1024),o(r)]),_:2},1024))),128))]),_:1})])}}};export{he as default};

1
ui/dist/assets/get-slot.js vendored Normal file
View file

@ -0,0 +1 @@
function l(s,o="default",n=[]){const t=s.$slots[o];return t===void 0?n:t()}export{l as g};

16
ui/dist/assets/headers.js vendored Normal file
View file

@ -0,0 +1,16 @@
import{as as w,ar as h,av as c,B as z,ax as $,ay as l,j as f,aY as i,aA as T,H as B}from"./_plugin-vue_export-helper.js";import{an as H}from"./main.js";const R=w("h",`
font-size: var(--n-font-size);
font-weight: var(--n-font-weight);
margin: var(--n-margin);
transition: color .3s var(--n-bezier);
color: var(--n-text-color);
`,[h("&:first-child",{marginTop:0}),c("prefix-bar",{position:"relative",paddingLeft:"var(--n-prefix-width)"},[c("align-text",{paddingLeft:0},[h("&::before",{left:"calc(-1 * var(--n-prefix-width))"})]),h("&::before",`
content: "";
width: var(--n-bar-width);
border-radius: calc(var(--n-bar-width) / 2);
transition: background-color .3s var(--n-bezier);
left: 0;
top: 0;
bottom: 0;
position: absolute;
`),h("&::before",{backgroundColor:"var(--n-bar-color)"})])]),P=Object.assign(Object.assign({},l.props),{type:{type:String,default:"default"},prefix:String,alignText:Boolean}),n=r=>z({name:`H${r}`,props:P,setup(e){const{mergedClsPrefixRef:o,inlineThemeDisabled:s}=$(e),a=l("Typography","-h",R,H,e,o),d=f(()=>{const{type:g}=e,{common:{cubicBezierEaseInOut:m},self:{headerFontWeight:p,headerTextColor:b,[i("headerPrefixWidth",r)]:u,[i("headerFontSize",r)]:x,[i("headerMargin",r)]:v,[i("headerBarWidth",r)]:C,[i("headerBarColor",g)]:y}}=a.value;return{"--n-bezier":m,"--n-font-size":x,"--n-margin":v,"--n-bar-color":y,"--n-bar-width":C,"--n-font-weight":p,"--n-text-color":b,"--n-prefix-width":u}}),t=s?T(`h${r}`,f(()=>e.type[0]),d,e):void 0;return{mergedClsPrefix:o,cssVars:s?void 0:d,themeClass:t==null?void 0:t.themeClass,onRender:t==null?void 0:t.onRender}},render(){var e;const{prefix:o,alignText:s,mergedClsPrefix:a,cssVars:d,$slots:t}=this;return(e=this.onRender)===null||e===void 0||e.call(this),B(`h${r}`,{class:[`${a}-h`,`${a}-h${r}`,this.themeClass,{[`${a}-h--prefix-bar`]:o,[`${a}-h--align-text`]:s}],style:d},t)}}),j=n("1"),L=n("2");n("3");n("4");n("5");n("6");export{L as N,j as a};

1
ui/dist/assets/index.js vendored Normal file

File diff suppressed because one or more lines are too long

1
ui/dist/assets/main.css vendored Normal file
View file

@ -0,0 +1 @@
@charset "UTF-8";.n-avatar,.img{pointer-events:none!important}.tabs[data-v-a37af22d],.provider[data-v-a37af22d],.layout-container[data-v-a37af22d]{height:100%}#app{height:var(--app-height, 100vh);width:var(--app-width, 100vw);transform-origin:0 0}.n-tab-pane{flex-grow:1;display:flex;flex-direction:column;overflow:auto}.n-card-header__main{display:flex;align-items:center;gap:6px}td{height:34px}.table-space{padding-right:20px}.external-container{max-width:600px;margin:0 auto}.n-checkbox{align-items:center}.n-form-item{margin-top:12px}.n-form-item:first-child{margin-top:0}.dialog-btn{margin-left:4px}.report-card{display:flex;flex-direction:column;align-items:center;justify-content:center;width:300px;height:200px;padding:20px 20px 80px;border:1px solid #ccc;box-shadow:0 2px 4px #0000001a}.n-checkbox .n-checkbox__label{flex-grow:1;display:flex;align-items:center;padding-right:0}.outer-layout{height:100%}.outer-layout>.n-layout-scroll-container{display:flex;flex-direction:column;height:100%;overflow:hidden}.layout-content-container>.n-layout-scroll-container{width:100%;height:100%;display:flex;flex-direction:column;overflow:auto;gap:8px;align-items:center}.home-container{padding:12px;flex-grow:1;display:flex;flex-direction:column;gap:8px;width:calc(100% - 24px);height:calc(100% - 24px);position:relative}pre{word-break:break-all!important;font-family:Cascadia Mono,Consolas,Microsoft YaHei,SF Mono,Menlo,PingFang SC,monospace!important}.n-dynamic-input-item__action{align-self:center!important}ul,ol{padding-left:18px;margin:0}.card-title{font-weight:500;font-size:18px;white-space:nowrap}

1190
ui/dist/assets/main.js vendored Normal file

File diff suppressed because one or more lines are too long

1
ui/dist/assets/manager.css vendored Normal file
View file

@ -0,0 +1 @@
.mower-list[data-v-50f5626a]{box-sizing:border-box;width:100vw;padding:12px;display:flex;flex-direction:column;gap:8px}.header[data-v-50f5626a]{display:flex;gap:6px;align-items:center;height:28px}.expand[data-v-50f5626a]{flex-grow:1}.folder[data-v-50f5626a]{display:flex;gap:6px;align-items:center}.folder-content[data-v-50f5626a]{word-break:break-all}

24
ui/dist/assets/manager.js vendored Normal file

File diff suppressed because one or more lines are too long

228
ui/dist/assets/op_select.js vendored Normal file

File diff suppressed because one or more lines are too long

1
ui/dist/assets/readme.css vendored Normal file
View file

@ -0,0 +1 @@
.readme[data-v-25ca14dd]{word-break:break-all;max-width:800px}

1
ui/dist/assets/readme.js vendored Normal file

File diff suppressed because one or more lines are too long

29
ui/dist/assets/record.js vendored Normal file

File diff suppressed because one or more lines are too long

1
ui/dist/assets/report.css vendored Normal file
View file

@ -0,0 +1 @@
.chart[data-v-1e64842f]{height:400px}.report-card_1[data-v-1e64842f]{display:gird;flex-direction:column;align-items:center;justify-content:center;width:800px;height:400px;padding:20px 20px 80px;border:1px solid #ccc}

125
ui/dist/assets/report.js vendored Normal file

File diff suppressed because one or more lines are too long

BIN
ui/dist/avatar/.webp (Stored with Git LFS) vendored Normal file

Binary file not shown.

BIN
ui/dist/avatar/12F.webp (Stored with Git LFS) vendored Normal file

Binary file not shown.

BIN
ui/dist/avatar/Castle-3.webp (Stored with Git LFS) vendored Normal file

Binary file not shown.

BIN
ui/dist/avatar/Current.webp (Stored with Git LFS) vendored Normal file

Binary file not shown.

BIN
ui/dist/avatar/Free.webp (Stored with Git LFS) vendored Normal file

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more