修改了请求的逻辑为进入分组后再请求数据
为部分函数添加了文档注释
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" v-for="i in Url" :key="i">
<GeneralCard
:url="i.url"
:name="i.name"
@toSubscribeItem="(url, name) => $emit('toSubscribeItem', url, name)"
/>
@ -121,13 +120,12 @@ onMounted(() => {
// });
// }
Url.value.push({
name: "all",
url: "vmess://ew0KICAidiI6ICIyIiwNCiAgInBzIjogInRrIiwNCiAgImFkZCI6ICI0My4xNTMuMTg0LjkxIiwNCiAgInBvcnQiOiAiNDczNTkiLA0KICAiaWQiOiAiMzAxYzgyMWEtODljOS00ZWI0LTlmYmYtYWIwMjgyNjMxZTJhIiwNCiAgImFpZCI6ICIwIiwNCiAgInNjeSI6ICJhdXRvIiwNCiAgIm5ldCI6ICJrY3AiLA0KICAidHlwZSI6ICJkdGxzIiwNCiAgImhvc3QiOiAiIiwNCiAgInBhdGgiOiAiIiwNCiAgInRscyI6ICIiLA0KICAic25pIjogIiIsDQogICJhbHBuIjogIiIsDQogICJmcCI6ICIiDQp9"
name: "all"
})
console.log(Url);
});
//
//
const filterUrl = computed(() => {
if (searchText.value.length > 0) {
return Url.value.filter((item) => {
@ -143,7 +141,11 @@ const fromData = ref({
labelAlign: "left",
});
//
/**
* 向服务器请求翻页数据
* @param index Int 页码
* @param pageInfo Int 卡片总数
*/
function onCurrentChange(index, pageInfo) {
console.log(index, pageInfo);
}

View File

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

View File

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