feat(i18n): add internationalization support for knowledge module

- Add English, Chinese, and Japanese translations for knowledge management UI
- Update knowledge page and components to use i18n strings
- Fix menu ID inconsistency in sidebar component
- Improve sidebar active state handling with route watcher
- Update text color binding in sidebar to use style binding
This commit is contained in:
duanshuwen
2026-04-09 20:05:51 +08:00
parent 064856ab2d
commit 6d2991e595
11 changed files with 247 additions and 60 deletions

View File

@@ -1,27 +1,27 @@
<template>
<div>
<el-row class="mb-[20px]">
<el-button class="button" type="primary" :icon="Plus" @click="dialogVisible = true">添加事件</el-button>
<el-button class="button" type="primary" :icon="Plus" @click="dialogVisible = true">{{ t('knowledge.event.addEvent') }}</el-button>
</el-row>
<el-table :data="tableData" show-overflow-tooltip border>
<el-table-column prop="date" label="事件名称" width="180" align="center" />
<el-table-column prop="name" label="事件描述" width="180" align="center" />
<el-table-column prop="address" label="生效时间" align="center" />
<el-table-column prop="address" label="结束事件" align="center" />
<el-table-column prop="address" label="关联图片" align="center" />
<el-table-column prop="address" label="启用/停用" align="center">
<el-table-column prop="date" :label="t('knowledge.event.eventName')" width="180" align="center" />
<el-table-column prop="name" :label="t('knowledge.event.eventDesc')" width="180" align="center" />
<el-table-column prop="address" :label="t('knowledge.event.effectiveTime')" align="center" />
<el-table-column prop="address" :label="t('knowledge.event.endTime')" align="center" />
<el-table-column prop="address" :label="t('knowledge.event.relatedImage')" align="center" />
<el-table-column prop="address" :label="t('knowledge.event.enableDisable')" align="center">
<template #default="scope">
<el-switch v-model="scope.row.switch" size="small" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="150">
<el-table-column :label="t('knowledge.event.operation')" align="center" width="150">
<template #default="scope">
<el-button link size="small" type="primary" @click="emits('change', '查看图片', scope.row)">
查看图片
<el-button link size="small" type="primary" @click="emits('change', t('knowledge.event.viewImage'), scope.row)">
{{ t('knowledge.event.viewImage') }}
</el-button>
<el-button link size="small" type="primary" @click="uploadImageChange(scope.row)">
上传图片
{{ t('knowledge.event.uploadImage') }}
</el-button>
</template>
</el-table-column>
@@ -35,11 +35,14 @@
</template>
<script setup lang="ts">
import { useI18n } from 'vue-i18n';
import { ref, reactive } from 'vue';
import { Plus } from '@element-plus/icons-vue';
import AddDialog from './addDialog.vue';
import UploadImage from './UploadImage.vue';
const { t } = useI18n();
const emits = defineEmits(["update:change"]);
const dialogVisible = ref(false);