CCL_QMS检验
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

101 lines
3.2 KiB

​
5 months ago
​
​
​
5 months ago
​
5 months ago
​
5 months ago
​
​
​
​
​
​
5 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
5 months ago
​
5 months ago
​
​
​
​
​
5 months ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
  1. <template>
  2. <el-dialog
  3. :title="$t('main.updateLanguageDialog.title')"
  4. :visible.sync="visible"
  5. width="300px"
  6. :append-to-body="true">
  7. <el-form :model="dataForm" ref="dataForm" @keyup.enter.native="dataFormSubmit()" label-width="80px">
  8. <el-form-item :label="$t('main.updateLanguageDialog.account')">
  9. <span>{{ userName }}</span>
  10. </el-form-item>
  11. <el-form-item :label="$t('main.updateLanguageDialog.currentLanguage')" prop="newPassword">
  12. <span>{{ currentLanguageName }}</span>
  13. </el-form-item>
  14. <el-form-item :label="$t('main.updateLanguageDialog.newLanguage')" prop="newLanguage">
  15. <el-select filterable v-model="dataForm.languageDefault" clearable>
  16. <el-option :label="item.languageName" :value="item.languageCode" v-for="(item,index) in languageList "
  17. :key="index"></el-option>
  18. </el-select>
  19. </el-form-item>
  20. </el-form>
  21. <span slot="footer" class="dialog-footer">
  22. <el-button @click="visible = false">{{ $t('main.common.cancel') }}</el-button>
  23. <el-button type="primary" @click="dataFormSubmit()">{{ $t('main.common.confirm') }}</el-button>
  24. </span>
  25. </el-dialog>
  26. </template>
  27. <script>
  28. import {updateUserLanguage} from '@/api/user.js'
  29. import { normalizeLocale } from '@/i18n/i18n'
  30. // import PubSub from 'pubsub-js'
  31. import {
  32. searchSysLanguage
  33. } from "@/api/sysLanguage.js"
  34. export default {
  35. data() {
  36. return {
  37. visible: false,
  38. dataForm: {
  39. languageDefault: ''
  40. },
  41. language: normalizeLocale(localStorage.getItem('locale')),
  42. languageList: []
  43. }
  44. },
  45. computed: {
  46. userName: {
  47. get() {
  48. return this.$store.state.user.name
  49. }
  50. },
  51. mainTabs: {
  52. get() {
  53. return this.$store.state.common.mainTabs
  54. },
  55. set(val) {
  56. this.$store.commit('common/updateMainTabs', val)
  57. }
  58. },
  59. currentLanguageName() {
  60. const langCode = normalizeLocale(this.language)
  61. return this.$t(`main.languageName.${langCode}`)
  62. }
  63. },
  64. methods: {
  65. // 获取多语言列表
  66. getLanguageList() {
  67. searchSysLanguage({}).then(({data}) => {
  68. const allowSet = new Set(['cn', 'en', 'zh-CN', 'en-US'])
  69. this.languageList = (data.rows || []).filter(item => allowSet.has(item.languageCode))
  70. })
  71. },
  72. // 初始化
  73. init() {
  74. this.visible = true
  75. this.$nextTick(() => {
  76. this.$refs['dataForm'].resetFields()
  77. })
  78. },
  79. // 修改用户默认语言
  80. dataFormSubmit() {
  81. const normalizedLanguage = normalizeLocale(this.dataForm.languageDefault || this.language)
  82. updateUserLanguage({ languageDefault: normalizedLanguage }).then(({data}) => {
  83. if (data.code == 0) {
  84. this.$i18n.locale = normalizedLanguage
  85. this.language = normalizedLanguage
  86. localStorage.setItem('locale', normalizedLanguage)
  87. this.$router.go(0)
  88. // PubSub.publish('search',this.dataForm.languageDefault )
  89. // this.$router.replace({name: 'login'})
  90. }
  91. })
  92. }
  93. } ,created() {
  94. this.getLanguageList()
  95. },
  96. }
  97. </script>