feat: 国际化

This commit is contained in:
2024-04-02 17:17:41 +08:00
parent f9aceb9eb8
commit 3afe6dda6c
20 changed files with 315 additions and 91 deletions

View File

@@ -12,7 +12,7 @@
:loading="crud.delAllLoading"
@click="confirmDelAll()"
>
清空
{{ $t('ErrorLog.table.clear') }}
</el-button>
</crudOperation>
</div>
@@ -21,32 +21,32 @@
<el-table-column type="expand">
<template slot-scope="props">
<el-form label-position="left" inline class="demo-table-expand">
<el-form-item label="请求方法">
<el-form-item :label="$t('ErrorLog.table.method')">
<span>{{ props.row.method }}</span>
</el-form-item>
<el-form-item label="请求参数">
<el-form-item :label="$t('ErrorLog.table.params')">
<span>{{ props.row.params }}</span>
</el-form-item>
</el-form>
</template>
</el-table-column>
<el-table-column prop="username" label="用户名" />
<el-table-column prop="username" :label="$t('ErrorLog.table.username')" />
<el-table-column prop="request_ip" label="IP" />
<el-table-column show-overflow-tooltip prop="address" label="IP来源" />
<el-table-column prop="description" label="描述" show-overflow-tooltip />
<el-table-column prop="browser" label="浏览器" min-width="120" show-overflow-tooltip />
<el-table-column prop="create_time" label="创建日期" min-width="100" show-overflow-tooltip>
<el-table-column show-overflow-tooltip prop="address" :label="$t('ErrorLog.table.address')" />
<el-table-column prop="description" :label="$t('ErrorLog.table.description')" show-overflow-tooltip />
<el-table-column prop="browser" :label="$t('ErrorLog.table.browser')" min-width="120" show-overflow-tooltip />
<el-table-column prop="create_time" :label="$t('ErrorLog.table.create_time')" min-width="100" show-overflow-tooltip>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.create_time) }}</span>
</template>
</el-table-column>
<el-table-column label="异常详情" width="100px">
<el-table-column :label="$t('ErrorLog.table.err_del')" width="150px">
<template slot-scope="scope">
<el-button size="mini" type="text" @click="info(scope.row.log_id)">查看详情</el-button>
<el-button size="mini" type="text" @click="info(scope.row.log_id)">{{ $t('ErrorLog.table.see_del') }}</el-button>
</template>
</el-table-column>
</el-table>
<el-dialog :visible.sync="dialog" title="异常详情" append-to-body top="30px" width="85%">
<el-dialog :visible.sync="dialog" :title="$t('ErrorLog.table.err_del')" append-to-body top="30px" width="85%">
<pre v-highlightjs="errorInfo"><code class="java" /></pre>
</el-dialog>
<!--分页组件-->

View File

