From 1880a8a135c1e407fbd84683dc666a8bc5ac2f50 Mon Sep 17 00:00:00 2001 From: lingling Date: Mon, 20 Mar 2023 13:54:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E7=94=9F=E6=88=90=E9=93=BE?= =?UTF-8?q?=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/api.ts | 3 + src/components/LinkItem.vue | 33 ++++++--- src/layouts/MainLayout.vue | 107 ++++++++++++++++++++++++++-- src/pages/CreateLink.vue | 80 +++++++++++++++++++++ src/pages/IndexPage.vue | 9 +-- src/router/routes.ts | 2 +- src/store/index.ts | 14 ++-- src/store/module-example/getters.ts | 4 +- 8 files changed, 221 insertions(+), 31 deletions(-) create mode 100644 src/pages/CreateLink.vue diff --git a/src/api/api.ts b/src/api/api.ts index a560ae1..30a8092 100644 --- a/src/api/api.ts +++ b/src/api/api.ts @@ -6,5 +6,8 @@ class getdata { async text_server(url: string) { return await api.post('http://149.129.107.38:1323/textserver', { url }); } + async get_country(ip: string) { + return await api.get(`https://ip.useragentinfo.com/json?ip=${ip}`); + } } export { getdata }; diff --git a/src/components/LinkItem.vue b/src/components/LinkItem.vue index 973b0d7..5038146 100644 --- a/src/components/LinkItem.vue +++ b/src/components/LinkItem.vue @@ -2,12 +2,12 @@
{{ props.serve.tips }}
-
- - +
+ +
@@ -37,6 +37,7 @@ export default defineComponent({ setup(props) { const online = ref(false); const isonline = () => { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion let obj = JSON.parse(decode(props.text!.replace('vmess://', ''))); let http = props.serve.istls == 0 ? 'http' : 'https' let reg = new RegExp(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/); @@ -48,6 +49,9 @@ export default defineComponent({ const api = new getdata; const $q = useQuasar() const outtext = computed(() => { + // eslint-disable-next-line vue/no-side-effects-in-computed-properties + online.value = false + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion let obj = JSON.parse(decode(props.text!.replace('vmess://', ''))); obj.add = props.serve.ip obj.port = props.serve.port @@ -58,15 +62,24 @@ export default defineComponent({ isonline() return 'vmess://' + encode(JSON.stringify(obj)) }) - const copy = () => { - - // api.text_server('http://uszz.giaogiao.uk:8080/34.125.44.195').then(res => { console.log(res.data) }) - copyToClipboard(outtext.value) + const copy = (type: string) => { + let tmp = '' + switch (type) { + case 'sub': + tmp = `http://149.129.107.38/link.php?link=${outtext.value}` + break; + case 'link': + tmp = outtext.value + break; + default: + break; + } + copyToClipboard(tmp) .then(() => { // success! $q.notify({ message: '复制成功', - color: 'purple', + color: 'positive', position: 'top' }) }) @@ -74,7 +87,7 @@ export default defineComponent({ // fail $q.notify({ message: '复制失败', - color: 'purple' + color: 'negative' }) }) } diff --git a/src/layouts/MainLayout.vue b/src/layouts/MainLayout.vue index fbbabc1..63d0d1c 100644 --- a/src/layouts/MainLayout.vue +++ b/src/layouts/MainLayout.vue @@ -1,22 +1,115 @@ - diff --git a/src/pages/CreateLink.vue b/src/pages/CreateLink.vue new file mode 100644 index 0000000..26e49b1 --- /dev/null +++ b/src/pages/CreateLink.vue @@ -0,0 +1,80 @@ + + + + + diff --git a/src/pages/IndexPage.vue b/src/pages/IndexPage.vue index 082f3b6..1af3bd8 100644 --- a/src/pages/IndexPage.vue +++ b/src/pages/IndexPage.vue @@ -4,7 +4,7 @@
节点
+ style="color: green;" />
@@ -26,8 +26,7 @@ import { server } from 'components/models'; import { computed, defineComponent, onMounted, ref } from 'vue'; import { getdata } from 'src/api/api' import LinkItem from 'components/LinkItem.vue'; -import { b64decode } from '@waiting/base64' -import { encode, decode } from 'js-base64'; +import { decode } from 'js-base64'; export default defineComponent({ name: 'IndexPage', components: { LinkItem }, @@ -45,6 +44,8 @@ export default defineComponent({ }) const isobj = computed(() => { try { + // eslint-disable-next-line vue/no-side-effects-in-computed-properties + online.value = false let obj = JSON.parse(decode(text.value.replace('vmess://', ''))); if (obj.id != '2ee57806-f6e4-482a-ef08-7360c04cd3e5' || obj.net != 'ws') { return false @@ -58,7 +59,7 @@ export default defineComponent({ return true }) const isonline = () => { - let obj = JSON.parse(decode(text.value!.replace('vmess://', ''))); + let obj = JSON.parse(decode(text.value?.replace('vmess://', ''))); let reg = new RegExp(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/); let ip = obj.ps.match(reg)[0]; api.text_server(`http://${ip}:9000/`).then(res => { diff --git a/src/router/routes.ts b/src/router/routes.ts index 2d34fc1..b23c8dd 100644 --- a/src/router/routes.ts +++ b/src/router/routes.ts @@ -4,7 +4,7 @@ const routes: RouteRecordRaw[] = [ { path: '/', component: () => import('layouts/MainLayout.vue'), - children: [{ path: '', component: () => import('pages/IndexPage.vue') }], + children: [{ path: '', name: 'home', component: () => import('pages/IndexPage.vue') }, { path: 'createlink', name: 'createlink', component: () => import('pages/CreateLink.vue') }], }, // Always leave this as last one, diff --git a/src/store/index.ts b/src/store/index.ts index 2c4f2c7..d21fe5e 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -7,7 +7,7 @@ import { useStore as vuexUseStore, } from 'vuex' -// import example from './module-example' +import example from './module-example' // import { ExampleStateInterface } from './module-example/state'; /* @@ -37,16 +37,16 @@ declare module '@vue/runtime-core' { export const storeKey: InjectionKey> = Symbol('vuex-key') // Provide typings for `this.$router` inside Vuex stores - declare module 'vuex' { - export interface Store { - readonly $router: Router; - } - } +declare module 'vuex' { + export interface Store { + readonly $router: Router; + } +} export default store(function (/* { ssrContext } */) { const Store = createStore({ modules: { - // example + example }, // enable strict mode (adds overhead!) diff --git a/src/store/module-example/getters.ts b/src/store/module-example/getters.ts index 2727d49..d158a41 100644 --- a/src/store/module-example/getters.ts +++ b/src/store/module-example/getters.ts @@ -3,9 +3,9 @@ import { StateInterface } from '../index'; import { ExampleStateInterface } from './state'; const getters: GetterTree = { - someAction (/* context */) { + someAction(/* context */) { // your code - } + }, }; export default getters;