7 changed files with 493 additions and 144 deletions
-
6src/api/sysLanguage.js
-
2src/views/main-navbar.vue
-
75src/views/modules/sys/language/common-language-base.vue
-
207src/views/modules/sys/language/common-language-list.vue
-
290src/views/modules/sys/language/common.vue
-
53src/views/modules/sys/menu-language.vue
-
4src/views/modules/sys/menu.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> |
||||
@ -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> |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue