Browse Source

多语言修改

2022-2-13 sxm
master
[li_she] 4 years ago
parent
commit
0afe80b575
  1. 6
      src/api/sysLanguage.js
  2. 2
      src/views/main-navbar.vue
  3. 75
      src/views/modules/sys/language/common-language-base.vue
  4. 207
      src/views/modules/sys/language/common-language-list.vue
  5. 290
      src/views/modules/sys/language/common.vue
  6. 53
      src/views/modules/sys/menu-language.vue
  7. 4
      src/views/modules/sys/menu.vue

6
src/api/sysLanguage.js

@ -41,6 +41,12 @@ export const searchPageLanguageData = data => createAPI(`sysLanguagePack/searchP
// 删除 base 数据
export const removerLanguage = data => createAPI(`sysLanguagePack/removerLanguage`,'post',data)
// 获取当前base 多种语言数据
export const searchBaseLanguageList = data => createAPI(`sysLanguagePack/searchBaseLanguageList`,'post',data)
// 保存当前base 多种语言数据
export const saveBaseObjectLanguageList = data => createAPI(`sysLanguagePack/saveBaseObjectLanguageList`,'post',data)

2
src/views/main-navbar.vue

@ -23,7 +23,7 @@
<template slot="title">{{ pageLanguage.setting }}</template>
<el-submenu index="2-1" >
<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-1" :key="index" :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>-->

75
src/views/modules/sys/language/common-language-base.vue

@ -0,0 +1,75 @@
<template>
<el-dialog
width="350px"
title="语言"
:close-on-click-modal="false"
:visible.sync="visible">
<el-row v-for="(item,index) in dataList"
:key="item.columnProp"
:label="item.columnLabel"
:prop="item.columnProp">
<el-col :span="4">
</el-col>
<el-col :span="4">
{{ item.languageCode }}
</el-col>
<el-col :span="20">
<el-input v-model="item.languageValue" controls-position="right" style="display:inline"></el-input>
</el-col>
</el-row>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="dataFormSubmit()"> {{ buttons.add }}</el-button>
<el-button @click="visible = false" type="primary">{{ buttons.close }}</el-button>
</span>
</el-dialog>
</template>
<script>
import {searchBaseLanguageList, saveBaseObjectLanguageList} from '@/api/sysLanguage.js'
export default {
data() {
return {
visible: false,
dataList: [],
buttons: {
add: '确认',
close: '关闭',
},
}
},
methods: {
init(val) {
this.visible = true
searchBaseLanguageList(val).then(({data}) => {
this.dataList = data.rows
})
},
//
getDataList() {
this.dataListLoading = false
},
//
dataFormSubmit(val) {
saveBaseObjectLanguageList(this.dataList).then(({data}) => {
if (data.code == 0) {
this.$message.success(data.msg)
this.visible = false
} else {
this.$message.error(data.msg)
}
})
}
}
}
</script>
<style lang="scss">
.el-form-item--mini.el-form-item, .el-form-item--small.el-form-item {
margin-bottom: 5px;
}
</style>

207
src/views/modules/sys/language/common-language-list.vue

@ -0,0 +1,207 @@
<template>
<el-dialog
width="900px"
title="设置语言"
:close-on-click-modal="false"
:visible.sync="visible">
<el-row >
<el-col :span="24">
<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-select filterable v-model="addQuery.languageCode" 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-item>
<el-button @click="getDataList()" 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-col>
<el-col :span="24">
<el-table
height="450"
:data="languageDataList"
border
v-loading="dataListLoading"
@selection-change="selectionChangeHandle"
style="width: 100%;">
<el-table-column
type="selection"
header-align="center"
width="40"
align="center">
</el-table-column>
<el-table-column
v-for="(item,index) in languageColumnList" :key="index"
:sortable="item.columnSortable"
:prop="item.columnProp"
:width="item.columnWidth"
:label="item.columnLabel">
<template slot-scope="scope">
<span v-if="item.columnProp!='languageValue'"> {{ scope.row[item.columnProp] }}</span>
<span v-if="item.columnProp=='languageValue'"><input
class="sl-input"
v-model="scope.row[item.columnProp]" type="text"
clearable></input></span>
</template>
</el-table-column>
<el-table-column
fixed="right"
header-align="center"
align="center"
width="150"
:label="buttons.operate">
<template slot-scope="scope">
<a type="text" size="small" @click="saveLanguageList(scope.row)">添加</a>
</template>
</el-table-column>
</el-table>
</el-col>
</el-row>
<span slot="footer" class="dialog-footer">
<el-button @click="visible = false" type="primary">{{ buttons.close }}</el-button>
</span>
</el-dialog>
</template>
<script>
import {
searchSysLanguage,
searchLanguageListByLanguageCode,
saveSysLanguageOne,
saveSysLanguageList
} from "@/api/sysLanguage.js"
import {
getTableDefaultListLanguage,
} from "@/api/table.js"
export default {
data() {
return {
visible: false,
dataList: [],
languageDataList: [],
dataListLoading: false,
languageColumnList: [],
dataListSelections: [],
languageList: [],
addQuery: {
functionId: '',
languageCode: ''
},
buttons: {
settingLanguageList: '设置语言列表',
search: '查询',
addList: '批量添加',
add: '确认',
close: '关闭',
operate: '操作',
},
}
},
methods: {
init(val) {
this.visible = true
let query = {
functionId: 9001,
tableId: "common1002",
languageCode: this.$i18n.locale
}
getTableDefaultListLanguage(query).then(({data}) => {
if (data.rows.length > 0) {
this.languageColumnList = data.rows
this.getDataList()
}
})
this.getLanguageList()
},
//
getLanguageList() {
searchSysLanguage({}).then(({data}) => {
this.languageList = data.rows
})
},
//
getDataList() {
this.dataListLoading = true
searchLanguageListByLanguageCode(this.addQuery).then(({data}) => {
this.languageDataList = data.rows
this.dataListLoading = false
}).catch(()=>{
this.dataListLoading = false
})
},
//
selectionChangeHandle(val) {
this.dataListSelections = val
},
//
saveLanguageList(val) {
saveSysLanguageOne(val).then(({data}) => {
if (data.code == 0) {
this.$message.success(data.msg)
} else {
this.$message.error(data.msg)
}
})
},
//
addListLanguage() {
saveSysLanguageList(this.dataListSelections).then(({data}) => {
if (data.code == 0) {
this.$message.success(data.msg)
} else {
this.$message.error(data.msg)
}
})
},
// tableDefault
getColumnList() {
getTableDefaultListLanguage(this.queryTable).then(({data}) => {
if (!data.rows.length == 0) {
this.showDefault = false
this.columnList = data.rows
} else {
this.showDefault = true
}
})
},
},
created() {
}
}
</script>
<style lang="scss" >
.el-form-item--mini.el-form-item, .el-form-item--small.el-form-item {
margin-bottom: 5px;
}
.sl-input {
background-color: transparent;
border: 0 !important;
font-size: 12px !important;
height: 12px !important;
line-height: 14px !important;
background-color: transparent !important;
width: 140px;
}
.sl-input:focus, textarea:focus {
outline: none;
}
</style>

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

@ -1,88 +1,99 @@
<template>
<div class="mod-config">
<div>
<el-row>
<el-col :span="24">
<div>
<span @click="favoriteFunction()">
<icon-svg :name="favorite?'xiangqufill':'xiangqu'" class="sl-svg"></icon-svg>
</span>
</div>
<el-form :inline="true" :model="querySysLanguagePack" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input filterable v-model="querySysLanguagePack.key" clearable>
</el-input>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()" type="primary">{{ buttons.search }}</el-button>
<el-button v-if="isAuth('sys:setting')" @click="saveColumnList()" type="primary">{{ buttons.defaultTable }}
</el-button>
<el-button @click="userSetting" type="primary">{{ buttons.settingTable }}</el-button>
<download-excel
:fields="fields()"
:data="exportData"
type="xls"
:name="exportName"
:header="exportHeader"
:footer="exportFooter"
:defaultValue="exportDefaultValue"
:fetch="createExportData"
:before-generate="startDownload"
:before-finish="finishDownload"
worksheet="导出信息"
class="el-button el-button--primary el-button--medium">
{{ buttons.download }}
</download-excel>
</el-form-item>
<el-form-item>
<el-select filterable v-model="querySysLanguagePack.languageCode" 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-item>
<el-button type="primary" @click="addLanguageFun()">{{ buttons.add }}
</el-button>
</el-form-item>
</el-form>
<el-table
id="commmon"
:height="height"
:data="dataList"
border
v-loading="dataListLoading"
@selection-change="selectionChangeHandle"
style="width: 100%;">
<el-table-column
v-for="(item,index) in columnList" :key="index"
:sortable="item.columnSortable"
:prop="item.columnProp"
:header-align="item.headerAlign"
:show-overflow-tooltip="item.showOverflowTooltip"
:align="item.align"
:fixed="item.fixed"
:width="item.columnWidth"
:label="item.columnLabel">
<template slot-scope="scope">
<span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
style="width: 100px; height: 80px"/></span>
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="sizeChangeHandle"
@current-change="currentChangeHandle"
:current-page="pageIndex"
:page-sizes="[20, 50, 200, 500]"
:page-size="pageSize"
:total="totalPage"
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
</div>
</el-col>
<el-col :span="24">
<el-form :inline="true" :model="querySysLanguagePack" @keyup.enter.native="getDataList()">
<el-form-item>
<el-input filterable v-model="querySysLanguagePack.key" clearable>
</el-input>
</el-form-item>
<el-form-item>
<el-button @click="getDataList()" type="primary">{{ buttons.search }}</el-button>
<el-button v-if="isAuth('sys:setting')" @click="saveColumnList()" type="primary">{{ buttons.defaultTable }}
</el-button>
<el-button @click="userSetting" type="primary">{{ buttons.settingTable }}</el-button>
<download-excel
:fields="fields()"
:data="exportData"
type="xls"
:name="exportName"
:header="exportHeader"
:footer="exportFooter"
:defaultValue="exportDefaultValue"
:fetch="createExportData"
:before-generate="startDownload"
:before-finish="finishDownload"
worksheet="导出信息"
class="el-button el-button--primary el-button--medium">
{{ buttons.download }}
</download-excel>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="addOrUpdateLanguageList()">{{ buttons.settingLanguageList }}
</el-button>
</el-form-item>
</el-form>
</el-col>
<el-col :span="24">
<el-table
id="commmon"
:height="height"
:data="dataList"
border
v-loading="dataListLoading"
@selection-change="selectionChangeHandle"
style="width: 100%;">
<el-table-column
v-for="(item,index) in columnList" :key="index"
:sortable="item.columnSortable"
:prop="item.columnProp"
:header-align="item.headerAlign"
:show-overflow-tooltip="item.showOverflowTooltip"
:align="item.align"
:fixed="item.fixed"
:width="item.columnWidth"
:label="item.columnLabel">
<template slot-scope="scope">
<span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
style="width: 100px; height: 80px"/></span>
</template>
</el-table-column>
<el-table-column
fixed="right"
header-align="center"
align="center"
width="150"
:label="buttons.cz">
<template slot-scope="scope">
<a type="text" size="small" @click="addOrUpdateLanguage(scope.row)">{{ buttons.settingLanguage }}</a>
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="sizeChangeHandle"
@current-change="currentChangeHandle"
:current-page="pageIndex"
:page-sizes="[20, 50, 200, 500]"
:page-size="pageSize"
:total="totalPage"
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
</el-col>
</el-row>
<!-- 动态列 -->
<column v-if="visible" ref="column" @refreshData="getTableUserColumn"></column>
<column v-if="visible" ref="column" @refreshData="getTableUserColumn" v-drag></column>
<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>
@ -92,7 +103,8 @@
<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 @click="addListLanguage()" :disabled="dataListSelections.length <= 0" type="primary">
{{ buttons.addList }}
</el-button>
</el-form-item>
</el-form>
@ -137,11 +149,16 @@
</el-table>
</el-dialog>
<!-- 语言组件 -->
<commonLanguageBase ref="commonLanguageAdd" v-drag></commonLanguageBase>
<commonLanguageList ref="commonLanguageList" v-drag></commonLanguageList>
</div>
</template>
<script>
import column from "../../common/column";
import column from "../../common/column";
import commonLanguageBase from "./common-language-base";
import commonLanguageList from "./common-language-list";
import {
searchSysLanguagePackList,
searchSysLanguageParam,
@ -163,10 +180,11 @@ import {
removerUser
} from "@/api/table.js"
import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js'
export default {
components: {
column
column,
commonLanguageBase,
commonLanguageList
},
data() {
return {
@ -223,11 +241,29 @@ export default {
"columnType": null,
"align": null
},
{
"tableId": "common1001",
"tableName": "common",
"columnProp": "funDesc",
"columnLabel": "功能名称",
"columnHidden": false,
"columnImage": false,
"columnSortable": false,
"columnWidth": null,
"format": null,
"functionId": "9001",
"sortLv": 0,
"status": true,
"fixed": false,
"serialNumber": null,
"columnType": null,
"align": null
},
{
"tableId": "common1001",
"tableName": "common",
"columnProp": "objectId",
"columnLabel": "序列化编码",
"columnLabel": "控件编码",
"columnHidden": false,
"columnImage": false,
"columnSortable": false,
@ -263,7 +299,7 @@ export default {
"tableId": "common1001",
"tableName": "common",
"columnProp": "languageValue",
"columnLabel": "语言值",
"columnLabel": "控件名称",
"columnHidden": false,
"columnImage": false,
"columnSortable": false,
@ -298,11 +334,29 @@ export default {
"columnType": null,
"align": null
},
{
"tableId": "common1002",
"tableName": "commonLanguage",
"columnProp": "funDesc",
"columnLabel": "功能名称",
"columnHidden": false,
"columnImage": false,
"columnSortable": false,
"columnWidth": null,
"format": null,
"functionId": "9001",
"sortLv": 0,
"status": true,
"fixed": false,
"serialNumber": null,
"columnType": null,
"align": null
},
{
"tableId": "common1002",
"tableName": "commonLanguage",
"columnProp": "languageCode",
"columnLabel": "语言编码",
"columnLabel": "控件语言编码",
"columnHidden": false,
"columnImage": false,
"columnSortable": false,
@ -320,7 +374,7 @@ export default {
"tableId": "common1002",
"tableName": "commonLanguage",
"columnProp": "objectId",
"columnLabel": "序列化编码",
"columnLabel": "控件编码",
"columnHidden": false,
"columnImage": false,
"columnSortable": false,
@ -338,7 +392,7 @@ export default {
"tableId": "common1002",
"tableName": "commonLanguage",
"columnProp": "objectType",
"columnLabel": "类型",
"columnLabel": "控件类型",
"columnHidden": false,
"columnImage": false,
"columnSortable": false,
@ -352,11 +406,29 @@ export default {
"columnType": null,
"align": null
},
{
"tableId": "common1002",
"tableName": "commonLanguage",
"columnProp": "baseName",
"columnLabel": "控件名称",
"columnHidden": false,
"columnImage": false,
"columnSortable": false,
"columnWidth": null,
"format": null,
"functionId": "9001",
"sortLv": 2,
"status": true,
"fixed": false,
"serialNumber": null,
"columnType": null,
"align": null
},
{
"tableId": "common1002",
"tableName": "commonLanguage",
"columnProp": "languageValue",
"columnLabel": "语言值",
"columnLabel": "控件语言值",
"columnHidden": false,
"columnImage": false,
"columnSortable": false,
@ -380,7 +452,7 @@ export default {
objectType: 'button'
},
buttons: {
add: '添加',
settingLanguageList: '设置语言列表',
edit: '编辑',
delete: '删除',
deleteList: '批量删除',
@ -390,7 +462,8 @@ export default {
settingTable: '设置列表',
defaultTable: '设置默认配置',
list: "列表",
addList: '批量添加'
addList: '批量添加',
settingLanguage: "设置语言"
},
// start
exportData: [],
@ -402,8 +475,8 @@ export default {
buttonList: [
{
functionId: "9001",
languageValue: '添加',
objectId: 'add',
languageValue: '设置语言列表',
objectId: 'settingLanguageList',
objectType: "button",
tableId: "common1001"
},
@ -469,6 +542,13 @@ export default {
objectId: 'list',
objectType: "button",
tableId: "common1001"
},
{
functionId: "9001",
languageValue: '设置语言',
objectId: 'settingLanguage',
objectType: "button",
tableId: "common1001"
}
],
languageList: [],
@ -508,7 +588,6 @@ export default {
this.getLanguageList()
},
methods: {
//
favoriteIsOk() {
let userFavorite = {
@ -551,6 +630,19 @@ export default {
}
},
//
addOrUpdateLanguage (val) {
this.commonLanguageVisible = true
this.$nextTick(() => {
this.$refs.commonLanguageAdd.init(val)
})
},
//
addOrUpdateLanguageList () {
this.$nextTick(() => {
this.$refs.commonLanguageList.init()
})
},
//
saveLanguageList(val) {
saveSysLanguageOne(val).then(({data}) => {
@ -562,7 +654,7 @@ export default {
})
},
//
addListLanguage( ){
addListLanguage() {
saveSysLanguageList(this.dataListSelections).then(({data}) => {
if (data.code == 0) {
this.$message.success(data.msg)
@ -572,7 +664,7 @@ export default {
})
},
//
getAddOrUpdateList(){
getAddOrUpdateList() {
searchLanguageListByLanguageCode(this.addQuery).then(({data}) => {
this.languageDataList = data.rows
})
@ -673,7 +765,7 @@ export default {
//
removerDefault(this.queryTable)
//
removerLanguage(this.queryTable)
// removerLanguage(this.queryTable)
// table
let sumColumnList = this.columnList.concat(this.columnList1);
saveTableDefaultList(sumColumnList).then(({data}) => {
@ -763,21 +855,9 @@ export default {
height: calc(100% - 40px);
}
.sl-input {
background-color: transparent;
border: 0 !important;
font-size: 12px !important;
height: 12px !important;
line-height: 14px !important;
background-color: transparent !important;
width: 140px;
}
.sl-input:focus, textarea:focus {
outline: none;
}
.sl-svg {
overflow: hidden;

53
src/views/modules/sys/menu-language.vue

@ -1,34 +1,23 @@
<template>
<el-dialog
width="350px"
width="255px"
title="语言"
:close-on-click-modal="false"
:visible.sync="visible">
<el-form
v-model="dataList"
inline="inline"
size="mini"
label-width="80px">
<el-form-item v-for="(item,index) in dataList"
:key="item.columnProp"
:label="item.columnLabel"
:prop="item.columnProp">
<el-form-item>
{{item.languageCode }}
</el-form-item>
<el-form-item>
<el-input v-model="item.languageValue" controls-position="right" style="display:inline"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="dataFormSubmit(item)"> {{buttons.add}}</el-button>
</el-form-item>
</el-form-item>
</el-form>
<el-row v-for="(item,index) in dataList"
:key="item.columnProp"
:label="item.columnLabel"
:prop="item.columnProp">
<el-col :span="24">
{{item.languageCode }}
<el-input v-model="item.languageValue" controls-position="right" style="display:inline"></el-input>
</el-col>
</el-row>
<span slot="footer" class="dialog-footer">
<el-button @click="visible = false" type="primary">关闭</el-button>
<el-button type="primary" @click="dataFormSubmit()"> {{buttons.add}}</el-button>
<el-button @click="visible = false" type="primary">{{buttons.close}}</el-button>
</span>
</el-dialog>
</template>
@ -39,17 +28,11 @@ import {searchMenuLanguageById,saveMenuLanguage} from '@/api/sysLanguageMenu.js'
export default {
data() {
return {
visible: false,
addLanguage: false,
functionId: 9001,
tableId: "common1001",
value1: true,
showDefault: false,
dataListLoading: false,
visible:false,
dataList: [],
querySysLanguageParam: {},
buttons: {
add: '确认',
close: '关闭'
},
}
},
@ -62,21 +45,19 @@ export default {
searchMenuLanguageById(menu).then(({data}) =>{
this.dataList = data.menuLanguageList
})
},
saveLanguageList(){
},
//
getDataList() {
this.dataListLoading = false
},
//
dataFormSubmit(val) {
saveMenuLanguage(val).then(({data})=>{
saveMenuLanguage(this.dataList).then(({data})=>{
if (data.code == 0){
this.$message.success(data.msg)
this.$emit('refreshDataList')
this.visible = false
}else {
this.$message.error(data.msg)
}

4
src/views/modules/sys/menu.vue

@ -81,8 +81,8 @@
</el-table-column>
</el-table>
<!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
<MenuLanguage v-if="menuLanguageVisible" ref="menuLanguageAdd" @refreshDataList="getDataList"></MenuLanguage>
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList" v-drag></add-or-update>
<MenuLanguage v-if="menuLanguageVisible" ref="menuLanguageAdd" @refreshDataList="getDataList" v-drag ></MenuLanguage>
</div>
</template>

Loading…
Cancel
Save