修改了请求的逻辑为进入分组后再请求数据
为部分函数添加了文档注释
This commit is contained in:
cloudy2331 2025-03-07 15:49:42 +08:00
parent d4ce6e6261
commit 7b376d0fbf
3 changed files with 72 additions and 43 deletions

View File

@ -18,7 +18,6 @@
<div class="card-container"> <div class="card-container">
<div class="card" v-for="i in Url" :key="i"> <div class="card" v-for="i in Url" :key="i">
<GeneralCard <GeneralCard
:url="i.url"
:name="i.name" :name="i.name"
@toSubscribeItem="(url, name) => $emit('toSubscribeItem', url, name)" @toSubscribeItem="(url, name) => $emit('toSubscribeItem', url, name)"
/> />
@ -121,13 +120,12 @@ onMounted(() => {
// }); // });
// } // }
Url.value.push({ Url.value.push({
name: "all", name: "all"
url: "vmess://ew0KICAidiI6ICIyIiwNCiAgInBzIjogInRrIiwNCiAgImFkZCI6ICI0My4xNTMuMTg0LjkxIiwNCiAgInBvcnQiOiAiNDczNTkiLA0KICAiaWQiOiAiMzAxYzgyMWEtODljOS00ZWI0LTlmYmYtYWIwMjgyNjMxZTJhIiwNCiAgImFpZCI6ICIwIiwNCiAgInNjeSI6ICJhdXRvIiwNCiAgIm5ldCI6ICJrY3AiLA0KICAidHlwZSI6ICJkdGxzIiwNCiAgImhvc3QiOiAiIiwNCiAgInBhdGgiOiAiIiwNCiAgInRscyI6ICIiLA0KICAic25pIjogIiIsDQogICJhbHBuIjogIiIsDQogICJmcCI6ICIiDQp9"
}) })
console.log(Url); console.log(Url);
}); });
// //
const filterUrl = computed(() => { const filterUrl = computed(() => {
if (searchText.value.length > 0) { if (searchText.value.length > 0) {
return Url.value.filter((item) => { return Url.value.filter((item) => {
@ -143,7 +141,11 @@ const fromData = ref({
labelAlign: "left", labelAlign: "left",
}); });
// /**
* 向服务器请求翻页数据
* @param index Int 页码
* @param pageInfo Int 卡片总数
*/
function onCurrentChange(index, pageInfo) { function onCurrentChange(index, pageInfo) {
console.log(index, pageInfo); console.log(index, pageInfo);
} }

View File

@ -1,9 +1,16 @@
<template> <template>
<t-layout class="main-layout"> <t-layout class="main-layout">
<t-aside> <t-aside>
<t-menu theme="light" default-value="General" :collapsed="collapsed" @change="changeHandler"> <t-menu
theme="light"
default-value="General"
:collapsed="collapsed"
@change="changeHandler"
>
<template #logo> <template #logo>
<span style="font-size: larger">{{ collapsed? "PSH" : "Proxy Subscribe Hub" }}</span> <span style="font-size: larger">{{
collapsed ? "PSH" : "Proxy Subscribe Hub"
}}</span>
</template> </template>
<t-menu-item value="General"> <t-menu-item value="General">
<template #icon> <template #icon>
@ -17,7 +24,7 @@
variant="text" variant="text"
shape="square" shape="square"
theme="default" theme="default"
@click="collapsed = !collapsed;" @click="collapsed = !collapsed"
style="background-color: #fff" style="background-color: #fff"
> >
<view-list-icon /> <view-list-icon />
@ -27,6 +34,7 @@
</t-aside> </t-aside>
<t-layout> <t-layout>
<t-content style="overflow: auto"> <t-content style="overflow: auto">
<t-loading :loading="false" show-overlay style="height: 100vh;">
<div> <div>
<General <General
@toSubscribeItem="(url, name) => toSubscribeItem(url, name)" @toSubscribeItem="(url, name) => toSubscribeItem(url, name)"
@ -39,6 +47,7 @@
v-if="menuValue === 'SubscribeItem'" v-if="menuValue === 'SubscribeItem'"
/> />
</div> </div>
</t-loading>
</t-content> </t-content>
</t-layout> </t-layout>
</t-layout> </t-layout>
@ -49,6 +58,10 @@
height: 100vh; height: 100vh;
width: 100vw; width: 100vw;
} }
.t-layout__sider{
width: auto !important;
}
</style> </style>
<script setup> <script setup>

View File

@ -77,7 +77,6 @@ import { AddIcon, PasteIcon } from "tdesign-icons-vue-next";
import { MessagePlugin } from "tdesign-vue-next"; import { MessagePlugin } from "tdesign-vue-next";
const props = defineProps({ const props = defineProps({
propsData: String,
name: String, name: String,
}); });
@ -98,30 +97,31 @@ let vemssProps = {
}; };
onMounted(() => { onMounted(() => {
if (props.propsData) { //
if (props.propsData.length > 0) { //
let propsDataSplit = props.propsData.split(","); let req = '{"status":200,"data":["vmess://ew0KICAidiI6ICIyIiwNCiAgInBzIjogInRrIiwNCiAgImFkZCI6ICI0My4xNTMuMTg0LjkxIiwNCiAgInBvcnQiOiAiNDczNTkiLA0KICAiaWQiOiAiMzAxYzgyMWEtODljOS00ZWI0LTlmYmYtYWIwMjgyNjMxZTJhIiwNCiAgImFpZCI6ICIwIiwNCiAgInNjeSI6ICJhdXRvIiwNCiAgIm5ldCI6ICJrY3AiLA0KICAidHlwZSI6ICJkdGxzIiwNCiAgImhvc3QiOiAiIiwNCiAgInBhdGgiOiAiIiwNCiAgInRscyI6ICIiLA0KICAic25pIjogIiIsDQogICJhbHBuIjogIiIsDQogICJmcCI6ICIiDQp9"]}';
for (let i in propsDataSplit) { if (JSON.parse(req).status === 200) {
let decodeData = JSON.parse(atob(propsDataSplit[i].split("://")[1])); // let reqData = JSON.parse(req).data;
switch (propsDataSplit[i].split("://")[0]) { for (let i in reqData) {
let decodeData = JSON.parse(atob(reqData[i].split("://")[1])); //
switch (reqData[i].split("://")[0]) {
case "vmess": case "vmess":
data.value.push({ data.value.push({
key: i, key: i,
name: decodeData.ps, name: decodeData.ps,
url: propsDataSplit[i], url: reqData[i],
}); });
break; break;
default: default:
data.value.push({ data.value.push({
key: i, key: i,
name: "暂不支持", name: "暂不支持",
url: propsDataSplit[i], url: reqData[i],
}); });
break; break;
} }
} }
} }
}
}); });
// //
@ -153,8 +153,11 @@ const columns = ref([
], ],
}, },
]); ]);
// let data = ref([{ key: "1", name: "tk", url: "vmess://" }]);
/**
* 复制文本到剪贴板
* @param text 复制的文本
*/
function copyToClipboard(text) { function copyToClipboard(text) {
try { try {
navigator.clipboard.writeText(text); navigator.clipboard.writeText(text);
@ -164,6 +167,9 @@ function copyToClipboard(text) {
} }
} }
/**
* 从剪贴板读取文本
*/
function readByClipboard() { function readByClipboard() {
try { try {
navigator.clipboard.readText().then((text) => { navigator.clipboard.readText().then((text) => {
@ -176,6 +182,9 @@ function readByClipboard() {
} }
} }
/**
* 添加节点
*/
function addNode() { function addNode() {
vemssProps = { vemssProps = {
name: "", name: "",
@ -193,6 +202,11 @@ function addNode() {
dialogVisible.value = true; dialogVisible.value = true;
} }
/**
* 编辑节点
* @param arg string 协议类型
* @param url string base64编码
*/
function editNode(arg, url) { function editNode(arg, url) {
// //
switch (arg) { switch (arg) {