Browse Source

feat: 在多语言配置使用tree的接口调用和缓存

huangqizheng/feature-20251213090502-现金退款多语言
zhangrenyuan 1 month ago
parent
commit
8624adae7d
  1. 2
      src/views/consume/gold/addCoinConsume.vue
  2. 57
      src/views/language/languageTranslate.vue

2
src/views/consume/gold/addCoinConsume.vue

@ -577,7 +577,7 @@ onMounted(async function () {
<p style="margin-right: 20px">&nbsp;&nbsp;{{ $t('common.个') }}</p> <p style="margin-right: 20px">&nbsp;&nbsp;{{ $t('common.个') }}</p>
</el-form-item> </el-form-item>
<el-form-item prop="remark" label="备注">
<el-form-item prop="remark" :label="t('common_add.remark')">
<el-input v-model="addConsume.remark" style="width: 250px" :rows="4" maxlength="100" show-word-limit <el-input v-model="addConsume.remark" style="width: 250px" :rows="4" maxlength="100" show-word-limit
type="textarea" /> type="textarea" />
</el-form-item> </el-form-item>

57
src/views/language/languageTranslate.vue

@ -29,7 +29,7 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="chineseSimplified" label="原文(中文)" width="180px" >
<el-table-column prop="chineseSimplified" label="原文(中文)" width="180px">
<template #default="scope"> <template #default="scope">
<el-tooltip :content="scope.row.chineseSimplified" placement="top" <el-tooltip :content="scope.row.chineseSimplified" placement="top"
v-if="scope.row.chineseSimplified && scope.row.chineseSimplified.length > 20"> v-if="scope.row.chineseSimplified && scope.row.chineseSimplified.length > 20">
@ -49,7 +49,8 @@
</el-tooltip> </el-tooltip>
<span v-else>{{ scope.row.english }}</span> <span v-else>{{ scope.row.english }}</span>
</div> </div>
<el-tag :type="scope.row.english ? 'success' : 'info'" size="small" style="margin-left: 8px;">
<el-tag :type="scope.row.english ? 'success' : 'info'" size="small"
style="margin-left: 8px;">
{{ scope.row.english ? '已翻译' : '未翻译' }} {{ scope.row.english ? '已翻译' : '未翻译' }}
</el-tag> </el-tag>
</div> </div>
@ -83,7 +84,8 @@
</el-tooltip> </el-tooltip>
<span v-else>{{ scope.row.chineseTraditional }}</span> <span v-else>{{ scope.row.chineseTraditional }}</span>
</div> </div>
<el-tag :type="scope.row.chineseTraditional ? 'success' : 'info'" size="small" style="margin-left: 8px;">
<el-tag :type="scope.row.chineseTraditional ? 'success' : 'info'" size="small"
style="margin-left: 8px;">
{{ scope.row.chineseTraditional ? '已翻译' : '未翻译' }} {{ scope.row.chineseTraditional ? '已翻译' : '未翻译' }}
</el-tag> </el-tag>
</div> </div>
@ -117,7 +119,8 @@
</el-tooltip> </el-tooltip>
<span v-else>{{ scope.row.vietnamese }}</span> <span v-else>{{ scope.row.vietnamese }}</span>
</div> </div>
<el-tag :type="scope.row.vietnamese ? 'success' : 'info'" size="small" style="margin-left: 8px;">
<el-tag :type="scope.row.vietnamese ? 'success' : 'info'" size="small"
style="margin-left: 8px;">
{{ scope.row.vietnamese ? '已翻译' : '未翻译' }} {{ scope.row.vietnamese ? '已翻译' : '未翻译' }}
</el-tag> </el-tag>
</div> </div>
@ -151,13 +154,8 @@
</el-card> </el-card>
<!-- 确认删除对话框 --> <!-- 确认删除对话框 -->
<ConfirmDialog
v-model="showDeleteDialog"
message="删除该翻译记录!"
@confirm="handleDeleteConfirm"
@cancel="handleDeleteCancel"
@close="handleDeleteClose"
/>
<ConfirmDialog v-model="showDeleteDialog" message="删除该翻译记录!" @confirm="handleDeleteConfirm"
@cancel="handleDeleteCancel" @close="handleDeleteClose" />
<!-- 编辑对话框 --> <!-- 编辑对话框 -->
<el-dialog v-model="showEditDialog" :title="editForm.id ? '编辑翻译' : '新增翻译'" width="30vw" draggable> <el-dialog v-model="showEditDialog" :title="editForm.id ? '编辑翻译' : '新增翻译'" width="30vw" draggable>
@ -175,8 +173,7 @@
</el-form-item> </el-form-item>
<el-form-item label="繁体中文:"> <el-form-item label="繁体中文:">
<el-input v-model="editForm.chineseTraditional" placeholder="请输入繁体中文翻译"
show-word-limit />
<el-input v-model="editForm.chineseTraditional" placeholder="请输入繁体中文翻译" show-word-limit />
</el-form-item> </el-form-item>
<el-form-item label="马来语:"> <el-form-item label="马来语:">
@ -222,6 +219,11 @@ import API from "@/util/http.js"
import moment from 'moment' import moment from 'moment'
import { UploadFilled } from '@element-plus/icons-vue' import { UploadFilled } from '@element-plus/icons-vue'
import ConfirmDialog from '@/components/dialogs/ConfirmDialog.vue' import ConfirmDialog from '@/components/dialogs/ConfirmDialog.vue'
// AdminStore
import { useAdminStore } from '@/store/index.js';
import { storeToRefs } from "pinia";
const adminStore = useAdminStore();
const { adminData } = storeToRefs(adminStore);
// //
const tableData = ref([]) const tableData = ref([])
@ -334,6 +336,30 @@ const handleAdd = () => {
showEditDialog.value = true showEditDialog.value = true
} }
const getMenuTree = async function () {
//
try {
const result = await request({
url: '/menu/tree',
data: {
id: adminData.value.roleId,
}
})
if (result.code === 200) {
adminStore.setMenuTree(result.data)
}
return result.data //
} catch (error) {
console.error('菜单数据请求失败:', error)
// return { code: 500, msg: '' }
ElMessage.error('网络异常')
adminStore.clearState()
}
}
// //
const handleSave = async () => { const handleSave = async () => {
// //
@ -373,6 +399,8 @@ const handleSave = async () => {
console.error('保存失败:', error) console.error('保存失败:', error)
ElMessage.error('保存失败') ElMessage.error('保存失败')
} }
//
await getMenuTree()
} }
// - // -
@ -400,6 +428,8 @@ const handleDeleteConfirm = async () => {
showDeleteDialog.value = false showDeleteDialog.value = false
currentDeleteRow.value = null currentDeleteRow.value = null
} }
//
await getMenuTree()
} }
// //
@ -512,6 +542,7 @@ onMounted(() => {
align-items: center; align-items: center;
gap: 4px; gap: 4px;
margin-bottom: 1vh; margin-bottom: 1vh;
.add-item-export { .add-item-export {
background-color: #5870FF; background-color: #5870FF;
color: white; color: white;

Loading…
Cancel
Save