Browse Source

公共部分多语言

多语言维护 批量添加
2022-1-25 sxm
master
[li_she] 4 years ago
parent
commit
e45de19124
  1. 12
      src/App.vue
  2. 3
      src/api/sysLanguage.js
  3. 3
      src/store/modules/user.js
  4. 2
      src/utils/httpRequest.js
  5. 13
      src/views/common/home.vue
  6. 25
      src/views/main-navbar-update-language.vue
  7. 1
      src/views/main-navbar-update-password.vue
  8. 191
      src/views/main-navbar.vue
  9. 53
      src/views/main-sidebar.vue
  10. 2
      src/views/modules/common/Chooselist.vue
  11. 84
      src/views/modules/sys/language/common.vue

12
src/App.vue

@ -5,7 +5,7 @@
</template>
<script>
import {searchSysLanguagePack} from "./api/sysLanguage.js"
export default {
data() {
@ -14,16 +14,10 @@
}
},
created() {
this.test();
// this.languageRefresh()
},
methods: {
test() {
searchSysLanguagePack().then(({data}) => {
this.$i18n.mergeLocaleMessage('en', data.data.en)
this.$i18n.mergeLocaleMessage('cn', data.data.cn)
})
}
}
}

3
src/api/sysLanguage.js

@ -31,6 +31,9 @@ export const saveSysLanguagePack = data => createAPI(`sysLanguagePack/saveSysLan
// 保存多语言 单个
export const saveSysLanguageOne = data => createAPI(`sysLanguagePack/saveSysLanguageOne`,'post',data)
// 批量保存多语言 saveSysLanguageList
export const saveSysLanguageList = data => createAPI(`sysLanguagePack/saveSysLanguageList`,'post',data)
// 获取页面语言数据
export const searchPageLanguageData = data => createAPI(`sysLanguagePack/searchPageLanguageData`,'post',data)

3
src/store/modules/user.js

@ -5,7 +5,8 @@ export default {
name: '',
site: 0,
languageDefault: '',
userDisplay: ''
userDisplay: '',
userDev: true
},
mutations: {
updateId (state, id) {

2
src/utils/httpRequest.js

@ -81,7 +81,7 @@ export default http
const instance = axios.create({
baseURL: (process.env.NODE_ENV !== 'production' && process.env.OPEN_PROXY ? '/proxyApi/' : window.SITE_CONFIG.baseUrl) ,
timeout: 1000 * 30,
timeout: 10000 * 30,
withCredentials: true,
headers: {
'Content-Type': 'application/json; charset=utf-8'

13
src/views/common/home.vue

@ -8,10 +8,19 @@
</template>
<script>
import {searchSysLanguagePack} from "../../api/sysLanguage";
export default {
methods: {
languageRefresh(){
console.log("欢迎使用 旭捷管理系统!!!")
},
languagePack() {
searchSysLanguagePack().then(({data}) => {
this.$i18n.mergeLocaleMessage('en', data.data.en)
this.$i18n.mergeLocaleMessage('cn', data.data.cn)
})
}
},
computed: {
@ -31,7 +40,9 @@
},
beforeMount() {
this.languageRefresh()
}
this.languagePack()
},
}
</script>

25
src/views/main-navbar-update-language.vue

@ -2,6 +2,7 @@
<el-dialog
title="修改用户默认语言"
:visible.sync="visible"
width="300px"
:append-to-body="true">
<el-form :model="dataForm" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="80px">
<el-form-item label="账号">
@ -11,10 +12,9 @@
<span>{{language}}</span>
</el-form-item>
<el-form-item label="新语言" prop="newLanguage">
<el-select type="password" v-model="dataForm.languageDefault">
<el-option label="中文" value="cn"></el-option>
<el-option label="英文" value="en"></el-option>
<el-option label="日文" value="jp"></el-option>
<el-select filterable v-model="dataForm.languageDefault" clearable>
<el-option :label="item.languageName" :value="item.languageCode" v-for="(item,index) in languageList "
:key="index"></el-option>
</el-select>
</el-form-item>
</el-form>
@ -28,6 +28,9 @@
<script>
import {updateUserLanguage} from '@/api/user.js'
// import PubSub from 'pubsub-js'
import {
searchSysLanguage
} from "@/api/sysLanguage.js"
export default {
data() {
@ -36,7 +39,8 @@
dataForm: {
languageDefault: ''
},
language: localStorage.getItem('locale')
language: localStorage.getItem('locale'),
languageList: []
}
},
computed: {
@ -54,7 +58,14 @@
}
}
},
methods: {
//
getLanguageList() {
searchSysLanguage({}).then(({data}) => {
this.languageList = data.rows
})
},
//
init() {
this.visible = true
@ -73,7 +84,9 @@
}
})
}
}
} ,created() {
this.getLanguageList()
},
}
</script>

1
src/views/main-navbar-update-password.vue

@ -2,6 +2,7 @@
<el-dialog
title="修改密码"
:visible.sync="visible"
width="300px"
:append-to-body="true">
<el-form :model="dataForm" :rules="dataRule" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="80px">
<el-form-item label="账号">

191
src/views/main-navbar.vue

@ -10,40 +10,31 @@
<icon-svg name="zhedie"></icon-svg>
</el-menu-item>
</el-menu>
<a class="site-navbar__brand-lg" href="javascript:;" >{{$t('commonSystemName')}}</a>
<a class="site-navbar__brand-mini" href="javascript:;">{{$t('commonAbbreviation')}}</a>
<a class="site-navbar__brand-lg" href="javascript:;" >{{pageLanguage.XjSysManage}}</a>
<a class="site-navbar__brand-mini" href="javascript:;">{{pageLanguage.abbreviation}}</a>
</h1>
</div>
<div class="site-navbar__body clearfix">
<!-- <el-menu-->
<!-- class="site-navbar__menu"-->
<!-- mode="horizontal">-->
<!-- <el-menu-item class="site-navbar__switch" index="0" @click="sidebarFold = !sidebarFold">-->
<!-- <icon-svg name="zhedie"></icon-svg>-->
<!-- </el-menu-item>-->
<!-- </el-menu>-->
<el-menu
class="site-navbar__menu site-navbar__menu--right"
mode="horizontal">
<el-submenu index="2">
<template slot="title">设置</template>
<template slot="title">{{ pageLanguage.setting }}</template>
<el-submenu index="2-1" >
<template slot="title">语言设置</template>
<el-menu-item index="2-1-1" @click.native="switch_the_language('cn')">{{$t('lange.cn')}}</el-menu-item>
<el-menu-item index="2-1-2" @click.native="switch_the_language('en')">{{$t('lange.en')}}</el-menu-item>
<el-menu-item index="2-1-3" @click.native="switch_the_language('jp')">{{$t('lange.jp')}}</el-menu-item>
<el-menu-item index="2-1-4" @click.native="switch_the_language('kr')">{{$t('lange.kr')}}</el-menu-item>
<template slot="title">{{pageLanguage.languageSetting}}</template>
<el-menu-item index="2-1-1" :value="item.languageCode" v-for="(item,index) in languageList " @click.native="switch_the_language(item.languageCode)">{{item.languageName}}</el-menu-item>
<!-- <el-menu-item index="2-1-2" @click.native="switch_the_language('en')">{{$t('lange.en')}}</el-menu-item>-->
<!-- <el-menu-item index="2-1-3" @click.native="switch_the_language('jp')">{{$t('lange.jp')}}</el-menu-item>-->
<!-- <el-menu-item index="2-1-4" @click.native="switch_the_language('kr')">{{$t('lange.kr')}}</el-menu-item>-->
</el-submenu>
<el-submenu index="2-2">
<template slot="title">用户设置</template>
<el-menu-item index="2-2-1" @click.native="updatePasswordHandle()">修改密码</el-menu-item>
<el-menu-item index="2-2-2" @click.native="updateLanguageHandle()">修改默认语言</el-menu-item>
<template slot="title">{{ pageLanguage.userSetting }}</template>
<el-menu-item index="2-2-1" @click.native="updatePasswordHandle()">{{ pageLanguage.updatePassword }}</el-menu-item>
<el-menu-item index="2-2-2" @click.native="updateLanguageHandle()">{{pageLanguage.updateDefaultLanguage}}</el-menu-item>
</el-submenu>
<el-menu-item index="2-3" @click="$router.push({ name: 'theme' })">主题设置</el-menu-item>
<el-menu-item index="2-3" @click="$router.push({ name: 'theme' })">{{ pageLanguage.cssSetting }}</el-menu-item>
</el-submenu>
<el-menu-item class="site-navbar__avatar" index="3">
<el-dropdown :show-timeout="0" placement="bottom">
@ -57,49 +48,10 @@
</el-menu-item>
</el-menu>
<!-- <el-menu-->
<!-- class="site-navbar__menu site-navbar__menu&#45;&#45;right"-->
<!-- mode="horizontal">-->
<!-- <el-menu-item index="1">-->
<!-- <el-dropdown :show-timeout="0" placement="bottom">-->
<!-- <span class="el-dropdown-link">-->
<!-- &lt;!&ndash; 注2在按钮中加入单击事件事件指向语言切换函数 &ndash;&gt;-->
<!-- {{$t('language.name')}}-->
<!-- </span>-->
<!-- <el-dropdown-menu slot="dropdown">-->
<!-- <el-dropdown-item @click.native="switch_the_language('cn')">{{$t('lange.cn')}}</el-dropdown-item>-->
<!-- <el-dropdown-item @click.native="switch_the_language('en')">{{$t('lange.en')}}</el-dropdown-item>-->
<!-- <el-dropdown-item @click.native="switch_the_language('jp')">{{$t('lange.jp')}}</el-dropdown-item>-->
<!-- <el-dropdown-item @click.native="switch_the_language('kr')">{{$t('lange.kr')}}</el-dropdown-item>-->
<!-- </el-dropdown-menu>-->
<!-- </el-dropdown>-->
<!-- </el-menu-item>-->
<!-- <el-menu-item index="1" @click="$router.push({ name: 'theme' })">-->
<!-- <template slot="title">-->
<!-- <el-badge value="new">-->
<!-- <icon-svg name="shezhi" class="el-icon-setting"></icon-svg>-->
<!-- </el-badge>-->
<!-- </template>-->
<!-- </el-menu-item>-->
<!-- <el-menu-item class="site-navbar__avatar" index="3">-->
<!-- <el-dropdown :show-timeout="0" placement="bottom">-->
<!-- <span class="el-dropdown-link">-->
<!-- <img src="~@/assets/img/avatar.png" :alt="userName">{{ userName }}-->
<!-- </span>-->
<!-- <el-dropdown-menu slot="dropdown">-->
<!-- <el-dropdown-item @click.native="updatePasswordHandle()">修改密码</el-dropdown-item>-->
<!-- <el-dropdown-item @click.native="updateLanguageHandle()">修改默认语言</el-dropdown-item>-->
<!-- <el-dropdown-item @click.native="logoutHandle()">退出</el-dropdown-item>-->
<!-- </el-dropdown-menu>-->
<!-- </el-dropdown>-->
<!-- </el-menu-item>-->
<!-- </el-menu>-->
</div>
<!-- 弹窗, 修改密码 -->
<update-password v-if="updatePassowrdVisible" ref="updatePassowrd"></update-password>
<!-- 弹窗, 修改默认语言 -->
<update-language v-if="updateLanguageVisible" ref="updateLanguage"></update-language>
</nav>
@ -109,13 +61,94 @@
import UpdatePassword from './main-navbar-update-password'
import UpdateLanguage from './main-navbar-update-language'
import {clearLoginInfo} from '@/utils'
import {
searchFunctionButtonList,
saveButtonList,
searchSysLanguage,
} from "@/api/sysLanguage.js"
export default {
data() {
return {
updatePassowrdVisible: false,
updateLanguageVisible: false,
message: this.$t('language.name')
message: this.$t('language.name'),
languageList: [],
pageLanguage: {
XjSysManage: '旭捷管理系统',
abbreviation: '旭捷',
setting: '设置',
languageSetting: '语言设置',
userSetting: '用户设置',
updatePassword: '修改密码',
updateDefaultLanguage: '修改默认语言',
cssSetting: '主提设置'
},
// end
pageLanguageList: [
{
functionId: "systemInformation",
languageValue: '旭捷管理系统',
objectId: 'XjSysManage',
objectType: "label",
tableId: "systemInformation"
},
{
functionId: "systemInformation",
languageValue: '首页',
objectId: 'homePage',
objectType: "label",
tableId: "systemInformation"
},
{
functionId: "systemInformation",
languageValue: '旭捷',
objectId: 'abbreviation',
objectType: "label",
tableId: "systemInformation"
},
{
functionId: "systemInformation",
languageValue: '设置',
objectId: 'setting',
objectType: "label",
tableId: "systemInformation"
},
{
functionId: "systemInformation",
languageValue: '语言设置',
objectId: 'languageSetting',
objectType: "label",
tableId: "systemInformation"
},
{
functionId: "systemInformation",
languageValue: '用户设置',
objectId: 'userSetting',
objectType: "label",
tableId: "systemInformation"
},
{
functionId: "systemInformation",
languageValue: '修改密码',
objectId: 'updatePassword',
objectType: "label",
tableId: "systemInformation"
},
{
functionId: "systemInformation",
languageValue: '修改用户语言',
objectId: 'updateDefaultLanguage',
objectType: "label",
tableId: "systemInformation"
},
{
functionId: "systemInformation",
languageValue: '主题设置',
objectId: 'cssSetting',
objectType: "label",
tableId: "systemInformation"
}
],
}
},
components: {
@ -149,8 +182,36 @@
return this.$store.state.user.userDisplay
}
}
},
activated() {
},
methods: {
//
getLanguageList() {
searchSysLanguage({}).then(({data}) => {
this.languageList = data.rows
})
},
//
getFunctionButtonList() {
let queryButton = {
functionId: 'systemInformation',
tableId: 'systemInformation',
languageCode: this.$i18n.locale,
objectType: 'label'
}
searchFunctionButtonList(queryButton).then(({data}) => {
if (JSON.stringify(data.data) != '{}') {
this.pageLanguage = data.data
} else {
saveButtonList(this.pageLanguageList).then(({data}) => {
this.getFunctionButtonList()
})
}
})
},
// 3
switch_the_language(val) {
localStorage.setItem('locale', val)
@ -190,6 +251,10 @@
}).catch(() => {
})
}
},
created() {
this.getLanguageList()
this.getFunctionButtonList()
}
}
</script>

53
src/views/main-sidebar.vue

@ -14,22 +14,9 @@
</el-menu-item>
<el-menu-item index="home" @click="$router.push({ name: 'home' })">
<icon-svg name="shouye" class="site-sidebar__menu-icon"></icon-svg>
<span slot="title">{{ $t('commonhomePage') }}</span>
<span slot="title">{{ pageLanguage.homePage }}</span>
</el-menu-item>
<!-- <el-submenu index="demo">-->
<!-- <template slot="title">-->
<!-- <icon-svg name="shoucang" class="site-sidebar__menu-icon"></icon-svg>-->
<!-- <span>demo</span>-->
<!-- </template>-->
<!-- <el-menu-item index="demo-echarts" @click="$router.push({ name: 'demo-echarts' })">-->
<!-- <icon-svg name="tubiao" class="site-sidebar__menu-icon"></icon-svg>-->
<!-- <span slot="title">echarts</span>-->
<!-- </el-menu-item>-->
<!-- <el-menu-item index="demo-ueditor" @click="$router.push({ name: 'demo-ueditor' })">-->
<!-- <icon-svg name="editor" class="site-sidebar__menu-icon"></icon-svg>-->
<!-- <span slot="title">ueditor</span>-->
<!-- </el-menu-item>-->
<!-- </el-submenu>-->
<sub-menu
v-for="menu in menuList"
:key="menu.menuId"
@ -54,6 +41,9 @@ import SubMenu from './main-sidebar-sub-menu'
import {isURL} from '@/utils/validate'
import {userFavoriteList} from '@/api/userFavorite.js'
import {treeDataTranslate} from '@/utils'
import {
searchFunctionButtonList,
} from "@/api/sysLanguage.js"
export default {
data() {
@ -64,7 +54,10 @@ export default {
uFavoriteList: [],
favoriteList: [],
newMenuList: [],
list: []
list: [],
pageLanguage: {
homePage: '首页'
}
}
},
components: {
@ -125,8 +118,24 @@ export default {
this.userFavorites()
this.dynamicMenuRoutes = JSON.parse(sessionStorage.getItem('dynamicMenuRoutes') || '[]')
this.routeHandle(this.$route)
this.getFunctionButtonList()
},
methods: {
//
//
getFunctionButtonList() {
let queryButton = {
functionId: 'systemInformation',
tableId: 'systemInformation',
languageCode: this.$i18n.locale,
objectId: 'homePage'
}
searchFunctionButtonList(queryButton).then(({data}) => {
if (JSON.stringify(data.data) != '{}') {
this.pageLanguage = data.data
}
})
},
//
userFavorites() {
let query = {
@ -175,19 +184,19 @@ export default {
menuSum = Array.from(new Set([...menuSum]))
if (menuSum.length > 0) {
let menuList = menuSum.filter(item => item.parentId == 0);
this.menuList=menuList
this.treeList(menuList,menuSum)
let menuList = menuSum.filter(item => item.parentId == 0);
this.menuList = menuList
this.treeList(menuList, menuSum)
}
}
},
//
treeList(menuList,menuSum) {
treeList(menuList, menuSum) {
for (let m1 of menuList) {
for (let m2 of menuSum) {
if (m1.menuId == m2.parentId){
if (m1.menuId == m2.parentId) {
m1.list.push(m2)
this.treeList( m1.list,menuSum)
this.treeList(m1.list, menuSum)
}
}
}

2
src/views/modules/common/Chooselist.vue

@ -139,7 +139,7 @@ export default {
prop = item.substring(index2+1,l)
}
let column = {
"columnProp":prop,
"columnProp":prop.trim(),
"columnLabel": name,
"columnHidden": false,
"columnImage": false,

84
src/views/modules/sys/language/common.vue

@ -7,7 +7,7 @@
</div>
<el-form :inline="true" :model="querySysLanguagePack" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input filterable v-model="querySysLanguagePack.functionId" clearable>
<el-input filterable v-model="querySysLanguagePack.key" clearable>
</el-input>
</el-form-item>
<el-form-item>
@ -30,8 +30,6 @@
class="el-button el-button--primary el-button--medium">
{{ buttons.download }}
</download-excel>
<el-button type="primary" @click="getBaseList()">{{ buttons.list }}</el-button>
</el-form-item>
<el-form-item>
<el-select filterable v-model="querySysLanguagePack.languageCode" clearable>
@ -82,11 +80,22 @@
<!-- 动态列 -->
<column v-if="visible" ref="column" @refreshData="getTableUserColumn"></column>
<Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
<el-dialog :close-on-click-modal="false" :close-on-press-escape="false" v-drag
:title="'设置语言一'+querySysLanguagePack.languageCode" :visible.sync="addLanguage" width="1000px">
<el-form :inline="true" :model="addQuery" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input filterable v-model="addQuery.functionId" clearable>
</el-input>
</el-form-item>
<el-form-item>
<el-button @click="getAddOrUpdateList()" type="primary">{{ buttons.search }}</el-button>
</el-form-item>
<el-form-item>
<el-button @click="addListLanguage()" :disabled="dataListSelections.length <= 0" type="primary">{{ buttons.addList }}
</el-button>
</el-form-item>
</el-form>
<el-table
height="450"
:data="languageDataList"
@ -132,9 +141,7 @@
</template>
<script>
import column from "../../common/column";
import Chooselist from '@/views/modules/common/Chooselist'
import {
searchSysLanguagePackList,
searchSysLanguageParam,
@ -144,12 +151,12 @@ import {
searchLanguageListByLanguageCode,
saveSysLanguageOne,
searchPageLanguageData,
removerLanguage
removerLanguage,
saveSysLanguageList
} from "@/api/sysLanguage.js"
import getLodop from '@/utils/LodopFuncs.js'
import {
saveTableDefaultList,
saveTableUser,
getTableDefaultListLanguage,
getTableUserListLanguage,
removerDefault,
@ -159,8 +166,7 @@ import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/user
export default {
components: {
column,
Chooselist
column
},
data() {
return {
@ -383,9 +389,9 @@ export default {
download: '导出',
settingTable: '设置列表',
defaultTable: '设置默认配置',
list: "列表"
list: "列表",
addList: '批量添加'
},
// start
exportData: [],
exportName: "页面功能语言",
@ -471,13 +477,18 @@ export default {
queryLanguage: {},
//
querySysLanguagePack: {
functionId: '',
key: '',
page: 1,
limit: 1,
languageValue: '',
objectType: '',
objectId: ''
},
addQuery: {
functionId: '',
languageCode: ''
},
//
//
pageIndex: 1,
pageSize: 20,
@ -488,7 +499,6 @@ export default {
}
},
mounted() {
this.$nextTick(() => {
this.height = window.innerHeight - 175;
})
@ -498,18 +508,7 @@ export default {
this.getLanguageList()
},
methods: {
getBaseData(val){
console.log("父组件"+val)
},
//
getBaseList(){
this.$nextTick(() => {
this.$refs.baseList.init(18,'fdsa')
})
},
//
printReport() {
},
//
favoriteIsOk() {
let userFavorite = {
@ -562,6 +561,22 @@ export default {
}
})
},
//
addListLanguage( ){
saveSysLanguageList(this.dataListSelections).then(({data}) => {
if (data.code == 0) {
this.$message.success(data.msg)
} else {
this.$message.error(data.msg)
}
})
},
//
getAddOrUpdateList(){
searchLanguageListByLanguageCode(this.addQuery).then(({data}) => {
this.languageDataList = data.rows
})
},
//
addLanguageFun() {
if (this.querySysLanguagePack.languageCode) {
@ -578,9 +593,8 @@ export default {
}
})
this.languageColumnList = this.columnList
searchLanguageListByLanguageCode(this.querySysLanguagePack).then(({data}) => {
this.languageDataList = data.rows
})
this.addQuery.languageCode = this.querySysLanguagePack.languageCode
this.getAddOrUpdateList()
} else {
this.$message("请选中一种语言")
}
@ -728,19 +742,11 @@ export default {
},
createExportData() {
// ,,
// TODO:
if (this.dataListSelections.length > 0) {
return this.dataListSelections;
}
return this.dataList;
},
startDownload() {
// this.exportData = this.dataList
},
finishDownload() {
}
},
created() {

Loading…
Cancel
Save