Русифицировать README и интерфейс HY2XS admin

This commit is contained in:
2026-04-25 23:51:21 +05:00
parent 84a4e94567
commit 2b4a45ad23
167 changed files with 632 additions and 699 deletions
+20 -18
View File
@@ -493,9 +493,9 @@ import { useRoute } from "vue-router";
const { t } = useI18n();
const route = useRoute();
const queryFormRef = ref(ElForm); // 查询表单
const dataFormRef = ref(ElForm); // 用户表单
const kickFormRef = ref(ElForm); // 下线表单
const queryFormRef = ref(ElForm); // Форма поиска
const dataFormRef = ref(ElForm); // Форма пользователя
const kickFormRef = ref(ElForm); // Форма отключения пользователя
const dataFormPassRef = ref(ElInput);
const dataFormConPassRef = ref(ElInput);
@@ -694,7 +694,7 @@ const resetDataForm = () => {
};
/**
* 查询
* Поиск
*/
const handleQuery = async () => {
state.loading = true;
@@ -708,7 +708,7 @@ const handleQuery = async () => {
};
/**
* 重置
* Сброс
*/
const resetQuery = () => {
queryFormRef.value.resetFields();
@@ -716,7 +716,7 @@ const resetQuery = () => {
};
/**
* 保存
* Сохранение
**/
const handleAdd = () => {
state.dialog = {
@@ -726,7 +726,7 @@ const handleAdd = () => {
};
/**
* 修改
* Изменение
**/
const handleUpdate = async (row: { [key: string]: any }) => {
const id = row.id;
@@ -744,7 +744,7 @@ const setQuota = (newQuota: number) => {
};
/**
* 表单提交
* Отправка формы
*/
const submitForm = () => {
dataFormRef.value.validate((valid: any) => {
@@ -769,7 +769,7 @@ const submitForm = () => {
};
/**
* 下线表单提交
* Отправка формы отключения пользователя
*/
const submitKickForm = () => {
kickFormRef.value.validate((valid: any) => {
@@ -785,7 +785,7 @@ const submitKickForm = () => {
};
/**
* 删除
* Удаление
*/
const handleDelete = (row: { [key: string]: any }) => {
const id = row.id;
@@ -811,7 +811,7 @@ const handleDelete = (row: { [key: string]: any }) => {
};
/**
* 强制用户下线
* Принудительное отключение пользователя
* @param row
*/
const handleKick = (row: { [key: string]: any }) => {
@@ -823,7 +823,7 @@ const handleKick = (row: { [key: string]: any }) => {
};
/**
* 解除下线状态
* Снятие статуса отключения
* @param row
*/
const confirmReleaseKick = (row: { [key: string]: any }) => {
@@ -834,7 +834,7 @@ const confirmReleaseKick = (row: { [key: string]: any }) => {
};
/**
* 关闭用户弹窗
* Закрытие окна пользователя
*/
const closeDialog = () => {
dialog.value.visible = false;
@@ -847,7 +847,7 @@ const closeDialog = () => {
};
/**
* 关闭下线弹窗
* Закрытие окна отключения
*/
const closeDialogKick = () => {
dialogKick.value.visible = false;
@@ -856,7 +856,7 @@ const closeDialogKick = () => {
};
/**
* 导入
* Импорт
*/
const handleImport = (params: UploadRequestOptions) => {
if (state.fileList.length > 0) {
@@ -881,7 +881,7 @@ const beforeImport = (file: UploadRawFile) => {
};
/**
* 导出
* Экспорт
*/
const handleExport = () => {
exportAccountApi().then((res) => {
@@ -894,7 +894,7 @@ const handleExport = () => {
a.href = url;
let dis = res.headers["content-disposition"];
a.download = dis.split("attachment; filename=")[1];
// 模拟点击下载
// Имитация клика для скачивания
a.click();
window.URL.revokeObjectURL(url);
ElMessage.success(t("common.success"));
@@ -955,7 +955,7 @@ const resetTraffic = async (row: { [key: string]: any }) => {
};
onMounted(() => {
// 初始化用户列表数据
// Инициализация списка пользователей
handleQuery();
if (route.query.focus === "change-pass") {
nextTick(() => {
@@ -973,3 +973,5 @@ onMounted(() => {
}
});
</script>
@@ -406,7 +406,7 @@ const handleExport = async () => {
a.href = url;
let dis = response.headers["content-disposition"];
a.download = dis.split("attachment; filename=")[1];
// 模拟点击下载
// Имитация клика для скачивания
a.click();
window.URL.revokeObjectURL(url);
ElMessage.success(t("common.success"));
@@ -484,3 +484,5 @@ onMounted(() => {
margin: 0 auto;
}
</style>
+3 -1
View File
@@ -1,4 +1,4 @@
<!-- setup 无法设置组件名称组件名称keepAlive必须 -->
<!-- setup не задаёт имя компонента, а имя нужно для keepAlive -->
<script lang="ts">
export default {
name: "Page401",
@@ -95,3 +95,5 @@ function back() {
}
}
</style>
+3 -1
View File
@@ -1,4 +1,4 @@
<!-- setup 无法设置组件名称组件名称keepAlive必须 -->
<!-- setup не задаёт имя компонента, а имя нужно для keepAlive -->
<script lang="ts">
export default {
name: "Page404",
@@ -269,3 +269,5 @@ function message() {
}
}
</style>
@@ -377,3 +377,5 @@ const closeDialog = (): void => {
flex-wrap: wrap;
}
</style>
@@ -1624,3 +1624,5 @@ onMounted(() => {
margin: 0 auto;
}
</style>
@@ -337,3 +337,5 @@ onMounted(() => {
}
}
</style>
@@ -94,7 +94,7 @@ const handleExport = async () => {
a.href = url;
let dis = response.headers["content-disposition"];
a.download = dis.split("attachment; filename=")[1];
// 模拟点击下载
// Имитация клика для скачивания
a.click();
window.URL.revokeObjectURL(url);
ElMessage.success(t("common.success"));
@@ -109,3 +109,5 @@ onMounted(() => {
</script>
<style lang="scss" scoped></style>
+3 -1
View File
@@ -94,7 +94,7 @@ const handleExport = async () => {
a.href = url;
let dis = response.headers["content-disposition"];
a.download = dis.split("attachment; filename=")[1];
// 模拟点击下载
// Имитация клика для скачивания
a.click();
window.URL.revokeObjectURL(url);
ElMessage.success(t("common.success"));
@@ -109,3 +109,5 @@ onMounted(() => {
</script>
<style lang="scss" scoped></style>
+13 -11
View File
@@ -76,10 +76,10 @@ import router from "@/router";
import LangSelect from "@/components/LangSelect/index.vue";
import SvgIcon from "@/components/SvgIcon/index.vue";
// 状态管理依赖
// Зависимость store
import { useAccountStore } from "@/store/modules/account";
// API依赖
// Зависимость API
import { LocationQuery, LocationQueryValue, useRoute } from "vue-router";
import { AccountLoginDto } from "@/api/account/types";
@@ -87,25 +87,25 @@ const accountStore = useAccountStore();
const route = useRoute();
/**
* 按钮loading
* Состояние загрузки кнопки
*/
const loading = ref(false);
/**
* 是否大写锁定
* Включён ли Caps Lock
*/
const isCapslock = ref(false);
/**
* 密码是否可见
* Видимость пароля
*/
const passVisible = ref(false);
/**
* 登录表单引用
* Ссылка на форму входа
*/
const loginFormRef = ref(ElForm);
/**
* 登录表单
* Форма входа
*/
const loginForm = ref<AccountLoginDto>({
username: "",
@@ -140,7 +140,7 @@ const loginRules = {
};
/**
* 检查输入大小写状态
* Проверка состояния регистра ввода
*/
const checkCapslock = (e: any) => {
const { key } = e;
@@ -148,7 +148,7 @@ const checkCapslock = (e: any) => {
};
/**
* 登录
* Вход
*/
const handleLogin = () => {
loginFormRef.value.validate((valid: boolean) => {
@@ -208,7 +208,7 @@ const handleLogin = () => {
.el-input {
background: transparent;
// 子组件 scoped 无效,使用 :deep
// scoped не действует на дочерний компонент, используется :deep
:deep(.el-input__wrapper) {
padding: 0;
background: transparent;
@@ -226,7 +226,7 @@ const handleLogin = () => {
-webkit-text-fill-color: #fff !important;
}
// 设置输入框自动填充的延迟属性
// Настройка задержки автозаполнения поля ввода
&:-webkit-autofill,
&:-webkit-autofill:hover,
&:-webkit-autofill:focus,
@@ -238,3 +238,5 @@ const handleLogin = () => {
}
}
</style>
@@ -220,3 +220,5 @@ onMounted(() => {
}
}
</style>
@@ -13,3 +13,5 @@ const { path } = params;
router.replace({ path: "/" + path, query });
</script>