🎉 重构前端代码.
This commit is contained in:
@@ -18,7 +18,7 @@ export const copy = async (value: string | undefined, tips: string | boolean = `
|
||||
};
|
||||
|
||||
// 获取剪切板内容
|
||||
export const readText = () => {
|
||||
export const readText = (tips: boolean = true) => {
|
||||
if (navigator.clipboard) {
|
||||
return navigator.clipboard.readText();
|
||||
} else {
|
||||
@@ -30,7 +30,7 @@ export const readText = () => {
|
||||
textarea.select();
|
||||
try {
|
||||
const success = document.execCommand('paste');
|
||||
if (!success) {
|
||||
if (!success && tips) {
|
||||
Message.error('当前环境无法读取剪切板内容');
|
||||
}
|
||||
resolve(textarea.value);
|
||||
|
||||
@@ -1,31 +1,37 @@
|
||||
import type { FavoriteItem } from '@/types/global';
|
||||
import type { FavoriteType } from '@/api/meta/favorite';
|
||||
import { addFavorite, cancelFavorite } from '@/api/meta/favorite';
|
||||
import { ref } from 'vue';
|
||||
|
||||
export default function useFavorite(type: FavoriteType) {
|
||||
const loading = ref(false);
|
||||
const toggle = async (record: any, id: number, cancelField = 'favorite') => {
|
||||
|
||||
const toggle = async <T extends FavoriteItem>(record: T, id: number) => {
|
||||
// 防抖
|
||||
if (loading.value) {
|
||||
return;
|
||||
}
|
||||
const request = { relId: id, type };
|
||||
try {
|
||||
loading.value = true;
|
||||
if (record[cancelField]) {
|
||||
if (record.favorite) {
|
||||
// 取消收藏
|
||||
await cancelFavorite(request);
|
||||
record[cancelField] = false;
|
||||
record.favorite = false;
|
||||
} else {
|
||||
// 添加收藏
|
||||
await addFavorite(request);
|
||||
record[cancelField] = true;
|
||||
record.favorite = true;
|
||||
}
|
||||
} catch (e) {
|
||||
} finally {
|
||||
loading.value = false;
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
loading,
|
||||
toggle
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
26
orion-visor-ui/src/hooks/limit.ts
Normal file
26
orion-visor-ui/src/hooks/limit.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import { ref } from 'vue';
|
||||
import { Message } from '@arco-design/web-vue';
|
||||
|
||||
export default function useLimit(limit = 500) {
|
||||
const last = ref(0);
|
||||
|
||||
const checkLimited = (tips: string | boolean = true) => {
|
||||
const now = Date.now();
|
||||
if (now > last.value + limit) {
|
||||
last.value = now;
|
||||
return true;
|
||||
} else {
|
||||
if (tips === true) {
|
||||
Message.error('操作频率过快, 请稍后再试');
|
||||
} else if (tips) {
|
||||
Message.error(tips);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
last,
|
||||
checkLimited,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user