优化前端双语配置

This commit is contained in:
2026-03-31 18:20:03 +08:00
parent 7493c4e400
commit edd870457f
24 changed files with 253 additions and 95 deletions

View File

@@ -208,15 +208,15 @@
const handleClearAll = async () => {
try {
await ElMessageBox.confirm('确定清空所有玩家抽奖测试数据?', '提示', {
await ElMessageBox.confirm(t('page.ui.clearAllConfirm'), t('uiMsg.titlePrompt'), {
type: 'warning'
})
await api.clearAll()
ElMessage.success('已清空所有测试数据')
ElMessage.success(t('page.ui.clearAllSuccess'))
getData()
} catch (e: any) {
if (e !== 'cancel') {
ElMessage.error(e?.message || '清空失败')
ElMessage.error(e?.message || t('page.ui.clearAllFail'))
}
}
}

View File

@@ -143,6 +143,7 @@
import { ref } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { useTerminalStore, TaskStatus } from '../store/terminal'
import { $t } from '@/locales'
const emit = defineEmits<{
(e: 'success'): void
@@ -157,51 +158,51 @@
}
const webBuild = () => {
ElMessageBox.confirm('确认重新打包前端并发布项目吗?', '前端打包发布', {
confirmButtonText: '确定',
cancelButtonText: '取消',
ElMessageBox.confirm($t('uiMsg.saipackageWebBuildConfirm'), $t('uiMsg.saipackageWebBuildTitle'), {
confirmButtonText: $t('uiMsg.btnOk'),
cancelButtonText: $t('uiMsg.btnCancel'),
type: 'warning'
}).then(() => {
terminal.addNodeTask('web-build', '', () => {
ElMessage.success('前端打包发布成功')
ElMessage.success($t('uiMsg.saipackageWebBuildSuccess'))
})
})
}
const handleFronted = () => {
ElMessageBox.confirm('确认更新前端Node依赖吗', '前端依赖更新', {
confirmButtonText: '确定',
cancelButtonText: '取消',
ElMessageBox.confirm($t('uiMsg.saipackageFrontendDepsConfirm'), $t('uiMsg.saipackageFrontendDepsTitle'), {
confirmButtonText: $t('uiMsg.btnOk'),
cancelButtonText: $t('uiMsg.btnCancel'),
type: 'warning'
}).then(() => {
terminal.addNodeTask('web-install', '', () => {
ElMessage.success('前端依赖更新成功')
ElMessage.success($t('uiMsg.saipackageFrontendDepsSuccess'))
})
})
}
const handleBackend = () => {
ElMessageBox.confirm('确认更新后端composer包吗', 'composer包更新', {
confirmButtonText: '确定',
cancelButtonText: '取消',
ElMessageBox.confirm($t('uiMsg.saipackageComposerConfirm'), $t('uiMsg.saipackageComposerTitle'), {
confirmButtonText: $t('uiMsg.btnOk'),
cancelButtonText: $t('uiMsg.btnCancel'),
type: 'warning'
}).then(() => {
terminal.addTask('composer.update', '', () => {
ElMessage.success('composer包更新成功')
ElMessage.success($t('uiMsg.saipackageComposerSuccess'))
})
})
}
const frontInstall = (extend = '') => {
terminal.addNodeTask('web-install', extend, () => {
ElMessage.success('前端依赖更新成功')
ElMessage.success($t('uiMsg.saipackageFrontendDepsSuccess'))
emit('success')
})
}
const backendInstall = (extend = '') => {
terminal.addTask('composer.update', extend, () => {
ElMessage.success('composer包更新成功')
ElMessage.success($t('uiMsg.saipackageComposerSuccess'))
setTimeout(() => {
emit('success')
}, 500)

View File

@@ -186,6 +186,7 @@
import api from '@/api/safeguard/server'
import { onMounted } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { $t } from '@/locales'
const loading = ref(false)
@@ -219,16 +220,16 @@
*/
const handleClearCache = (tag: string): void => {
if (!tag) {
ElMessage.warning('请选择要清理的缓存')
ElMessage.warning($t('uiMsg.clearCacheSelect'))
return
}
ElMessageBox.confirm(`确定要清理标签:【${tag}】的缓存吗?`, '清理选中缓存', {
confirmButtonText: '确定',
cancelButtonText: '取消',
ElMessageBox.confirm($t('uiMsg.clearCacheConfirmByTag', { tag }), $t('uiMsg.clearCacheTitle'), {
confirmButtonText: $t('uiMsg.btnOk'),
cancelButtonText: $t('uiMsg.btnCancel'),
type: 'error'
}).then(() => {
api.clear({ tag }).then(() => {
ElMessage.success('操作成功')
ElMessage.success($t('uiMsg.operationSuccess'))
updateCacheInfo()
})
})

View File

@@ -84,7 +84,8 @@
<script setup lang="ts">
import { useTable } from '@/hooks/core/useTable'
import { useSaiAdmin } from '@/composables/useSaiAdmin'
import { ElMessageBox } from 'element-plus'
import { ElMessage, ElMessageBox } from 'element-plus'
import { $t } from '@/locales'
import api from '@/api/safeguard/database'
import TableSearch from './modules/table-search.vue'
import TableDialog from './modules/table-dialog.vue'
@@ -126,7 +127,12 @@
columnsFactory: () => [
{ type: 'selection' },
{ prop: 'name', label: 'page.table.tableName', minWidth: 200 },
{ prop: 'comment', label: 'page.table.tableComment', minWidth: 150, showOverflowTooltip: true },
{
prop: 'comment',
label: 'page.table.tableComment',
minWidth: 150,
showOverflowTooltip: true
},
{ prop: 'engine', label: 'page.table.tableEngine', width: 120 },
{ prop: 'update_time', label: 'page.table.updateTime', width: 180, sortable: true },
{ prop: 'rows', label: 'page.table.totalRows', width: 120 },
@@ -134,7 +140,13 @@
{ prop: 'data_length', label: 'page.table.dataSize', width: 120 },
{ prop: 'collation', label: 'page.table.collation', width: 180 },
{ prop: 'create_time', label: 'page.table.createTime', width: 180, sortable: true },
{ prop: 'operation', label: 'table.actions.operation', width: 100, fixed: 'right', useSlot: true }
{
prop: 'operation',
label: 'table.actions.operation',
width: 100,
fixed: 'right',
useSlot: true
}
]
}
})
@@ -167,20 +179,20 @@
*/
const handleOptimizeRows = (): void => {
if (selectedRows.value.length === 0) {
ElMessage.warning('请选择要优化的行')
ElMessage.warning($t('page.ui.selectRowsToOptimize'))
return
}
ElMessageBox.confirm(
`确定要优化选中的 ${selectedRows.value.length} 条数据吗?`,
'优化选中数据',
$t('page.ui.optimizeConfirm', { n: selectedRows.value.length }),
$t('page.ui.optimizeTitle'),
{
confirmButtonText: '确定',
cancelButtonText: '取消',
confirmButtonText: $t('uiMsg.btnOk'),
cancelButtonText: $t('uiMsg.btnCancel'),
type: 'error'
}
).then(() => {
api.optimize({ tables: selectedRows.value.map((row) => row.name) }).then(() => {
ElMessage.success('操作成功')
ElMessage.success($t('uiMsg.operationSuccess'))
refreshData()
selectedRows.value = []
})
@@ -192,20 +204,20 @@
*/
const handleFragmentRows = (): void => {
if (selectedRows.value.length === 0) {
ElMessage.warning('请选择要清理碎片的行')
ElMessage.warning($t('page.ui.selectRowsToFragment'))
return
}
ElMessageBox.confirm(
`确定要清理选中的 ${selectedRows.value.length} 条数据吗?`,
'清理碎片操作',
$t('page.ui.fragmentConfirm', { n: selectedRows.value.length }),
$t('page.ui.fragmentTitle'),
{
confirmButtonText: '确定',
cancelButtonText: '取消',
confirmButtonText: $t('uiMsg.btnOk'),
cancelButtonText: $t('uiMsg.btnCancel'),
type: 'error'
}
).then(() => {
api.fragment({ tables: selectedRows.value.map((row) => row.name) }).then(() => {
ElMessage.success('操作成功')
ElMessage.success($t('uiMsg.operationSuccess'))
refreshData()
selectedRows.value = []
})

View File

@@ -129,7 +129,8 @@
import { useTable } from '@/hooks/core/useTable'
import { useSaiAdmin } from '@/composables/useSaiAdmin'
import { useUserStore } from '@/store/modules/user'
import { ElMessageBox } from 'element-plus'
import { ElMessage, ElMessageBox } from 'element-plus'
import { $t } from '@/locales'
import TableSearch from './modules/table-search.vue'
import EditDialog from './modules/edit-dialog.vue'
import WorkDialog from './modules/work-dialog.vue'
@@ -252,15 +253,15 @@
* @param row
*/
const handlePassword = (row: any) => {
ElMessageBox.prompt('请输入新密码', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
ElMessageBox.prompt($t('page.ui.promptNewPassword'), $t('uiMsg.titlePrompt'), {
confirmButtonText: $t('uiMsg.btnOk'),
cancelButtonText: $t('uiMsg.btnCancel'),
inputPattern: /^.{6,16}$/,
inputErrorMessage: '密码长度在6到16之间',
inputErrorMessage: $t('page.ui.passwordLengthError'),
type: 'warning'
}).then(({ value }) => {
api.changePassword({ id: row.id, password: value }).then(() => {
ElMessage.success('修改密码成功')
ElMessage.success($t('page.ui.passwordChanged'))
})
})
}
@@ -270,13 +271,13 @@
* @param row
*/
const handleCache = (row: any) => {
ElMessageBox.confirm('确定要清理缓存吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
ElMessageBox.confirm($t('page.ui.clearCacheConfirm'), $t('uiMsg.titlePrompt'), {
confirmButtonText: $t('uiMsg.btnOk'),
cancelButtonText: $t('uiMsg.btnCancel'),
type: 'warning'
}).then(() => {
api.clearCache({ id: row.id }).then(() => {
ElMessage.success('清理缓存成功')
ElMessage.success($t('uiMsg.clearCacheSuccess'))
})
})
}

View File

@@ -80,6 +80,7 @@
<script setup lang="ts">
import { ElMessage } from 'element-plus'
import { $t } from '@/locales'
import api from '@/api/safeguard/database'
import { useTable } from '@/hooks/core/useTable'
import generate from '@/api/tool/generate'
@@ -172,7 +173,7 @@
// 确认选择装载数据表
const handleLoadTable = async () => {
if (selectedRows.value.length < 1) {
ElMessage.info('至少要选择一条数据')
ElMessage.info($t('uiMsg.selectAtLeastOne'))
return
}
const names = selectedRows.value.map((item) => ({
@@ -185,7 +186,7 @@
source: searchForm.value.source,
names
})
ElMessage.success('装载成功')
ElMessage.success($t('page.ui.loadSuccess'))
emit('success')
handleClose()
}

View File

@@ -24,6 +24,7 @@
<script setup lang="ts">
import { useClipboard } from '@vueuse/core'
import { ElMessage } from 'element-plus'
import { $t } from '@/locales'
import generate from '@/api/tool/generate'
interface Props {
@@ -94,9 +95,9 @@
const handleCopy = async (code: string) => {
try {
await copy(code)
ElMessage.success('代码已复制到剪贴板')
ElMessage.success($t('page.ui.copyToClipboard'))
} catch {
ElMessage.error('复制失败,请手动复制')
ElMessage.error($t('uiMsg.copyFail'))
}
}
</script>

View File

@@ -133,6 +133,7 @@
import { useTable } from '@/hooks/core/useTable'
import { useSaiAdmin } from '@/composables/useSaiAdmin'
import { ElMessage, ElMessageBox } from 'element-plus'
import { $t } from '@/locales'
import api from '@/api/tool/generate'
import { downloadFile } from '@/utils/tool'
@@ -211,15 +212,15 @@
* 生成代码下载
*/
const generateCode = async (ids: number | string) => {
ElMessage.info('代码生成下载中,请稍后')
ElMessage.info($t('page.ui.generating'))
const response = await api.generateCode({
ids: ids.toString().split(',')
})
if (response) {
downloadFile(response, 'code.zip')
ElMessage.success('代码生成成功,开始下载')
ElMessage.success($t('page.ui.generateSuccess'))
} else {
ElMessage.error('文件下载失败')
ElMessage.error($t('page.ui.downloadFail'))
}
}
@@ -227,13 +228,13 @@
* 同步表结构
*/
const syncTable = async (id: number) => {
ElMessageBox.confirm('执行同步操作将会覆盖已经设置的表结构,确定要同步吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
ElMessageBox.confirm($t('page.ui.syncConfirm'), $t('uiMsg.titlePrompt'), {
confirmButtonText: $t('uiMsg.btnOk'),
cancelButtonText: $t('uiMsg.btnCancel'),
type: 'warning'
}).then(() => {
api.async({ id }).then(() => {
ElMessage.success('同步成功')
ElMessage.success($t('page.ui.syncSuccess'))
})
})
}
@@ -242,13 +243,13 @@
* 生成到项目
*/
const generateFile = async (id: number) => {
ElMessageBox.confirm('生成到项目将会覆盖原有文件,确定要生成吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
ElMessageBox.confirm($t('page.ui.generateToProjectConfirm'), $t('uiMsg.titlePrompt'), {
confirmButtonText: $t('uiMsg.btnOk'),
cancelButtonText: $t('uiMsg.btnCancel'),
type: 'warning'
}).then(() => {
api.generateFile({ id }).then(() => {
ElMessage.success('生成到项目成功')
ElMessage.success($t('page.ui.generateToProjectSuccess'))
})
})
}
@@ -258,7 +259,7 @@
*/
const batchGenerate = () => {
if (selectedRows.value.length === 0) {
ElMessage.error('至少要选择一条数据')
ElMessage.error($t('uiMsg.selectAtLeastOne'))
return
}
generateCode(selectedRows.value.map((item: any) => item.id).join(','))

View File

@@ -79,6 +79,7 @@
import { useTable } from '@/hooks/core/useTable'
import { useSaiAdmin } from '@/composables/useSaiAdmin'
import { ElMessage, ElMessageBox } from 'element-plus'
import { $t } from '@/locales'
import api from '@/api/tool/crontab'
import TableSearch from './modules/table-search.vue'
import EditDialog from './modules/edit-dialog.vue'
@@ -146,13 +147,13 @@
// 运行任务
const handleRun = (row: any) => {
ElMessageBox.confirm(`确定要运行任务【${row.name}】吗?`, '运行任务', {
confirmButtonText: '确定',
cancelButtonText: '取消',
ElMessageBox.confirm($t('page.ui.runConfirm', { name: row.name }), $t('page.ui.runTitle'), {
confirmButtonText: $t('uiMsg.btnOk'),
cancelButtonText: $t('uiMsg.btnCancel'),
type: 'warning'
}).then(() => {
api.run({ id: row.id }).then(() => {
ElMessage.success('任务运行成功')
ElMessage.success($t('page.ui.runSuccess'))
refreshData()
})
})

View File

@@ -76,6 +76,7 @@
<script setup lang="ts">
import { ElMessage, ElMessageBox } from 'element-plus'
import { $t } from '@/locales'
import api from '@/api/tool/crontab'
import { useTable } from '@/hooks/core/useTable'
@@ -128,7 +129,7 @@
*/
const initPage = async () => {
if (!props.data?.id) {
ElMessage.error('请先选择一个任务')
ElMessage.error($t('page.ui.selectTaskFirst'))
return
}
searchForm.value.crontab_id = props.data.id
@@ -166,20 +167,20 @@
// 确认选择装载数据表
const handleLoadTable = async () => {
if (selectedRows.value.length < 1) {
ElMessage.info('至少要选择一条数据')
ElMessage.info($t('uiMsg.selectAtLeastOne'))
return
}
ElMessageBox.confirm(
`确定要删除选中的 ${selectedRows.value.length} 条数据吗?`,
'删除选中数据',
$t('uiMsg.deleteConfirmSelected', { n: selectedRows.value.length }),
$t('uiMsg.titleDeleteSelected'),
{
confirmButtonText: '确定',
cancelButtonText: '取消',
confirmButtonText: $t('uiMsg.btnOk'),
cancelButtonText: $t('uiMsg.btnCancel'),
type: 'error'
}
).then(() => {
api.deleteCrontabLog({ ids: selectedRows.value.map((row) => row.id) }).then(() => {
ElMessage.success('删除成功')
ElMessage.success($t('uiMsg.deleteSuccess'))
refreshData()
})
})