@@ -12,7 +12,7 @@
:loading="crud.delAllLoading"
@click="confirmDelAll()"
>
清空
{{ $t('ErrorLog.table.clear') }}
</el-button>
</crudOperation>
</div>
@@ -21,28 +21,28 @@
<el-table-column type="expand">
<template slot-scope="props">
<el-form label-position="left" inline class="demo-table-expand">
<el-form-item label="请求方法">
<el-form-item :label="$t('ErrorLog.table.method')">
<span>{{ props.row.method }}</span>
</el-form-item>
<el-form-item label="请求参数">
<el-form-item :label="$t('ErrorLog.table.params')">
<span>{{ props.row.params }}</span>
</el-form-item>
</el-form>
</template>
</el-table-column>
<el-table-column prop="username" label="用户名" />
<el-table-column prop="username" :label="$t('ErrorLog.table.username')" />
<el-table-column prop="request_ip" label="IP" />
<el-table-column show-overflow-tooltip prop="address" label="IP来源" />
<el-table-column prop="description" label="描述" show-overflow-tooltip />
<el-table-column prop="browser" label="浏览器" min-width="120" show-overflow-tooltip />
<el-table-column prop="time" label="请求耗时" align="center">
<el-table-column show-overflow-tooltip prop="address" :label="$t('ErrorLog.table.address')" />
<el-table-column prop="description" :label="$t('ErrorLog.table.description')" show-overflow-tooltip />
<el-table-column prop="browser" :label="$t('ErrorLog.table.browser')" min-width="120" show-overflow-tooltip />
<el-table-column prop="time" :label="$t('ErrorLog.table.time')" align="center">
<template slot-scope="scope">
<el-tag v-if="scope.row.time <= 300">{{ scope.row.time }}ms</el-tag>
<el-tag v-else-if="scope.row.time <= 1000" type="warning">{{ scope.row.time }}ms</el-tag>
<el-tag v-else type="danger">{{ scope.row.time }}ms</el-tag>
</template>
</el-table-column>
<el-table-column prop="create_time" label="创建日期" width="180px">
<el-table-column prop="create_time" :label="$t('ErrorLog.table.create_time')" width="180px">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.create_time) }}</span>
</template>
@@ -59,6 +59,7 @@ import { delAllInfo } from '@/api/monitor/log'
import CRUD, { presenter } from '@crud/crud'
import crudOperation from '@crud/CRUD.operation'
import pagination from '@crud/Pagination'
import i18n from "@/i18n";
export default {
name: 'Log',
@@ -77,9 +78,9 @@ export default {
},
methods: {
confirmDelAll() {
this.$confirm(`确认清空所有操作日志吗?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
this.$confirm(i18n.t('ErrorLog.msg.m1'), i18n.t('common.Operate'), {
confirmButtonText: i18n.t('common.Confirm'),
cancelButtonText: i18n.t('common.Cancel'),
type: 'warning'
}).then(() => {
this.crud.delAllLoading = true

View File

@@ -4,7 +4,7 @@
v-model="query.blurry"
clearable
size="mini"
placeholder="请输入你要搜索的内容"
:placeholder="$t('common.Tip17')"
style="width: 200px;"
class="filter-item"
/>

View File

@@ -16,38 +16,38 @@
:disabled="crud.selections.length === 0"
@click="doDelete(crud.selections)"
>
强退
{{ $t('Online.table.forced') }}
</el-button>
</crudOperation>
</div>
<!--表格渲染-->
<el-table ref="table" v-loading="crud.loading" :data="crud.data" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
<el-table-column type="selection" width="55" />
<el-table-column prop="userName" label="用户名" />
<el-table-column prop="nickName" label="用户姓名" />
<el-table-column prop="dept" label="部门" />
<el-table-column prop="ip" label="登录IP" />
<el-table-column show-overflow-tooltip prop="address" label="登录地点" />
<el-table-column prop="browser" label="浏览器" width="145px" />
<el-table-column prop="loginTime" label="登录时间" min-width="110" show-overflow-tooltip>
<el-table-column prop="userName" :label="$t('Online.table.userName')" />
<el-table-column prop="nickName" :label="$t('Online.table.nickName')" />
<el-table-column prop="dept" :label="$t('Online.table.dept')" />
<el-table-column prop="ip" :label="$t('Online.table.ip')" />
<el-table-column show-overflow-tooltip prop="address" :label="$t('Online.table.address')" />
<el-table-column prop="browser" :label="$t('Online.table.browser')" width="145px" />
<el-table-column prop="loginTime" :label="$t('Online.table.loginTime')" min-width="110" show-overflow-tooltip>
<template slot-scope="scope">
<span>{{ parseTime(scope.row.loginTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="70px" fixed="right">
<el-table-column :label="$t('common.Operate')" width="100px" fixed="right">
<template slot-scope="scope">
<el-popover
:ref="scope.$index"
v-permission="['admin']"
placement="top"
width="180"
width="180px"
>
<p>确定强制退出该用户吗</p>
<p>{{ $t('Online.msg.m1') }}</p>
<div style="text-align: right; margin: 0">
<el-button size="mini" type="text" @click="$refs[scope.$index].doClose()">取消</el-button>
<el-button :loading="delLoading" type="primary" size="mini" @click="delMethod(scope.row, scope.$index)">确定</el-button>
<el-button size="mini" type="text" @click="$refs[scope.$index].doClose()">{{ $t('common.Cancel') }}</el-button>
<el-button :loading="delLoading" type="primary" size="mini" @click="delMethod(scope.row, scope.$index)">{{ $t('common.Confirm') }}</el-button>
</div>
<el-button slot="reference" size="mini" type="text">强退</el-button>
<el-button slot="reference" size="mini" type="text">{{ $t('Online.table.forced') }}</el-button>
</el-popover>
</template>
</el-table-column>
@@ -63,12 +63,13 @@ import CRUD, { presenter, header, crud } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import pagination from '@crud/Pagination'
import i18n from "@/i18n";
export default {
name: 'OnlineUser',
components: { pagination, crudOperation, rrOperation },
cruds() {
return CRUD({ url: 'auth/online', title: '在线用户' })
return CRUD({ url: 'auth/online', title: i18n.t('Online.title') })
},
mixins: [presenter(), header(), crud()],
data() {
@@ -78,7 +79,7 @@ export default {
}
},
created() {
this.crud.msg.del = '强退成功!'
this.crud.msg.del = i18n.t('Online.msg.m2')
this.crud.optShow = {
add: false,
edit: false,
@@ -88,9 +89,9 @@ export default {
},
methods: {
doDelete(datas) {
this.$confirm(`确认强退选中的${datas.length}个用户?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
this.$confirm(i18n.t('Online.m3_1') + `${datas.length}` + i18n.t('Online.m3_1'), i18n.t('common.Tips'), {
confirmButtonText: i18n.t('common.Confirm'),
cancelButtonText: i18n.t('common.Cancel'),
type: 'warning'
}).then(() => {
this.delMethod(datas)

View File

@@ -11,10 +11,10 @@
label-width="90px"
label-suffix=":"
>
<el-form-item label="分类名称">
<el-form-item :label="$t('BasicClassification.table.name')">
<el-select
v-model="query.class_code"
placeholder="请选择分类名称"
:placeholder="$t('BasicClassification.placeholder.p1')"
clearable
filterable
size="mini"
@@ -43,7 +43,7 @@
icon="el-icon-s-operation"
@click="ToExpandall"
>
全部展开
{{ $t('BasicClassification.button.all_open') }}
</el-button>
</crudOperation>
<!--表单组件-->
@@ -52,37 +52,37 @@
:before-close="crud.cancelCU"
:visible.sync="crud.status.cu > 0"
:title="crud.status.title"
width="500px"
:width="computedLabelWidth"
>
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="80px">
<el-form-item label="分类编码" prop="class_code">
<el-form ref="form" :model="form" :rules="rules" size="mini" :label-width="computedFormLabelWidth">
<el-form-item :label="$t('BasicClassification.table.code')" prop="class_code">
<el-input v-model="form.class_code" style="width: 370px;" />
</el-form-item>
<el-form-item label="分类名称" prop="class_name">
<el-form-item :label="$t('BasicClassification.table.name')" prop="class_name">
<el-input v-model="form.class_name" style="width: 370px;" />
</el-form-item>
<el-form-item label="简要描述" prop="class_desc">
<el-form-item :label="$t('BasicClassification.table.description')" prop="class_desc">
<el-input v-model="form.class_desc" style="width: 370px;" />
</el-form-item>
<el-form-item label="顶级类目">
<el-form-item :label="$t('BasicClassification.table.isTop')">
<el-radio-group v-model="form.isTop" style="width: 140px">
<el-radio label="1"></el-radio>
<el-radio label="0"></el-radio>
<el-radio label="1">{{ $t('common.Yes') }}</el-radio>
<el-radio label="0">{{ $t('common.No') }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.isTop === '0'" style="margin-bottom: 0;" label="上级类目" prop="pid">
<el-form-item v-if="form.isTop === '0'" style="margin-bottom: 0;" :label="$t('BasicClassification.table.parent_class_id')" prop="pid">
<treeselect
v-model="form.parent_class_id"
:load-options="loadClass"
:options="classes"
style="width: 370px;"
placeholder="选择上级类目"
:placeholder="$t('BasicClassification.placeholder.p2')"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
<el-button type="text" @click="crud.cancelCU">{{ $t('common.Cancel') }}</el-button>
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">{{ $t('common.Confirm') }}</el-button>
</div>
</el-dialog>
<!--表格渲染-->
@@ -98,19 +98,19 @@
@select-all="crud.selectAllChange"
@selection-change="crud.selectionChangeHandler"
>
<el-table-column prop="class_code" label="分类编码" />
<el-table-column prop="class_name" label="分类名称" />
<el-table-column prop="class_desc" label="分类简要描述" />
<el-table-column prop="update_name" label="修改人" />
<el-table-column prop="update_time" label="修改时间" min-width="100" show-overflow-tooltip />
<el-table-column prop="is_modify" label="是否可修改">
<el-table-column prop="class_code" :label="$t('BasicClassification.table.code')" />
<el-table-column prop="class_name" :label="$t('BasicClassification.table.name')" />
<el-table-column prop="class_desc" :label="$t('BasicClassification.table.description')" />
<el-table-column prop="update_name" :label="$t('BasicClassification.table.update_user')" />
<el-table-column prop="update_time" :label="$t('BasicClassification.table.update_time')" min-width="100" show-overflow-tooltip />
<el-table-column prop="is_modify" :label="$t('BasicClassification.table.is_modify')">
<template slot-scope="scope">
{{scope.row.is_modify?'是':'否'}}
{{ scope.row.is_modify ? $t('common.Yes') : $t('common.No') }}
</template>
</el-table-column>
<el-table-column
v-permission="['admin','Classstandard:edit','Classstandard:del']"
label="操作"
:label="$t('common.Operate')"
width="250px"
align="center"
>
@@ -121,10 +121,14 @@
:permission="permission"
:disabled-edit="scope.row.is_modify === '0'"
:disabled-dle="scope.row.is_modify === '0'"
msg="确定删除吗,如果存在下级节点则一并删除此操作不能撤销"
:msg="$t('BasicClassification.msg.m1')"
/>
<el-button slot="right" size="mini" type="text" icon="el-icon-circle-plus-outline" @click="crud.toAddAndData(addSibling(scope.row))">新增同级</el-button>
<el-button slot="right" size="mini" type="text" icon="el-icon-circle-plus" @click="crud.toAddAndData(addChildren(scope.row))">新增子级</el-button>
<el-button slot="right" size="mini" type="text" icon="el-icon-circle-plus-outline" @click="crud.toAddAndData(addSibling(scope.row))">
{{ $t('BasicClassification.button.bu1') }}
</el-button>
<el-button slot="right" size="mini" type="text" icon="el-icon-circle-plus" @click="crud.toAddAndData(addChildren(scope.row))">
{{ $t('BasicClassification.button.bu2') }}
</el-button>
</template>
</el-table-column>
</el-table>
@@ -143,6 +147,7 @@ import crudOperation from '@crud/CRUD.operation.vue'
import udOperation from '@crud/UD.operation.vue'
import rrOperation from '@crud/RR.operation.vue'
import pagination from '@crud/Pagination.vue'
import i18n from "@/i18n";
let defaultForm = {
id: null,
@@ -175,7 +180,7 @@ export default {
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
return CRUD({
title: '基础类别',
title: i18n.t('BasicClassification.title'),
url: 'api/Classstandard',
idField: 'class_id',
sort: 'class_id,desc',
@@ -193,38 +198,54 @@ export default {
permission: {},
rules: {
class_id: [
{ required: true, message: '不能为空', trigger: 'blur' }
{ required: true, message: i18n.t('BasicClassification.rules.NotNull'), trigger: 'blur' }
],
path_code: [
{ required: true, message: '不能为空', trigger: 'blur' }
{ required: true, message: i18n.t('BasicClassification.rules.NotNull'), trigger: 'blur' }
],
class_code: [
{ required: true, message: '不能为空', trigger: 'blur' }
{ required: true, message: i18n.t('BasicClassification.rules.NotNull'), trigger: 'blur' }
],
class_name: [
{ required: true, message: '不能为空', trigger: 'blur' }
{ required: true, message: i18n.t('BasicClassification.rules.NotNull'), trigger: 'blur' }
],
is_leaf: [
{ required: true, message: '不能为空', trigger: 'blur' }
{ required: true, message: i18n.t('BasicClassification.rules.NotNull'), trigger: 'blur' }
],
is_modify: [
{ required: true, message: '不能为空', trigger: 'blur' }
{ required: true, message: i18n.t('BasicClassification.rules.NotNull'), trigger: 'blur' }
],
is_delete: [
{ required: true, message: '不能为空', trigger: 'blur' }
{ required: true, message: i18n.t('BasicClassification.rules.NotNull'), trigger: 'blur' }
],
create_id: [
{ required: true, message: '不能为空', trigger: 'blur' }
{ required: true, message: i18n.t('BasicClassification.rules.NotNull'), trigger: 'blur' }
],
create_name: [
{ required: true, message: '不能为空', trigger: 'blur' }
{ required: true, message: i18n.t('BasicClassification.rules.NotNull'), trigger: 'blur' }
],
create_time: [
{ required: true, message: '不能为空', trigger: 'blur' }
{ required: true, message: i18n.t('BasicClassification.rules.NotNull'), trigger: 'blur' }
]
}
}
},
computed: {
computedLabelWidth() {
const item = localStorage.getItem('lang')
if (item === 'zh') {
return `500px`
}
return `600px`
},
computedFormLabelWidth() {
const item = localStorage.getItem('lang')
if (item === 'zh') {
return `80px`
}
return `140px`
}
},
created() {
this.getClassNames() // 获取分类
},