Русифицировать README и интерфейс HY2XS admin
This commit is contained in:
@@ -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>
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<!-- setup 无法设置组件名称,组件名称keepAlive必须 -->
|
||||
<!-- setup не задаёт имя компонента, а имя нужно для keepAlive -->
|
||||
<script lang="ts">
|
||||
export default {
|
||||
name: "Page401",
|
||||
@@ -95,3 +95,5 @@ function back() {
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user